Esquema
| Campo | Tipo | Descrição |
|---|---|---|
webhookId | UUIDv7 | Identificador único |
externalRef | string | ID do evento no Stripe, máx 400 |
provider | enum | STRIPE |
eventType | string | Tipo do evento Stripe, máx 255 |
headers | JSON | Headers da requisição |
body | JSON | Body da requisição |
signature | string | Assinatura HMAC |
status | enum | PENDING, PROCESSING, PROCESSED, FAILED |
attempts | integer | Tentativas de processamento (padrão 0) |
errors | JSON? | Detalhes de erros |
receivedAt | datetime | Quando foi recebido |
processedAt | datetime? | Quando foi processado |
createdAt | datetime | Criação |
updatedAt | datetime | Última atualização |
Webhooks são o mecanismo principal de sincronização entre o Stripe e o domínio Billing. Eventos como
invoice.paid, invoice.payment_failed, customer.subscription.updated disparam atualizações de estado nas entidades locais (Invoice, Subscription, etc.).Transições de Estado
Regras de Negócio
- Constraint único: (provider, externalRef)
- Assinatura HMAC validada no recebimento
- Webhooks com falha podem ser retentados (attempts incrementado)
- Apenas log de auditoria — sem relacionamentos diretos com outras entidades