Zum Hauptinhalt springen

Ü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
Das Verständnis dieser Fehlercodes und ihrer Bedeutungen ist entscheidend für:
  • 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
Die folgenden Abschnitte bieten detaillierte Informationen zu standardisierten HTTP-Statuscodes und spezifischen Fehlercodes, die Sie bei der Verwendung der Dodo Payments API antreffen können.

Standard API-Fehlercodes

FehlercodeHTTP-StatusBeschreibung
400Ungültige AnfrageDie Anfrage war fehlerhaft oder enthielt ungültige Parameter
401UnautorisiertDie Authentifizierung ist fehlgeschlagen oder der API-Schlüssel ist ungültig
403VerbotenDer API-Schlüssel hat keine Berechtigung, auf die angeforderte Ressource zuzugreifen
404Nicht gefundenDie angeforderte Ressource existiert nicht
405Methode nicht erlaubtDie HTTP-Methode wird für diesen Endpunkt nicht unterstützt
409KonfliktDie Anfrage steht im Konflikt mit dem aktuellen Zustand der Ressource
422Nicht verarbeitbare EntitätDie Anfrage war gut formuliert, enthielt jedoch semantische Fehler
429Zu viele AnfragenDie Rate-Limit wurde überschritten
500Interner ServerfehlerEin unerwarteter Fehler ist auf unseren Servern aufgetreten
502Ungültiges GatewayDer Server hat eine ungültige Antwort von einem upstream-Server erhalten
503Dienst nicht verfügbarDer Dienst ist vorübergehend nicht verfügbar
504Gateway-ZeitüberschreitungDer 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:
{
  "code": "UNSUPPORTED_COUNTRY",
  "message": "Country AI currently not supported"
}

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_at Datum
    • Message: Rabattcode abgelaufen
  • DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
    • Trigger: Rabatt nach Erreichen von usage_limit wiederverwendet
    • Message: Nutzungslimit kann nicht kleiner sein als times_used / Rabattcode hat Nutzungslimit erreicht
  • 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_id erscheint zweimal in items[]
    • Message: Doppelte item_ids im items-Array angegeben
  • 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 → to Währungspaar
    • Message: Wechselkurs nicht gefunden, um von Währung zu Währung zu konvertieren
  • 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
  • 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_id Liste leer oder unbekannte IDs
    • Message: Eine oder mehrere Produkt-IDs existieren nicht:
  • 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
  • SUBSCRIPTION_INACTIVE
    • Trigger: Status ≠ ACTIVE
    • Message: Abonnement ist nicht aktiv
  • 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

  1. Behandeln Sie Fehler immer elegant in Ihrer Anwendung
  2. Implementieren Sie eine ordnungsgemäße Fehlerprotokollierung
  3. Verwenden Sie geeignete Fehlermeldungen für Endbenutzer
  4. Implementieren Sie eine Wiederholungslogik für vorübergehende Fehler
  5. Kontaktieren Sie den Support bei ungelösten Problemen

Unterstützung

Für zusätzliche Hilfe zu Fehlercodes oder Integrationsproblemen wenden Sie sich bitte an unser Support-Team unter support@dodopayments.com.