Referencia de los eventos
Cada evento es un objeto JSON que contiene un tipo, un ID único y los datos de el recurso afectado. Suscríbase a estos eventos al crear un endpoint de webhook.
Los eventos se emiten en modo livemode: true en producción
y livemode: false en el sandbox. Un mismo endpoint solo recibe
los eventos del modo correspondiente a su clave API.
En caso de reintento, el mismo evento puede entregarse varias veces con el mismo id. Almacene los ID de los eventos ya procesados e ignore
los duplicados para garantizar la idempotencia de su handler.
Eventos de Pagos
| Evento | Desencadenante |
|---|---|
payment_intent.created | PaymentIntent creado. |
payment_intent.succeeded | Pago correcto: activar la entrega. |
payment_intent.payment_failed | Pago fallido tras el último intento. |
payment_intent.canceled | PaymentIntent cancelado manualmente. |
checkout_session.completed | Sesión de checkout en estado complete. |
checkout_session.expired | Sesión caducada sin pago. |
transaction.succeeded | Transacción finalizada en el operador. |
transaction.failed | Transacción fallida en el operador. |
refund.created | Reembolso iniciado. |
refund.succeeded | Reembolso devuelto al comprador. |
refund.failed | Reembolso fallido en el operador. |
payment_link.paid | Enlace de pago utilizado correctamente. |
Eventos de Clientes
| Evento | Desencadenante |
|---|---|
customer.created | Nuevo |
customer.updated | Datos del cliente modificados. |
customer.deleted | Customer anonimizado (cumplimiento del RGPD). |
payment_method.attached | Método de pago añadido al cliente. |
payment_method.detached | Método de pago retirado del cliente. |
Eventos de Suscripciones
| Evento | Desencadenante |
|---|---|
subscription.created | Nueva suscripción creada. |
subscription.updated | Suscripción modificada (plan, cantidad…). |
subscription.renewed | Renovación correcta: factura pagada. |
subscription.past_due | Fallo de renovación: activar el recordatorio. |
subscription.canceled | Cancelación efectiva. |
subscription.trial_will_end | 3 días antes del fin del período de prueba. |
invoice.created | Factura generada automáticamente. |
invoice.finalized | Factura finalizada y enviada al cliente. |
invoice.paid | Factura pagada. |
invoice.payment_failed | Fallo de pago de la factura. |
Eventos de la Cuenta
| Evento | Desencadenante |
|---|---|
kyc.submitted | Expediente KYC enviado para su validación. |
kyc.approved | KYC validado: cuenta plenamente operativa. |
kyc.rejected | KYC rechazado: se requiere una acción del comerciante. |
payout.created | Transferencia a la cuenta bancaria iniciada. |
payout.paid | Transferencia realizada correctamente. |
payout.failed | Transferencia fallida: compruebe los datos bancarios. |
Estructura de un evento
Implementar un handler
Su handler de webhook debe responder con un código HTTP 2xx
en un máximo de 10 segundos. Para los procesamientos largos, encole la tarea
en una cola asíncrona y responda de inmediato.
Empiece siempre verificando la firma Sangho-Signature
antes de cualquier procesamiento. Consulte la guía de verificación de la firma
para ver los ejemplos completos por lenguaje.
Su handler debe ignorar silenciosamente los tipos de eventos que no reconozca
y devolver un 200. Sangho puede emitir nuevos
tipos de eventos sin previo aviso: un handler que devuelva un error ante un tipo
desconocido se reintentará innecesariamente.
Utilice POST /webhooks/{id}/test/ para enviar un evento
ficticio a su endpoint y validar su integración sin desencadenar un pago real.
El evento de prueba tiene livemode: false sea cual sea
el entorno.