GitHub Repository
Código-fonte completo e guia de configuração
Configuração Rápida
1. Pré-requisitos
Você precisa de:- Uma conta do Supabase com um projeto criado
- Uma chave de API do Dodo Payments em Developer → API Keys no dashboard
2. Autenticar e vincular
3. Configuração do banco de dados
- Acesse o dashboard do Supabase.
- Abra o SQL Editor.
- Copie todo o conteúdo de
schema.sqle execute-o.
4. Definir secrets iniciais
O Supabase fornece automaticamenteSUPABASE_URL e SUPABASE_SERVICE_ROLE_KEY em runtime.
Você definirá
DODO_PAYMENTS_WEBHOOK_KEY após a implantação, quando tiver a URL do webhook.5. Implantar
A função já está configurada emfunctions/webhook/index.ts.
6. Obter a URL do webhook
Sua URL do webhook é:7. Registrar o webhook no dashboard 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 a chave do webhook e reimplantar
O que ele faz
O handler do webhook processa eventos de assinatura e os armazena no PostgreSQL do Supabase: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 header
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 um conjunto 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
Schema 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
A Edge Function baseada em Deno:- Verifica a assinatura — Usa o SDK do Dodo Payments para verificação HMAC-SHA256
- Verifica duplicatas — Usa o header
webhook-idpara evitar processamento duplicado - Registra o evento — Armazena os dados brutos do webhook na tabela
webhook_events - Processa atualizações — Cria ou atualiza clientes e assinaturas por meio do cliente do Supabase
- Trata erros — Registra falhas e marca eventos para nova tentativa
Testes
Desenvolvimento local:A flag
--no-verify-jwt é obrigatória porque os webhooks não incluem tokens JWT. A segurança é fornecida pela verificação da assinatura do webhook.- Acesse Developer → Webhooks.
- Adicione um endpoint com sua URL do Supabase.
- Selecione
subscription.active,subscription.cancelledesubscription.renewed.