Pré-requisitos
Para integrar a API do Dodo Payments, você precisará:- Uma conta de comerciante do Dodo Payments
- Credenciais da API (chave da API e chave secreta do webhook) do painel
Integração da API
Sessões de Checkout
Use Checkout Sessions para vender produtos de assinatura com um checkout hospedado e seguro. Passe seu produto de assinatura emproduct_cart e redirecione os clientes para o retornado checkout_url.
- Node.js SDK
- Python SDK
- REST API
Resposta da API
O seguinte é um exemplo da resposta:checkout_url.
Webhooks
Ao integrar assinaturas, você receberá webhooks para rastrear o ciclo de vida da assinatura. Esses webhooks ajudam você a gerenciar estados de assinatura e cenários de pagamento de forma eficaz. Para configurar seu endpoint de webhook, siga nosso Guia de Integração Detalhado.Tipos de Eventos de Assinatura
Os seguintes eventos de webhook rastreiam mudanças de status da assinatura:subscription.active- Assinatura ativada com sucesso.subscription.updated- O objeto de assinatura foi atualizado (dispara em qualquer alteração de campo).subscription.on_hold- Assinatura é colocada em espera devido à renovação com falha.subscription.failed- A criação da assinatura falhou durante a criação do mandato.subscription.renewed- Assinatura foi renovada para o próximo ciclo de cobrança.
Cenários de Pagamento
Fluxo de Pagamento Bem-Sucedido Quando um pagamento é bem-sucedido, você receberá os seguintes webhooks:subscription.active- Indica ativação da assinaturapayment.succeeded- Confirma o pagamento inicial:- Para cobrança imediata (0 dias de teste): espere entre 2-10 minutos
- Para dias de teste: assim que o período terminar
subscription.renewed- Indica dedução de pagamento e renovação para o próximo ciclo. (Basicamente, sempre que o pagamento for debitado para produtos de assinatura, você receberá o webhooksubscription.renewedjunto compayment.succeeded)
- Falha na Assinatura
subscription.failed- A criação da assinatura falhou devido à falha na criação do mandato.payment.failed- Indica pagamento falhou.
- Assinatura em Espera
subscription.on_hold- A assinatura é colocada em espera devido ao pagamento de renovação falho ou falha na cobrança da alteração de plano.- Quando uma assinatura entra em espera, ela não será renovada automaticamente até que o método de pagamento seja atualizado.
Melhor prática: Para simplificar a implementação, recomendamos rastrear principalmente os eventos de assinatura para gerenciar o ciclo de vida da assinatura.
Tratando Assinaturas Suspensas
Quando uma assinatura entra no estadoon_hold, você precisa atualizar o método de pagamento para reativá-la. Esta seção explica quando as assinaturas são colocadas em espera e como lidar com elas.
Quando as Assinaturas São Suspensas
Uma assinatura é suspensa quando:- O pagamento de renovação falha: A cobrança automática de renovação falha devido a fundos insuficientes, cartão expirado ou recusa do banco
- A cobrança de mudança de plano falha: Uma cobrança imediata durante a atualização/diminuição do plano falha
- A autorização do método de pagamento falha: O método de pagamento não pode ser autorizado para cobranças recorrentes
Reativando Assinaturas Suspensas
Para reativar uma assinatura a partir do estadoon_hold, use a API de Atualização de Método de Pagamento. Isso automaticamente:
- Cria uma cobrança pelos valores restantes
- Gera uma fatura para a cobrança
- Processa o pagamento usando o novo método de pagamento
- Reativa a assinatura para o estado
activeapós o pagamento bem-sucedido
Handle subscription.on_hold webhook
Quando você receber um webhook
subscription.on_hold, atualize o estado da sua aplicação e notifique o cliente:Update payment method
Quando o cliente estiver pronto para atualizar o método de pagamento, chame a API de Atualização de Método de Pagamento:
Você também pode usar um ID de método de pagamento existente se o cliente tiver métodos salvos:
Exemplo de payload de evento de Assinatura
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
business_id | string | Sim | O identificador exclusivo do negócio |
timestamp | string | Sim | O carimbo de data/hora de quando o evento ocorreu (não necessariamente o mesmo de quando foi entregue) |
type | string | Sim | O tipo do evento. Veja Tipos de Evento |
data | object | Sim | A carga principal de dados. Veja Objeto de Dados |
Mudando Planos de Assinatura
Você pode atualizar ou rebaixar um plano de assinatura usando o endpoint da API de mudança de plano. Isso permite que você modifique o produto da assinatura, a quantidade e gerencie a prorrata.Change Plan API Reference
Para obter informações detalhadas sobre alteração de planos de assinatura, consulte nossa documentação da API de Alteração de Plano.
Opções de Prorrata
Ao mudar planos de assinatura, você tem duas opções para gerenciar a cobrança imediata:1. prorated_immediately
- Calcula o valor proporcional com base no tempo restante no ciclo de cobrança atual
- Cobra o cliente apenas pela diferença entre o plano antigo e o novo
- Durante um período de teste, isso mudará imediatamente o usuário para o novo plano, cobrando o cliente na hora
2. full_immediately
- Cobra o cliente o valor total da nova assinatura
- Ignora qualquer tempo restante ou créditos do plano anterior
- Útil quando você deseja redefinir o ciclo de cobrança ou cobrar o valor integral independentemente da prorrata
3. difference_immediately
- Ao fazer um upgrade, o cliente é cobrado imediatamente pela diferença entre os valores dos dois planos.
- Por exemplo, se o plano atual custa 30 dólares e o cliente fazer upgrade para 80 dólares, ele será cobrado instantaneamente em 50 dólares.
- Ao fazer downgrade, o valor não utilizado do plano atual é adicionado como crédito interno e automaticamente aplicado às futuras renovações da assinatura.
- Por exemplo, se o plano atual custa 50 dólares e o cliente mudar para um plano de 20 dólares, os 30 dólares restantes são creditados e usados para o próximo ciclo de cobrança.
Comportamento
- Ao invocar esta API, a Dodo Payments inicia imediatamente uma cobrança com base na opção de prorrata selecionada
- Se a mudança de plano for um downgrade e você utilizar
prorated_immediately, os créditos serão calculados automaticamente e adicionados ao saldo de créditos da assinatura. Esses créditos são específicos daquela assinatura e serão usados apenas para compensar futuros pagamentos recorrentes da mesma assinatura - A opção
full_immediatelyignora os cálculos de crédito e cobra o valor completo do novo plano
Processamento de Cobrança
- A cobrança imediata iniciada na mudança de plano geralmente é processada em menos de 2 minutos
- Se essa cobrança imediata falhar por qualquer motivo, a assinatura é automaticamente suspensa até que o problema seja resolvido
Assinaturas Sob Demanda
Assinaturas sob demanda permitem que você cobre os clientes de forma flexível, não apenas em um cronograma fixo. Este recurso está disponível para todas as contas.
on_demand no corpo da requisição. Isso permite autorizar um método de pagamento sem cobrança imediata ou definir um preço inicial personalizado.
Para cobrar uma assinatura sob demanda:
Para cobranças subsequentes, use o endpoint POST /subscriptions/charge e especifique o valor a ser cobrado do cliente por essa transação.
Para um guia completo, passo a passo — incluindo exemplos de requisição/resposta, políticas de retentativa seguras e tratamento de webhooks — consulte o Guia de Assinaturas Sob Demanda.