Webhooks

Webhooks

Cómo Skip te entrega eventos firmados sobre el ciclo de vida de una orden.

Skip envía un POST firmado a la URL que registres durante el onboarding (webhook_notification_url) cada vez que se crea o cambia de estado una orden AAPD.

POST {tu webhook_notification_url}
Content-Type: application/json
X-Gokeipay-Signature: sha256={hex}

Contrato de entrega

  • Evento. Hoy Skip emite un único evento: order.changed. Se dispara al crear la orden y en cada cambio de estado. El resultado (pagada, reembolsada, etc.) lo lees en data.status, no en el nombre del evento. Payloads y estados en Catálogo de eventos.
  • Firma. Cada POST viene firmado con HMAC-SHA256 sobre el body crudo. Verifícala antes de confiar en el payload — ver Verificación de firma.
  • Reintentos. Si tu endpoint no responde 2xx, Skip reintenta con backoff — ver Política de retries.
  • Idempotencia. Skip crea a lo más una notificación paid por orden, pero la misma notificación puede entregarse más de una vez (reintentos tras un timeout tuyo, con payload idéntico). Deduplica por la tupla (data.hash, data.status).

Qué hace tu endpoint

  1. Lee el body crudo (no lo parsees antes de verificar la firma).
  2. Verifica X-Gokeipay-Signature.
  3. Responde 2xx rápido; procesa de forma asíncrona si el trabajo es pesado.
  4. Ramifica según data.status. Trata data.status == "paid" como la confirmación autoritativa del pago (el postMessage del widget es solo señal de UI).

Para una implementación completa en 5 lenguajes, ver Recetas → Verificar un webhook.

On this page