Cómo funciona un webhook
1
Ocurre un evento
Por ejemplo, se completa un pago.
2
PayCode envía la notificación
PayCode envía una solicitud
POST a la URL que registraste, con un payload en formato JSON.3
Tu servidor responde
Tu servidor procesa la notificación y responde.
- La mayoría de los webhooks se disparan solo cuando el evento se completa exitosamente.
- Algunos eventos, como el pago en efectivo, envían más de una notificación por transacción, en distintos momentos del proceso (ver Pago en efectivo).
- Si tu servidor no responde exitosamente, PayCode reintenta la entrega hasta 3 veces, con un intervalo de 1 hora entre cada intento enviando el mismo payload en cada reintento. Esta política aplica igual para todos los tipos de evento.
- Tu endpoint debe retornar errores claros y específicos si algo sale mal al recibir la notificación. Un error
500genérico no es suficiente para que el equipo de soporte de PayCode pueda diagnosticar el problema.
Tipos de evento disponibles
Cada callback que registres se asocia a untype_callback específico. El payload que recibe tu servidor depende del tipo de evento.
A diferencia de otras integraciones donde todos los eventos comparten una misma envoltura, aquí cada
type_callback tiene su propia estructura de payload. Revisa la sección correspondiente antes de construir tu endpoint receptor.Payment Link
Se dispara cuando se completa un pago iniciado a través de un Payment Link o del Embebido.SPEI recibido
Se dispara cuando entra un abono a la CLABE del comercio.Cuando el abono se cruza contra un cobro SPEI previamente esperado, el payload incluye además el campo
resultadoMensajeCobro, con el resultado de ese cruce de montos: pagado, incompleto o excedido.Pago con tarjeta
Se dispara al completarse (o rechazarse) un pago con tarjeta.Si el cliente solicitó guardar su tarjeta para futuros pagos, el payload incluye además
token_card con el token generado, o token_error si la tokenización falló.CoDi
Se dispara cuando se recibe un pago a través de CoDi.Pago en efectivo
El pago en efectivo en cajero (también conocido internamente como CIE o Practicaja) genera dos notificaciones distintas para la misma transacción, en dos momentos diferentes del proceso.Registro y Confirmación no son dos suscripciones distintas: ambos se reciben bajo el mismo
type_callback: cie. Solo necesitas registrar un callback para recibir las dos notificaciones de una misma transacción.1. Registro
Se dispara cuando el cliente genera su referencia de pago (por ejemplo, al abrir el link de pago y elegir “Efectivo”), antes de que el pago se realice. En este punto el dinero todavía no ha sido cobrado.La estructura de este payload es distinta a la del webhook de Confirmación porque, además de la información del pago (
payment), este evento también incluye información del link de pago asociado.El campo
metadata está presente en la estructura del payload, pero en este evento normalmente no se utiliza.2. Confirmación
Se dispara cuando el pago ya fue cobrado y el banco lo notificó a PayCode. Este es el webhook que debes usar para confirmar que el dinero fue recibido.Cash in (tiendas de conveniencia)
Se dispara cuando se confirma un pago realizado en efectivo en una tienda de conveniencia afiliada (por ejemplo OXXO).Cobro programado / domiciliación
Se dispara en cada intento de cobro de una domiciliación programada.Buenas prácticas para tu endpoint receptor
- Responde rápido. Guarda la notificación (por ejemplo en una cola o en tu base de datos) y procesa la lógica de negocio después, en vez de hacer todo el trabajo pesado antes de responder.
- Valida que los campos esperados existan antes de usarlos; no asumas que un campo opcional (como
metadataotoken_card) siempre estará presente. - Usa un identificador único para evitar procesar el mismo evento dos veces, por ejemplo
hash,reference_numberoclave_rastreosegún el tipo de evento. - En pagos de efectivo, distingue el webhook de registro del de confirmación (ver Pago en efectivo) y marca un pedido como pagado únicamente con el segundo.
- Registra (log) cada notificación recibida, incluyendo las que no pudiste procesar, para facilitar el diagnóstico si algo falla.
Administrar tus callbacks
Estos son los endpoints para registrar, consultar, modificar y eliminar los callbacks de tu negocio.Obtener callback
Consulta la información de un callback registrado. Método:GET Endpoint: /Api/v2/hook/get Header requerido: Authorization: Bearer {token}
integer
required
Identificador del callback a consultar
Crear callback
Registra una nueva URL donde PayCode enviará las notificaciones de los eventos configurados. Método:POST Endpoint: /Api/v2/hook/create Header requerido: Authorization: Bearer {token}
string
required
URL de tu servidor donde PayCode enviará las notificaciones
string
required
Tipo de evento que disparará la notificación. Ver tipos de evento disponibles
Actualizar callback
Modifica la URL o el tipo de evento de un callback existente. Método:PUT Endpoint: /Api/v2/hook/update Header requerido: Authorization: Bearer {token}
integer
required
Identificador del callback a actualizar
string
required
Nueva URL donde PayCode enviará las notificaciones
string
required
Nuevo tipo de evento
Eliminar callback
Elimina un callback registrado. PayCode dejará de enviar notificaciones a esa URL. Método:DELETE Endpoint: /Api/v2/hook/delete Header requerido: Authorization: Bearer {token}
integer
required
Identificador del callback a eliminar
Reenviar notificación
Reenvía una notificación de un evento que ya ocurrió. Útil cuando tu servidor no recibió correctamente la notificación original. Método:POST Endpoint: /api/v2/internal/callback/resendnotificacion Header requerido: Authorization: Bearer {token}
integer
required
Identificador de tu negocio en PayCode
string
required
Tipo de evento cuya notificación quieres reenviar

1.png?fit=max&auto=format&n=4-5R_aQB0EkHGUZD&q=85&s=9d9475963092edc3d5df46df2866696a)