Passer au contenu principal

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
Comprendre ces codes d’erreur et leurs significations est crucial pour :
  • 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
Les sections suivantes fournissent des informations détaillées sur les codes d’état HTTP standard et les codes d’erreur spécifiques que vous pouvez rencontrer lors de l’utilisation de l’API Dodo Payments.

Codes d’erreur API standard

Code d’erreurStatut HTTPDescription
400Mauvaise requêteLa requête était mal formée ou contenait des paramètres invalides
401Non autoriséL’authentification a échoué ou la clé API est invalide
403InterditLa clé API n’a pas la permission d’accéder à la ressource demandée
404Non trouvéLa ressource demandée n’existe pas
405Méthode non autoriséeLa méthode HTTP n’est pas prise en charge pour ce point de terminaison
409ConflitLa requête entre en conflit avec l’état actuel de la ressource
422Entité non traitableLa requête était bien formée mais contenait des erreurs sémantiques
429Trop de requêtesLimite de taux dépassée
500Erreur interne du serveurUne erreur inattendue s’est produite sur nos serveurs
502Mauvaise passerelleLe serveur a reçu une réponse invalide d’un serveur en amont
503Service indisponibleLe service est temporairement indisponible
504Délai d’attente de la passerelleLe 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 :
{
  "code": "UNSUPPORTED_COUNTRY",
  "message": "Country AI currently not supported"
}

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 de produits 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é sa date expires_at
    • Message : Le code de réduction a expiré
  • DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
    • Déclencheur : Code de réduction réutilisé après que usage_limit a é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
  • 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_id apparaît deux fois dans items[]
    • Message : Identifiants d’articles en double spécifiés dans le tableau d’articles
  • DUPLICATE_METER_IDS_IN_REQUEST
    • Déclencheur : Le même ID de compteur apparaît plusieurs fois dans la demande
    • Message : Les ID de compteur en double ne sont pas autorisés
  • EXCHANGE_RATE_NOT_FOUND
    • Déclencheur : Pas de taux de change pour la paire de devises from → to
    • Message : Taux de change introuvable pour convertir de la devise à la devise
  • 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
  • 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é est 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 demande est invalide. Veuillez vérifier vos en-têtes de demande 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 moment 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 pour 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 introuvable 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 : ID d’article non partie du paiement référencé
    • Message : L’article de ligne introuvable 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 : Montant de remboursement demandé pour l’article de ligne incluant la taxe est qui est supérieur au montant payé
  • LINE_ITEM_REFUND_AMOUNT_TOO_LOW
    • Déclencheur : Montant de remboursement en dessous du seuil minimum
    • Message : Montant de remboursement demandé pour l’article de ligne est 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_id liste vide ou IDs inconnus
    • Message : Un ou plusieurs IDs de produit n’existent pas :
  • 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 le 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/processus d’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 de produits est vide
  • PRODUCT_IS_DELETED
    • Déclencheur : Produit supprimé en douceur
    • Message : Aucun message
  • REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT
    • Déclencheur : Montant total de remboursement agrégé > 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 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 passée ends_at
    • Message : Abonnement expiré, impossible de créer de nouvelles charges
  • SUBSCRIPTION_INACTIVE
    • Déclencheur : Statut ≠ ACTIVE
    • Message : L’abonnement n’est pas actif
  • 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 : Montant minimum de est requis pour traiter le paiement
  • UNABLE_TO_EDIT_PRIMARY_BRAND
    • Déclencheur : Tentative de mettre à jour 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 pas 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 / Seules les devises USD et INR sont prises en charge pour le prix des addons / Ne peut 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 : 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

  1. Gérez toujours les erreurs de manière élégante dans votre application
  2. Mettez en œuvre une journalisation appropriée des erreurs
  3. Utilisez des messages d’erreur appropriés pour les utilisateurs finaux
  4. Mettez en œuvre une logique de réessai pour les erreurs transitoires
  5. Contactez le support pour les problèmes non résolus

Support

Pour une aide supplémentaire concernant les codes d’erreur ou les problèmes d’intégration, veuillez contacter notre équipe de support à support@dodopayments.com.