Webhook de invoices de cartão
O endpoint de recorrência de cartão, sua idempotência explícita e o problema dos +30 dias fixos.
Atualizado em 24/08/20264 min de leituraPagamentos e ciclo de vida
POST /subscription/pagarme/webhook/invoices. O nome do método (handleBaitaSalesforceWebhookService) é enganoso: não é webhook do Salesforce, é o webhook de invoices de assinatura recorrente de cartão (invoice.created / invoice.paid), distinto do webhook PIX que trata cobranças avulsas.
- Idempotência explícita (o comentário no código cita CLAUDE.md §4): compara data.id (invoiceId) com subscription.metadata.lastInvoiceId; se igual, retorna { skipped: true }.
- Em invoice.paid: estende user.nextInvoiceDate em +30 dias fixos (⚠️ não usa addMonths(collectionInterval) como o resto da base); incrementa subscription.renewalCount (exceto na 1ª cobrança); grava metadata.lastInvoiceId; dispara Metryca (só se wasRecharge) e Salesforce (fire-and-forget).
🔒 Mesmo gap de segurança do webhook PIX — também @Public() sem validação HMAC.
cartão
invoice
webhook
recorrência
renovação
pagarme