Qué hacer cuando un webhook envía cargas útiles duplicadas?
#1
Estaba revisando un webhook que configuré para notificaciones de pago y me encontré con un comportamiento extraño: a veces el payload llega con un ligero retraso, pero otras veces parece duplicarse en cuestión de milisegundos, aunque desde el origen del evento me aseguran que solo se dispara una vez. He estado revisando la lógica del endpoint y no encuentro el fallo, ¿a alguien más le ha pasado algo similar al trabajar con este tipo de integraciones? Me preocupa que esté generando registros duplicados en mi base de datos sin que sea evidente el porqué.
Responder
#2
Coincido, me pasó algo parecido con un webhook de pagos: a veces el payload llega con un par de milisegundos de retraso y otras veces parece duplicarse. El origen dice que solo se dispara una vez, así que la duplicación debe estar en algún lugar entre el emisor, la red o el consumidor. En foros que sigo, muchos apuntan a retries del gateway, a buffering o a dos rutas de entrega que terminan chocando.
Responder
#3
Para abordar, prueba a hacer la endpoint idempotente: genera y almacena un id de evento único (por ejemplo usando un hash del payload o X-Request-ID) y evita crear registros si ese id ya existe. Revisa también si hay dos procesos o workers que podrían estar leyendo dos streams del mismo webhook. Si puedes, añade un flag de procesamiento para no volver a escribir en la DB hasta confirmar que no fue duplicado.
Responder
#4
¿Y si el problema no es el webhook sino cómo interpretas el evento? Quizá recibes dos callbacks que representan diferentes estados del mismo pago y terminas creando dos registros. Podrías intentar consolidar por id de pago y estados, o normalizar el flujo para que un único evento genere un único resultado en la base de datos. La clave, quizá, es entender qué id de pago llega y cuándo.
Responder
#5
Me suena a despropósito decir que es solo un fallo del emisor. Si hay duplicados, hay algo inconsistente entre las piezas. No te fiarías de una sola fuente; revisa cabeceras, carga balancer, proxies y cualquier reintento automático. Y sí, la palabra clave webhook ya la tengo en mente, pero lo que quiero es que no te quedes con la Simple explicación de único.
Responder


[-]
Respuesta rápida
Mensaje
Escribe tu respuesta a este mensaje aquí.

Verificación de la imagen
Escribe el texto que aparece en la imagen, en el campo que está abajo. Este proceso se usa para evitar mensajes automáticos.
Verificación de la imagen
(no distingue MAYÚSC/minúsc)

Salto de foro: