Skip to main content
O pacote @dodopayments/astro fornece ao seu projeto Astro três handlers de endpoint. Checkout retorna URLs de checkout, CustomerPortal envia um cliente ao Customer Portal e Webhooks verifica eventos de webhook e os encaminha para o seu código.

Checkout Handler

Crie URLs de checkout com fluxos de checkout estático, dinâmico e de sessão de checkout.

Customer Portal

Permita que os clientes gerenciem suas assinaturas e seus dados.

Webhooks

Receba e processe eventos de webhook do Dodo Payments.

Instalação

1

Install the Package

Execute este comando na raiz do seu projeto:
O pacote lista o Astro 4 ou 5 e o zod 3.25 ou posterior como peer dependencies.
2

Set Up Environment Variables

Crie um arquivo .env na raiz do seu projeto. Crie a API key em Developer → API Keys. Adicione o endpoint de webhook em Developer → Webhooks e copie o Signing secret para DODO_PAYMENTS_WEBHOOK_KEY:
DODO_PAYMENTS_RETURN_URL é o local para onde os clientes são encaminhados após o checkout. Se você não passar um ambiente, os handlers usarão live_mode. Uma API key do modo de teste funciona somente com test_mode.
Nunca faça commit do arquivo .env nem de secrets no controle de versão.

Exemplos de Route Handler

Os exemplos são endpoints de servidor do Astro em src/pages/api/. Endpoints que chamam o Dodo Payments precisam ser renderizados sob demanda, portanto adicione um server adapter ao seu projeto Astro. No modo de saída padrão static do Astro, os endpoints são renderizados no momento do build. Por isso, cada exemplo exporta prerender = false para renderizar o endpoint a cada requisição.
Use este handler para adicionar o checkout do Dodo Payments ao seu app. O handler GET disponibiliza o checkout estático. O handler POST disponibiliza sessões de checkout ou checkout dinâmico quando você define type: "dynamic". Um arquivo de endpoint pode exportar apenas um handler POST, portanto o exemplo de checkout dinâmico pressupõe que você definiu type: "dynamic".

Checkout Route Handler

O checkout handler é compatível com as três formas de receber pagamentos com o Dodo Payments:
  • Static Payment Links: URLs compartilháveis que coletam pagamentos sem código.
  • Dynamic Payment Links: links de pagamento que você gera com detalhes personalizados. Eles usam endpoints deprecated.
  • Checkout Sessions: checkout hospedado com um carrinho de produtos, dados do cliente e opções de personalização. Este é o fluxo recomendado.
Checkout aceita estas opções: O handler disponibiliza o checkout estático para requisições GET. Para requisições POST, ele cria um link de pagamento dinâmico quando type é dynamic e uma sessão de checkout nos demais casos.

Parâmetros de consulta 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
Endereço da rua 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 maiores da moeda, por exemplo 12.5 para $12.50. Funciona somente 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 consulta que comece com metadata_ é enviado ao checkout como metadata, por exemplo metadata_orderId=123.
Um sinalizador de desabilitação só tem efeito quando o campo correspondente possui um valor, por exemplo email com disableEmail=true. O handler adiciona returnUrl da configuração ao link como redirect_url.
Se productId estiver ausente, o handler retorna uma resposta 400. Parâmetros de consulta inválidos ou um produto que não exista na sua conta também retornam 400.

Formato da resposta

O checkout estático retorna uma resposta JSON com a URL de checkout. No modo de teste, a URL usa test.checkout.dodopayments.com:
  • Envie os parâmetros como um corpo JSON em uma requisição POST.
  • Compatível com pagamentos únicos e recorrentes. O handler recupera o produto e cria uma assinatura se o produto for recorrente; caso contrário, cria um pagamento único.
  • O corpo precisa de billing (com street, city, state, country e zipcode) e customer, além de product_id ou product_cart. As assinaturas precisam de product_id.
  • Para ver todos os campos de corpo compatíveis, consulte:
O checkout dinâmico funciona como proxy dos endpoints deprecated POST /payments e POST /subscriptions. Ele continua funcionando para integrações existentes, mas novas integrações devem usar sessões de checkout.

Formato da resposta

O checkout dinâmico retorna uma resposta JSON com o link de pagamento como URL de checkout:
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 e precisa de pelo menos um produto. Se o corpo não tiver return_url, o handler usará returnUrl da configuração.Cada checkout_url funciona uma vez e expira após 24 horas ou após 15 minutos quando você passa confirm: true. Uma sessão criada com payment_method_id não retorna checkout_url; portanto, o handler responde com 400.Para obter mais detalhes e consultar todos os campos compatíveis, veja o Guia de integração de Checkout Sessions.

Formato da resposta

As sessões de checkout retornam uma resposta JSON com a URL de checkout:

Customer Portal Route Handler

O route handler do Customer Portal cria uma sessão do Customer Portal para o cliente informado e redireciona o navegador para ela. CustomerPortal aceita as mesmas opções bearerToken e environment que Checkout.
O handler não verifica quem está fazendo a chamada. Qualquer pessoa que o solicite com um ID de cliente obtém o portal desse cliente. Proteja a rota com sua própria autenticação e passe somente o ID de cliente do usuário conectado.

Parâmetros de consulta

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 enviará o link do portal ao cliente por e-mail.
O handler retorna 400 se customer_id estiver ausente e 500 se não for possível criar a sessão do portal.

Webhook Route Handler

O webhook route handler verifica cada requisição com o secret do webhook, passado como webhookKey, antes de executar seu código:
  • Method: somente requisições POST são compatíveis. Outros métodos retornam 405.
  • Signature Verification: verifica os headers webhook-id, webhook-timestamp e webhook-signature com webhookKey, seguindo a especificação Standard Webhooks. Retorna 401 se a verificação falhar.
  • Payload Validation: valida o payload com o Zod. Retorna 400 para um payload inválido.
  • Error Handling:
    • 401: assinatura inválida
    • 400: payload inválido
    • 500: erro interno durante a verificação
  • Event Routing: chama onPayload para cada evento, depois chama o handler correspondente ao tipo do evento e retorna 200.
O adaptor não captura erros lançados nos seus handlers. Eles são propagados para o Astro e a requisição falha.

Handlers de eventos de webhook compatíveis

Todos os handlers são opcionais e assíncronos e recebem o payload verificado correspondente ao seu tipo de evento:
Para saber o significado de cada evento, consulte o Guia de eventos de webhook.

Prompt para LLM

Copie este prompt no seu assistente de programação com IA para que ele adicione o adaptor 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