Ir al contenido

Configurar webhooks

Cuando ocurre un evento en una transacción, Rivopay envía un POST a tu webhookUrl registrada con los datos del evento.

En la plataforma de cliente podrá configurar su propio webhookUrl en donde recibir los webhooks.

HeaderValor
Content-Typeapplication/json
X-Webhook-EventNombre del evento (ej: payin.completed)
User-AgentRivopayGateway/1.0
EventoHeader X-Webhook-EventCuándo se dispara
payin.completedpayin.completedPago PIX recibido y confirmado
payin.failedpayin.failedPago PIX rechazado o fallido
payin.reversedpayin.reversedPago recibido fue devuelto al pagador
payout.completedpayout.completedTransferencia PIX enviada y confirmada
payout.failedpayout.failedTransferencia PIX rechazada por el banco
payout.reversedpayout.reversedTransferencia fue revertida por el banco receptor
app.post('/webhook/rivoplay', express.json(), async (req, res) => {
const eventType = req.headers['x-webhook-event'];
const payload = req.body;
const { txId, status } = payload;
switch (eventType) {
case 'payin.completed':
await confirmarPedido(txId, payload.netAmount);
break;
case 'payin.failed':
await cancelarPedido(txId);
break;
case 'payout.failed':
await notificarFalloPago(txId, payload.failureReason);
break;
case 'payout.reversed':
await procesarReversion(txId);
break;
}
// SIEMPRE responde 200 aunque tengas un error interno
res.status(200).json({ received: true });
});