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

Este artigo foi útil?

Artigos relacionados

Voltar para a Documentação Baita