Ir al contenido

Entrega y reintentos

IDPOS le reintenta si su sistema no responde a tiempo. Para confirmar que recibió un evento, responda con un código 2xx. Si no lo hace, IDPOS vuelve a enviarlo siguiendo un calendario de reintentos.

Por eso un mismo evento puede llegar más de una vez y fuera de orden: su integración debe descartar duplicados y no depender del orden.

SituaciónResultado
Su endpoint responde con cualquier código 2xxEntregado. No se reintenta.
Su endpoint responde con cualquier código que no es 2xxEnvío fallido. Se reintenta.
Error de conexión (no se pudo establecer la conexión)Envío fallido. Se reintenta.
Se agota el tiempo de esperaEnvío fallido. Se reintenta.
El cuerpo del evento supera los 5 MiB (5 242 880 bytes)No se envía. El evento falla y no se reintenta.
ParámetroValor
Tiempo de espera por defecto30 segundos
Rango configurable por suscripciónDe 1 a 60 segundos

Responda primero y procese el evento después, en segundo plano. Una respuesta lenta se trata igual que una respuesta fallida y genera un reintento, aunque su sistema haya procesado el evento.

Con la configuración por defecto, IDPOS hace como máximo 5 intentos de envío por evento (el primero y 4 reintentos).

IntentoEspera desde el intento anteriorTiempo acumulado mínimo desde el primer intento
1Inmediato0
260 segundos1 minuto
35 minutos6 minutos
415 minutos21 minutos
51 hora1 hora y 21 minutos

El tiempo acumulado no incluye lo que tarde su servidor en responder en cada intento.

Si falla el último intento, el evento no se vuelve a enviar de forma automática. IDBI puede reiniciar el envío de un evento fallido; en ese caso se vuelve a intentar con el mismo calendario.

ElementoEntre reintentos
X-Webhook-Id y event_id del cuerpoNo cambian. Identifican el evento.
X-Webhook-TimestampCambia en cada intento.
X-Webhook-SignatureCambia en cada intento, porque depende de la marca de tiempo.

Verifique siempre con las cabeceras de la petición que está recibiendo: consulte Autenticación y firma.

Un mismo evento puede llegar más de una vez. Ocurre, por ejemplo, si su servidor procesó el evento pero la respuesta no llegó a IDPOS y, por eso, se reintentó.

EstrategiaCómo aplicarla
Deduplicar por eventoGuarde el event_id del cuerpo de cada evento procesado y descarte los que ya vio. Léalo después de verificar la firma.
Deduplicar por entidadUse data.id junto con event_type como segunda clave: por ejemplo, el par Pago completo (order.paid_in_full) y el id de la orden.
Operaciones idempotentesDiseñe el procesamiento de modo que repetirlo no cambie el resultado.
RecomendaciónMotivo
No asuma que los eventos llegan en el orden en que ocurrieron.Los reintentos alteran el orden.
Use las fechas del evento (created_at, sold_at, paid_at) y el estado (status) para decidir qué información es más reciente.Evita sobrescribir datos nuevos con datos viejos.
Si recibe un evento de una entidad que aún no conoce, guárdelo igualmente.El evento anterior puede llegar después.

Revise el catálogo de eventos y la estructura común de los envíos.