Eventos
Lista de todos os eventos que o Hubpay pode enviar para seus endpoints.
Tipos de evento
| Evento | Quando é disparado |
|---|---|
charge.pending | Cobrança criada com sucesso, aguardando pagamento |
charge.paid | Pagamento confirmado pelo PSP |
charge.expired | Cobrança expirou sem pagamento |
charge.cancelled | Cobrança cancelada via API ou pelo PSP |
charge.failed | Falha no processamento pelo PSP |
charge.refunded | Cobrança estornada |
Estrutura do evento
Todos os eventos seguem o mesmo envelope:
json
{
"id": "evt_<uuid>",
"type": "<event.type>",
"created_at": "<iso8601>",
"data": {
// Objeto Charge completo
}
}Idempotência
Use o campo id do evento (também disponível no header X-Hubpay-Event-Id) para deduplicar entregas. O Hubpay pode entregar o mesmo evento mais de uma vez em caso de falha de rede.
typescript
// Exemplo: salvar evento já processado no banco
const eventId = req.headers.get('x-hubpay-event-id');
const alreadyProcessed = await db.query.processedEvents.findFirst({
where: eq(processedEvents.eventId, eventId),
});
if (alreadyProcessed) {
return new Response('ok'); // retorna 200 mas não reprocessa
}
// processar evento...
await db.insert(processedEvents).values({ eventId });