Eventos

Lista de todos os eventos que o Hubpay pode enviar para seus endpoints.

Tipos de evento

EventoQuando é disparado
charge.pendingCobrança criada com sucesso, aguardando pagamento
charge.paidPagamento confirmado pelo PSP
charge.expiredCobrança expirou sem pagamento
charge.cancelledCobrança cancelada via API ou pelo PSP
charge.failedFalha no processamento pelo PSP
charge.refundedCobranç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 });