Back to 0fee
0fee

Sistema de entrega y reintento de webhooks

Cómo 0fee.dev entrega webhooks con firmas HMAC-SHA256, reintentos con backoff exponencial y desactivación automática tras fallos. Por Juste Thales Gnimavo y Claude.

Juste Thales Gnimavo & Claude | March 27, 2026 2 min 0fee
EN/ FR/ ES
webhooksretryhmacexponential-backoffreliability

Cuando un pago se completa en 0fee.dev -- ya sea a través de la página de checkout de Stripe, el USSD push de Hub2 o el flujo de redirección de PaiementPro -- el comerciante necesita saberlo. No pueden consultar la API continuamente. La solución son los webhooks: solicitudes HTTP POST enviadas desde 0fee.dev al servidor del comerciante cada vez que ocurre un evento de pago. Pero la entrega de webhooks es más difícil de lo que parece. Los servidores de los comerciantes se caen. Las redes fallan. Los firewalls bloquean solicitudes. El sistema de webhooks debe manejar todo esto de manera confiable.

Cada entrega de webhook se firma con HMAC-SHA256 para que el comerciante receptor pueda verificar que la solicitud genuinamente provino de 0fee.dev. El formato de firma t=timestamp,v1=signature sigue la convención popularizada por Stripe. Incluir el timestamp en el mensaje firmado previene ataques de repetición.

El sistema genera webhooks en cada punto significativo del ciclo de vida del pago: payment.created, payment.completed, payment.failed, payment.expired, payment.cancelled, refund.created, refund.completed, refund.failed, checkout.completed, checkout.expired.

Cuando una entrega falla, el sistema reintenta con backoff exponencial: inmediato, 1 minuto, 5 minutos, 30 minutos, 2 horas, 8 horas. La ventana total de reintento abarca aproximadamente 10 horas y 36 minutos.

Si el endpoint de webhook de un comerciante falla 10 veces consecutivas en cualquier evento, el sistema desactiva automáticamente la entrega de webhooks para esa aplicación y notifica al comerciante por email. Pueden reactivarlo desde el panel después de corregir el problema subyacente.

Cada intento de entrega se registra en la tabla webhook_deliveries, sirviendo tres propósitos: depuración, visibilidad en el panel y analíticas.


Este artículo es parte de la serie "Cómo construimos 0fee.dev". 0fee.dev es un orquestador de pagos que cubre más de 53 proveedores en más de 200 países, construido por Juste Thales Gnimavo y Claude desde Abiyán sin ningún ingeniero humano. Sigue la serie para conocer la historia completa de construcción.

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Thales & Claude deblo

El prompt decía que lo anunciara. El modelo no lo hizo. Así que lo hizo el worker: cerrar un silencio de 15 segundos en Déblo Voice

Déblo Voice se quedaba en silencio unos 15 segundos cada vez que una pregunta difícil activaba una búsqueda profunda. El prompt ya exigía un anuncio, pero el modelo de audio nativo emite la llamada a la función como su primer token. Además, el silencio tenía dos partes, la ejecución de la herramienta y la latencia de la respuesta, así que ningún prompt podía cerrarlo. Llevamos la garantía al worker de LiveKit: un anuncio pregrabado con la voz y el idioma de la sesión, y un suave sonido de tecleo mientras el agente piensa. Probado en producción el 16 de octubre de 2026: 14 y 17,5 segundos de silencio del lado del modelo, unos 0,4 segundos percibidos por el usuario.

13 min Oct 16, 2026
deblodeblo-voicevoice-aigemini-live +17
Thales & Claude zerosuite

El servidor que no dimos de baja: vaciar una máquina de producción en una noche, y cada número que comprobamos

Una noche, seis aplicaciones migradas fila por fila, tres copias de seguridad vacías, una sin destino y un servidor cuyo futuro cambió tres veces.

19 min Oct 2, 2026
caspclaude-codeclaude-opus-5.5infrastructure +10
Thales & Claude zerosuite

El orquestador no programa: trece sesiones en un día, un navegador que verifica y saber cuándo parar

Un día, una plataforma privada de un cliente, trece sesiones headless de Claude encadenadas por un orquestador que nunca escribe código. Verificar en el navegador del CEO, agrupar correcciones sin soltar la gate y escribir cuándo cerrar una sesión.

19 min Sep 30, 2026
caspclaude-codeclaude-opus-5.5multi-session +12