Skip to main content
O componente @dodopayments/convex adiciona o Dodo Payments ao seu backend Convex. Ele fornece uma função checkout que cria sessões de checkout, uma função customerPortal que abre o Customer Portal para o usuário autenticado e createDodoWebhookHandler, que verifica webhooks em uma ação HTTP do Convex. Ele requer o Convex 1.26 ou posterior.

Checkout Function

Crie sessões de checkout a partir de ações do Convex.

Customer Portal

Permita que os clientes gerenciem suas assinaturas e informações.

Webhooks

Receba e processe eventos de webhook do Dodo Payments.

Instalação

1

Install the Package

Execute este comando na raiz do seu projeto:
2

Add Component to Convex Config

Adicione o componente Dodo Payments à configuração do Convex:
Depois de editar convex.config.ts, execute npx convex dev uma vez para gerar os tipos.
3

Set Up Environment Variables

Defina as variáveis de ambiente no dashboard do Convex, em Settings → Environment Variables. Para abrir o dashboard, execute:
Adicione estas variáveis de ambiente:
  • DODO_PAYMENTS_API_KEY: sua chave de API do Dodo Payments, disponível em Developer → API Keys no dashboard do Dodo Payments.
  • DODO_PAYMENTS_ENVIRONMENT: test_mode ou live_mode.
  • DODO_PAYMENTS_WEBHOOK_SECRET: seu segredo de webhook, disponível em Developer → Webhooks. Obrigatório para o tratamento de webhooks. O handler de webhook lê exatamente este nome de variável.
Armazene os secrets como variáveis de ambiente do Convex. As funções do backend Convex não leem arquivos .env. Nunca faça commit de secrets no controle de versão.

Exemplos de configuração do componente

1

Create Internal Query

Crie uma query interna que encontre um cliente no seu banco de dados pelo ID de autenticação. A função identify na próxima etapa a utiliza para obter o ID do cliente do Dodo Payments do usuário autenticado para o portal do cliente.
O componente não define um schema. Antes de usar esta query, defina uma tabela customers com um índice by_auth_id em convex/schema.ts ou altere a query para corresponder ao schema existente.
2

Configure DodoPayments Component

Crie o client. identify associa o usuário autenticado do Convex a um ID de cliente do Dodo Payments. Ele retorna null se nenhum usuário estiver autenticado ou se nenhum cliente correspondente for encontrado.
Em seguida, adicione as funções necessárias:
Use esta função para adicionar o checkout do Dodo Payments ao seu app Convex. Ela cria uma sessão de checkout a partir dos campos aceitos pelo validador de payload de checkout do componente.

Função de checkout

O componente Convex cria sessões de checkout, o fluxo de checkout recomendado para todos os pagamentos. Uma sessão contém o carrinho de produtos, os dados do cliente e as opções de checkout.

Uso

Chame checkout a partir de uma ação do Convex, com os campos da sessão de checkout em payload:
checkout não chama identify. Para associar um cliente existente, passe customer: { customer_id } no payload. Para obter mais detalhes e a lista completa de campos compatíveis, consulte Sessões de checkout. Uma sessão criada com payment_method_id não retorna uma URL de checkout, portanto checkout gera um erro para ela.

Formato da resposta

A função de checkout retorna um objeto com a URL de checkout:

Função do Customer Portal

A função do portal do cliente retorna uma URL do Customer Portal para o usuário autenticado.

Uso

Ela retorna um objeto com um campo portal_url.

Parâmetros

boolean
padrão:"false"
Se definido como true, o Dodo Payments também envia o link do portal por e-mail ao cliente.
customerPortal obtém o cliente da função identify na sua configuração do DodoPayments, que deve retornar o dodoCustomerId do cliente. Se identify retornar null, customerPortal gera um erro User is not authenticated..

Handler de webhook

createDodoWebhookHandler verifica cada solicitação antes de executar seu código:
  • Method: registre a rota com method: "POST". Solicitações com outros métodos não chegam ao handler.
  • Signature Verification: verifica a assinatura do Standard Webhooks com a variável de ambiente DODO_PAYMENTS_WEBHOOK_SECRET. Retorna 400 se a verificação falhar.
  • Payload Validation: validado com Zod. Retorna 400 para payloads inválidos.
  • Error Handling:
    • 400: assinatura inválida, payload inválido ou um erro gerado por um dos seus handlers
    • 200: todos os handlers foram concluídos
    • Se DODO_PAYMENTS_WEBHOOK_SECRET não estiver definido, o handler gera um erro e a solicitação falha.
  • Event Routing: chama onPayload para cada evento e, em seguida, o handler correspondente ao tipo do evento.

Handlers de eventos de webhook compatíveis

Cada handler recebe o ActionCtx do Convex e o payload verificado para seu tipo de evento:

Uso no frontend

Chame as ações de checkout e do portal a partir dos seus componentes React usando o hook useAction de convex/react.

Prompt para LLM

Copie este prompt no seu assistente de programação com IA para que ele adicione o componente ao seu projeto. Para fornecer também ao seu agente a documentação e as skills do Dodo Payments, instale o Agent Plugin.
Última modificação em 26 de setembro de 2026