Översikt
Dodo Payments API använder standard HTTP-statuskoder och anpassade felkoder för att indikera framgång eller misslyckande av API-förfrågningar. När ett fel inträffar returnerar API:et en lämplig HTTP-statuskod och ett JSON-svar som innehåller detaljerad information om felet. Varje felrespons inkluderar:- En HTTP-statuskod som indikerar den allmänna kategorin av felet
- En specifik felkod som identifierar den exakta naturen av felet
- Ett mänskligt läsbart felmeddelande som förklarar vad som gick fel
- Ytterligare detaljer om felet när det är tillämpligt
- Felsökning av integrationsproblem
- Implementering av korrekt felhantering i din applikation
- Att ge meningsfull feedback till slutanvändare
- Att upprätthålla ett robust betalningsbehandlingssystem
Standard API Felkoder
| Felkod | HTTP Status | Beskrivning |
|---|---|---|
| 400 | Bad Request | Förfrågan var felaktig eller innehöll ogiltiga parametrar |
| 401 | Unauthorized | Autentisering misslyckades eller API-nyckeln är ogiltig |
| 403 | Forbidden | API-nyckeln har inte behörighet att få åtkomst till den begärda resursen |
| 404 | Not Found | Den begärda resursen finns inte |
| 405 | Method Not Allowed | HTTP-metoden stöds inte för denna slutpunkt |
| 409 | Conflict | Förfrågan krockar med det aktuella tillståndet för resursen |
| 422 | Unprocessable Entity | Förfrågan var välformulerad men innehöll semantiska fel |
| 429 | Too Many Requests | Överskridit hastighetsgränsen |
| 500 | Internal Server Error | Ett oväntat fel inträffade på våra servrar |
| 502 | Bad Gateway | Servern fick ett ogiltigt svar från en upstream-server |
| 503 | Service Unavailable | Tjänsten är tillfälligt otillgänglig |
| 504 | Gateway Timeout | Servern tidsbegränsades medan den väntade på ett upstream-svar |
Felresponsformat
När ett fel inträffar returnerar API:et ett JSON-svar med följande struktur:Felkodsreferens
-
ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT- Trigger: Licensnyckelaktiveringar: ny gräns < befintligt instansantal
- Message: Ny aktiveringsgräns kan inte vara mindre än nuvarande instansantal
-
ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: Försök att lägga till tillägg till användningsbaserade abonnemang
- Message: Tillägg i abonnemang stöds inte för användningsbaserad fakturering
-
ADDONS_NOT_ALLOWED_FOR_ON_DEMAND- Trigger: Försök att lägga till tillägg till on-demand-abonnemang
- Message: Tillägg är inte tillåtna för on-demand-abonnemang
-
BRAND_MISMATCH- Trigger: Varor i kundvagnen tillhör olika varumärken
- Message: Alla varor i produktvagnen bör tillhöra samma varumärke
-
BRAND_NOT_ENABLED- Trigger: Varumärket är inaktiverat eller inte aktivt
- Message: Det angivna varumärket är inte aktiverat
-
BRAND_SUBMISSION_NOT_ENABLED- Trigger: Funktion för återinlämning av varumärkesverifiering är inte aktiverad
- Message: Återinlämning av varumärkesverifiering är inte aktiverad
-
CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: Försök att debitera abonnemang som är schemalagt för avbokning
- Message: Abonnemanget är schemalagt för avbokning
-
CHECKOUT_SESSION_CONSUMED- Trigger: Utcheckningssession har redan genererat en betalning
- Message: Utcheckningssessionen har redan använts
-
DISCOUNT_CODE_ALREADY_EXISTS- Trigger: Duplicering av rabattkod
- Message: Rabattkoden finns redan
-
DISCOUNT_CODE_EXPIRED- Trigger: Rabattkod har passerat sitt
expires_atdatum - Message: Rabattkoden har gått ut
- Trigger: Rabattkod har passerat sitt
-
DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED- Trigger: Rabatt återanvänds efter att
usage_limithar nåtts - Message: Användningsgränsen kan inte vara mindre än times_used / Rabattkodens användningsgräns har nåtts
- Trigger: Rabatt återanvänds efter att
-
DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND- Trigger: Kod tillämpad på on-demand-abonnemang
- Message: Rabattkupong är inte tillgänglig för on-demand-abonnemang
-
DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT- Trigger: Kod tillämpad på orelaterad produkt(er)
- Message: Rabattkupong är inte tillgänglig för denna produkt
-
DUPLICATE_LINE_ITEMS_IN_REQUEST- Trigger: Samma
item_idförekommer två gånger iitems[] - Message: Duplicerade item_ids angivna i items-arrayen
- Trigger: Samma
-
DUPLICATE_METER_IDS_IN_REQUEST- Trigger: Samma mätar-ID förekommer flera gånger i begäran
- Message: Duplicerade mätar-ID:n är inte tillåtna
-
EXCHANGE_RATE_NOT_FOUND- Trigger: Ingen FX-kurs för
from → tovalutapar - Message: Växelkurs hittades inte för att konvertera från valuta till valuta
- Trigger: Ingen FX-kurs för
-
EXISTING_REFUND_REQUEST_PROCESSING- Trigger: Tidigare återbetalningsbegäran behandlas fortfarande
- Message: En återbetalningsbegäran med status “Pending” behandlas fortfarande
-
INACTIVE_LICENSE_KEY- Trigger: Nyckelstatus ≠
ACTIVE - Message: Licensnyckeln är inte aktiv
- Trigger: Nyckelstatus ≠
-
INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED- Trigger: Planändring på inaktivt abonnemang
- Message: Att ändra planer stöds inte för inaktiva abonnemang
-
INSUFFICIENT_WALLET_FUNDS- Trigger: Plånbalans < debiteringsbelopp
- Message: Otillräckliga medel i plånboken
-
INTEGER_CONVERSION_FAILURE- Trigger: Alla heltals ↔ sträng/decimal konverteringar som misslyckas på serversidan
- Message: Heltalskonverteringsfel
-
INTERNAL_SERVER_ERROR- Trigger: Ouppfångade undantag; du bör logga detaljer på serversidan
- Message: Ingen offentlig meddelande (generisk 500)
-
INVALID_DISCOUNT_CODE- Trigger: Koden existerar inte / är inte tillämplig
- Message: Ogiltig rabattkod / Rabattkoden kan inte tillämpas på någon produkt i kundvagnen
-
INVALID_PERCENTAGE- Trigger: Procentbelopp > 100% (eller 10 000 baspunkter)
- Message: Procentbeloppet kan inte vara mer än 10000 / Rabattkodens belopp kan inte vara mer än 100%
-
INVALID_QUANTITY- Trigger: Ogiltig kvantitet angiven för användningsbaserad prissättning
- Message: Endast 1 kvantitet tillåten i användningsbaserade prisprodukter
-
INVALID_QUERY_PARAMS- Trigger: Ömsesidigt uteslutande / felaktiga frågeparametrar
- Message: Frågeparametrar bör endast innehålla antingen time_frame eller (start, slut)
-
INVALID_REQUEST_BODY- Trigger: Felaktig JSON eller schemaöverträdelser
- Message: Din begärningskropp är ogiltig. Kontrollera dina begärningshuvuden och objekt.
-
INVALID_REQUEST_PARAMETERS- Trigger: Semantik felaktig (t.ex. datum i det förflutna)
- Message: Kan inte ändra next_billing_date till förfluten tid
-
INVALID_SUGGESTED_PRICE- Trigger: PWYW-pris < minimi tillåtna pris
- Message: Föreslaget pris kan inte vara lägre än minimi pris. Vid pay what you want, betraktas priset som minimi accepterat belopp
-
INVALID_TAX_ID- Trigger: VAT/GST/TIN misslyckades validering
- Message: Skatte-ID är ogiltigt
-
LICENSE_KEY_LIMIT_REACHED- Trigger: Aktiveringar = gräns
- Message: Licensnyckelns aktiveringsgräns har nåtts
-
LICENSE_KEY_NOT_FOUND- Trigger: Instans-ID eller nyckel-ID ogiltig
- Message: Licensnyckelinstans hittades inte eller tillhör inte denna licensnyckel
-
LINE_ITEM_FULLY_REFUNDED- Trigger: Försök att återbetala redan helt återbetald rad
- Message: Rad har blivit helt återbetald och kan inte återbetalas ytterligare.
-
LINE_ITEM_NOT_FOUND- Trigger: Varu-ID är inte en del av den refererade betalningen
- Message: Rad hittades inte i betalningen
-
LINE_ITEM_PRORATED- Trigger: Återbetalning eller uppdatering försökt på en proportionell rad
- Message: Rad kan inte återbetalas eftersom den är proportionell
-
LINE_ITEM_REFUND_AMOUNT_TOO_HIGH- Trigger: Återbetalningsbelopp > betalat belopp (inkl. skatt)
- Message: Rad begärt återbetalningsbelopp inklusive skatt är vilket är över det betalda beloppet
-
LINE_ITEM_REFUND_AMOUNT_TOO_LOW- Trigger: Återbetalningsbelopp under minimi tröskel
- Message: Rad begärt återbetalningsbelopp är vilket är för lågt
-
MAXIMUM_KEYS_REACHED- Trigger: Metadata / anpassade fält överskred 50 par
- Message: Överskrider 50 nyckel-värde-par
-
MERCHANT_NOT_LIVE- Trigger: Företaget är fortfarande i test/sandbox-läge
- Message: Handlaren är inte aktiv
-
METER_IS_DELETED- Trigger: Försök att använda raderad mätare
- Message: Mätaren har redan blivit raderad
-
MISSING_ADDON_IDS- Trigger:
addon_idlista tom eller okända ID:n - Message: En eller flera produkt-ID:n existerar inte:
- Trigger:
-
MISSING_METER_IDS- Trigger: Mätar-ID-lista tom eller innehåller ogiltiga ID:n
- Message: En eller flera mätar-ID:n existerar inte:
-
MISSING_PRODUCT_INFORMATION- Trigger: Produkten existerar men obligatorisk information saknas
- Message: Produkten existerar men annan obligatorisk information saknas eller är ogiltig
-
NEGATIVE_BALANCE_ADJUSTMENT- Trigger: Försök att göra plånbalansen negativ
- Message: Plånbalansen får inte göras negativ
-
NO_ELIGIBLE_PAYMENT_METHODS- Trigger: Efter filtrering, inget kvar
- Message: Inga berättigade betalningsmetoder hittades
-
NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS- Trigger: Försök att ställa in utgångsdatum på abonnemangsbaserad nyckel
- Message: Kan inte ställa in utgångsdatum för abonnemangsbaserad licensnyckel
-
NOT_FOUND- Trigger: Generisk 404 för alla saknade resurser
- Message: Objektet hittades inte (eller mer specifikt)
-
ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED- Trigger: Planbyte inte tillåtet för on-demand
- Message: Att ändra planer stöds inte för on-demand-abonnemang
-
ON_DEMAND_SUBSCRIPTIONS_NOT_ENABLED- Trigger: Företaget har funktionsflagga avstängd
- Message: On-demand-abonnemang är inte aktiverade för detta företag
-
ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: Försök att använda on-demand med användningsbaserad fakturering
- Message: On-demand-abonnemang stöds inte för användningsbaserad fakturering
-
PAY_AS_YOU_WANT_AMOUNT_REQUIRED- Trigger: Pris saknas för PWYW-produkt
- Message: Belopp är obligatoriskt för pay as you want-produkt
-
PAYMENT_ALREADY_REFUNDED- Trigger: Duplicerad återbetalning
- Message: Denna betalning har redan återbetalats
-
PAYMENT_HAS_BEEN_REFUNDED- Trigger: Betalningen har blivit helt återbetald
- Message: Betalnings-ID:t har blivit helt återbetalt.
-
PAYMENT_NOT_SUCCEEDED- Trigger: Försök att återbetala/behandla misslyckad betalning
- Message: Den angivna betalningen har inte lyckats
-
PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: Planändring försökt på abonnemang schemalagt för avbokning
- Message: Abonnemanget är schemalagt för avbokning
-
PREVIOUS_PAYMENT_PENDING- Trigger: Försök att skapa debitering medan föregående är i icke-terminalt tillstånd
- Message: Kan inte skapa ny debitering eftersom föregående betalning inte har lyckats än
-
PRODUCT_CART_EMPTY- Trigger: Tom produktvagn skickad
- Message: produktvagn är tom
-
PRODUCT_IS_DELETED- Trigger: Produkt mjukt raderad
- Message: Inga meddelanden
-
REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT- Trigger: Sammanlagd återbetalningsbelopp > betalat belopp
- Message: Det beräknade återbetalningsbeloppet är större än det betalda beloppet
-
REFUND_WINDOW_EXPIRED- Trigger: Utanför tillåten återbetalningsfönster
- Message: Återbetalningar kan inte initieras dagar efter betalningsskapande. Kontakta support@dodopayments.com.
-
REQUEST_AMOUNT_BELOW_MINIMUM- Trigger: Belopp < produktminimum
- Message: Beloppet kan inte vara mindre än det minimi belopp som anges för produkten
-
SUBSCRIPTION_EXPIRED- Trigger: Fakturering förbi
ends_at - Message: Abonnemanget har gått ut, kan inte skapa nya debiteringar
- Trigger: Fakturering förbi
-
SUBSCRIPTION_INACTIVE- Trigger: Status ≠
ACTIVE - Message: Abonnemanget är inte aktivt
- Trigger: Status ≠
-
SUBSCRIPTION_NOT_ON_DEMAND- Trigger: Förväntad on-demand men fick fast intervall
- Message: Abonnemanget är redan inte on-demand
-
SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED- Trigger: Abonnemangsbetalningsåterförsök överskridit maximala försök
- Message: Maximala återförsöksgränsen på 10 försök överskriden för detta abonnemang
-
TOO_MANY_REQUESTS- Trigger: 429 hastighetsbegränsning
- Message: Inga meddelanden
-
TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT- Trigger: Sammanlagd kundvagnssumma < gateway minimum
- Message: Minimi belopp av krävs för att behandla betalning
-
UNABLE_TO_EDIT_PRIMARY_BRAND- Trigger: Försök att uppdatera primärt varumärke via vanlig API
- Message: Primärt varumärke kan inte uppdateras via denna API-slutpunkt.
-
UNAUTHORIZED- Trigger: Ingen API-nyckel eller ogiltig token / omfattning
- Message: Du är inte auktoriserad att utföra denna åtgärd
-
UNSUPPORTED_ACTION- Trigger: Stödd åtgärd för resurstyp
- Message: Att ändra planer för användningsbaserade abonnemang stöds inte
-
UNSUPPORTED_BILLING_CURRENCY- Trigger: Abonnemang begränsade till USD
- Message: Icke-USD faktureringsvaluta stöds inte för abonnemang
-
UNSUPPORTED_COUNTRY- Trigger: Geo stöds ännu inte
- Message: Land stöds för närvarande inte
-
UNSUPPORTED_CURRENCY- Trigger: Produkt eller tillägg valuta ogiltig
- Message: Valuta stöds för närvarande inte / Endast USD och INR produkter stöds för närvarande / Endast USD och INR stöds för tilläggspris / Kan endast begära USD eller INR för faktureringsvaluta / Valuta stöds inte / Oväntad valuta för indiska kortabonnemang
-
UNSUPPORTED_DISCOUNT_TYPE- Trigger: Rabattkoder med fast belopp, etc., är ännu inte aktiverade
- Message: Endast procentuella rabattkoder stöds för tillfället
-
UNSUPPORTED_PAYMENT_CURRENCY- Trigger: Betalningsvaluta blockerad för anslutning
- Message: INR-transaktion stöds inte för denna transaktion
-
UNSUPPORTED_TAX_CATEGORY- Trigger: Skattekategori sträng inte i enum
- Message: Kategori stöds för närvarande inte
-
UNSUCCESSFUL_PAYMENT_ID- Trigger: Betalnings-ID refererar till misslyckad betalning
- Message: Betalnings-ID:t har en misslyckad status.
-
ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED- Trigger: Försök att återbetala betalning med nollbelopp
- Message: Kan inte återbetala en betalning med nollvaluta belopp
Bästa praxis
- Hantera alltid fel på ett smidigt sätt i din applikation
- Implementera korrekt felregistrering
- Använd lämpliga felmeddelanden för slutanvändare
- Implementera återförsökslogik för tillfälliga fel
- Kontakta supporten för olösta problem