Vue d’ensemble
L’API Dodo Payments utilise des codes d’état HTTP standard et des codes d’erreur personnalisés pour indiquer le succès ou l’échec des requêtes API. Lorsqu’une erreur se produit, l’API renvoie un code d’état HTTP approprié et une réponse JSON contenant des informations détaillées sur l’erreur. Chaque réponse d’erreur comprend :- Un code d’état HTTP indiquant la catégorie générale de l’erreur
- Un code d’erreur spécifique qui identifie la nature exacte de l’erreur
- Un message d’erreur lisible par l’homme expliquant ce qui s’est mal passé
- Des détails supplémentaires sur l’erreur lorsque cela est applicable
- Déboguer les problèmes d’intégration
- Mettre en œuvre une gestion appropriée des erreurs dans votre application
- Fournir des retours significatifs aux utilisateurs finaux
- Maintenir un système de traitement des paiements robuste
Codes d’erreur API standard
| Code d’erreur | Statut HTTP | Description |
|---|---|---|
| 400 | Mauvaise requête | La requête était mal formée ou contenait des paramètres invalides |
| 401 | Non autorisé | L’authentification a échoué ou la clé API est invalide |
| 403 | Interdit | La clé API n’a pas la permission d’accéder à la ressource demandée |
| 404 | Non trouvé | La ressource demandée n’existe pas |
| 405 | Méthode non autorisée | La méthode HTTP n’est pas prise en charge pour ce point de terminaison |
| 409 | Conflit | La requête entre en conflit avec l’état actuel de la ressource |
| 422 | Entité non traitable | La requête était bien formée mais contenait des erreurs sémantiques |
| 429 | Trop de requêtes | Limite de taux dépassée |
| 500 | Erreur interne du serveur | Une erreur inattendue s’est produite sur nos serveurs |
| 502 | Mauvaise passerelle | Le serveur a reçu une réponse invalide d’un serveur en amont |
| 503 | Service indisponible | Le service est temporairement indisponible |
| 504 | Délai d’attente de la passerelle | Le serveur a expiré en attendant une réponse en amont |
Format de réponse d’erreur
Lorsqu’une erreur se produit, l’API renvoie une réponse JSON avec la structure suivante :Référence des codes d’erreur
-
ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT- Déclencheur : Activations de clé de licence : nouvelle limite < nombre d’instances existantes
- Message : La nouvelle limite d’activation ne peut pas être inférieure au nombre d’instances actuel
-
ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED- Déclencheur : Tentative d’ajouter des addons aux abonnements basés sur l’utilisation
- Message : Les addons dans les abonnements ne sont pas pris en charge pour la facturation basée sur l’utilisation
-
ADDONS_NOT_ALLOWED_FOR_ON_DEMAND- Déclencheur : Tentative d’ajouter des addons aux abonnements à la demande
- Message : Les addons ne sont pas autorisés pour les abonnements à la demande
-
BRAND_MISMATCH- Déclencheur : Les articles du panier appartiennent à différentes marques
- Message : Tous les articles du panier produit doivent appartenir à la même marque
-
BRAND_NOT_ENABLED- Déclencheur : La marque est désactivée ou inactive
- Message : La marque fournie n’est pas activée
-
BRAND_SUBMISSION_NOT_ENABLED- Déclencheur : Fonction de resoumission de vérification de marque non activée
- Message : La resoumission de vérification de marque n’est pas activée
-
CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Déclencheur : Tentative de facturer un abonnement prévu pour annulation
- Message : Abonnement prévu pour annulation
-
CHECKOUT_SESSION_CONSUMED- Déclencheur : La session de paiement a déjà généré un paiement
- Message : La session de paiement a déjà été consommée
-
DISCOUNT_CODE_ALREADY_EXISTS- Déclencheur : Création de code de réduction en double
- Message : Le code de réduction existe déjà
-
DISCOUNT_CODE_EXPIRED- Déclencheur : Code de réduction dépassé
expires_atdate - Message : Code de réduction expiré
- Déclencheur : Code de réduction dépassé
-
DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED- Déclencheur : Code de réduction réutilisé après
usage_limitatteint - Message : La limite d’utilisation ne peut pas être inférieure à times_used / La limite d’utilisation du code de réduction a été atteinte
- Déclencheur : Code de réduction réutilisé après
-
DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND- Déclencheur : Code appliqué à un abonnement à la demande
- Message : Le coupon de réduction n’est pas disponible pour les abonnements à la demande
-
DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT- Déclencheur : Code appliqué à des produits non liés
- Message : Le coupon de réduction n’est pas disponible pour ce produit
-
DUPLICATE_LINE_ITEMS_IN_REQUEST- Déclencheur : Le même
item_idapparaît deux fois dansitems[] - Message : Identifiants d’articles en double spécifiés dans le tableau des articles
- Déclencheur : Le même
-
DUPLICATE_METER_IDS_IN_REQUEST- Déclencheur : Le même ID de compteur apparaît plusieurs fois dans la requête
- Message : Les ID de compteur en double ne sont pas autorisés
-
EXCHANGE_RATE_NOT_FOUND- Déclencheur : Pas de taux de change pour
from → topaire de devises - Message : Taux de change non trouvé pour convertir de la devise à la devise
- Déclencheur : Pas de taux de change pour
-
EXISTING_REFUND_REQUEST_PROCESSING- Déclencheur : Demande de remboursement précédente toujours en cours de traitement
- Message : Une demande de remboursement avec le statut “En attente” est toujours en cours de traitement
-
INACTIVE_LICENSE_KEY- Déclencheur : Statut de la clé ≠
ACTIVE - Message : La clé de licence n’est pas active
- Déclencheur : Statut de la clé ≠
-
INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED- Déclencheur : Changement de plan sur un abonnement inactif
- Message : Changer de plan n’est pas pris en charge pour les abonnements inactifs
-
INSUFFICIENT_WALLET_FUNDS- Déclencheur : Solde du portefeuille < montant de débit
- Message : Fonds insuffisants dans le portefeuille
-
INTEGER_CONVERSION_FAILURE- Déclencheur : Toute conversion d’entier ↔ chaîne/décimal échouée côté serveur
- Message : Échec de la conversion d’entier
-
INTERNAL_SERVER_ERROR- Déclencheur : Exceptions non interceptées ; vous devez enregistrer les détails côté serveur
- Message : Aucun message public (500 générique)
-
INVALID_DISCOUNT_CODE- Déclencheur : Le code n’existe pas / non applicable
- Message : Code de réduction invalide / Le code de réduction ne peut pas être appliqué à un produit dans le panier
-
INVALID_PERCENTAGE- Déclencheur : Montant en pourcentage > 100 % (ou 10 000 points de base)
- Message : Le montant en pourcentage ne peut pas être supérieur à 10000 / Le montant du code de réduction ne peut pas être supérieur à 100 %
-
INVALID_QUANTITY- Déclencheur : Quantité invalide spécifiée pour la tarification basée sur l’utilisation
- Message : Une seule quantité autorisée dans les produits à prix basé sur l’utilisation
-
INVALID_QUERY_PARAMS- Déclencheur : Paramètres de requête mutuellement exclusifs / mal formés
- Message : Les paramètres de requête ne doivent contenir que soit time_frame soit (start, end)
-
INVALID_REQUEST_BODY- Déclencheur : JSON mal formé ou violation de schéma
- Message : Votre corps de requête est invalide. Veuillez vérifier vos en-têtes de requête et votre objet.
-
INVALID_REQUEST_PARAMETERS- Déclencheur : Sémantique incorrecte (par exemple, date dans le passé)
- Message : Impossible de changer next_billing_date à un temps passé
-
INVALID_SUGGESTED_PRICE- Déclencheur : Prix PWYW < prix minimum autorisé
- Message : Le prix suggéré ne peut pas être inférieur au prix minimum. Dans le cas de pay what you want, le prix est considéré comme le montant minimum accepté
-
INVALID_TAX_ID- Déclencheur : Validation échouée de la TVA/GST/TIN
- Message : L’ID fiscal est invalide
-
LICENSE_KEY_LIMIT_REACHED- Déclencheur : Activations = limite
- Message : Limite d’activation de la clé de licence atteinte
-
LICENSE_KEY_NOT_FOUND- Déclencheur : ID d’instance ou ID de clé invalide
- Message : Instance de clé de licence non trouvée ou n’appartient pas à cette clé de licence
-
LINE_ITEM_FULLY_REFUNDED- Déclencheur : Tentative de rembourser un article de ligne déjà entièrement remboursé
- Message : L’article de ligne a été entièrement remboursé et ne peut pas être remboursé davantage.
-
LINE_ITEM_NOT_FOUND- Déclencheur : L’ID de l’article ne fait pas partie du paiement référencé
- Message : L’article de ligne non trouvé dans le paiement
-
LINE_ITEM_PRORATED- Déclencheur : Remboursement ou mise à jour tentée sur une ligne proratisée
- Message : L’article de ligne ne peut pas être remboursé car il est proratisé
-
LINE_ITEM_REFUND_AMOUNT_TOO_HIGH- Déclencheur : Montant de remboursement > montant payé (taxes incluses)
- Message : L’article de ligne a demandé un montant de remboursement incluant la taxe de qui est supérieur au montant payé
-
LINE_ITEM_REFUND_AMOUNT_TOO_LOW- Déclencheur : Montant de remboursement en dessous du seuil minimum
- Message : L’article de ligne a demandé un montant de remboursement de qui est trop bas
-
MAXIMUM_KEYS_REACHED- Déclencheur : Métadonnées / champs personnalisés dépassant 50 paires
- Message : Dépasse 50 paires clé-valeur
-
MERCHANT_NOT_LIVE- Déclencheur : L’entreprise est toujours en mode test/sandbox
- Message : Le commerçant n’est pas en ligne
-
METER_IS_DELETED- Déclencheur : Tentative d’utiliser un compteur supprimé
- Message : Le compteur a déjà été supprimé
-
MISSING_ADDON_IDS- Déclencheur :
addon_idliste vide ou IDs inconnus - Message : Un ou plusieurs IDs de produit n’existent pas :
- Déclencheur :
-
MISSING_METER_IDS- Déclencheur : Liste d’ID de compteur vide ou contenant des IDs invalides
- Message : Un ou plusieurs IDs de compteur n’existent pas :
-
MISSING_PRODUCT_INFORMATION- Déclencheur : Le produit existe mais des informations obligatoires manquent
- Message : Le produit existe mais d’autres informations obligatoires sont manquantes ou invalides
-
NEGATIVE_BALANCE_ADJUSTMENT- Déclencheur : Tentative de rendre le solde du portefeuille négatif
- Message : Le solde du portefeuille ne peut pas être rendu négatif
-
NO_ELIGIBLE_PAYMENT_METHODS- Déclencheur : Après filtrage, rien ne reste
- Message : Aucun moyen de paiement éligible trouvé
-
NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS- Déclencheur : Tentative de définir une date d’expiration sur une clé basée sur un abonnement
- Message : Impossible de définir une date d’expiration pour une clé de licence basée sur un abonnement
-
NOT_FOUND- Déclencheur : 404 générique pour toute ressource manquante
- Message : Article non trouvé (ou plus spécifique)
-
ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED- Déclencheur : Changement de plan non autorisé pour à la demande
- Message : Changer de plan n’est pas pris en charge pour les abonnements à la demande
-
ON_DEMAND_SUBSCRIPTIONS_NOT_ENABLED- Déclencheur : L’entreprise a le drapeau de fonctionnalité désactivé
- Message : Les abonnements à la demande ne sont pas activés pour cette entreprise
-
ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED- Déclencheur : Tentative d’utiliser à la demande avec facturation basée sur l’utilisation
- Message : Les abonnements à la demande ne sont pas pris en charge pour la facturation basée sur l’utilisation
-
PAY_AS_YOU_WANT_AMOUNT_REQUIRED- Déclencheur : Prix manquant pour produit PWYW
- Message : Le montant est obligatoire pour le produit payez ce que vous voulez
-
PAYMENT_ALREADY_REFUNDED- Déclencheur : Remboursement en double
- Message : Ce paiement a déjà été remboursé
-
PAYMENT_HAS_BEEN_REFUNDED- Déclencheur : Le paiement a été entièrement remboursé
- Message : L’ID de paiement a été entièrement remboursé.
-
PAYMENT_NOT_SUCCEEDED- Déclencheur : Tentative de rembourser/traiter un paiement non réussi
- Message : Le paiement fourni n’a pas réussi
-
PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Déclencheur : Changement de plan tenté sur un abonnement prévu pour annulation
- Message : Abonnement prévu pour annulation
-
PREVIOUS_PAYMENT_PENDING- Déclencheur : Tentative de créer une charge alors que la précédente est dans un état non terminal
- Message : Impossible de créer une nouvelle charge car le paiement précédent n’est pas encore réussi
-
PRODUCT_CART_EMPTY- Déclencheur : Panier de produits vide soumis
- Message : le panier_produit est vide
-
PRODUCT_IS_DELETED- Déclencheur : Produit supprimé en douceur
- Message : Aucun message
-
REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT- Déclencheur : Montant total des remboursements > montant payé
- Message : Le montant de remboursement calculé est supérieur au montant payé
-
REFUND_WINDOW_EXPIRED- Déclencheur : En dehors de la fenêtre de remboursement autorisée
- Message : Les remboursements ne peuvent pas être initiés jours après la création du paiement. Contactez [email protected].
-
REQUEST_AMOUNT_BELOW_MINIMUM- Déclencheur : Montant < minimum du produit
- Message : Le montant ne peut pas être inférieur au montant minimum spécifié pour le produit
-
SUBSCRIPTION_EXPIRED- Déclencheur : Facturation passée
ends_at - Message : Abonnement expiré, impossible de créer de nouvelles charges
- Déclencheur : Facturation passée
-
SUBSCRIPTION_INACTIVE- Déclencheur : Statut ≠
ACTIVE - Message : L’abonnement n’est pas actif
- Déclencheur : Statut ≠
-
SUBSCRIPTION_NOT_ON_DEMAND- Déclencheur : Attendu à la demande mais a obtenu un intervalle fixe
- Message : L’abonnement n’est déjà pas à la demande
-
SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED- Déclencheur : Les tentatives de paiement d’abonnement ont dépassé le nombre maximum de tentatives
- Message : Limite maximale de 10 tentatives dépassée pour cet abonnement
-
TOO_MANY_REQUESTS- Déclencheur : Limite de taux 429
- Message : Aucun message
-
TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT- Déclencheur : Total du panier combiné < minimum de la passerelle
- Message : Un montant minimum de est requis pour traiter le paiement
-
UNABLE_TO_EDIT_PRIMARY_BRAND- Déclencheur : Tentative de mise à jour de la marque principale via l’API régulière
- Message : La marque principale ne peut pas être mise à jour via ce point de terminaison API.
-
UNAUTHORIZED- Déclencheur : Pas de clé API ou jeton / portée invalide
- Message : Vous n’êtes pas autorisé à effectuer cette action
-
UNSUPPORTED_ACTION- Déclencheur : Action non prise en charge pour le type de ressource
- Message : Changer de plan pour les abonnements basés sur l’utilisation n’est pas pris en charge
-
UNSUPPORTED_BILLING_CURRENCY- Déclencheur : Abonnements restreints à USD
- Message : La devise de facturation non USD n’est pas prise en charge pour les abonnements
-
UNSUPPORTED_COUNTRY- Déclencheur : Géographie non encore prise en charge
- Message : Pays actuellement non pris en charge
-
UNSUPPORTED_CURRENCY- Déclencheur : Devise de produit ou d’addon invalide
- Message : La devise n’est actuellement pas prise en charge / Seuls les produits USD et INR sont actuellement pris en charge / Seuls les prix d’addon USD et INR sont pris en charge actuellement / Ne peut demander que USD ou INR pour la devise de facturation / Devise non prise en charge / Devise inattendue pour les abonnements par carte indienne
-
UNSUPPORTED_DISCOUNT_TYPE- Déclencheur : Remises à montant fixe, etc., pas encore en ligne
- Message : Seuls les codes de réduction en pourcentage sont pris en charge pour le moment
-
UNSUPPORTED_PAYMENT_CURRENCY- Déclencheur : Devise de paiement bloquée pour le connecteur
- Message : La transaction INR n’est pas prise en charge pour cette transaction
-
UNSUPPORTED_TAX_CATEGORY- Déclencheur : Chaîne de catégorie fiscale non dans l’énumération
- Message : Catégorie actuellement non prise en charge
-
UNSUCCESSFUL_PAYMENT_ID- Déclencheur : L’ID de paiement fait référence à un paiement non réussi
- Message : L’ID de paiement a un statut non réussi.
-
ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED- Déclencheur : Tentative de rembourser un paiement de montant zéro
- Message : Impossible de rembourser un paiement avec un montant de devise zéro
Meilleures pratiques
- Gérez toujours les erreurs de manière élégante dans votre application
- Mettez en œuvre une journalisation appropriée des erreurs
- Utilisez des messages d’erreur appropriés pour les utilisateurs finaux
- Mettez en œuvre une logique de réessai pour les erreurs transitoires
- Contactez le support pour les problèmes non résolus