Référence API Changer de Plan
Aperçu de l'API de Changement de Plan
Guide d'Intégration d'Abonnement
Qu’est-ce qu’une mise à niveau ou une rétrogradation d’abonnement ?
Changer de plan vous permet de déplacer un client entre des niveaux ou des quantités d’abonnement. Utilisez-le pour :- Aligner les prix avec l’utilisation ou les fonctionnalités
- Passer d’un abonnement mensuel à annuel (ou vice versa)
- Ajuster la quantité pour des produits basés sur des sièges
Quand utiliser les changements de plan
- Mise à niveau lorsque le client a besoin de plus de fonctionnalités, d’utilisation ou de sièges
- Rétrogradation lorsque l’utilisation diminue
- Migrer des utilisateurs vers un nouveau produit ou prix sans annuler leur abonnement
Prérequis
Avant de mettre en œuvre des changements de plan d’abonnement, assurez-vous d’avoir :- Un compte marchand Dodo Payments avec des produits d’abonnement actifs
- Des identifiants API (clé API et clé secrète de webhook) depuis le tableau de bord
- Un abonnement actif existant à modifier
- Un point de terminaison de webhook configuré pour gérer les événements d’abonnement
Guide de Mise en Œuvre Étape par Étape
Suivez ce guide complet pour mettre en œuvre des changements de plan d’abonnement dans votre application :Comprendre les Exigences de Changement de Plan
- Quels produits d’abonnement peuvent être changés pour lesquels
- Quel mode de proratisation convient à votre modèle commercial
- Comment gérer les échecs de changement de plan de manière élégante
- Quels événements de webhook suivre pour la gestion des états
Choisissez Votre Stratégie de Proratisation
- prorated_immediately
- difference_immediately
- full_immediately
- Calcule le montant proratisé exact basé sur le temps de cycle restant
- Facture un montant proratisé basé sur le temps non utilisé restant dans le cycle
- Fournit une facturation transparente aux clients
Implémentez l'API Changer de Plan
prorated_immediately, full_immediately, ou difference_immediately.Gérer les Événements de Webhook
subscription.active: Changement de plan réussi, abonnement mis à joursubscription.plan_changed: Plan d’abonnement changé (mise à niveau/rétrogradation/mise à jour d’addon)subscription.on_hold: Échec de la charge de changement de plan, abonnement suspendupayment.succeeded: Charge immédiate pour le changement de plan réussiepayment.failed: Échec de la charge immédiate
Mettez à Jour l'État de Votre Application
- Accorder/révoquer des fonctionnalités en fonction du nouveau plan
- Mettre à jour le tableau de bord client avec les nouveaux détails du plan
- Envoyer des e-mails de confirmation concernant les changements de plan
- Enregistrer les changements de facturation à des fins d’audit
Tester et Surveiller
- Testez tous les modes de proratisation avec différents scénarios
- Vérifiez que la gestion des webhooks fonctionne correctement
- Surveillez les taux de réussite des changements de plan
- Configurez des alertes pour les échecs de changement de plan
Prévisualiser les Changements de Plan
Avant de vous engager dans un changement de plan, utilisez l’API de Prévisualisation pour montrer aux clients exactement ce qu’ils seront facturés :- SDK Node.js
- SDK Python
API Changer de Plan
Utilisez l’API Changer de Plan pour modifier le produit, la quantité et le comportement de proratisation pour un abonnement actif.Exemples de démarrage rapide
- SDK Node.js
- SDK Python
- SDK Go
- HTTP
invoice_id et payment_id ne sont retournés que lorsqu’une charge immédiate et/ou une facture est créée lors du changement de plan. Comptez toujours sur les événements de webhook (par exemple, payment.succeeded, subscription.plan_changed) pour confirmer les résultats.Gestion des Addons
Lors du changement de plans d’abonnement, vous pouvez également modifier les addons :Modes de Proratisation
Choisissez comment facturer le client lors du changement de plans :prorated_immediately
- Facture pour la différence partielle dans le cycle actuel
- Si en période d’essai, facture immédiatement et passe au nouveau plan maintenant
- Rétrogradation : peut générer un crédit proratisé appliqué aux renouvellements futurs
full_immediately
- Facture le montant total du nouveau plan immédiatement
- Ignore le temps restant de l’ancien plan
difference_immediately sont spécifiques à l’abonnement et distincts des Crédits Clients. Ils s’appliquent automatiquement aux renouvellements futurs du même abonnement et ne sont pas transférables entre abonnements.difference_immediately
- Mise à niveau : facturer immédiatement la différence de prix entre les anciens et nouveaux plans
- Rétrogradation : ajouter la valeur restante comme crédit interne à l’abonnement et l’appliquer automatiquement aux renouvellements
Scénarios d’exemple
Mise à niveau : Basique (30 $) → Pro (80 $) avec difference_immediately
Mise à niveau : Basique (30 $) → Pro (80 $) avec difference_immediately
Rétrogradation : Plus (50 $) → Starter (20 $) avec difference_immediately
Rétrogradation : Plus (50 $) → Starter (20 $) avec difference_immediately
Mise à niveau en milieu de cycle avec prorated_immediately
Mise à niveau en milieu de cycle avec prorated_immediately
Réinitialiser la facturation avec full_immediately
Réinitialiser la facturation avec full_immediately
Gestion des webhooks
Suivez l’état de l’abonnement via des webhooks pour confirmer les changements de plan et les paiements.Types d’événements à gérer
subscription.active: abonnement activésubscription.plan_changed: plan d’abonnement changé (mise à niveau/rétrogradation/changements d’addon)subscription.on_hold: échec de la charge, abonnement suspendusubscription.renewed: renouvellement réussipayment.succeeded: paiement pour le changement de plan ou le renouvellement réussipayment.failed: échec du paiement
Vérifier les signatures et gérer les intentions
- Gestionnaire de Route Next.js
- Express.js
Meilleures Pratiques
Suivez ces recommandations pour des changements de plan d’abonnement fiables :Stratégie de Changement de Plan
- Testez de manière approfondie : Testez toujours les changements de plan en mode test avant la production
- Choisissez la proratisation avec soin : Sélectionnez le mode de proratisation qui correspond à votre modèle commercial
- Gérez les échecs de manière élégante : Mettez en œuvre une gestion des erreurs appropriée et une logique de réessai
- Surveillez les taux de réussite : Suivez les taux de réussite/échec des changements de plan et enquêtez sur les problèmes
Mise en Œuvre des Webhooks
- Vérifiez les signatures : Validez toujours les signatures des webhooks pour garantir leur authenticité
- Mettez en œuvre l’idempotence : Gérez les événements de webhook en double de manière élégante
- Traitez de manière asynchrone : Ne bloquez pas les réponses des webhooks avec des opérations lourdes
- Enregistrez tout : Maintenez des journaux détaillés pour le débogage et les audits
Expérience Utilisateur
- Communiquez clairement : Informez les clients des changements de facturation et des délais
- Fournissez des confirmations : Envoyez des e-mails de confirmation pour les changements de plan réussis
- Gérez les cas particuliers : Prenez en compte les périodes d’essai, les proratisations et les paiements échoués
- Mettez à jour l’interface utilisateur immédiatement : Réflétez les changements de plan dans l’interface de votre application
Problèmes Courants et Solutions
Résolvez les problèmes typiques rencontrés lors des changements de plan d’abonnement :Charge créée mais abonnement non mis à jour
Charge créée mais abonnement non mis à jour
- Traitement du webhook échoué ou retardé
- État de l’application non mis à jour après la réception des webhooks
- Problèmes de transaction de base de données lors de la mise à jour de l’état
- Mettez en œuvre une gestion robuste des webhooks avec une logique de réessai
- Utilisez des opérations idempotentes pour les mises à jour d’état
- Ajoutez une surveillance pour détecter et alerter sur les événements de webhook manqués
- Vérifiez que le point de terminaison du webhook est accessible et répond correctement
Crédits non appliqués après rétrogradation
Crédits non appliqués après rétrogradation
- Attentes concernant le mode de proratisation : les rétrogradations créditent la différence de prix du plan complet avec
difference_immediately, tandis queprorated_immediatelycrée un crédit proratisé basé sur le temps restant dans le cycle - Les crédits sont spécifiques à l’abonnement et ne se transfèrent pas entre abonnements
- Le solde de crédit n’est pas visible dans le tableau de bord du client
- Utilisez
difference_immediatelypour les rétrogradations lorsque vous souhaitez des crédits automatiques - Expliquez aux clients que les crédits s’appliquent aux renouvellements futurs du même abonnement
- Mettez en œuvre un portail client pour afficher les soldes de crédit
- Vérifiez l’aperçu de la prochaine facture pour voir les crédits appliqués
Échec de la vérification de la signature du webhook
Échec de la vérification de la signature du webhook
- Clé secrète de webhook incorrecte
- Corps de la requête brute modifié avant la vérification de la signature
- Mauvais algorithme de vérification de signature
- Vérifiez que vous utilisez le bon
DODO_WEBHOOK_SECRETdepuis le tableau de bord - Lisez le corps brut de la requête avant tout middleware de parsing JSON
- Utilisez la bibliothèque standard de vérification des webhooks pour votre plateforme
- Testez la vérification de la signature du webhook dans l’environnement de développement
Le changement de plan échoue avec une erreur 422
Le changement de plan échoue avec une erreur 422
- ID d’abonnement ou ID de produit invalide
- Abonnement non actif
- Paramètres requis manquants
- Produit non disponible pour les changements de plan
- Vérifiez que l’abonnement existe et est actif
- Vérifiez que l’ID de produit est valide et disponible
- Assurez-vous que tous les paramètres requis sont fournis
- Consultez la documentation API pour les exigences de paramètres
Échec de la charge immédiate lors du changement de plan
Échec de la charge immédiate lors du changement de plan
- Fonds insuffisants sur le moyen de paiement du client
- Moyen de paiement expiré ou invalide
- La banque a refusé la transaction
- La détection de fraude a bloqué la charge
- Gérez les événements de webhook
payment.failedde manière appropriée - Informez le client de mettre à jour son moyen de paiement
- Mettez en œuvre une logique de réessai pour les échecs temporaires
- Envisagez de permettre des changements de plan avec des charges immédiates échouées
Abonnement en attente après le changement de plan
Abonnement en attente après le changement de plan
on_holdQue se passe-t-il :
Lorsque la charge de changement de plan échoue, l’abonnement est automatiquement placé dans l’état on_hold. L’abonnement ne se renouvellera pas automatiquement tant que le moyen de paiement n’est pas mis à jour.Solution : Mettez à jour le moyen de paiement pour réactiver l’abonnementPour réactiver un abonnement de l’état on_hold après un changement de plan échoué :- Mettez à jour le moyen de paiement en utilisant l’API Mettre à Jour le Moyen de Paiement
- Création automatique de charge : L’API crée automatiquement une charge pour les montants dus
- Génération de facture : Une facture est générée pour la charge
- Traitement du paiement : Le paiement est traité en utilisant le nouveau moyen de paiement
- Réactivation : Après un paiement réussi, l’abonnement est réactivé dans l’état
active
subscription.on_hold: Abonnement placé en attente (reçu lorsque la charge de changement de plan échoue)payment.succeeded: Paiement pour les montants dus réussi (après mise à jour du moyen de paiement)subscription.active: Abonnement réactivé après un paiement réussi
- Informez immédiatement les clients lorsque la charge de changement de plan échoue
- Fournissez des instructions claires sur la façon de mettre à jour leur moyen de paiement
- Surveillez les événements de webhook pour suivre l’état de réactivation
- Envisagez de mettre en œuvre une logique de réessai automatique pour les échecs de paiement temporaires
Référence API Mettre à Jour le Moyen de Paiement
Tester Votre Mise en Œuvre
Suivez ces étapes pour tester soigneusement votre mise en œuvre de changement de plan d’abonnement :Configurer l'environnement de test
- Utilisez des clés API de test et des produits de test
- Créez des abonnements de test avec différents types de plan
- Configurez le point de terminaison de webhook de test
- Mettez en place une surveillance et des journaux
Tester différents modes de proratisation
- Testez
prorated_immediatelyavec diverses positions de cycle de facturation - Testez
difference_immediatelypour les mises à niveau et les rétrogradations - Testez
full_immediatelypour réinitialiser les cycles de facturation - Vérifiez que les calculs de crédit sont corrects
Tester la gestion des webhooks
- Vérifiez que tous les événements de webhook pertinents sont reçus
- Testez la vérification de la signature des webhooks
- Gérez les événements de webhook en double de manière élégante
- Testez les scénarios d’échec de traitement des webhooks
Tester les scénarios d'erreur
- Testez avec des ID d’abonnement invalides
- Testez avec des moyens de paiement expirés
- Testez les pannes réseau et les délais d’attente
- Testez avec des fonds insuffisants
Surveiller en production
- Configurez des alertes pour les échecs de changement de plan
- Surveillez les temps de traitement des webhooks
- Suivez les taux de réussite des changements de plan
- Examinez les tickets de support client pour les problèmes de changement de plan
Gestion des Erreurs
Gérez les erreurs API courantes de manière élégante dans votre mise en œuvre :Codes d’État 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
Format de Réponse d’Erreur
Prochaines étapes
- Consultez la API Changer de Plan
- Explorez Crédits Clients
- Mettez en œuvre des alertes pour
subscription.on_hold - Consultez notre Guide d’Intégration des Webhooks