Skip to main content

GitHub Repository

Código-fonte completo e guia de configuração
Confira o Dodo Payments Supabase Subscription Starter — um boilerplate completo de Next.js, Supabase e Dodo Payments com autenticação, pagamentos e webhooks.

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

Encontre a referência do seu projeto em Project Settings no dashboard do Supabase.

3. Configuração do banco de dados

  1. Acesse o dashboard do Supabase.
  2. Abra o SQL Editor.
  3. Copie todo o conteúdo de schema.sql e execute-o.

4. Definir secrets iniciais

O Supabase fornece automaticamente SUPABASE_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 em functions/webhook/index.ts.

6. Obter a URL do webhook

Sua URL do webhook é:

7. Registrar o webhook no dashboard do DodoPayments

  1. Acesse Developer → Webhooks no dashboard do Dodo Payments.
  2. Clique em Add endpoint.
  3. Insira a URL do webhook.
  4. Selecione estes eventos: subscription.active, subscription.cancelled, subscription.renewed.
  5. 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 assinaturas
  • subscription.cancelled — Marca a assinatura como cancelada
  • subscription.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-id para evitar processamento duplicado
  • Registro de eventos — Armazena todos os eventos na tabela webhook_events para 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

Tabelas criadas:
  • customers — E-mail, nome e ID do cliente no Dodo Payments
  • subscriptions — Status, valor, próxima data de cobrança, vinculada aos clientes
  • webhook_events — Registro de eventos com ID do webhook para idempotência

Código de implementação

Como funciona

A Edge Function baseada em Deno:
  1. Verifica a assinatura — Usa o SDK do Dodo Payments para verificação HMAC-SHA256
  2. Verifica duplicatas — Usa o header webhook-id para evitar processamento duplicado
  3. Registra o evento — Armazena os dados brutos do webhook na tabela webhook_events
  4. Processa atualizações — Cria ou atualiza clientes e assinaturas por meio do cliente do Supabase
  5. 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.
Visualizar logs:
Ou no dashboard do Supabase, em Edge Functions → webhook → Logs. Configurar no dashboard do Dodo Payments:
  1. Acesse Developer → Webhooks.
  2. Adicione um endpoint com sua URL do Supabase.
  3. Selecione subscription.active, subscription.cancelled e subscription.renewed.

Problemas comuns

Recursos

Última modificação em 26 de setembro de 2026