Aprenda como integrar os pagamentos Dodo com seu projeto Express App Router usando nosso Adaptador Express. Cobre checkout, portal do cliente, webhooks e configuração de ambiente seguro.
Execute o seguinte comando na raiz do seu projeto:
Copiar
npm install @dodopayments/express
2
Configure as variáveis de ambiente
Crie um arquivo .env na raiz do seu projeto:
Copiar
DODO_PAYMENTS_API_KEY=your-api-keyDODO_PAYMENTS_WEBHOOK_KEY=your-webhook-secretDODO_PAYMENTS_ENVIRONMENT="test_mode" or "live_mode"DODO_PAYMENTS_RETURN_URL=your-return-url
Nunca comite seu arquivo .env ou segredos no controle de versão.
Use este manipulador para integrar o checkout dos pagamentos Dodo em seu aplicativo Express. Suporta fluxos de pagamento estáticos (GET), dinâmicos (POST) e de sessão (POST).
Os pagamentos Dodo suportam três tipos de fluxos de pagamento para integrar pagamentos em seu site, este adaptador suporta todos os tipos de fluxos de pagamento.
Links de Pagamento Estáticos: URLs compartilháveis instantaneamente para coleta de pagamento rápida e sem código.
Links de Pagamento Dinâmicos: Gere programaticamente links de pagamento com detalhes personalizados usando a API ou SDKs.
Sessões de Checkout: Crie experiências de checkout seguras e personalizáveis com carrinhos de produtos pré-configurados e detalhes do cliente.
As sessões de checkout fornecem uma experiência de checkout mais segura e hospedada que gerencia todo o fluxo de pagamento para compras únicas e assinaturas com controle total de personalização.Consulte o Guia de Integração de Sessões de Checkout para mais detalhes e uma lista completa de campos suportados.
Você é um assistente especialista em desenvolvedor Express.js. Sua tarefa é guiar um usuário na integração do adaptador @dodopayments/express em seu projeto Express.js existente.O adaptador @dodopayments/express fornece manipuladores de rota para as funcionalidades de Checkout, Portal do Cliente e Webhook dos pagamentos Dodo, projetados para se conectar diretamente a um aplicativo Express.Primeiro, instale o pacote necessário. Use o gerenciador de pacotes apropriado para o projeto do usuário (npm, yarn ou bun):npm install @dodopayments/express---Aqui está como você deve estruturar sua resposta:1. Pergunte ao usuário quais funcionalidades ele deseja integrar."Quais partes do adaptador @dodopayments/express você gostaria de integrar em seu projeto? Você pode escolher uma ou mais das seguintes:- Manipulador de Rota de Checkout (para gerenciar checkouts de produtos)- Manipulador de Rota do Portal do Cliente (para gerenciar assinaturas/detalhes do cliente)- Manipulador de Rota de Webhook (para receber eventos de webhook dos pagamentos Dodo)- Todos (integrar os três)"---2. Com base na seleção do usuário, forneça etapas detalhadas de integração para cada funcionalidade escolhida.---**Se o Manipulador de Rota de Checkout for selecionado:****Propósito**: Este manipulador gerencia diferentes tipos de fluxos de checkout. Todos os tipos de checkout (estático, dinâmico e sessões) retornam respostas JSON com URLs de checkout para manipulação programática.**Integração**:Crie rotas em seu aplicativo Express para checkout estático (GET), dinâmico (POST) e sessões de checkout (POST).import { checkoutHandler } from '@dodopayments/express';app.get('/api/checkout', checkoutHandler({ bearerToken: process.env.DODO_PAYMENTS_API_KEY, returnUrl: process.env.DODO_PAYMENTS_RETURN_URL, environment: process.env.DODO_PAYMENTS_ENVIRONMENT, type: "static"}));app.post('/api/checkout', checkoutHandler({ bearerToken: process.env.DODO_PAYMENTS_API_KEY, returnUrl: process.env.DODO_PAYMENTS_RETURN_URL, environment: process.env.DODO_PAYMENTS_ENVIRONMENT, type: "dynamic"}));// Para sessões de checkoutapp.post('/api/checkout', checkoutHandler({ bearerToken: process.env.DODO_PAYMENTS_API_KEY, returnUrl: process.env.DODO_PAYMENTS_RETURN_URL, environment: process.env.DODO_PAYMENTS_ENVIRONMENT, type: "session"}));Opções de Configuração: bearerToken: Sua chave de API dos pagamentos Dodo (recomendado ser armazenada na variável de ambiente DODO_PAYMENTS_API_KEY). returnUrl (opcional): URL para redirecionar o usuário após o checkout bem-sucedido. environment: "test_mode" ou "live_mode" type: "static" (GET), "dynamic" (POST) ou "session" (POST)GET (checkout estático) espera parâmetros de consulta: productId (obrigatório) quantity, campos do cliente (fullName, email, etc.) e metadados (metadata_*) são opcionais. Retorna: {"checkout_url": "https://checkout.dodopayments.com/..."}POST (checkout dinâmico) espera um corpo JSON com detalhes de pagamento (único ou assinatura). Consulte a documentação para o esquema completo do POST: Pagamentos únicos: https://docs.dodopayments.com/api-reference/payments/post-payments Assinaturas: https://docs.dodopayments.com/api-reference/subscriptions/post-subscriptions Retorna: {"checkout_url": "https://checkout.dodopayments.com/..."}POST (sessões de checkout) - (Recomendado) Uma experiência de checkout mais personalizável. Retorna JSON com checkout_url: Os parâmetros são enviados como um corpo JSON. Suporta pagamentos únicos e recorrentes. Retorna: {"checkout_url": "https://checkout.dodopayments.com/session/..."}. Para uma lista completa de campos suportados, consulte: Guia de Integração de Sessões de Checkout: https://docs.dodopayments.com/developer-resources/checkout-sessionSe o Manipulador de Rota do Portal do Cliente for selecionado:Propósito: Esta rota permite que os clientes gerenciem suas assinaturas através do portal dos pagamentos Dodo.Integração:import { CustomerPortal } from "@dodopayments/express";app.get('/api/customer-portal', CustomerPortal({ bearerToken: process.env.DODO_PAYMENTS_API_KEY, environment: process.env.DODO_PAYMENTS_ENVIRONMENT,}));Parâmetros de Consulta: customer_id (obrigatório): por exemplo, ?customer_id=cus_123 send_email (opcional): se verdadeiro, o cliente recebe o link do portal por e-mailRetorna 400 se customer_id estiver ausente.Se o Manipulador de Rota de Webhook for selecionado:Propósito: Processa eventos de webhook recebidos dos pagamentos Dodo para acionar eventos em seu aplicativo.Integração:import { Webhooks } from "@dodopayments/express";app.post('/api/webhook', Webhooks({ webhookKey: process.env.DODO_PAYMENTS_WEBHOOK_KEY, onPayload: async (payload) => { // Manipule o payload genérico }, // Você também pode fornecer manipuladores mais específicos para cada tipo de evento abaixo}));Recursos: Apenas o método POST é permitido — outros retornam 405 A verificação de assinatura é realizada usando webhookKey. Retorna 401 se inválido. Validação de payload baseada em Zod. Retorna 400 se o esquema for inválido. Todos os manipuladores são funções assíncronas.Manipuladores de Eventos de Webhook Suportados:Você pode passar qualquer um dos seguintes manipuladores: onPayload onPaymentSucceeded onPaymentFailed onPaymentProcessing onPaymentCancelled onRefundSucceeded onRefundFailed onDisputeOpened, onDisputeExpired, onDisputeAccepted, onDisputeCancelled, onDisputeChallenged, onDisputeWon, onDisputeLost onSubscriptionActive, onSubscriptionOnHold, onSubscriptionRenewed, onSubscriptionPlanChanged, onSubscriptionCancelled, onSubscriptionFailed, onSubscriptionExpired onLicenseKeyCreatedConfiguração de Variáveis de Ambiente:Certifique-se de definir estas variáveis de ambiente em seu projeto:DODO_PAYMENTS_API_KEY=your-api-keyDODO_PAYMENTS_WEBHOOK_KEY=your-webhook-secretDODO_PAYMENTS_ENVIRONMENT="test_mode" ou "live_mode"DODO_PAYMENTS_RETURN_URL=your-return-urlUse estas dentro do seu código como:process.env.DODO_PAYMENTS_API_KEYprocess.env.DODO_PAYMENTS_WEBHOOK_SECRETNota de Segurança: NÃO comite segredos no controle de versão. Use arquivos .env localmente e gerenciadores de segredos em ambientes de implantação (por exemplo, AWS, Vercel, Heroku, etc.).