Webhooks o sondeo: cómo diseñar integraciones fiables
Que te avisen o preguntar cada poco: cada enfoque tiene su sitio. La fiabilidad depende más de cómo lo implementes que de cuál elijas.
Cuando dos sistemas tienen que enterarse de lo que pasa en el otro (un pago confirmado, un pedido enviado, un cambio de stock) hay dos formas de hacerlo.
Webhooks: que te avisen
El sistema origen hace una petición HTTP a una URL tuya cuando ocurre algo. Es inmediato y eficiente. Lo usan las pasarelas de pago (Stripe, Redsys con su notificación) y muchas plataformas.
Sondeo (polling): preguntar cada poco
Tu sistema pregunta periódicamente «¿hay algo nuevo desde la última vez?». Más simple y más robusto ante caídas, pero con retraso y más carga.
Cómo hacer fiable un webhook
- Verifica la firma de cada notificación con el secreto compartido. Nunca aceptes un «pago confirmado» sin verificarlo.
- Responde rápido (200) y procesa después. Si tardas, el origen reintenta y recibirás duplicados.
- Idempotencia: guarda el identificador de cada evento y no lo proceses dos veces.
- No dependas solo del webhook: un proceso de conciliación periódico recoge lo que se haya perdido.
// Esquema de un receptor idempotente
$evento = verificarFirma(file_get_contents('php://input'), $cabecera, $secreto);
if (yaProcesado($evento['id'])) {
http_response_code(200);
exit;
}
encolar($evento);
marcarProcesado($evento['id']);
http_response_code(200);
Lo mejor de los dos
En integraciones críticas usamos ambos: webhook para la inmediatez y un sondeo cada hora que compara y corrige. Así, si un aviso se pierde, la diferencia dura como mucho una hora.