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 antal instanser
    • Message: Den nya aktiveringsgränsen får inte vara lägre än det nuvarande antalet instanser
  • ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Trigger: Försök att lägga till tillägg till prenumerationer med användningsbaserad fakturering
    • Message: Tillägg i prenumerationer 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 prenumerationer on demand
    • Message: Tillägg är inte tillåtna för on demand-prenumerationer
  • BRAND_MISMATCH
    • Trigger: Varor i kundvagn tillhör olika varumärken
    • Message: Alla artiklar i produktkorgen ska tillhöra samma varumärke
  • BRAND_NOT_ENABLED
    • Trigger: Varumärket är inaktiverat eller inte aktivt
    • Message: Angivet varumärke ä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 prenumeration planerad till avbokning
    • Message: Prenumeration planerad att avbrytas
  • CHECKOUT_SESSION_CONSUMED
    • Trigger: Checkout-session har redan genererat en betalning
    • Message: Checkout-sessionen har redan använts
  • DISCOUNT_CODE_ALREADY_EXISTS
    • Trigger: Försök att skapa en duplicerad rabattkod
    • Message: Rabattkoden finns redan
  • DISCOUNT_CODE_EXPIRED
    • Trigger: Rabattkoden har passerat sitt expires_at datum
    • Message: Rabattkoden har löpt ut
  • DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
    • Trigger: Rabatt återanvänd efter usage_limit uppnåtts
    • Message: Användningsgränsen får inte vara mindre än times_used / Rabattkoden har nått sin användningsgräns
  • DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND
    • Trigger: Kod tillämpad på on demand-prenumeration
    • Message: Rabattkupong inte tillgänglig för on demand-prenumerationer
  • DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT
    • Trigger: Kod tillämpad på icke relaterade produkter
    • Message: Rabattkupong inte tillgänglig för denna produkt
  • DUPLICATE_LINE_ITEMS_IN_REQUEST
    • Trigger: Samma item_id visas två gånger i items[]
    • Message: Dubbletter av item_ids anges i items-arrayen
  • DUPLICATE_METER_IDS_IN_REQUEST
    • Trigger: Samma meter-ID visas flera gånger i begäran
    • Message: Dubblettmeter-ID tillåts inte
  • EXCHANGE_RATE_NOT_FOUND
    • Trigger: Ingen växlingskurs för from → to valutapar
    • Message: Växlingskurs hittades inte för att konvertera från Currency till Currency
  • 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: Försök att byta plan för inaktiv prenumeration
    • Message: Att byta plan stöds inte för inaktiva prenumerationer
  • INSUFFICIENT_WALLET_FUNDS
    • Trigger: Plånbalans < debiteringsbelopp
    • Message: Otillräckliga medel i plånboken
  • INTEGER_CONVERSION_FAILURE
    • Trigger: Alla heltals- ↔ sträng-/decimalkonverteringar som misslyckas på serversidan
    • Message: Heltalskonvertering misslyckades
  • INTERNAL_SERVER_ERROR
    • Trigger: Oavfångade undantag; du bör logga detaljer på serversidan
    • Message: Inget offentligt meddelande (generisk 500)
  • INVALID_DISCOUNT_CODE
    • Trigger: Koden finns inte / ej tillämplig
    • Message: Ogiltig rabattkod / Rabattkod kan inte tillämpas på någon produkt i kundvagnen
  • INVALID_PERCENTAGE
    • Trigger: Procentbelopp > 100 % (eller 10 000 baspunkter)
    • Message: Procentbelopp får inte överstiga 10000 / Rabattkodens belopp får inte vara mer än 100 %
  • INVALID_QUANTITY
    • Trigger: Ogiltig kvantitet angiven för användningsbaserad prissättning
    • Message: Endast 1 kvantitet tillåts för produkter med användningsbaserat pris
  • INVALID_QUERY_PARAMS
    • Trigger: Ömsesidigt uteslutande / felaktiga förfrågningsparametrar
    • Message: Förfrågningsparametrar ska endast innehålla antingen time_frame eller (start, end)
  • INVALID_REQUEST_BODY
    • Trigger: Felaktigt JSON eller schemaöverträdelse
    • Message: Din begärans kropp är ogiltig. Kontrollera dina begäranshuvuden och objekt.
  • INVALID_REQUEST_PARAMETERS
    • Trigger: Semantik fel (t.ex. datum i det förflutna)
    • Message: Kan inte ändra next_billing_date till tidigare tid
  • INVALID_SUGGESTED_PRICE
    • Trigger: PWYW-pris < tillåtet minimipris
    • Message: Föreslaget pris får inte vara lägre än minimipriset. Vid pay what you want betraktas priset som minsta accepterade belopp
  • INVALID_TAX_ID
    • Trigger: VAT/GST/TIN misslyckades vid validering
    • Message: Skatte-ID är ogiltigt
  • LICENSE_KEY_LIMIT_REACHED
    • Trigger: Aktiveringar = gräns
    • Message: Licensnyckelns aktiveringsgräns har uppnåtts
  • LICENSE_KEY_NOT_FOUND
    • Trigger: Instans-ID eller nyckel-ID ogiltigt
    • Message: Licensnyckelinstans hittades inte eller tillhör inte denna licensnyckel
  • LINE_ITEM_FULLY_REFUNDED
    • Trigger: Försök att återbetala redan helt återbetald radpost
    • Message: Radpost har redan återbetalats fullt ut och kan inte återbetalas igen.
  • LINE_ITEM_NOT_FOUND
    • Trigger: Artikelnamn-ID ingår inte i refererade betalning
    • Message: Radpost hittades inte i betalningen
  • LINE_ITEM_PRORATED
    • Trigger: Återbetalning eller uppdatering på en proraterad rad
    • Message: Radpost kan inte återbetalas eftersom den är proraterad
  • LINE_ITEM_REFUND_AMOUNT_TOO_HIGH
    • Trigger: Återbetalningsbelopp > betalat belopp (inkl. skatt)
    • Message: Radpost begärda återbetalningsbelopp inklusive skatt är vilket överstiger det betalda beloppet
  • LINE_ITEM_REFUND_AMOUNT_TOO_LOW
    • Trigger: Återbetalningsbelopp under minimigräns
    • Message: Radpost begärda återbetalningsbelopp är vilket är för lågt
  • MAXIMUM_KEYS_REACHED
    • Trigger: Metadata / anpassade fält överstiger 50 par
    • Message: Överstiger 50 nyckel-värde-par
  • MERCHANT_NOT_LIVE
    • Trigger: Företag fortfarande i test-/sandboxläge
    • Message: Handlare är inte live
  • METER_IS_DELETED
    • Trigger: Försök att använda borttagen mätare
    • Message: Mätaren har redan tagits bort
  • MISSING_ADDON_IDS
    • Trigger: addon_id-listan tom eller okända ID:n
    • Message: En eller flera produkt-ID:n finns inte:
  • MISSING_METER_IDS
    • Trigger: Lista med mätar-ID:n tom eller innehåller ogiltiga ID:n
    • Message: En eller flera mätar-ID:n finns inte:
  • MISSING_PRODUCT_INFORMATION
    • Trigger: Produkten finns men obligatorisk information saknas
    • Message: Produkt finns men annan obligatorisk information saknas eller är ogiltig
  • NEGATIVE_BALANCE_ADJUSTMENT
    • Trigger: Försök att göra plånbalansen negativ
    • Message: Plånbalans får inte göras negativ
  • NO_ELIGIBLE_PAYMENT_METHODS
    • Trigger: Efter filtrering återstår inget
    • Message: Inga berättigade betalningsmetoder hittades
  • NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS
    • Trigger: Försök att sätta utgångsdatum på prenumerationsbaserad nyckel
    • Message: Kan inte ange utgångsdatum för prenumerationsbaserad licensnyckel
  • NOT_FOUND
    • Trigger: Generisk 404 för saknad resurs
    • Message: Objektet hittades inte (eller mer specifikt)
  • ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED
    • Trigger: Planbyte inte tillåtet för on-demand
    • Message: Att byta plan stöds inte för on demand-prenumerationer
  • ON_DEMAND_SUBSCRIPTIONS_NOT_ENABLED
    • Trigger: Företag har funktionsflagga av
    • Message: On demand-prenumerationer ä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-prenumerationer stöds inte för användningsbaserad fakturering
  • PAY_AS_YOU_WANT_AMOUNT_REQUIRED
    • Trigger: Pris saknas för PWYW-produkt
    • Message: Belopp krävs 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 återbetalats fullt ut
    • Message: Betalnings-ID:t har återbetalats fullt ut.
  • PAYMENT_NOT_SUCCEEDED
    • Trigger: Försök att återbetala/behandla misslyckad betalning
    • Message: Den angivna betalningen lyckades inte
  • PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Trigger: Planbyte försökt på prenumeration planerad till avbokning
    • Message: Prenumeration planerad att avbrytas
  • PREVIOUS_PAYMENT_PENDING
    • Trigger: Försök att skapa avgift medan föregående är i icke-terminalt tillstånd
    • Message: Kan inte skapa ny avgift eftersom föregående betalning ännu inte lyckats
  • PRODUCT_CART_EMPTY
    • Trigger: Tom produktkorg skickad
    • Message: product_cart är tom
  • PRODUCT_IS_DELETED
    • Trigger: Produkt markerad som mjuk borttagen
    • Message: Inga meddelanden
  • REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT
    • Trigger: Sammanlagt återbetalningsbelopp > betalat belopp
    • Message: Det beräknade återbetalningsbeloppet är större än det betalda beloppet
  • REFUND_WINDOW_EXPIRED
    • Trigger: Utanför tillåtet återbetalningsfönster
    • Message: Återbetalningar kan inte initieras dagar efter betalningens skapande. Kontakta support@dodopayments.com.
  • REQUEST_AMOUNT_BELOW_MINIMUM
    • Trigger: Belopp < produktens minimum
    • Message: Beloppet får inte vara mindre än det minsta belopp som angivits för produkten
  • SUBSCRIPTION_EXPIRED
    • Trigger: Fakturering efter ends_at
    • Message: Prenumerationen har gått ut och nya avgifter kan inte skapas
  • SUBSCRIPTION_INACTIVE
    • Trigger: Status ≠ ACTIVE
    • Message: Prenumerationen är inte aktiv
  • SUBSCRIPTION_NOT_ON_DEMAND
    • Trigger: Förväntade on-demand men fick fast intervall
    • Message: Prenumerationen är redan inte on demand
  • SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED
    • Trigger: Prenumerationens betalningsomförsök överskred max försök
    • Message: Maximalt antal omförsök på 10 har överskridits för denna prenumeration
  • TOO_MANY_REQUESTS
    • Trigger: 429 gräns för hastighet
    • Message: Inga meddelanden
  • TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT
    • Trigger: Kombinerat kundvagnsbelopp < gateway-minimum
    • Message: Minsta belopp på krävs för att behandla betalningen
  • 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 behörig att utföra denna åtgärd
  • UNSUPPORTED_ACTION
    • Trigger: Ej stöd med åtgärd för resursslag
    • Message: Att byta plan för användningsbaserade prenumerationer stöds inte
  • UNSUPPORTED_BILLING_CURRENCY
    • Trigger: Prenumerationer begränsade till USD
    • Message: Faktureringsvaluta som inte är USD stöds inte för prenumerationer
  • UNSUPPORTED_COUNTRY
    • Trigger: Geografiskt område stöds ännu inte
    • Message: Landet stöds för närvarande inte
  • UNSUPPORTED_CURRENCY
    • Trigger: Produkt- eller tilläggsvaluta ogiltig
    • Message: Valutan stöds inte för närvarande / 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 billing_currency / Valutan stöds inte / Oväntad valuta för indiska kortprenumerationer
  • UNSUPPORTED_DISCOUNT_TYPE
    • Trigger: Fast-beloppsrabatter etc. inte live ännu
    • Message: Endast procentbaserade rabattkoder stöds för tillfället
  • UNSUPPORTED_PAYMENT_CURRENCY
    • Trigger: Betalningsvaluta blockerad för koppling
    • Message: INR-transaktion stöds inte för denna transaktion
  • UNSUPPORTED_TAX_CATEGORY
    • Trigger: Skattekategoristräng ej 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 nollvalutabelopp

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.