Pular para o conteúdo principal

Visão Geral

O Adaptador Better Auth para Pagamentos Dodo fornece:
  • Criação automática de clientes ao se inscrever
  • Sessões de Checkout (preferencial) com mapeamento de slug de produto
  • Portal de autoatendimento para clientes
  • Ingestão de uso medido e endpoints de relatórios para faturamento baseado em uso
  • Processamento de eventos de webhook em tempo real com verificação de assinatura
  • Suporte total a TypeScript
Você precisa de uma conta Dodo Payments e chaves de API para usar esta integração.

Pré-requisitos

  • Node.js 20+
  • Acesso ao seu Painel Dodo Payments
  • Projeto existente usando better-auth

Instalação

1

Install dependencies

Execute o seguinte comando na raiz do seu projeto:
Todos os pacotes necessários agora estão instalados.

Configuração

1

Configure environment variables

Adicione estes ao seu .env file:
Nunca envie chaves de API ou segredos ao controle de versão.
2

Set up server-side integration

Crie ou atualize src/lib/auth.ts:
Defina environment como live_mode para produção.
3

Set up client-side integration

Crie ou atualize src/lib/auth-client.ts:

Exemplos de Uso

Prefira authClient.dodopayments.checkoutSession para novas integrações. O método legado checkout está obsoleto e mantido apenas para compatibilidade com versões anteriores.

Criando uma Sessão de Checkout (Preferencial)

Ao contrário do método checkout legado, checkoutSession não requer informações de cobrança antecipadamente, pois elas serão obtidas do usuário na página de checkout. Você ainda pode substituí-las passando a chave billing no argumento.
Similar ao método checkout legado, checkoutSession obtém o email e o nome do cliente de sua sessão better-auth, no entanto, você pode substituí-los passando o objeto customer com email e nome.
Você pode passar as mesmas opções no argumento como corpo da solicitação para o endpoint Create Checkout Session.
A URL de retorno é obtida do successUrl configurado no plugin do servidor. Você não precisa incluir return_url no payload do cliente.

Checkout Legado (Descontinuado)

O método authClient.dodopayments.checkout está descontinuado. Use checkoutSession para novas implementações.

Acessando o Portal do Cliente

Listando Dados do Cliente

Monitoramento do Uso Medido

Habilite o plugin usage() no servidor para capturar eventos medidos e permitir que os clientes inspecionem sua cobrança baseada em uso.
  • authClient.dodopayments.usage.ingest ingere eventos para o usuário autenticado com email verificado.
  • authClient.dodopayments.usage.meters.list lista o uso recente para os medidores vinculados às assinaturas desse cliente.
Carimbos de data/hora com mais de uma hora ou mais de cinco minutos no futuro são rejeitados ao ingerir uso.
Se você omitir meter_id ao listar medidores de uso, todos os medidores vinculados às assinaturas do cliente serão retornados.

Webhooks

O plugin de webhooks processa eventos de pagamento em tempo real do Dodo Payments com verificação de assinatura segura. O endpoint padrão é /api/auth/dodopayments/webhooks.
1

Generate and set webhook secret

Gere um segredo de webhook para sua URL de endpoint (por exemplo, https://<your-domain>/api/auth/dodopayments/webhooks) no Dashboard do Dodo Payments e defina-o em seu arquivo .env:
2

Handle webhook events

Exemplo de manipulador:

Manipuladores de Eventos de Webhook Suportados

Referência de Configuração

  • client (obrigatório): Instância cliente do DodoPayments
  • createCustomerOnSignUp (opcional): Criar clientes automaticamente no cadastro do usuário
  • use (obrigatório): Array de plugins a serem habilitados (checkout, portal, uso, webhooks)
  • getCustomerParams (opcional): Função que recebe o BetterAuth User e retorna campos extras para anexar ao cliente DodoPayments na criação e atualização (ex.: metadata, phone_number)
  • products: Array de produtos ou função assíncrona retornando produtos - successUrl: URL para redirecionar após pagamento bem-sucedido - authenticatedUsersOnly: Requer autenticação do usuário (padrão: false)

Solução de Problemas & Dicas

  • Chave de API inválida: Verifique novamente seu DODO_PAYMENTS_API_KEY no .env. - Incompatibilidade de assinatura de webhook: Certifique-se de que o segredo do webhook corresponda ao definido no Dashboard do Dodo Payments. - Cliente não criado: Confirme se createCustomerOnSignUp está definido como true.
  • Use variáveis de ambiente para todos os segredos e chaves. - Teste em test_mode antes de mudar para live_mode. - Registre eventos de webhook para depuração e auditoria.

Prompt para LLMs

Última modificação em 9 de julho de 2026