Skip to main content

El problema

Las redes son poco confiables. Un request puede fallar, pero la transacción puede haberse creado. Si reintentas ciegamente, terminas creando dos pagos para un solo pedido, y el usuario es cobrado dos veces.

Principio

Cada pedido tiene UN solo str_id_pago que nunca se reutiliza.
Antes de reintentar, verifica si el pago ya existe con /VerificacionPago.

Flujo correcto ante fallo de /InicioPago

Código

Callback idempotente

El usuario puede recargar tu página de retorno, o Zonapagos puede disparar el callback dos veces.

Email de confirmación idempotente

Si la fila ya existía, RETURNING viene vacío → no envíes el email de nuevo.

Entrega de producto idempotente

Sonda con lock

Si la sonda se ejecuta en múltiples réplicas, usa un lock distribuido:

Ver también

Manejo de errores

Estrategia general de errores.