Skip to content

Webhooks -- Vision General

Los webhooks permiten que su aplicacion reciba notificaciones en tiempo real sobre eventos en la plataforma Owem Pay. Cuando ocurre un evento, Owem Pay envia un HTTP POST a la URL registrada.

Como Funciona

  1. Registre una URL de webhook en su cuenta
  2. Cuando ocurra un evento (ej: PIX recibido), Owem Pay envia un HTTP POST a su URL
  3. Su aplicacion procesa la notificacion y responde con estado 2xx (200, 201 o 204)

Eventos Disponibles

EventoDescripcion
pix.receivedPIX recibido en la cuenta (cash-in confirmado)
pix.completedTransferencia PIX enviada con exito (cash-out)
pix.failedTransferencia PIX fallida
pix.refundDevolucion PIX procesada
pix.medNotificacion MED recibida del BACEN

Seguridad

Cada notificacion incluye encabezados de seguridad para validacion:

EncabezadoDescripcion
X-Owem-SignatureFirma HMAC-SHA256 del payload
X-Owem-TimestampMarca de tiempo del envio (ISO 8601)
X-Owem-Event-IdID unico del evento (para deduplicacion)
X-Owem-Event-TypeTipo del evento (ej: pix.received)

Validando la Firma

Valide la firma para garantizar que la notificacion fue enviada por Owem Pay:

javascript
const crypto = require('crypto');

function validateWebhook(payload, timestamp, signature, secret) {
  const message = `${timestamp}.${payload}`;
  const expected = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(message)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}

Valide siempre

Nunca procese un webhook sin validar la firma. Esto protege contra solicitudes falsificadas.

Politica de Reintentos

Si su URL retorna un estado diferente de 2xx, Owem Pay realiza reintentos automaticos:

IntentoIntervalo
1oInmediato
2o1 minuto
3o5 minutos
4o30 minutos
5o2 horas

Despues de 5 intentos sin exito, el evento se marca como failed y no sera reenviado automaticamente.

Idempotencia

Su aplicacion debe ser idempotente: si recibe el mismo evento mas de una vez (identificado por el X-Owem-Event-Id), debe procesarlo sin duplicar efectos.

Requisitos del Endpoint

  • La URL debe usar HTTPS
  • Debe responder con estado 2xx en un plazo de 5 segundos
  • El body de la respuesta es ignorado

Siguientes Pasos

Owem Pay Instituição de Pagamento — ISPB 37839059