GitHub Repository
Código-fonte completo e guia de configuração
Configuração Rápida
1. Pré-requisitos
Você precisa de:- Uma conta da Vercel
- Uma conta no banco de dados Neon
- Uma chave de API do Dodo Payments em Developer → API Keys, no dashboard
2. Instalar dependências
3. Configuração do banco de dados
- Cadastre-se no Neon e crie um projeto.
- Abra o SQL Editor.
- Copie todo o conteúdo de
schema.sqle execute-o. - Copie sua string de conexão em Connection Details.
4. Definir as variáveis de ambiente iniciais
Você definirá
DODO_PAYMENTS_WEBHOOK_KEY após a implantação, quando tiver a URL do webhook.5. Implantar
6. Obter Sua URL de Webhook
Sua URL de webhook é:7. Registrar Webhook no Painel do DodoPayments
- Acesse Developer → Webhooks no dashboard do Dodo Payments.
- Clique em Add endpoint.
- Insira a URL do webhook.
- Selecione estes eventos:
subscription.active,subscription.cancelled,subscription.renewed. - Clique em Create endpoint e copie o signing secret.
8. Definir Chave de Webhook e Reimplantar
O Que Ele Faz
O handler do webhook processa eventos de assinatura e os armazena no PostgreSQL:subscription.active— Cria ou atualiza registros de clientes e assinaturassubscription.cancelled— Marca a assinatura como canceladasubscription.renewed— Atualiza a próxima data de cobrança
Principais Recursos
- Verificação de assinatura — Usa o SDK do Dodo Payments para verificar a autenticidade do webhook
- Idempotência — Usa o cabeçalho
webhook-idpara evitar processamento duplicado - Registro de eventos — Armazena todos os eventos na tabela
webhook_eventspara fins de auditoria - Tratamento de erros — Registra falhas e marca eventos para nova tentativa
Este exemplo trata três eventos principais de assinatura com o mínimo de campos. Você pode estendê-lo para oferecer suporte a tipos de eventos e campos adicionais conforme suas necessidades.
Arquivos de Configuração
Esquema do Banco de Dados
customers— E-mail, nome e ID do cliente no Dodo Paymentssubscriptions— Status, valor, próxima data de cobrança, vinculada aos clienteswebhook_events— Registro de eventos com ID do webhook para idempotência
Código de Implementação
Como Funciona
O handler do webhook:- Desativa a análise do body — Para acessar o body bruto e verificar a assinatura
- Verifica a assinatura — Usa o SDK do Dodo Payments para verificar a solicitação com HMAC-SHA256
- Verifica duplicatas — Usa o cabeçalho
webhook-idpara evitar processar o mesmo evento duas vezes - Registra o evento — Armazena o webhook bruto na tabela
webhook_eventspara fins de auditoria - Processa o evento — Cria ou atualiza clientes e assinaturas no Neon
- Trata erros — Registra falhas e marca eventos como não processados para nova tentativa
Testando
Desenvolvimento local:- Selecione seu projeto.
- Acesse Deployments → implantação mais recente.
- Clique em Functions → Logs.
- Acesse Developer → Webhooks.
- Adicione um endpoint com a URL das Vercel Functions.
- Selecione
subscription.active,subscription.cancelledesubscription.renewed.