Pular para o conteúdo principal

GitHub Repository

Código-fonte completo e guia de configuração

Configuração Rápida

1. Pré-requisitos

2. Instalar Dependências

3. Configuração do Banco de Dados

  1. Inscreva-se no Neon
  2. Crie um novo projeto
  3. Abra o Editor SQL
  4. Copie e cole o conteúdo de schema.sql
  5. Execute a consulta
  6. Obtenha sua string de conexão do Neon → Connection Details

4. Definir Variáveis de Ambiente Iniciais

Observação: Configuraremos DODO_PAYMENTS_WEBHOOK_KEY após a implantação assim que você tiver a URL do webhook.

5. Inicializar e Implantar

6. Obter Sua URL de Webhook

Sua URL de webhook é:

7. Registrar Webhook no Painel do DodoPayments

  1. Vá para Painel do DodoPayments → Developer → Webhooks
  2. Crie um novo endpoint de webhook
  3. Configure sua URL de webhook como o endpoint
  4. Ative estes eventos de assinatura:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. Copie o Signing Secret

8. Definir Chave de Webhook e Reimplantar

O Que Ele Faz

Processa eventos de assinatura e os armazena no PostgreSQL:
  • subscription.active - Cria/atualiza registros de clientes e assinaturas
  • subscription.cancelled - Marca a assinatura como cancelada
  • subscription.renewed - Atualiza a próxima data de cobrança

Principais Recursos

Verificação da assinatura - Usando a biblioteca dodopayments
Idempotência - Evita processamentos duplicados com IDs de webhook
Registro de eventos - Trilhas completas na tabela webhook_events
Tratamento de erros - Registrados e passíveis de nova tentativa
Observação: Esta implementação demonstra o tratamento de três eventos principais de assinatura (subscription.active, subscription.cancelled, subscription.renewed) com campos mínimos. Você pode facilmente estendê-la para suportar tipos de eventos adicionais e campos conforme suas necessidades.

Arquivos de Configuração

Esquema do Banco de Dados

Tabelas criadas:
  • customers - Email, nome, dodo_customer_id
  • subscriptions - Status, valor, next_billing_date, vinculado a clientes
  • webhook_events - Registro de eventos com webhook_id para idempotência

Código de Implementação

Como Funciona

O manipulador de webhooks:
  1. Verifica a assinatura - Garante que a requisição é da DodoPayments usando HMAC-SHA256
  2. Verifica duplicatas - Usa o ID do webhook para evitar processar o mesmo evento duas vezes
  3. Registra o evento - Armazena o webhook bruto na tabela webhook_events para auditoria
  4. Processa o evento - Cria ou atualiza clientes e assinaturas no Neon
  5. Trata erros - Registra falhas e marca o evento como não processado para nova tentativa

Testando

Desenvolvimento local:
Visualize os logs no Painel do Netlify:
  1. Selecione seu site → aba Functions
  2. Clique na função webhook
  3. Veja logs em tempo real e o histórico de invocações
Configure no Painel do DodoPayments:
  1. Vá para Desenvolvedores → Webhooks
  2. Adicione o endpoint com sua URL das Funções do Netlify
  3. Habilite: subscription.active, subscription.cancelled, subscription.renewed

Problemas Comuns

Recursos

Última modificação em 22 de maio de 2026