Skip to main content

¿Qué vas a lograr?

Al terminar esta guía tendrás un servidor que recibe y valida webhooks de OnePay, permitiéndote reaccionar en tiempo real a eventos como pagos aprobados, cargos exitosos o dispersiones completadas.

Prerrequisitos

  • Cuenta de OnePay con llaves API
  • Un servidor web con una URL pública accesible (o Ngrok para desarrollo local)

¿Cómo funcionan los webhooks?

OnePay envía una solicitud HTTP POST a tu URL con:
  • El payload del evento en el body
  • Un header x-webhook-token con un token de autenticación
  • Una firma HMAC-SHA256 para verificar la integridad

Paso a paso

1

Configurar la URL del webhook

  1. Ve a Desarrolladores > Webhooks en el panel de OnePay
  2. Agrega la URL de tu servidor (ej: https://tuapp.com/webhooks/onepay)
  3. Copia el secreto generado y el token de autenticación - los necesitarás para verificar los webhooks
2

Crear el endpoint en tu servidor

Tu servidor debe:
  1. Recibir solicitudes POST
  2. Verificar la firma HMAC
  3. Responder 200 OK inmediatamente
  4. Procesar el evento de forma asíncrona
3

Probar con Ngrok (desarrollo local)

Si estás desarrollando en local, usa Ngrok para exponer tu servidor:
Copia la URL generada (ej: https://abc123.ngrok.io/webhooks/onepay) y configúrala como URL del webhook en el panel de OnePay.

Eventos disponibles

Pagos

Cargos (Débitos)

Dispersiones

Suscripciones

Cuentas

Estructura del payload

Cada webhook tiene la siguiente estructura:
El nombre del objeto principal varía según el tipo de evento (payment, charge, cashout, subscription, etc.).

Buenas prácticas

Siempre responde 200 OK antes de procesar el evento. Si tu servidor tarda mucho en responder, OnePay podría considerar que el webhook falló e intentar reenviarlo.
  1. Verifica la firma: Siempre valida el HMAC antes de procesar el evento
  2. Idempotencia: Usa el event.type + el ID del recurso para evitar procesar un evento duplicado
  3. Responde rápido: Retorna 200 inmediatamente y procesa el evento en segundo plano
  4. Registra los eventos: Guarda un log de todos los webhooks recibidos para debugging
  5. Diferencia ambientes: El campo event.environment indica si es test o live

Errores comunes

Siguiente paso

Cobrar con link de pago

Crea tu primer cobro y recibe el webhook de pago aprobado.

Dispersar dinero

Envía dinero y recibe el webhook de dispersión procesada.