Prérequis
Pour intégrer l’API Dodo Payments, vous aurez besoin de :- Un compte marchand Dodo Payments
- Des identifiants API (clé API et clé secrète de webhook) depuis le tableau de bord
Intégration API
Sessions de paiement
Utilisez les sessions Checkout Sessions pour vendre des produits d’abonnement via une caisse sécurisée hébergée. Passez votre produit d’abonnement dansproduct_cart et redirigez les clients vers le retour checkout_url.
- Node.js SDK
- Python SDK
- REST API
Réponse API
Voici un exemple de la réponse :checkout_url.
Webhooks
Lors de l’intégration des abonnements, vous recevrez des webhooks pour suivre le cycle de vie de l’abonnement. Ces webhooks vous aident à gérer efficacement les états d’abonnement et les scénarios de paiement. Pour configurer votre point de terminaison webhook, veuillez suivre notre Guide d’intégration détaillé.Types d’événements d’abonnement
Les événements webhook suivants suivent les changements de statut d’abonnement :subscription.active- L’abonnement est activé avec succès.subscription.updated- L’objet abonnement a été mis à jour (se déclenche à chaque changement de champ).subscription.on_hold- L’abonnement est suspendu en raison d’un renouvellement échoué.subscription.failed- La création de l’abonnement a échoué pendant la création du mandat.subscription.renewed- L’abonnement est renouvelé pour la prochaine période de facturation.
Scénarios de paiement
Flux de paiement réussi Lorsqu’un paiement réussit, vous recevrez les webhooks suivants :subscription.active- Indique l’activation de l’abonnementpayment.succeeded- Confirme le paiement initial :- Pour une facturation immédiate (0 jour d’essai) : attendez-vous à ce qu’il arrive dans les 2 à 10 minutes
- Pour des jours d’essai : dès que ceux-ci prennent fin
subscription.renewed- Indique que le paiement a été prélevé et que le renouvellement pour le cycle suivant est en cours. (Chaque fois qu’un paiement est prélevé pour des produits d’abonnement, vous recevrez le webhooksubscription.renewedainsi quepayment.succeeded)
- Échec de l’abonnement
subscription.failed- La création de l’abonnement a échoué en raison d’un échec lors de la création du mandat.payment.failed- Indique un paiement échoué.
- Abonnement en attente
subscription.on_hold- L’abonnement est mis en attente en raison d’un renouvellement échoué ou d’un échec de facturation lié au changement de forfait.- Lorsqu’un abonnement est mis en attente, il ne se renouvelle pas automatiquement tant que le moyen de paiement n’est pas mis à jour.
Meilleure pratique : Pour simplifier l’implémentation, nous recommandons de suivre principalement les événements d’abonnement pour gérer le cycle de vie de l’abonnement.
Gestion des abonnements en attente
Lorsqu’un abonnement passe en étaton_hold, vous devez mettre à jour le moyen de paiement pour le réactiver. Cette section explique quand les abonnements passent en attente et comment les traiter.
Quand les abonnements sont mis en attente
Un abonnement est mis en attente lorsque :- Le paiement de renouvellement échoue : Le prélèvement automatique échoue en raison de fonds insuffisants, d’une carte expirée ou d’un refus bancaire
- Le frais de changement de plan échoue : Un prélèvement immédiat lors de la mise à niveau/diminution du plan échoue
- L’autorisation du mode de paiement échoue : Le mode de paiement ne peut pas être autorisé pour des prélèvements récurrents
Réactivation des abonnements en attente
Pour réactiver un abonnement depuis l’étaton_hold, utilisez l’API Update Payment Method. Cela permet automatiquement de :
- Créer un prélèvement pour les sommes restantes dues
- Générer une facture pour le prélèvement
- Traiter le paiement avec le nouveau moyen de paiement
- Réactiver l’abonnement en état
activeaprès un paiement réussi
Handle subscription.on_hold webhook
Lorsque vous recevez un webhook
subscription.on_hold, mettez à jour l’état de votre application et informez le client :Update payment method
Lorsque le client est prêt à mettre à jour son moyen de paiement, appelez l’API Update Payment Method :
Vous pouvez également utiliser un identifiant de moyen de paiement existant si le client a enregistré des moyens de paiement :
Exemple de charge utile d’événement d’abonnement
| Propriété | Type | Obligatoire | Description |
|---|---|---|---|
business_id | string | Oui | L’identifiant unique pour l’entreprise |
timestamp | string | Oui | L’horodatage du moment où l’événement s’est produit (pas nécessairement le même que celui où il a été livré) |
type | string | Oui | Le type d’événement. Voir Types d’événements |
data | object | Oui | La charge utile principale. Voir Objet de données |
Changer de plans d’abonnement
Vous pouvez mettre à niveau ou rétrograder un plan d’abonnement en utilisant le point de terminaison de l’API de changement de plan. Cela vous permet de modifier le produit de l’abonnement, la quantité et de gérer la proratisation.Change Plan API Reference
Pour plus d’informations détaillées sur le changement de forfaits, veuillez consulter notre documentation de l’API Change Plan.
Options de proratisation
Lors du changement de plans d’abonnement, vous avez deux options pour gérer le prélèvement immédiat :1. prorated_immediately
- Calcule le montant au prorata en fonction du temps restant dans le cycle de facturation actuel
- Ne facture au client que la différence entre l’ancien et le nouveau forfait
- Pendant une période d’essai, cela bascule immédiatement l’utilisateur vers le nouveau forfait et facture le client immédiatement
2. full_immediately
- Facture au client le montant total de l’abonnement pour le nouveau forfait
- Ignore le temps restant ou les crédits du forfait précédent
- Utile lorsque vous souhaitez réinitialiser le cycle de facturation ou facturer le montant complet indépendamment du prorata
3. difference_immediately
- Lors d’une montée en gamme, le client est immédiatement facturé de la différence entre les deux montants de forfait.
- Par exemple, si le forfait actuel est de 30 dollars et que le client passe à un forfait à 80 dollars, il est facturé 50 $ instantanément.
- Lors d’une descente en gamme, le montant non utilisé du forfait actuel est ajouté comme crédit interne et appliqué automatiquement aux prochains renouvellements.
- Par exemple, si le forfait actuel est de 50 dollars et que le client passe à un forfait à 20 dollars, les 30 $ restants sont crédités et utilisés pour le prochain cycle de facturation.
Comportement
- Lorsque vous appelez cette API, Dodo Payments initie immédiatement un prélèvement en fonction de l’option de prorata sélectionnée
- Si le changement de forfait correspond à une descente en gamme et que vous utilisez
prorated_immediately, les crédits sont automatiquement calculés et ajoutés au solde de crédit de l’abonnement. Ces crédits sont spécifiques à cet abonnement et ne seront utilisés que pour compenser les futurs paiements récurrents du même abonnement - L’option
full_immediatelyévite les calculs de crédit et facture le montant total du nouveau forfait
Traitement des prélèvements
- Le prélèvement immédiat initié lors du changement de plan se termine généralement en moins de 2 minutes
- Si ce prélèvement immédiat échoue pour une raison quelconque, l’abonnement est automatiquement mis en attente jusqu’à ce que le problème soit résolu
Abonnements à la demande
Les abonnements à la demande vous permettent de facturer les clients de manière flexible, pas uniquement selon un calendrier fixe. Cette fonctionnalité est disponible pour tous les comptes.
on_demand dans le corps de votre requête. Cela vous permet d’autoriser un moyen de paiement sans prélèvement immédiat, ou de définir un prix initial personnalisé.
Pour facturer un abonnement à la demande :
Pour les prélèvements suivants, utilisez le point de terminaison POST /subscriptions/charge et spécifiez le montant à facturer au client pour cette transaction.
Pour un guide complet étape par étape — incluant des exemples de requêtes/réponses, des politiques de nouvelle tentative sûres et la gestion des webhooks — consultez le Guide des abonnements à la demande.