@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_modeoulive_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.
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.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.- Checkout Function Setup
- Customer Portal Setup
- Webhook Handler Setup
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
Chamecheckout 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
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_SECRETnão estiver definido, o handler gera um erro e a solicitação falha.
- Event Routing: chama
onPayloadpara cada evento e, em seguida, o handler correspondente ao tipo do evento.
Handlers de eventos de webhook compatíveis
Cada handler recebe oActionCtx 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 hookuseAction de convex/react.