Hoppa till huvudinnehåll

Ö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
Att förstå dessa felkoder och deras betydelser är avgörande för:
  • 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
Följande avsnitt ger detaljerad information om standard HTTP-statuskoder och specifika felkoder som du kan stöta på när du använder Dodo Payments API.

Standard API Felkoder

FelkodHTTP StatusBeskrivning
400Bad RequestFörfrågan var felaktig eller innehöll ogiltiga parametrar
401UnauthorizedAutentisering misslyckades eller API-nyckeln är ogiltig
403ForbiddenAPI-nyckeln har inte behörighet att få åtkomst till den begärda resursen
404Not FoundDen begärda resursen finns inte
405Method Not AllowedHTTP-metoden stöds inte för denna slutpunkt
409ConflictFörfrågan krockar med det aktuella tillståndet för resursen
422Unprocessable EntityFörfrågan var välformulerad men innehöll semantiska fel
429Too Many RequestsÖverskridit hastighetsgränsen
500Internal Server ErrorEtt oväntat fel inträffade på våra servrar
502Bad GatewayServern fick ett ogiltigt svar från en upstream-server
503Service UnavailableTjänsten är tillfälligt otillgänglig
504Gateway TimeoutServern 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:
{
  "code": "UNSUPPORTED_COUNTRY",
  "message": "Country AI currently not supported"
}

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_at datum
    • Message: Rabattkoden har gått ut
  • DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
    • Trigger: Rabatt återanvänds efter att usage_limit har nåtts
    • Message: Användningsgränsen kan inte vara mindre än times_used / Rabattkodens användningsgräns har nåtts
  • 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_id förekommer två gånger i items[]
    • Message: Duplicerade item_ids angivna i items-arrayen
  • 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 → to valutapar
    • Message: Växelkurs hittades inte för att konvertera från valuta till valuta
  • 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
  • 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_id lista tom eller okända ID:n
    • Message: En eller flera produkt-ID:n existerar inte:
  • 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
  • SUBSCRIPTION_INACTIVE
    • Trigger: Status ≠ ACTIVE
    • Message: Abonnemanget är inte aktivt
  • 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

  1. Hantera alltid fel på ett smidigt sätt i din applikation
  2. Implementera korrekt felregistrering
  3. Använd lämpliga felmeddelanden för slutanvändare
  4. Implementera återförsökslogik för tillfälliga fel
  5. Kontakta supporten för olösta problem

Support

För ytterligare hjälp med felkoder eller integrationsproblem, vänligen kontakta vårt supportteam på support@dodopayments.com.