Pular para o conteúdo principal

GitHub Repository

Código-fonte completo e guia de configuração
Confira o kit inicial completo para supabase
Um kit inicial mínimo de assinaturas construído com Next.js, Supabase e Dodo Payments. Este boilerplate ajuda você a configurar rapidamente um SaaS baseado em assinaturas com autenticação, pagamentos e webhooks.
Dodo Payments Supabase Subscription Starter

Configuração Rápida

1. Pré-requisitos

2. Autenticar & Vincular

Obtenha sua referência de projeto no Painel do Supabase → Configurações do Projeto

3. Configuração do Banco de Dados

  1. Vá para o seu Painel do Supabase
  2. Abra o Editor SQL
  3. Crie uma nova consulta
  4. Copie e cole todo o conteúdo de schema.sql
  5. Execute a consulta

4. Definir Segredos Iniciais

O Supabase fornece automaticamente SUPABASE_URL e SUPABASE_SERVICE_ROLE_KEY em tempo de execução.
Nota: Vamos definir DODO_PAYMENTS_WEBHOOK_KEY após o deploy assim que você tiver sua URL de webhook.

5. Implantar

A função já está configurada em functions/webhook/index.ts - é só implantá-la:

6. Obtenha 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 a URL do webhook como o endpoint
  4. Habilite estes eventos de assinatura:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. Copie o Signing Secret

8. Definir Chave de Webhook & Reimplantar

O Que Ele Faz

Processa eventos de assinatura e os armazena no Supabase 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 de assinatura - Usando a biblioteca dodopayments
Idempotência - Evita processamento duplicado com IDs de webhook
Registro de eventos - Rastro de auditoria completo na tabela webhook_events
Tratamento de erros - Registrado e passível de nova tentativa
Nota: 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 estendê-la facilmente 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

A Função Edge baseada em Deno:
  1. Verifica a assinatura - Usa a biblioteca dodopayments para verificação HMAC-SHA256
  2. Confere idempotência - Consulta o ID do webhook para evitar processamentos duplicados
  3. Registra o evento - Armazena os dados brutos do webhook na tabela webhook_events
  4. Processa atualizações - Cria ou atualiza clientes e assinaturas via cliente Supabase
  5. Trata erros - Registra falhas e marca o evento para nova tentativa

Testando

Desenvolvimento local:
A flag --no-verify-jwt é necessária porque webhooks não incluem tokens JWT. A segurança é fornecida pela verificação da assinatura do webhook.
Ver logs:
Ou no Painel do Supabase → Edge Functions → webhook → guia Logs Configure no Painel do DodoPayments:
  1. Vá para Desenvolvedores → Webhooks
  2. Adicione um endpoint com sua URL do Supabase
  3. Habilite: subscription.active, subscription.cancelled, subscription.renewed

Problemas Comuns

Recursos

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