Referência da API de Mudança de Plano
API de Pré-visualização da Mudança de Plano
Guia de Integração de Assinatura
O que é um upgrade ou downgrade de assinatura?
Mudar de plano permite que você mova um cliente entre níveis ou quantidades de assinatura. Use isso para:- Alinhar preços com uso ou recursos
- Mover de mensal para anual (ou vice-versa)
- Ajustar a quantidade para produtos baseados em assentos
Quando usar mudanças de plano
- Upgrade quando um cliente precisa de mais recursos, uso ou assentos
- Downgrade quando o uso diminui
- Migrar usuários para um novo produto ou preço sem cancelar sua assinatura
Pré-requisitos
Antes de implementar mudanças de plano de assinatura, certifique-se de que você tem:- Uma conta de comerciante Dodo Payments com produtos de assinatura ativos
- Credenciais da API (chave da API e chave secreta do webhook) do painel
- Uma assinatura ativa existente para modificar
- Endpoint de webhook configurado para lidar com eventos de assinatura
Guia de Implementação Passo a Passo
Siga este guia abrangente para implementar mudanças de plano de assinatura em sua aplicação:Entender os Requisitos da Mudança de Plano
- Quais produtos de assinatura podem ser mudados para quais outros
- Qual modo de prorrata se encaixa no seu modelo de negócios
- Como lidar com falhas nas mudanças de plano de forma elegante
- Quais eventos de webhook rastrear para gerenciamento de estado
Escolha Sua Estratégia de Prorrata
- prorated_immediately
- difference_immediately
- full_immediately
- Calcula o valor exato da prorrata com base no tempo restante do ciclo
- Cobra um valor proporcional com base no tempo não utilizado restante no ciclo
- Fornece cobrança transparente aos clientes
Implemente a API de Mudança de Plano
prorated_immediately, full_immediately, ou difference_immediately.Lidar com Eventos de Webhook
subscription.active: Mudança de plano bem-sucedida, assinatura atualizadasubscription.plan_changed: Plano de assinatura mudado (upgrade/downgrade/atualização de addon)subscription.on_hold: Falha na cobrança da mudança de plano, assinatura pausadapayment.succeeded: Cobrança imediata pela mudança de plano bem-sucedidapayment.failed: Cobrança imediata falhou
Atualize o Estado da Sua Aplicação
- Conceda/revogue recursos com base no novo plano
- Atualize o painel do cliente com os detalhes do novo plano
- Envie e-mails de confirmação sobre mudanças de plano
- Registre mudanças de cobrança para fins de auditoria
Teste e Monitore
- Teste todos os modos de prorrata com diferentes cenários
- Verifique se o manuseio de webhook funciona corretamente
- Monitore as taxas de sucesso das mudanças de plano
- Configure alertas para mudanças de plano falhadas
Pré-visualizar Mudanças de Plano
Antes de confirmar uma mudança de plano, use a API de Pré-visualização para mostrar aos clientes exatamente o que eles serão cobrados:- Node.js SDK
- Python SDK
API de Mudança de Plano
Use a API de Mudança de Plano para modificar o produto, a quantidade e o comportamento de prorrata para uma assinatura ativa.Exemplos de início rápido
- Node.js SDK
- Python SDK
- Go SDK
- HTTP
invoice_id e payment_id são retornados apenas quando uma cobrança imediata e/ou fatura é criada durante a mudança de plano. Sempre confie em eventos de webhook (por exemplo, payment.succeeded, subscription.plan_changed) para confirmar resultados.Gerenciando Addons
Ao mudar planos de assinatura, você também pode modificar addons:Modos de Prorrata
Escolha como cobrar o cliente ao mudar de planos:prorated_immediately
- Cobra pela diferença parcial no ciclo atual
- Se em teste, cobra imediatamente e muda para o novo plano agora
- Downgrade: pode gerar um crédito proporcional aplicado a renovações futuras
full_immediately
- Cobra o valor total do novo plano imediatamente
- Ignora o tempo restante do plano antigo
difference_immediately são específicos da assinatura e distintos de Créditos de Cliente. Eles se aplicam automaticamente a renovações futuras da mesma assinatura e não são transferíveis entre assinaturas.difference_immediately
- Upgrade: cobra imediatamente a diferença de preço entre os planos antigo e novo
- Downgrade: adiciona o valor restante como crédito interno à assinatura e aplica automaticamente nas renovações
Cenários de Exemplo
Upgrade: Básico ($30) → Pro ($80) com difference_immediately
Upgrade: Básico ($30) → Pro ($80) com difference_immediately
Downgrade: Plus ($50) → Starter ($20) com difference_immediately
Downgrade: Plus ($50) → Starter ($20) com difference_immediately
Upgrade no meio do ciclo com prorated_immediately
Upgrade no meio do ciclo com prorated_immediately
Reiniciar cobrança com full_immediately
Reiniciar cobrança com full_immediately
Lidar com webhooks
Rastreie o estado da assinatura através de webhooks para confirmar mudanças de plano e pagamentos.Tipos de eventos a serem tratados
subscription.active: assinatura ativadasubscription.plan_changed: plano de assinatura mudado (upgrade/downgrade/mudanças de addon)subscription.on_hold: cobrança falhou, assinatura pausadasubscription.renewed: renovação bem-sucedidapayment.succeeded: pagamento pela mudança de plano ou renovação bem-sucedidopayment.failed: pagamento falhou
Verifique assinaturas e lide com intenções
- Manipulador de Rota Next.js
- Express.js
Melhores Práticas
Siga estas recomendações para mudanças de plano de assinatura confiáveis:Estratégia de Mudança de Plano
- Teste minuciosamente: Sempre teste mudanças de plano em modo de teste antes da produção
- Escolha prorrata com cuidado: Selecione o modo de prorrata que se alinha com seu modelo de negócios
- Lide com falhas de forma elegante: Implemente um tratamento de erros adequado e lógica de repetição
- Monitore taxas de sucesso: Rastreie taxas de sucesso/falha de mudanças de plano e investigue problemas
Implementação de Webhook
- Verifique assinaturas: Sempre valide assinaturas de webhook para garantir autenticidade
- Implemente idempotência: Lide com eventos de webhook duplicados de forma elegante
- Processe de forma assíncrona: Não bloqueie respostas de webhook com operações pesadas
- Registre tudo: Mantenha logs detalhados para depuração e fins de auditoria
Experiência do Usuário
- Comunique-se claramente: Informe os clientes sobre mudanças de cobrança e prazos
- Forneça confirmações: Envie e-mails de confirmação para mudanças de plano bem-sucedidas
- Lide com casos extremos: Considere períodos de teste, prorratas e pagamentos falhados
- Atualize a interface imediatamente: Refletir mudanças de plano na interface da sua aplicação
Problemas Comuns e Soluções
Resolva problemas típicos encontrados durante mudanças de plano de assinatura:Cobrança criada, mas assinatura não atualizada
Cobrança criada, mas assinatura não atualizada
- Processamento de webhook falhou ou foi atrasado
- Estado da aplicação não atualizado após receber webhooks
- Problemas de transação no banco de dados durante a atualização de estado
- Implemente um manuseio robusto de webhook com lógica de repetição
- Use operações idempotentes para atualizações de estado
- Adicione monitoramento para detectar e alertar sobre eventos de webhook perdidos
- Verifique se o endpoint de webhook está acessível e respondendo corretamente
Créditos não aplicados após downgrade
Créditos não aplicados após downgrade
- Expectativas do modo de prorrata: downgrades creditam a diferença total do preço do plano com
difference_immediately, enquantoprorated_immediatelycria um crédito proporcional com base no tempo restante no ciclo - Créditos são específicos da assinatura e não transferem entre assinaturas
- Saldo de crédito não visível no painel do cliente
- Use
difference_immediatelypara downgrades quando você quiser créditos automáticos - Explique aos clientes que os créditos se aplicam a renovações futuras da mesma assinatura
- Implemente um portal do cliente para mostrar saldos de crédito
- Verifique a pré-visualização da próxima fatura para ver créditos aplicados
Falha na verificação da assinatura do webhook
Falha na verificação da assinatura do webhook
- Chave secreta de webhook incorreta
- Corpo da solicitação bruta modificado antes da verificação da assinatura
- Algoritmo de verificação de assinatura errado
- Verifique se você está usando a
DODO_WEBHOOK_SECRETcorreta do painel - Leia o corpo da solicitação bruta antes de qualquer middleware de análise JSON
- Use a biblioteca padrão de verificação de webhook para sua plataforma
- Teste a verificação da assinatura do webhook no ambiente de desenvolvimento
Mudança de plano falha com erro 422
Mudança de plano falha com erro 422
- ID de assinatura ou ID de produto inválido
- Assinatura não está em estado ativo
- Parâmetros obrigatórios ausentes
- Produto não disponível para mudanças de plano
- Verifique se a assinatura existe e está ativa
- Verifique se o ID do produto é válido e disponível
- Certifique-se de que todos os parâmetros obrigatórios estão fornecidos
- Revise a documentação da API para requisitos de parâmetros
Cobrança imediata falha durante a mudança de plano
Cobrança imediata falha durante a mudança de plano
- Fundos insuficientes no método de pagamento do cliente
- Método de pagamento expirado ou inválido
- Banco recusou a transação
- Detecção de fraude bloqueou a cobrança
- Lide com eventos de webhook
payment.failedde forma apropriada - Notifique o cliente para atualizar o método de pagamento
- Implemente lógica de repetição para falhas temporárias
- Considere permitir mudanças de plano com cobranças imediatas falhadas
Assinatura em espera após mudança de plano
Assinatura em espera após mudança de plano
on_holdO que acontece:
Quando uma cobrança de mudança de plano falha, a assinatura é automaticamente colocada no estado on_hold. A assinatura não será renovada automaticamente até que o método de pagamento seja atualizado.Solução: Atualize o método de pagamento para reativar a assinaturaPara reativar uma assinatura do estado on_hold após uma falha na mudança de plano:- Atualize o método de pagamento usando a API de Atualização do Método de Pagamento
- Criação automática de cobrança: A API cria automaticamente uma cobrança para as pendências restantes
- Geração de fatura: Uma fatura é gerada para a cobrança
- Processamento de pagamento: O pagamento é processado usando o novo método de pagamento
- Reativação: Após o pagamento bem-sucedido, a assinatura é reativada para o estado
active
subscription.on_hold: Assinatura colocada em espera (recebido quando a cobrança da mudança de plano falha)payment.succeeded: Pagamento das pendências restantes bem-sucedido (após atualizar o método de pagamento)subscription.active: Assinatura reativada após pagamento bem-sucedido
- Notifique os clientes imediatamente quando uma cobrança de mudança de plano falhar
- Forneça instruções claras sobre como atualizar seu método de pagamento
- Monitore eventos de webhook para rastrear o status de reativação
- Considere implementar lógica de repetição automática para falhas temporárias de pagamento
Referência da API de Atualização do Método de Pagamento
Testando Sua Implementação
Siga estas etapas para testar minuciosamente sua implementação de mudança de plano de assinatura:Configurar ambiente de teste
- Use chaves de API de teste e produtos de teste
- Crie assinaturas de teste com diferentes tipos de plano
- Configure o endpoint de webhook de teste
- Configure monitoramento e registro
Teste diferentes modos de prorrata
- Teste
prorated_immediatelycom várias posições de ciclo de cobrança - Teste
difference_immediatelypara upgrades e downgrades - Teste
full_immediatelypara reiniciar ciclos de cobrança - Verifique se os cálculos de crédito estão corretos
Teste o manuseio de webhook
- Verifique se todos os eventos de webhook relevantes são recebidos
- Teste a verificação da assinatura do webhook
- Lide com eventos de webhook duplicados de forma elegante
- Teste cenários de falha no processamento de webhook
Teste cenários de erro
- Teste com IDs de assinatura inválidos
- Teste com métodos de pagamento expirados
- Teste falhas de rede e timeouts
- Teste com fundos insuficientes
Monitore em produção
- Configure alertas para mudanças de plano falhadas
- Monitore os tempos de processamento de webhook
- Rastreie taxas de sucesso de mudanças de plano
- Revise tickets de suporte ao cliente para problemas de mudança de plano
Tratamento de Erros
Lide com erros comuns da API de forma elegante em sua implementação:Códigos de Status HTTP
200 OK
200 OK
400 Bad Request
400 Bad Request
401 Unauthorized
401 Unauthorized
404 Not Found
404 Not Found
422 Unprocessable Entity
422 Unprocessable Entity
500 Internal Server Error
500 Internal Server Error
Formato de Resposta de Erro
Próximos passos
- Revise a API de Mudança de Plano
- Explore Créditos de Cliente
- Implemente alertas para
subscription.on_hold - Confira nosso Guia de Integração de Webhook