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 de paiement pour vendre des produits d’abonnement avec un paiement sécurisé et hébergé. Passez votre produit d’abonnement dansproduct_cart et redirigez les clients vers le checkout_url retourné.
- SDK Node.js
- SDK Python
- API REST
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 d’abonnement a été mis à jour (se déclenche sur tout changement de champ).subscription.on_hold- L’abonnement est mis en attente en raison d’un renouvellement échoué.subscription.failed- La création de l’abonnement a échoué lors de 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 jours d’essai) : Attendez-vous à recevoir dans les 2 à 10 minutes
- Pour les jours d’essai : dès que cela se termine
subscription.renewed- Indique la déduction de paiement et le renouvellement pour le prochain cycle. (En gros, chaque fois qu’un paiement est déduit pour des produits d’abonnement, vous recevrez le webhooksubscription.renewedavecpayment.succeeded)
- Échec d’abonnement
subscription.failed- La création de l’abonnement a échoué en raison d’un échec de création d’un mandat.payment.failed- Indique un paiement échoué.
- Abonnement en attente
subscription.on_hold- L’abonnement est mis en attente en raison d’un échec de paiement de renouvellement ou d’un échec de frais de changement de plan.- Lorsqu’un abonnement est mis en attente, il ne se renouvellera pas automatiquement tant que le mode 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 entre dans l’étaton_hold, vous devez mettre à jour le mode de paiement pour le réactiver. Cette section explique quand les abonnements sont mis en attente et comment les gérer.
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 de mise à jour du mode de paiement. Cela fait automatiquement :
- Crée un prélèvement pour les montants dus restants
- Génère une facture pour le prélèvement
- Traite le paiement en utilisant le nouveau mode de paiement
- Réactive l’abonnement à l’état
activeaprès un paiement réussi
1
Gérer le webhook subscription.on_hold
Lorsque vous recevez un webhook
subscription.on_hold, mettez à jour l’état de votre application et informez le client :2
Mettre à jour le mode de paiement
Lorsque le client est prêt à mettre à jour son mode de paiement, appelez l’API de mise à jour du mode de paiement :
Vous pouvez également utiliser un ID de mode de paiement existant si le client a des modes de paiement enregistrés :
3
Surveiller les événements webhook
Après avoir mis à jour le mode de paiement, surveillez ces événements webhook :
payment.succeeded- Le prélèvement pour les montants dus restants a été réussisubscription.active- L’abonnement a été réactivé
Exemple de charge utile d’événement d’abonnement
| Propriété | Type | Requis | Description |
|---|---|---|---|
business_id | string | Oui | L’identifiant unique pour l’entreprise |
timestamp | string | Oui | L’horodatage de l’événement (pas nécessairement le même que celui de la livraison) |
type | string | Oui | Le type d’événement. Voir Types d’événements |
data | object | Oui | La charge utile principale des données. 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.Référence API Changer de plan
Pour des informations détaillées sur le changement de plans d’abonnement, veuillez consulter notre documentation sur l’API Changer de 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 proratisé en fonction du temps restant dans le cycle de facturation actuel
- Prélève uniquement la différence entre l’ancien et le nouveau plan
- Pendant une période d’essai, cela passera immédiatement l’utilisateur au nouveau plan, prélevant le client immédiatement
2. full_immediately
- Prélève le montant total de l’abonnement pour le nouveau plan
- Ignore tout temps restant ou crédits de l’ancien plan
- Utile lorsque vous souhaitez réinitialiser le cycle de facturation ou prélever le montant total indépendamment de la proratisation
3. difference_immediately
- Lors de la mise à niveau, le client est immédiatement prélevé de la différence entre les deux montants de plan.
- Par exemple, si le plan actuel est de 30 Dollars et que le client passe à un plan de 80 Dollars, il est prélevé de 50 Dollars instantanément.
- Lors de la rétrogradation, le montant non utilisé du plan actuel est ajouté en tant que crédit interne et appliqué automatiquement aux renouvellements d’abonnement futurs.
- Par exemple, si le plan actuel est de 50 Dollars et que le client passe à un plan de 20 Dollars, les 30 Dollars restants sont crédités et utilisés pour le prochain cycle de facturation.
Comportement
- Lorsque vous invoquez cette API, Dodo Payments initie immédiatement un prélèvement basé sur votre option de proratisation sélectionnée
- Si le changement de plan est une rétrogradation et que vous utilisez
prorated_immediately, les crédits seront 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 paiements récurrents futurs du même abonnement - L’option
full_immediatelycontourne les calculs de crédit et prélève le montant total du nouveau plan
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 seulement selon un calendrier fixe. Contactez le support pour activer cette fonctionnalité.
on_demand dans le corps de votre requête. Cela vous permet d’autoriser un mode 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—y compris des exemples de requêtes/réponses, des politiques de réessai sécurisées et la gestion des webhooks—voir le Guide des abonnements à la demande.