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
    • Auslöser: Lizenzschlüsselaktivierungen: neues Limit < bestehende Instanzanzahl
    • Nachricht: Neues Aktivierungslimit darf nicht kleiner sein als die aktuelle Instanzanzahl
  • ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Auslöser: Versuch, Add-ons zu nutzungsbasierten Abonnements hinzuzufügen
    • Nachricht: Add-ons in Abonnements werden für nutzungsbasierte Abrechnung nicht unterstützt
  • ADDONS_NOT_ALLOWED_FOR_ON_DEMAND
    • Auslöser: Versuch, Add-ons zu On-Demand-Abonnements hinzuzufügen
    • Nachricht: Add-ons sind für On-Demand-Abonnements nicht erlaubt
  • BRAND_MISMATCH
    • Auslöser: Warenkorbartikel gehören zu verschiedenen Marken
    • Nachricht: Alle Artikel im Produktwarenkorb sollten zur gleichen Marke gehören
  • BRAND_NOT_ENABLED
    • Auslöser: Marke ist deaktiviert oder nicht aktiv
    • Nachricht: Die angegebene Marke ist nicht aktiviert
  • BRAND_SUBMISSION_NOT_ENABLED
    • Auslöser: Funktion zur erneuten Einreichung der Markenverifizierung ist nicht aktiviert
    • Nachricht: Die erneute Einreichung der Markenverifizierung ist nicht aktiviert
  • CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Auslöser: Versuch, ein Abonnement zu belasten, das zur Stornierung geplant ist
    • Nachricht: Abonnement ist zur Stornierung geplant
  • CHECKOUT_SESSION_CONSUMED
    • Auslöser: Checkout-Sitzung hat bereits eine Zahlung generiert
    • Nachricht: Checkout-Sitzung wurde bereits verbraucht
  • DISCOUNT_CODE_ALREADY_EXISTS
    • Auslöser: Duplizierte Erstellung eines Rabattcodes
    • Nachricht: Rabattcode existiert bereits
  • DISCOUNT_CODE_EXPIRED
    • Auslöser: Rabattcode nach expires_at Datum abgelaufen
    • Nachricht: Rabattcode ist abgelaufen
  • DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
    • Auslöser: Rabatt wurde wiederverwendet, nachdem usage_limit erreicht wurde
    • Nachricht: Nutzungslimit kann nicht kleiner sein als times_used / Rabattcode hat Nutzungslimit erreicht
  • DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND
    • Auslöser: Code wurde auf ein On-Demand-Abonnement angewendet
    • Nachricht: Rabattcoupon ist für On-Demand-Abonnements nicht verfügbar
  • DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT
    • Auslöser: Code wurde auf nicht verwandte Produkt(e) angewendet
    • Nachricht: Rabattcoupon ist für dieses Produkt nicht verfügbar
  • DUPLICATE_LINE_ITEMS_IN_REQUEST
    • Auslöser: Der gleiche item_id erscheint zweimal in items[]
    • Nachricht: Duplizierte item_ids im items-Array angegeben
  • DUPLICATE_METER_IDS_IN_REQUEST
    • Auslöser: Die gleiche Meter-ID erscheint mehrfach in der Anfrage
    • Nachricht: Duplizierte Meter-IDs sind nicht erlaubt
  • EXCHANGE_RATE_NOT_FOUND
    • Auslöser: Kein FX-Kurs für from → to Währungspaar
    • Nachricht: Wechselkurs nicht gefunden, um von Währung zu Währung zu konvertieren
  • EXISTING_REFUND_REQUEST_PROCESSING
    • Auslöser: Vorherige Rückerstattungsanfrage wird noch bearbeitet
    • Nachricht: Eine Rückerstattungsanfrage mit dem Status “Ausstehend” wird noch bearbeitet
  • INACTIVE_LICENSE_KEY
    • Auslöser: Schlüsselstatus ≠ ACTIVE
    • Nachricht: Lizenzschlüssel ist nicht aktiv
  • INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED
    • Auslöser: Planänderung bei inaktiven Abonnements
    • Nachricht: Planänderungen werden für inaktive Abonnements nicht unterstützt
  • INSUFFICIENT_WALLET_FUNDS
    • Auslöser: Wallet-Balance < Debitbetrag
    • Nachricht: Unzureichende Mittel im Wallet
  • INTEGER_CONVERSION_FAILURE
    • Auslöser: Jede Ganzzahl ↔ String/Dekimalumwandlung, die serverseitig fehlschlägt
    • Nachricht: Fehler bei der Ganzzahlumwandlung
  • INTERNAL_SERVER_ERROR
    • Auslöser: Unbehandelte Ausnahmen; Sie sollten Details serverseitig protokollieren
    • Nachricht: Keine öffentliche Nachricht (allgemeiner 500)
  • INVALID_DISCOUNT_CODE
    • Auslöser: Code existiert nicht / nicht anwendbar
    • Nachricht: Ungültiger Rabattcode / Rabattcode kann auf kein Produkt im Warenkorb angewendet werden
  • INVALID_PERCENTAGE
    • Auslöser: Prozentbetrag > 100% (oder 10.000 Basispunkte)
    • Nachricht: Prozentbetrag darf nicht mehr als 10000 betragen / Rabattcode-Betrag darf nicht mehr als 100% betragen
  • INVALID_QUANTITY
    • Auslöser: Ungültige Menge für nutzungsbasierte Preisgestaltung angegeben
    • Nachricht: Nur 1 Menge in nutzungsbasierten Preisprodukten erlaubt
  • INVALID_QUERY_PARAMS
    • Auslöser: Gegenseitige Ausschluss- / fehlerhafte Abfrageparameter
    • Nachricht: Abfrageparameter sollten nur entweder time_frame oder (start, end) enthalten
  • INVALID_REQUEST_BODY
    • Auslöser: Fehlerhaftes JSON oder Schema-Verletzung
    • Nachricht: Ihr Anfragekörper ist ungültig. Bitte überprüfen Sie Ihre Anfrage-Header und das Objekt.
  • INVALID_REQUEST_PARAMETERS
    • Auslöser: Semantik falsch (z. B. Datum in der Vergangenheit)
    • Nachricht: Nächsten_billing_date kann nicht auf eine Zeit in der Vergangenheit geändert werden
  • INVALID_SUGGESTED_PRICE
    • Auslöser: PWYW-Preis < minimal zulässiger Preis
    • Nachricht: Vorgeschlagener Preis darf nicht niedriger sein als der Mindestpreis. Im Falle von “pay what you want” wird der Preis als minimal akzeptierter Betrag betrachtet
  • INVALID_TAX_ID
    • Auslöser: USt/GST/TIN hat die Validierung nicht bestanden
    • Nachricht: Steuer-ID ist ungültig
  • LICENSE_KEY_LIMIT_REACHED
    • Auslöser: Aktivierungen = Limit
    • Nachricht: Aktivierungsgrenze des Lizenzschlüssels erreicht
  • LICENSE_KEY_NOT_FOUND
    • Auslöser: Instanz-ID oder Schlüssel-ID ungültig
    • Nachricht: Lizenzschlüsselinstanz nicht gefunden oder gehört nicht zu diesem Lizenzschlüssel
  • LINE_ITEM_FULLY_REFUNDED
    • Auslöser: Versuch, eine bereits vollständig erstattete Position zurückzuerstatten
    • Nachricht: Position wurde vollständig erstattet und kann nicht weiter erstattet werden.
  • LINE_ITEM_NOT_FOUND
    • Auslöser: Artikel-ID ist nicht Teil der referenzierten Zahlung
    • Nachricht: Position nicht in der Zahlung gefunden
  • LINE_ITEM_PRORATED
    • Auslöser: Rückerstattung oder Aktualisierung wurde für eine anteilige Position versucht
    • Nachricht: Position kann nicht zurückerstattet werden, da sie anteilig ist
  • LINE_ITEM_REFUND_AMOUNT_TOO_HIGH
    • Auslöser: Rückerstattungsbetrag > bezahlter Betrag (inkl. Steuer)
    • Nachricht: Der angeforderte Rückerstattungsbetrag für die Position einschließlich Steuer beträgt , was über dem bezahlten Betrag liegt
  • LINE_ITEM_REFUND_AMOUNT_TOO_LOW
    • Auslöser: Rückerstattungsbetrag unter dem Mindestbetrag
    • Nachricht: Der angeforderte Rückerstattungsbetrag für die Position beträgt , was zu niedrig ist
  • MAXIMUM_KEYS_REACHED
    • Auslöser: Metadaten / benutzerdefinierte Felder überschreiten 50 Paare
    • Nachricht: Überschreitet 50 Schlüssel-Wert-Paare
  • MERCHANT_NOT_LIVE
    • Auslöser: Geschäft befindet sich noch im Test-/Sandbox-Modus
    • Nachricht: Händler ist nicht live
  • METER_IS_DELETED
    • Auslöser: Versuch, einen gelöschten Zähler zu verwenden
    • Nachricht: Der Zähler wurde bereits gelöscht
  • MISSING_ADDON_IDS
    • Auslöser: addon_id Liste leer oder unbekannte IDs
    • Nachricht: Eine oder mehrere Produkt-IDs existieren nicht:
  • MISSING_METER_IDS
    • Auslöser: Zähler-ID-Liste leer oder enthält ungültige IDs
    • Nachricht: Eine oder mehrere Zähler-IDs existieren nicht:
  • MISSING_PRODUCT_INFORMATION
    • Auslöser: Produkt existiert, aber erforderliche Informationen fehlen
    • Nachricht: Produkt existiert, aber andere erforderliche Informationen fehlen oder sind ungültig
  • NEGATIVE_BALANCE_ADJUSTMENT
    • Auslöser: Versuch, das Wallet-Guthaben negativ zu machen
    • Nachricht: Wallet-Guthaben darf nicht negativ gemacht werden
  • NO_ELIGIBLE_PAYMENT_METHODS
    • Auslöser: Nach dem Filtern bleibt nichts übrig
    • Nachricht: Keine geeigneten Zahlungsmethoden gefunden
  • NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS
    • Auslöser: Versuch, das Ablaufdatum für einen abonnementbasierten Schlüssel festzulegen
    • Nachricht: Ablaufdatum für einen abonnementbasierten Lizenzschlüssel kann nicht festgelegt werden
  • NOT_FOUND
    • Auslöser: Allgemeines 404 für jede fehlende Ressource
    • Nachricht: Artikel nicht gefunden (oder spezifischer)
  • ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED
    • Auslöser: Planwechsel nicht für On-Demand erlaubt
    • Nachricht: Planänderungen werden für On-Demand-Abonnements nicht unterstützt
  • ON_DEMAND_SUBSCRIPTIONS_NOT_ENABLED
    • Auslöser: Geschäft hat das Feature-Flag deaktiviert
    • Nachricht: On-Demand-Abonnements sind für dieses Geschäft nicht aktiviert
  • ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Auslöser: Versuch, On-Demand mit nutzungsbasierter Abrechnung zu verwenden
    • Nachricht: On-Demand-Abonnements werden für nutzungsbasierte Abrechnung nicht unterstützt
  • PAY_AS_YOU_WANT_AMOUNT_REQUIRED
    • Auslöser: Preis fehlt für PWYW-Produkt
    • Nachricht: Betrag ist obligatorisch für das Produkt “pay what you want”
  • PAYMENT_ALREADY_REFUNDED
    • Auslöser: Duplizierte Rückerstattung
    • Nachricht: Diese Zahlung wurde bereits zurückerstattet
  • PAYMENT_HAS_BEEN_REFUNDED
    • Auslöser: Zahlung wurde vollständig zurückerstattet
    • Nachricht: Die Zahlungs-ID wurde vollständig zurückerstattet.
  • PAYMENT_NOT_SUCCEEDED
    • Auslöser: Versuch, eine Rückerstattung für eine nicht erfolgreiche Zahlung zu veranlassen
    • Nachricht: Die angegebene Zahlung war nicht erfolgreich
  • PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Auslöser: Planänderung bei einem Abonnement, das zur Stornierung geplant ist
    • Nachricht: Abonnement ist zur Stornierung geplant
  • PREVIOUS_PAYMENT_PENDING
    • Auslöser: Versuch, eine Gebühr zu erstellen, während die vorherige in einem nicht-terminalen Zustand ist
    • Nachricht: Kann keine neue Gebühr erstellen, da die vorherige Zahlung noch nicht erfolgreich ist
  • PRODUCT_CART_EMPTY
    • Auslöser: Leerer Produktwarenkorb eingereicht
    • Nachricht: product_cart ist leer
  • PRODUCT_IS_DELETED
    • Auslöser: Produkt wurde soft gelöscht
    • Nachricht: Keine Nachrichten
  • REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT
    • Auslöser: Aggregierte Rückerstattungssumme > bezahlte Summe
    • Nachricht: Der berechnete Rückerstattungsbetrag ist größer als der bezahlte Betrag
  • REFUND_WINDOW_EXPIRED
    • Auslöser: Außerhalb des zulässigen Rückerstattungsfensters
    • Nachricht: Rückerstattungen können Tage nach der Zahlungs Erstellung nicht initiiert werden. Kontaktieren Sie [email protected].
  • REQUEST_AMOUNT_BELOW_MINIMUM
    • Auslöser: Betrag < minimaler Produktbetrag
    • Nachricht: Betrag darf nicht geringer sein als der für das Produkt angegebene Mindestbetrag
  • SUBSCRIPTION_EXPIRED
    • Auslöser: Abrechnung nach ends_at
    • Nachricht: Abonnement abgelaufen, neue Gebühren können nicht erstellt werden
  • SUBSCRIPTION_INACTIVE
    • Auslöser: Status ≠ ACTIVE
    • Nachricht: Abonnement ist nicht aktiv
  • SUBSCRIPTION_NOT_ON_DEMAND
    • Auslöser: Erwartet On-Demand, aber festes Intervall erhalten
    • Nachricht: Abonnement ist bereits nicht On-Demand
  • SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED
    • Auslöser: Abonnement-Zahlungswiederholungen haben die maximalen Versuche überschritten
    • Nachricht: Maximales Wiederholungslimit von 10 Versuchen für dieses Abonnement überschritten
  • TOO_MANY_REQUESTS
    • Auslöser: 429 Rate-Limit
    • Nachricht: Keine Nachrichten
  • TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT
    • Auslöser: Kombinierter Warenkorbwert < Mindestbetrag des Gateways
    • Nachricht: Mindestbetrag von ist erforderlich, um die Zahlung zu verarbeiten
  • UNABLE_TO_EDIT_PRIMARY_BRAND
    • Auslöser: Versuch, die primäre Marke über die reguläre API zu aktualisieren
    • Nachricht: Die primäre Marke kann über diesen API-Endpunkt nicht aktualisiert werden.
  • UNAUTHORIZED
    • Auslöser: Kein API-Schlüssel oder ungültiges Token / Scope
    • Nachricht: Sie sind nicht autorisiert, diese Aktion auszuführen
  • UNSUPPORTED_ACTION
    • Auslöser: Nicht unterstützte Aktion für Ressourcentyp
    • Nachricht: Planänderungen für nutzungsbasierte Abonnements werden nicht unterstützt
  • UNSUPPORTED_BILLING_CURRENCY
    • Auslöser: Abonnements auf USD beschränkt
    • Nachricht: Nicht-USD-Abrechnungswährung wird für Abonnements nicht unterstützt
  • UNSUPPORTED_COUNTRY
    • Auslöser: Geo noch nicht unterstützt
    • Nachricht: Land wird derzeit nicht unterstützt
  • UNSUPPORTED_CURRENCY
    • Auslöser: Produkt- oder Add-on-Währung ungültig
    • Nachricht: 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
    • Auslöser: Pauschalrabatte usw. noch nicht live
    • Nachricht: Derzeit werden nur prozentuale Rabattcodes unterstützt
  • UNSUPPORTED_PAYMENT_CURRENCY
    • Auslöser: Zahlungsmethode für Connector blockiert
    • Nachricht: INR-Transaktion wird für diese Transaktion nicht unterstützt
  • UNSUPPORTED_TAX_CATEGORY
    • Auslöser: Steuerkategorie-String nicht im Enum
    • Nachricht: Kategorie wird derzeit nicht unterstützt
  • UNSUCCESSFUL_PAYMENT_ID
    • Auslöser: Zahlungs-ID verweist auf nicht erfolgreiche Zahlung
    • Nachricht: Die Zahlungs-ID hat einen nicht erfolgreichen Status.
  • ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED
    • Auslöser: Versuch, eine Zahlung mit null Betrag zurückzuerstatten
    • Nachricht: Kann eine Zahlung mit null Währungsbetrag nicht zurückerstatten

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 [email protected].