Checkout v2: Webhooks de pago idempotentes
Objetivo
Evitar el doble cobro cuando el proveedor de pagos reintenta un webhook. Cada evento payment.succeeded debe procesarse exactamente una vez.
Pasos
- 1.Añadir una tabla processed_events con clave provider_event_id e índice único.
- 2.Envolver el handler en una transacción: insertar primero el id del evento y luego marcar el pedido como pagado.
- 3.Devolver 200 de inmediato si el id del evento ya existe.
Preguntas abiertas
¿Guardamos processed_events para siempre o expiramos las filas a los 90 días?







