Übersicht
Die Dodo Payments API verwendet standardisierte HTTP-Statuscodes und benutzerdefinierte Fehlercodes, um den Erfolg oder Misserfolg von API-Anfragen anzuzeigen. Wenn ein Fehler auftritt, gibt die API einen entsprechenden HTTP-Statuscode und eine JSON-Antwort mit detaillierten Informationen über den Fehler zurück. Jede Fehlerantwort enthält:- Einen HTTP-Statuscode, der die allgemeine Kategorie des Fehlers angibt
- Einen spezifischen Fehlercode, der die genaue Art des Fehlers identifiziert
- Eine für Menschen lesbare Fehlermeldung, die erklärt, was schiefgelaufen ist
- Zusätzliche Details zum Fehler, wenn zutreffend
- Die Fehlersuche bei Integrationsproblemen
- Die Implementierung einer ordnungsgemäßen Fehlerbehandlung in Ihrer Anwendung
- Die Bereitstellung sinnvoller Rückmeldungen für Endbenutzer
- Die Aufrechterhaltung eines robusten Zahlungssystem
Standard API-Fehlercodes
| Fehlercode | HTTP-Status | Beschreibung |
|---|---|---|
| 400 | Ungültige Anfrage | Die Anfrage war fehlerhaft oder enthielt ungültige Parameter |
| 401 | Unautorisiert | Die Authentifizierung ist fehlgeschlagen oder der API-Schlüssel ist ungültig |
| 403 | Verboten | Der API-Schlüssel hat keine Berechtigung, auf die angeforderte Ressource zuzugreifen |
| 404 | Nicht gefunden | Die angeforderte Ressource existiert nicht |
| 405 | Methode nicht erlaubt | Die HTTP-Methode wird für diesen Endpunkt nicht unterstützt |
| 409 | Konflikt | Die Anfrage steht im Konflikt mit dem aktuellen Zustand der Ressource |
| 422 | Nicht verarbeitbare Entität | Die Anfrage war gut formuliert, enthielt jedoch semantische Fehler |
| 429 | Zu viele Anfragen | Die Rate-Limit wurde überschritten |
| 500 | Interner Serverfehler | Ein unerwarteter Fehler ist auf unseren Servern aufgetreten |
| 502 | Ungültiges Gateway | Der Server hat eine ungültige Antwort von einem upstream-Server erhalten |
| 503 | Dienst nicht verfügbar | Der Dienst ist vorübergehend nicht verfügbar |
| 504 | Gateway-Zeitüberschreitung | Der Server hat beim Warten auf eine Antwort von einem upstream-Server eine Zeitüberschreitung erreicht |
Fehlerantwortformat
Wenn ein Fehler auftritt, gibt die API eine JSON-Antwort mit folgender Struktur zurück:Fehlercodes Referenz
-
ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT- Trigger: Lizenzschlüsselaktivierungen: neues Limit < bestehende Instanzanzahl
- Message: Neues Aktivierungslimit darf nicht kleiner sein als die aktuelle Instanzanzahl
-
ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: Versuch, Add-ons zu nutzungsbasierten Abonnements hinzuzufügen
- Message: Add-ons in Abonnements werden für nutzungsbasierte Abrechnung nicht unterstützt
-
ADDONS_NOT_ALLOWED_FOR_ON_DEMAND- Trigger: Versuch, Add-ons zu On-Demand-Abonnements hinzuzufügen
- Message: Add-ons sind für On-Demand-Abonnements nicht erlaubt
-
BRAND_MISMATCH- Trigger: Artikel im Warenkorb gehören zu verschiedenen Marken
- Message: Alle Artikel im Produktwarenkorb sollten zur gleichen Marke gehören
-
BRAND_NOT_ENABLED- Trigger: Marke ist deaktiviert oder nicht aktiv
- Message: Die angegebene Marke ist nicht aktiviert
-
BRAND_SUBMISSION_NOT_ENABLED- Trigger: Funktion zur erneuten Einreichung der Markenverifizierung nicht aktiviert
- Message: Die erneute Einreichung der Markenverifizierung ist nicht aktiviert
-
CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: Versuch, ein Abonnement zu belasten, das zur Stornierung geplant ist
- Message: Abonnement zur Stornierung geplant
-
CHECKOUT_SESSION_CONSUMED- Trigger: Checkout-Sitzung hat bereits eine Zahlung generiert
- Message: Checkout-Sitzung wurde bereits verbraucht
-
DISCOUNT_CODE_ALREADY_EXISTS- Trigger: Erstellung eines doppelten Rabattcodes
- Message: Rabattcode existiert bereits
-
DISCOUNT_CODE_EXPIRED- Trigger: Rabattcode nach seinem
expires_atDatum - Message: Rabattcode abgelaufen
- Trigger: Rabattcode nach seinem
-
DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED- Trigger: Rabatt nach Erreichen von
usage_limitwiederverwendet - Message: Nutzungslimit kann nicht kleiner sein als times_used / Rabattcode hat Nutzungslimit erreicht
- Trigger: Rabatt nach Erreichen von
-
DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND- Trigger: Code auf On-Demand-Abonnement angewendet
- Message: Rabattcoupon nicht verfügbar für On-Demand-Abonnements
-
DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT- Trigger: Code auf nicht verwandte Produkt(e) angewendet
- Message: Rabattcoupon nicht verfügbar für dieses Produkt
-
DUPLICATE_LINE_ITEMS_IN_REQUEST- Trigger: Dasselbe
item_iderscheint zweimal initems[] - Message: Doppelte item_ids im items-Array angegeben
- Trigger: Dasselbe
-
DUPLICATE_METER_IDS_IN_REQUEST- Trigger: Dieselbe Meter-ID erscheint mehrfach in der Anfrage
- Message: Doppelte Meter-IDs sind nicht erlaubt
-
EXCHANGE_RATE_NOT_FOUND- Trigger: Kein FX-Kurs für
from → toWährungspaar - Message: Wechselkurs nicht gefunden, um von Währung zu Währung zu konvertieren
- Trigger: Kein FX-Kurs für
-
EXISTING_REFUND_REQUEST_PROCESSING- Trigger: Vorherige Rückerstattungsanfrage wird noch bearbeitet
- Message: Eine Rückerstattungsanfrage mit dem Status “Ausstehend” wird noch bearbeitet
-
INACTIVE_LICENSE_KEY- Trigger: Schlüsselstatus ≠
ACTIVE - Message: Lizenzschlüssel ist nicht aktiv
- Trigger: Schlüsselstatus ≠
-
INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED- Trigger: Planänderung bei inaktivem Abonnement
- Message: Planänderungen werden für inaktive Abonnements nicht unterstützt
-
INSUFFICIENT_WALLET_FUNDS- Trigger: Wallet-Balance < Debitbetrag
- Message: Unzureichende Mittel im Wallet
-
INTEGER_CONVERSION_FAILURE- Trigger: Jede Ganzzahl ↔ String/Dekimalumwandlung, die serverseitig fehlschlägt
- Message: Fehler bei der Ganzzahlumwandlung
-
INTERNAL_SERVER_ERROR- Trigger: Unbehandelte Ausnahmen; Sie sollten die Details serverseitig protokollieren
- Message: Keine öffentliche Nachricht (allgemein 500)
-
INVALID_DISCOUNT_CODE- Trigger: Code existiert nicht / nicht anwendbar
- Message: Ungültiger Rabattcode / Rabattcode kann auf kein Produkt im Warenkorb angewendet werden
-
INVALID_PERCENTAGE- Trigger: Prozentbetrag > 100% (oder 10.000 Basispunkte)
- Message: Prozentbetrag darf nicht mehr als 10000 betragen / Rabattcode-Betrag darf nicht mehr als 100% betragen
-
INVALID_QUANTITY- Trigger: Ungültige Menge für nutzungsbasierte Preisgestaltung angegeben
- Message: Nur 1 Menge in nutzungsbasierten Preisprodukten erlaubt
-
INVALID_QUERY_PARAMS- Trigger: Gegenseitige Ausschluss- / fehlerhafte Abfrageparameter
- Message: Abfrageparameter sollten nur entweder time_frame oder (start, end) enthalten
-
INVALID_REQUEST_BODY- Trigger: Fehlerhaftes JSON oder Schema-Verletzung
- Message: Ihr Anfragekörper ist ungültig. Bitte überprüfen Sie Ihre Anfrage-Header und das Objekt.
-
INVALID_REQUEST_PARAMETERS- Trigger: Semantisch falsch (z. B. Datum in der Vergangenheit)
- Message: Nächster_billing_date kann nicht auf eine Zeit in der Vergangenheit geändert werden
-
INVALID_SUGGESTED_PRICE- Trigger: PWYW-Preis < minimal zulässiger Preis
- Message: Vorgeschlagener Preis darf nicht unter dem Mindestpreis liegen. Im Falle von “pay what you want” wird der Preis als minimal akzeptierter Betrag betrachtet
-
INVALID_TAX_ID- Trigger: VAT/GST/TIN-Validierung fehlgeschlagen
- Message: Steuer-ID ist ungültig
-
LICENSE_KEY_LIMIT_REACHED- Trigger: Aktivierungen = Limit
- Message: Aktivierungsgrenze des Lizenzschlüssels erreicht
-
LICENSE_KEY_NOT_FOUND- Trigger: Instanz-ID oder Schlüssel-ID ungültig
- Message: Lizenzschlüsselinstanz nicht gefunden oder gehört nicht zu diesem Lizenzschlüssel
-
LINE_ITEM_FULLY_REFUNDED- Trigger: Versuch, bereits vollständig erstatteten Artikel zu erstatten
- Message: Artikel wurde vollständig erstattet und kann nicht weiter erstattet werden.
-
LINE_ITEM_NOT_FOUND- Trigger: Artikel-ID ist nicht Teil der referenzierten Zahlung
- Message: Artikel nicht in der Zahlung gefunden
-
LINE_ITEM_PRORATED- Trigger: Rückerstattung oder Aktualisierung versucht auf einer anteiligen Zeile
- Message: Artikel kann nicht erstattet werden, da er anteilig ist
-
LINE_ITEM_REFUND_AMOUNT_TOO_HIGH- Trigger: Rückerstattungsbetrag > bezahlter Betrag (inkl. Steuer)
- Message: Rückerstattungsbetrag für Artikel beträgt , was über dem bezahlten Betrag liegt
-
LINE_ITEM_REFUND_AMOUNT_TOO_LOW- Trigger: Rückerstattungsbetrag unter dem Mindestbetrag
- Message: Rückerstattungsbetrag für Artikel beträgt , was zu niedrig ist
-
MAXIMUM_KEYS_REACHED- Trigger: Metadaten / benutzerdefinierte Felder überschreiten 50 Paare
- Message: Überschreitet 50 Schlüssel-Wert-Paare
-
MERCHANT_NOT_LIVE- Trigger: Geschäft befindet sich noch im Test-/Sandbox-Modus
- Message: Händler ist nicht live
-
METER_IS_DELETED- Trigger: Versuch, gelöschtes Messgerät zu verwenden
- Message: Das Messgerät wurde bereits gelöscht
-
MISSING_ADDON_IDS- Trigger:
addon_idListe leer oder unbekannte IDs - Message: Eine oder mehrere Produkt-IDs existieren nicht:
- Trigger:
-
MISSING_METER_IDS- Trigger: Meter-ID-Liste leer oder enthält ungültige IDs
- Message: Eine oder mehrere Meter-IDs existieren nicht:
-
MISSING_PRODUCT_INFORMATION- Trigger: Produkt existiert, aber erforderliche Informationen fehlen
- Message: Produkt existiert, aber andere erforderliche Informationen fehlen oder sind ungültig
-
NEGATIVE_BALANCE_ADJUSTMENT- Trigger: Versuch, Wallet-Balance negativ zu machen
- Message: Wallet-Balance darf nicht negativ gemacht werden
-
NO_ELIGIBLE_PAYMENT_METHODS- Trigger: Nach Filterung bleibt nichts übrig
- Message: Keine berechtigten Zahlungsmethoden gefunden
-
NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS- Trigger: Versuch, das Ablaufdatum für schlüsselbasierte Abonnements festzulegen
- Message: Ablaufdatum für abonnementbasierte Lizenzschlüssel kann nicht festgelegt werden
-
NOT_FOUND- Trigger: Allgemeines 404 für fehlende Ressourcen
- Message: Artikel nicht gefunden (oder spezifischer)
-
ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED- Trigger: Planwechsel nicht für On-Demand erlaubt
- Message: Planänderungen werden für On-Demand-Abonnements nicht unterstützt
-
ON_DEMAND_SUBSCRIPTIONS_NOT_ENABLED- Trigger: Geschäft hat Feature-Flag deaktiviert
- Message: On-Demand-Abonnements sind für dieses Geschäft nicht aktiviert
-
ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: Versuch, On-Demand mit nutzungsbasierter Abrechnung zu verwenden
- Message: On-Demand-Abonnements werden für nutzungsbasierte Abrechnung nicht unterstützt
-
PAY_AS_YOU_WANT_AMOUNT_REQUIRED- Trigger: Preis fehlt für PWYW-Produkt
- Message: Betrag ist obligatorisch für “pay as you want”-Produkt
-
PAYMENT_ALREADY_REFUNDED- Trigger: Doppelte Rückerstattung
- Message: Diese Zahlung wurde bereits erstattet
-
PAYMENT_HAS_BEEN_REFUNDED- Trigger: Zahlung wurde vollständig erstattet
- Message: Die Zahlungs-ID wurde vollständig erstattet.
-
PAYMENT_NOT_SUCCEEDED- Trigger: Versuch, eine nicht erfolgreiche Zahlung zu erstatten/prozessen
- Message: Die angegebene Zahlung war nicht erfolgreich
-
PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: Planänderung versucht bei einem Abonnement, das zur Stornierung geplant ist
- Message: Abonnement zur Stornierung geplant
-
PREVIOUS_PAYMENT_PENDING- Trigger: Versuch, eine Gebühr zu erstellen, während die vorherige in einem nicht-terminalen Zustand ist
- Message: Kann keine neue Gebühr erstellen, da die vorherige Zahlung noch nicht erfolgreich ist
-
PRODUCT_CART_EMPTY- Trigger: Leerer Produktwarenkorb eingereicht
- Message: product_cart ist leer
-
PRODUCT_IS_DELETED- Trigger: Produkt soft-gelöscht
- Message: Keine Nachrichten
-
REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT- Trigger: Aggregierte Rückerstattungssumme > bezahlter Betrag
- Message: Der berechnete Rückerstattungsbetrag ist größer als der bezahlte Betrag
-
REFUND_WINDOW_EXPIRED- Trigger: Außerhalb des zulässigen Rückerstattungszeitraums
- Message: Rückerstattungen können Tage nach der Zahlungscreation nicht initiiert werden. Kontaktieren Sie support@dodopayments.com.
-
REQUEST_AMOUNT_BELOW_MINIMUM- Trigger: Betrag < Produktminimum
- Message: Betrag darf nicht unter dem für das Produkt angegebenen Mindestbetrag liegen
-
SUBSCRIPTION_EXPIRED- Trigger: Abrechnung nach
ends_at - Message: Abonnement abgelaufen, keine neuen Gebühren können erstellt werden
- Trigger: Abrechnung nach
-
SUBSCRIPTION_INACTIVE- Trigger: Status ≠
ACTIVE - Message: Abonnement ist nicht aktiv
- Trigger: Status ≠
-
SUBSCRIPTION_NOT_ON_DEMAND- Trigger: Erwartet On-Demand, aber festes Intervall erhalten
- Message: Abonnement ist bereits nicht On-Demand
-
SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED- Trigger: Abonnement-Zahlungswiederholungen haben die maximalen Versuche überschritten
- Message: Maximales Wiederholungslimit von 10 Versuchen für dieses Abonnement überschritten
-
TOO_MANY_REQUESTS- Trigger: 429 Rate-Limit
- Message: Keine Nachrichten
-
TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT- Trigger: Gesamter Warenkorbwert < Gateway-Mindestbetrag
- Message: Mindestbetrag von ist erforderlich, um die Zahlung zu verarbeiten
-
UNABLE_TO_EDIT_PRIMARY_BRAND- Trigger: Versuch, die primäre Marke über die reguläre API zu aktualisieren
- Message: Die primäre Marke kann über diesen API-Endpunkt nicht aktualisiert werden.
-
UNAUTHORIZED- Trigger: Kein API-Schlüssel oder ungültiges Token / Scope
- Message: Sie sind nicht autorisiert, diese Aktion auszuführen
-
UNSUPPORTED_ACTION- Trigger: Nicht unterstützte Aktion für Ressourcentyp
- Message: Planänderungen für nutzungsbasierte Abonnements werden nicht unterstützt
-
UNSUPPORTED_BILLING_CURRENCY- Trigger: Abonnements auf USD beschränkt
- Message: Nicht-USD-Abrechnungswährung wird für Abonnements nicht unterstützt
-
UNSUPPORTED_COUNTRY- Trigger: Geo noch nicht unterstützt
- Message: Land derzeit nicht unterstützt
-
UNSUPPORTED_CURRENCY- Trigger: Produkt- oder Add-on-Währung ungültig
- Message: Währung wird derzeit nicht unterstützt / Nur USD und INR-Produkte werden derzeit unterstützt / Nur USD und INR werden für den Add-on-Preis unterstützt / Es kann nur USD oder INR für billing_currency angefordert werden / Währung nicht unterstützt / Unerwartete Währung für indische Kartenabonnements
-
UNSUPPORTED_DISCOUNT_TYPE- Trigger: Pauschalbetragsrabatte usw. noch nicht live
- Message: Derzeit werden nur prozentuale Rabattcodes unterstützt
-
UNSUPPORTED_PAYMENT_CURRENCY- Trigger: Zahlungsmethode für Connector blockiert
- Message: INR-Transaktion wird für diese Transaktion nicht unterstützt
-
UNSUPPORTED_TAX_CATEGORY- Trigger: Steuerkategorie-String nicht im Enum
- Message: Kategorie derzeit nicht unterstützt
-
UNSUCCESSFUL_PAYMENT_ID- Trigger: Zahlungs-ID verweist auf nicht erfolgreiche Zahlung
- Message: Die Zahlungs-ID hat einen nicht erfolgreichen Status.
-
ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED- Trigger: Versuch, eine Zahlung mit null Betrag zu erstatten
- Message: Kann eine Zahlung mit null Währungsbetrag nicht erstatten
Best Practices
- Behandeln Sie Fehler immer elegant in Ihrer Anwendung
- Implementieren Sie eine ordnungsgemäße Fehlerprotokollierung
- Verwenden Sie geeignete Fehlermeldungen für Endbenutzer
- Implementieren Sie eine Wiederholungslogik für vorübergehende Fehler
- Kontaktieren Sie den Support bei ungelösten Problemen