Cómo funciona
El sandbox usa el mismo motor de outbox que producción. Eso significa:- Misma estructura de payload
- Mismos headers (
X-NTXPay-Delivery,X-NTXPay-Signature, etc.) - Misma política de retry exponencial
- Mismo formato de firma HMAC
delayed:.
Registrar URL
Response (201)
secret devuelto — se usa para verificar la firma HMAC. Solo se muestra una vez.
Eventos disponibles
| Evento | Disparado cuando |
|---|---|
cash_in | CLABE desechable recibe una transferencia (simulada) |
cash_out | Envío SPEI se resuelve (confirmado o falló) |
refund_in | Refund de cash-in se procesa |
refund_out | Refund de cash-out se procesa |
Verificar la firma
Cada webhook llega con el headerX-NTXPay-Signature en el formato sha256=<hex>:
Probar dedupe
Cada entrega tiene undeliveryId único en el header X-NTXPay-Delivery y dentro del payload. Para probar tu dedupe:
- Configura tu handler para retornar
500en el primer intento. - NTX Pay entregará el mismo mensaje nuevamente (con el mismo
deliveryId). - Confirma que tu sistema ignora la duplicada y responde
200en el segundo intento.
Política de retry
| Intento | Atraso tras el anterior |
|---|---|
| 1 | inmediato |
| 2 | 30s |
| 3 | 2min |
| 4 | 10min |
| 5 | 1h |
| 6 | 6h |
| 7+ | abandonado |
2xx en hasta 5 segundos — cualquier 5xx, timeout o error de conexión dispara retry.
Escenarios de prueba
Fuerza que el webhook salga comoFAILED o con delay:
Buenas prácticas
- Responde 200 antes de procesar — encola el evento en background; cinco segundos es el tope.
- Usa
deliveryIdpara dedupe — no confíes entransaction.id(los retries llegan con el mismotransaction.idperodeliveryIdnuevo en caso de redrive manual). - No dependas del orden — los webhooks pueden llegar fuera de orden tras retries.
- Valida siempre la firma — incluso en sandbox.