@dodopayments/nuxt fornece ao seu app Nuxt três handlers de rota do servidor. checkoutHandler retorna URLs de checkout, customerPortalHandler envia um cliente ao Customer Portal e Webhooks verifica eventos de webhook e os encaminha para o seu código.
Checkout API Route
Crie URLs de checkout a partir de uma rota de servidor do Nuxt.
Customer Portal API Route
Permita que os clientes gerenciem suas assinaturas e seus dados a partir de uma rota de servidor do Nuxt.
Webhooks API Route
Receba e verifique eventos de webhook do Dodo Payments no Nuxt.
Visão geral
O módulo registra seus handlers como auto-imports do servidor do Nuxt, portanto suas rotas de servidor chamam
checkoutHandler, customerPortalHandler e Webhooks sem instruções de import. Cada rota lê suas credenciais de runtimeConfig. O Nuxt expõe apenas runtimeConfig.public ao navegador, portanto a chave da API e o segredo do webhook permanecem no servidor.Instalação
1
Install the Nuxt Module
Execute este comando na raiz do seu projeto:O módulo lista Nuxt 3 (3.13.1 ou posterior) e
zod 3.25 ou posterior como dependências peer.2
Register the Module in nuxt.config.ts
Adicione Defina estas variáveis de ambiente, por exemplo em um arquivo
@dodopayments/nuxt ao seu array modules e mapeie suas credenciais em runtimeConfig:nuxt.config.ts
.env na raiz do seu projeto:Um servidor Nuxt compilado não lê seu arquivo
.env. Em runtime, o Nuxt substitui um valor de runtimeConfig apenas pela variável que corresponde ao seu caminho, como NUXT_PRIVATE_RETURN_URL para private.returnUrl; portanto, defina essas variáveis também no ambiente de hospedagem.Exemplos de handlers de rotas da API
Os exemplos criam rotas de servidor no diretório
server/routes/api/. O Nuxt define as rotas de cada arquivo pelo nome e pelo sufixo do método, portanto checkout.get.ts processa GET /api/checkout.- Checkout API Route
- Customer Portal API Route
- Webhook API Route
Use este handler para adicionar o checkout do Dodo Payments ao seu app Nuxt. Uma rota GET fornece o checkout estático. Uma rota POST fornece sessões de checkout ou checkout dinâmico quando você define
type: "dynamic".checkout.post.ts fornece um fluxo POST. Use o exemplo de checkout dinâmico ou o exemplo de sessão de checkout:Handler de rota de checkout
O handler de checkout é compatível com as três formas de receber pagamentos com o Dodo Payments:- Links de pagamento estáticos: URLs compartilháveis que coletam pagamentos sem código.
- Links de pagamento dinâmicos: links de pagamento que você gera com detalhes personalizados. Eles usam endpoints deprecated.
- Sessões de checkout: checkout hospedado com um carrinho de produtos, dados do cliente e opções de personalização. Esse é o fluxo recomendado.
checkoutHandler aceita estas opções:
Static Checkout (GET)
Static Checkout (GET)
Parâmetros de query compatíveis
string
obrigatório
Identificador do produto, por exemplo
?productId=pdt_nZuwz45WAs64n3l07zpQR.integer
padrão:"1"
Quantidade do produto.
string
Nome completo do cliente. Ignorado se
firstName ou lastName for fornecido.string
Primeiro nome do cliente.
string
Sobrenome do cliente.
string
Endereço de e-mail do cliente.
string
País do cliente, como um código ISO 3166-1 alpha-2.
string
Linha de endereço do cliente.
string
Cidade do cliente.
string
Estado ou província do cliente.
string
CEP ou código postal do cliente.
boolean
Defina como
true para desabilitar o campo de nome completo.boolean
Defina como
true para desabilitar o campo de primeiro nome.boolean
Defina como
true para desabilitar o campo de sobrenome.boolean
Defina como
true para desabilitar o campo de e-mail.boolean
Defina como
true para desabilitar o campo de país.boolean
Defina como
true para desabilitar o campo de linha de endereço.boolean
Defina como
true para desabilitar o campo de cidade.boolean
Defina como
true para desabilitar o campo de estado.boolean
Defina como
true para desabilitar o campo de CEP.string
Moeda do pagamento, por exemplo
USD.boolean
padrão:"true"
Mostra ou oculta o seletor de moeda.
number
Fixa o valor cobrado, em unidades principais da moeda, por exemplo
12.5 para $12.50. Funciona apenas com produtos Pay What You Want e é ignorado se estiver abaixo do preço mínimo do produto.boolean
padrão:"true"
Mostra ou oculta a seção de descontos.
string
Qualquer parâmetro de query que comece com
metadata_ é passado como metadata.returnUrl da configuração ao link como redirect_url.Formato da resposta
O checkout estático retorna uma resposta JSON com a URL de checkout. No modo de teste, a URL usatest.checkout.dodopayments.com.Dynamic Checkout (POST)
Dynamic Checkout (POST)
- Envie os parâmetros como um corpo JSON em uma solicitação POST.
- Compatível com pagamentos únicos e recorrentes.
billingecustomersão obrigatórios.- Para ver todos os campos de corpo compatíveis, consulte:
Formato da resposta
O checkout dinâmico retorna uma resposta JSON com a URL de checkout:Checkout Sessions (POST)
Checkout Sessions (POST)
As sessões de checkout criam um checkout hospedado para compras únicas e assinaturas, com controle total sobre a personalização.
product_cart é o único campo obrigatório. Se o corpo não tiver return_url, o handler usa returnUrl da configuração.Para obter mais detalhes e ver todos os campos compatíveis, consulte o Guia de integração de sessões de checkout.Uma sessão criada com payment_method_id não retorna uma URL de checkout, portanto o handler responde com 400. Para cobrar um método de pagamento salvo, crie a sessão usando o SDK.Formato da resposta
As sessões de checkout retornam uma resposta JSON com a URL de checkout:Handler de rota do Customer Portal
O handler de rota do Customer Portal cria uma sessão do Customer Portal para o cliente informado e redireciona o navegador para ela.Parâmetros de query
string
obrigatório
O ID do cliente para a sessão do portal, por exemplo
?customer_id=cus_123.boolean
Se definido como
true, o Dodo Payments também envia o link do portal por e-mail ao cliente.Handler de rota de webhook
O handler de rota de webhook verifica cada solicitação antes de executar seu código:- Método: apenas solicitações POST são compatíveis. Outros métodos retornam 405.
- Verificação da assinatura: verifica o corpo bruto da solicitação e os cabeçalhos
webhook-id,webhook-timestampewebhook-signaturecomwebhookKey, seguindo a especificação Standard Webhooks. Retorna 401 se a verificação falhar. - Validação do payload: valida o payload com Zod. Retorna 400 para um payload inválido.
- Tratamento de erros:
- 401: assinatura inválida
- 400: payload inválido
- 500: erro interno durante a verificação
- Roteamento de eventos: chama
onPayloadpara cada evento, depois o handler correspondente ao tipo do evento, e retorna 200.