Reintentos, desactivación y reenvío
Cuándo Vipter vuelve a intentar una entrega que falló, cuándo desactiva el endpoint por sí solo, qué pasa con los eventos mientras está desactivado y cómo usar el evento de prueba y el reenvío del panel.
Cada endpoint recibe su propia entrega de cada evento. Una entrega pasa por estos estados, que aparecen en la columna Estado de Entregas recientes:
| Estado | Significado |
|---|---|
pending | En la cola, esperando el primer intento o un reenvío. |
delivering | Enviándose ahora. |
succeeded | Tu servidor respondió 2xx en hasta 10 segundos. Estado final. |
failed | El último intento falló y hay otro programado. |
exhausted | Se agotaron los intentos, o el endpoint estaba desactivado. Estado final, hasta un reenvío manual. |
Lo que cuenta como fallo está en La respuesta.
Calendario de reintentos
Son hasta 8 intentos por entrega. El primero sale justo después de crearse el evento, en general en menos de un minuto. Después de cada fallo, Vipter espera:
| Intento | Espera después del fallo anterior | Tiempo desde el primer intento |
|---|---|---|
| 1 | 0 | |
| 2 | 1 minuto | 1 minuto |
| 3 | 5 minutos | 6 minutos |
| 4 | 30 minutos | 36 minutos |
| 5 | 2 horas | cerca de 2 h 36 min |
| 6 | 6 horas | cerca de 8 h 36 min |
| 7 | 24 horas | cerca de 32 h 36 min |
| 8 | 48 horas | cerca de 80 h 36 min |
Las esperas son mínimas: la cola se procesa cada minuto, así que cada intento puede salir un poco después. Si el octavo falla, la entrega queda exhausted. En la práctica, un endpoint que vuelve a funcionar dentro de unos 3 días y 8 horas después de un fallo todavía recibe el evento por sí solo.
Cada intento lleva el mismo cuerpo, con el mismo id y el mismo created, y una firma nueva, con la t del momento del envío.
Desactivación automática
Vipter cuenta, por endpoint, las entregas seguidas que terminaron en exhausted. Cuando el conteo llega a 20, el endpoint se desactiva y su tarjeta muestra el motivo auto-disabled after 20 exhausted deliveries. Una entrega con succeeded pone el conteo en cero.
El conteo es de entregas agotadas, no de intentos: son 20 eventos que fallaron 8 veces cada uno. Un endpoint caído solo se desactiva después de pasar por el calendario completo de al menos 20 eventos.
Para volver a encenderlo, corrige tu servidor y activa el interruptor Activo del endpoint. Encender el interruptor pone el conteo en cero y borra el motivo.
Eventos mientras el endpoint está desactivado
Vale tanto para la desactivación automática como para el interruptor apagado a mano:
- Los eventos nuevos no se guardan para él. El endpoint solo recibe entregas de los eventos creados mientras está activo. Un evento creado durante la desactivación nunca llega a ese endpoint, ni siquiera después de volver a encenderlo, y no hay forma de reenviarlo.
- Las entregas que ya estaban en la cola se cierran. Cuando les toca, quedan
exhaustedcon el errorendpoint disabled, sin intentar enviarse y sin contar para la desactivación. Volver a encender el endpoint no las retoma: usa Reenviar en cada una, con el endpoint ya activo.
Lo mismo vale para un endpoint creado después de un evento: no recibe eventos anteriores a su creación.
Para revisar qué pasó en ese período, compara tu sistema con las listas de pedidos, suscripciones y clientes del panel.
Reenviar una entrega
Entregas recientes muestra las 50 entregas más recientes de la tienda, de todos los endpoints. Toda fila que no está succeeded tiene el botón Reenviar. Al hacer clic:
- La entrega vuelve a
pendingcon los intentos en cero y se envía en el momento. - Aparece Entrega reencolada..
- Si vuelve a fallar, sigue el calendario desde el principio.
El reenvío manda el mismo evento, con el mismo id: tu control de idempotencia lo trata como repetición si ya se procesó. La firma se calcula en el momento del reenvío, con el secreto actual.
No se puede reenviar una entrega succeeded desde el panel. Reenviar a un endpoint desactivado cierra la entrega en el momento con endpoint disabled: enciende el endpoint antes.
Evento de prueba
El botón Enviar evento de prueba crea un evento customer.created nuevo, con un cliente ficticio y "test": true en data.object. El formato está en el catálogo.
- Va a todos los endpoints activos que reciben
customer.createdo todos los eventos, y solo a esos. - Se envía en el momento y aparece Evento de prueba en cola.. Si falla, sigue el mismo calendario de reintentos de un evento real y cuenta para la desactivación automática.
- Cada clic crea un evento con un
idnuevo. - Sin ningún endpoint activo, el botón queda deshabilitado.
Quitar un endpoint
Quitar borra el endpoint, el secreto y su historial de entregas. Las entregas pendientes se detienen. Para cambiar de URL sin perder eventos, crea el endpoint nuevo, confirma que recibe el evento de prueba y solo entonces quita el anterior. En ese intervalo, los dos reciben los mismos eventos, con el mismo id.
Qué hacer después
- Consulta cómo responder rápido para no generar reintentos innecesarios.
- Rota el secreto sin perder eventos en Verificar la firma.
Verificar la firma
Cómo firma Vipter cada webhook, código probado en Node.js, PHP y Python para comprobar la firma, cómo rotar el secreto sin perder eventos y los errores que más hacen fallar la verificación.
Parámetros de URL del checkout
Referencia técnica de cada parámetro que acepta el enlace de checkout, con formato, validación, qué pasa con un valor inválido y cómo armar los enlaces en tu código.