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és de licence : nouvelle limite < nombre d’instances existantes
- Message : La nouvelle limite d’activations ne peut pas être inférieure au nombre d’instances actuel
-
ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED- Déclencheur : Tentative d’ajout d’addons aux abonnements à facturation basée 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’ajout d’addons aux abonnements à la demande
- Message : Les addons ne sont pas autorisés pour les abonnements à la demande
-
BRAND_MISMATCH- Déclencheur : Les éléments du panier appartiennent à des marques différentes
- Message : Tous les éléments du panier 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 : La fonctionnalité de resoumission de la vérification de marque n’est pas activée
- Message : La resoumission de la vérification de marque n’est pas activée
-
CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Déclencheur : Tentative de facturer un abonnement programmé pour annulation
- Message : Abonnement programmé 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 d’un code de réduction en double
- Message : Le code de réduction existe déjà
-
DISCOUNT_CODE_EXPIRED- Déclencheur : Le code de réduction a dépassé sa date
expires_at - Message : Code de réduction expiré
- Déclencheur : Le code de réduction a dépassé sa date
-
DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED- Déclencheur : Le code de réduction est réutilisé après que
usage_limita été atteint - Message : La limite d’utilisation ne peut pas être inférieure à times_used / Le code de réduction a atteint sa limite d’utilisation
- Déclencheur : Le code de réduction est réutilisé après que
-
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é à un (des) produit(s) non concerné(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 : Des item_ids en double sont spécifiés dans le tableau d’items
- 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 : Aucun taux de change pour la paire de devises
from → to - Message : Aucun taux de change trouvé pour convertir Currency en Currency
- Déclencheur : Aucun taux de change pour la paire de devises
-
EXISTING_REFUND_REQUEST_PROCESSING- Déclencheur : La demande de remboursement précédente est toujours en cours de traitement
- Message : Une demande de remboursement avec le statut « Pending » 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 forfait sur un abonnement inactif
- Message : Le changement de forfait n’est pas pris en charge pour les abonnements inactifs
-
INSUFFICIENT_WALLET_FUNDS- Déclencheur : Solde du portefeuille < montant du débit
- Message : Fonds insuffisants dans le portefeuille
-
INTEGER_CONVERSION_FAILURE- Déclencheur : Toute conversion entier ↔ chaîne/décimal échouant côté serveur
- Message : Échec de conversion d’entier
-
INTERNAL_SERVER_ERROR- Déclencheur : Exceptions non interceptées ; vous devez consigner les détails côté serveur
- Message : Pas de message public (500 générique)
-
INVALID_DISCOUNT_CODE- Déclencheur : Le code n’existe pas / n’est pas 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 dépasser 10000 / Le montant du code de réduction ne peut pas dépasser 100 %
-
INVALID_QUANTITY- Déclencheur : Quantité invalide spécifiée pour la tarification basée sur l’utilisation
- Message : Une seule quantité est autorisée pour 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 time_frame ou (start, end)
-
INVALID_REQUEST_BODY- Déclencheur : JSON mal formé ou violation de schéma
- Message : Le corps de votre requête est invalide. Veuillez vérifier vos en-têtes et votre objet.
-
INVALID_REQUEST_PARAMETERS- Déclencheur : Sémantique incorrecte (par ex. date passée)
- Message : Impossible de changer next_billing_date pour une date passée
-
INVALID_SUGGESTED_PRICE- Déclencheur : Prix PWYW < prix minimum autorisé
- Message : Le prix suggéré ne peut pas être inférieur au prix minimum. En cas de « payez ce que vous voulez », le prix est considéré comme le montant minimum accepté
-
INVALID_TAX_ID- Déclencheur : Échec de validation de la TVA/GST/TIN
- Message : L’identifiant 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 de clé invalide
- Message : L’instance de la clé de licence est introuvable ou n’appartient pas à cette clé
-
LINE_ITEM_FULLY_REFUNDED- Déclencheur : Tentative de rembourser une ligne déjà intégralement remboursée
- Message : La ligne a déjà été entièrement remboursée et ne peut plus être remboursée.
-
LINE_ITEM_NOT_FOUND- Déclencheur : L’ID de l’élément ne fait pas partie du paiement référencé
- Message : La ligne est introuvable dans le paiement
-
LINE_ITEM_PRORATED- Déclencheur : Tentative de remboursement ou de mise à jour d’une ligne proratisée
- Message : La ligne ne peut pas être remboursée car elle est proratisée
-
LINE_ITEM_REFUND_AMOUNT_TOO_HIGH- Déclencheur : Montant du remboursement > montant payé (taxes incluses)
- Message : Le montant de remboursement demandé pour la ligne , taxes incluses, est de , ce qui dépasse le montant payé
-
LINE_ITEM_REFUND_AMOUNT_TOO_LOW- Déclencheur : Montant du remboursement inférieur au seuil minimum
- Message : Le montant de remboursement demandé pour la ligne est de , ce qui est trop faible
-
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 marchand n’est pas en production
-
METER_IS_DELETED- Déclencheur : Tentative d’utiliser un compteur supprimé
- Message : Le compteur a déjà été supprimé
-
MISSING_ADDON_IDS- Déclencheur : La liste
addon_idest vide ou contient des ID inconnus - Message : Un ou plusieurs ID de produit n’existent pas :
- Déclencheur : La liste
-
MISSING_METER_IDS- Déclencheur : La liste des ID de compteur est vide ou contient des ID invalides
- Message : Un ou plusieurs ID 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 devenir négatif
-
NO_ELIGIBLE_PAYMENT_METHODS- Déclencheur : Après filtrage, plus 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 pour 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 : Élément introuvable (ou plus précis)
-
ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED- Déclencheur : Échange de forfait non autorisé pour les abonnements à la demande
- Message : Le changement de forfait n’est pas pris en charge pour les abonnements à la demande
-
ON_DEMAND_SUBSCRIPTIONS_NOT_ENABLED- Déclencheur : L’entreprise a désactivé le flag de fonctionnalité
- 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 un abonnement à la demande avec une 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 un produit PWYW
- Message : Le montant est obligatoire pour un 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 déjà été totalement remboursé
- Message : L’ID de paiement a été totalement remboursé.
-
PAYMENT_NOT_SUCCEEDED- Déclencheur : Tentative de rembourser/traiter un paiement échoué
- Message : Le paiement fourni n’a pas abouti
-
PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Déclencheur : Changement de forfait tenté sur un abonnement programmé pour annulation
- Message : Abonnement programmé 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 tant que le précédent paiement n’a pas abouti
-
PRODUCT_CART_EMPTY- Déclencheur : Panier produit vide envoyé
- Message : product_cart est vide
-
PRODUCT_IS_DELETED- Déclencheur : Produit marqué comme supprimé en douceur
- Message : Pas de messages
-
REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT- Déclencheur : Montant total du remboursement > montant payé
- Message : Le montant du remboursement calculé est supérieur au montant payé
-
REFUND_WINDOW_EXPIRED- Déclencheur : Hors 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 support@dodopayments.com.
-
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 après
ends_at - Message : L’abonnement est expiré et ne peut pas créer de nouvelles charges
- Déclencheur : Facturation après
-
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 intervalle fixe détecté
- Message : L’abonnement n’est déjà plus à la demande
-
SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED- Déclencheur : Les tentatives de paiement sur l’abonnement ont dépassé le nombre maximal
- Message : La limite maximale de 10 tentatives a été dépassée pour cet abonnement
-
TOO_MANY_REQUESTS- Déclencheur : Limite de débit 429
- Message : Pas de messages
-
TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT- Déclencheur : Total combiné du panier < minimum 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 standard
- 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/scope invalide
- Message : Vous n’êtes pas autorisé à effectuer cette action
-
UNSUPPORTED_ACTION- Déclencheur : Action non prise en charge pour ce type de ressource
- Message : Le changement de forfait pour les abonnements basés sur l’utilisation n’est pas pris en charge
-
UNSUPPORTED_BILLING_CURRENCY- Déclencheur : Abonnements limités au USD
- Message : Les devises de facturation non USD ne sont pas prises en charge pour les abonnements
-
UNSUPPORTED_COUNTRY- Déclencheur : Zone géographique encore non prise en charge
- Message : Le pays n’est pas encore pris en charge
-
UNSUPPORTED_CURRENCY- Déclencheur : Devise du produit ou de l’addon invalide
- Message : La devise n’est pas actuellement prise en charge / Seuls USD et INR sont pris en charge actuellement pour les produits / Seuls USD et INR sont pris en charge pour le prix des addons / Vous ne pouvez demander que USD ou INR pour billing_currency / Devise non prise en charge / Devise inattendue pour les abonnements par carte indienne
-
UNSUPPORTED_DISCOUNT_TYPE- Déclencheur : Les remises à montant fixe, etc., ne sont pas encore disponibles
- 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 : Les transactions INR ne sont pas prises en charge pour cette transaction
-
UNSUPPORTED_TAX_CATEGORY- Déclencheur : Chaîne de catégorie fiscale non présente dans l’énumération
- Message : La catégorie n’est pas prise en charge pour le moment
-
UNSUCCESSFUL_PAYMENT_ID- Déclencheur : L’ID de paiement fait référence à un paiement échoué
- Message : L’ID de paiement a un statut échoué.
-
ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED- Déclencheur : Tentative de remboursement d’un paiement de montant zéro
- Message : Impossible de rembourser un paiement d’un montant de devise nul
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