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 Sessões de Checkout para vender produtos de assinatura com um checkout seguro e hospedado. Passe seu produto de assinatura emproduct_cart e redirecione os clientes para o checkout_url retornado.
- 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- A assinatura foi ativada com sucesso.subscription.updated- O objeto de assinatura foi atualizado (dispara em qualquer alteração de campo).subscription.on_hold- A assinatura foi suspensa devido à falha na renovação.subscription.failed- A criação da assinatura falhou durante a criação do mandato.subscription.renewed- A assinatura foi renovada para o próximo período 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 a 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: sempre que isso terminar
subscription.renewed- Indica a dedução do pagamento e a renovação para o próximo ciclo. (Basicamente, sempre que o pagamento for deduzido 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 de um mandato.payment.failed- Indica pagamento falhado.
- Assinatura Suspensa
subscription.on_hold- A assinatura foi suspensa devido à falha no pagamento de renovação ou na cobrança de mudança de plano.- Quando uma assinatura é suspensa, 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 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 suspensas e como tratá-las.
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 do estadoon_hold, use a API de Atualização do Método de Pagamento. Isso automaticamente:
- Cria uma cobrança para as pendências 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
1
Tratar webhook subscription.on_hold
Quando você receber um
subscription.on_hold webhook, atualize o estado da sua aplicação e notifique o cliente:2
Atualizar método de pagamento
Quando o cliente estiver pronto para atualizar seu método de pagamento, chame a API de Atualização do Método de Pagamento:
Você também pode usar um ID de método de pagamento existente se o cliente tiver métodos de pagamento salvos:
3
Monitorar eventos de webhook
Após atualizar o método de pagamento, monitore estes eventos de webhook:
payment.succeeded- A cobrança das pendências restantes foi bem-sucedidasubscription.active- A assinatura foi reativada
Exemplo de payload de evento de Assinatura
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
business_id | string | Sim | O identificador único para o negócio |
timestamp | string | Sim | O timestamp de quando o evento ocorreu (não necessariamente o mesmo que quando foi entregue) |
type | string | Sim | O tipo de evento. Veja Tipos de Eventos |
data | object | Sim | O payload de dados principal. 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.Referência da API de Mudança de Plano
Para informações detalhadas sobre como mudar planos de assinatura, consulte nossa documentação da API de Mudança 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 do cliente apenas a 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 imediatamente
2. full_immediately
- Cobra do cliente o valor total da assinatura para o novo plano
- Ignora qualquer tempo restante ou créditos do plano anterior
- Útil quando você deseja redefinir o ciclo de cobrança ou cobrar o valor total independentemente da prorrata
3. difference_immediately
- Ao atualizar, o cliente é cobrado imediatamente pela diferença entre os dois valores do plano.
- Por exemplo, se o plano atual é 30 Dólares e o cliente atualiza para 80 Dólares, ele é cobrado instantaneamente em 50 Dólares.
- Ao rebaixar, o valor não utilizado do plano atual é adicionado como crédito interno e aplicado automaticamente às renovações futuras da assinatura.
- Por exemplo, se o plano atual é 50 Dólares e o cliente muda 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
- Quando você invoca esta API, o Dodo Payments inicia imediatamente uma cobrança com base na opção de prorrata selecionada
- Se a mudança de plano for um rebaixamento e você usar
prorated_immediately, os créditos serão automaticamente calculados e adicionados ao saldo de crédito da assinatura. Esses créditos são específicos para essa assinatura e serão usados apenas para compensar pagamentos recorrentes futuros da mesma assinatura - A opção
full_immediatelyignora os cálculos de crédito e cobra o valor total 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. Entre em contato com o suporte para habilitar esse recurso.
on_demand no corpo da sua solicitação. Isso permite que você autorize um método de pagamento sem uma cobrança imediata ou defina 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 solicitação/resposta, políticas de reintento seguras e tratamento de webhook—veja o Guia de Assinaturas Sob Demanda.