Panoramica
L’API di Dodo Payments utilizza codici di stato HTTP standard e codici di errore personalizzati per indicare il successo o il fallimento delle richieste API. Quando si verifica un errore, l’API restituisce un codice di stato HTTP appropriato e una risposta JSON contenente informazioni dettagliate sull’errore. Ogni risposta di errore include:- Un codice di stato HTTP che indica la categoria generale dell’errore
- Un codice di errore specifico che identifica la natura esatta dell’errore
- Un messaggio di errore leggibile dall’uomo che spiega cosa è andato storto
- Dettagli aggiuntivi sull’errore quando applicabile
- Risolvere problemi di integrazione
- Implementare una corretta gestione degli errori nella tua applicazione
- Fornire feedback significativi agli utenti finali
- Mantenere un sistema di elaborazione dei pagamenti robusto
Codici di Errore API Standard
| Codice di errore | Stato HTTP | Descrizione |
|---|---|---|
| 400 | Richiesta non valida | La richiesta era malformata o conteneva parametri non validi |
| 401 | Non autorizzato | L’autenticazione è fallita o la chiave API non è valida |
| 403 | Vietato | La chiave API non ha il permesso di accedere alla risorsa richiesta |
| 404 | Non trovato | La risorsa richiesta non esiste |
| 405 | Metodo non consentito | Il metodo HTTP non è supportato per questo endpoint |
| 409 | Conflitto | La richiesta è in conflitto con lo stato attuale della risorsa |
| 422 | Entità non elaborabile | La richiesta era ben formata ma conteneva errori semantici |
| 429 | Troppe richieste | Limite di frequenza superato |
| 500 | Errore interno del server | Si è verificato un errore imprevisto sui nostri server |
| 502 | Bad Gateway | Il server ha ricevuto una risposta non valida da un server a monte |
| 503 | Servizio non disponibile | Il servizio è temporaneamente non disponibile |
| 504 | Timeout del gateway | Il server ha superato il tempo di attesa per una risposta a monte |
Formato della Risposta di Errore
Quando si verifica un errore, l’API restituisce una risposta JSON con la seguente struttura:Riferimento ai Codici di Errore
-
ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT- Trigger: Attivazioni della chiave di licenza: nuovo limite < conteggio delle istanze esistenti
- Message: Il nuovo limite di attivazione non può essere inferiore al conteggio delle istanze attuali
-
ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: Tentativo di aggiungere addon a sottoscrizioni con fatturazione basata sull’uso
- Message: Gli addon nelle sottoscrizioni non sono supportati per la fatturazione basata sull’uso
-
ADDONS_NOT_ALLOWED_FOR_ON_DEMAND- Trigger: Tentativo di aggiungere addon a sottoscrizioni on-demand
- Message: Gli addon non sono consentiti per le sottoscrizioni on-demand
-
BRAND_MISMATCH- Trigger: Gli articoli del carrello appartengono a marchi diversi
- Message: Tutti gli articoli nel carrello dei prodotti devono appartenere allo stesso marchio
-
BRAND_NOT_ENABLED- Trigger: Il marchio è disabilitato o non attivo
- Message: Il marchio fornito non è abilitato
-
BRAND_SUBMISSION_NOT_ENABLED- Trigger: Funzione di reinvio della verifica del marchio non abilitata
- Message: Il reinvio della verifica del marchio non è abilitato
-
CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: Tentativo di addebitare una sottoscrizione programmata per la cancellazione
- Message: Sottoscrizione programmata per la cancellazione
-
CHECKOUT_SESSION_CONSUMED- Trigger: La sessione di checkout ha già generato un pagamento
- Message: La sessione di checkout è già stata consumata
-
DISCOUNT_CODE_ALREADY_EXISTS- Trigger: Creazione di un codice sconto duplicato
- Message: Il codice sconto esiste già
-
DISCOUNT_CODE_EXPIRED- Trigger: Il codice sconto è scaduto il
expires_at - Message: Il codice sconto è scaduto
- Trigger: Il codice sconto è scaduto il
-
DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED- Trigger: Codice sconto riutilizzato dopo che il
usage_limitè stato raggiunto - Message: Il limite di utilizzo non può essere inferiore a times_used / Il codice sconto ha raggiunto il limite di utilizzo
- Trigger: Codice sconto riutilizzato dopo che il
-
DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND- Trigger: Codice applicato a sottoscrizione on-demand
- Message: Il coupon sconto non è disponibile per le sottoscrizioni on-demand
-
DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT- Trigger: Codice applicato a prodotto/i non correlati
- Message: Il coupon sconto non è disponibile per questo prodotto
-
DUPLICATE_LINE_ITEMS_IN_REQUEST- Trigger: Lo stesso
item_idappare due volte initems[] - Message: Sono stati specificati item_ids duplicati nell’array degli articoli
- Trigger: Lo stesso
-
DUPLICATE_METER_IDS_IN_REQUEST- Trigger: Lo stesso ID del misuratore appare più volte nella richiesta
- Message: Non sono consentiti ID del misuratore duplicati
-
EXCHANGE_RATE_NOT_FOUND- Trigger: Nessun tasso FX per la coppia di valute
from → to - Message: Tasso di cambio non trovato per convertire da Valuta a Valuta
- Trigger: Nessun tasso FX per la coppia di valute
-
EXISTING_REFUND_REQUEST_PROCESSING- Trigger: Richiesta di rimborso precedente ancora in fase di elaborazione
- Message: Una richiesta di rimborso con stato “In attesa” è ancora in fase di elaborazione
-
INACTIVE_LICENSE_KEY- Trigger: Stato della chiave ≠
ACTIVE - Message: La chiave di licenza non è attiva
- Trigger: Stato della chiave ≠
-
INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED- Trigger: Modifica del piano su sottoscrizione inattiva
- Message: Cambiare piano non è supportato per sottoscrizioni inattive
-
INSUFFICIENT_WALLET_FUNDS- Trigger: Saldo del portafoglio < importo di addebito
- Message: Fondi insufficienti nel portafoglio
-
INTEGER_CONVERSION_FAILURE- Trigger: Qualsiasi conversione intera ↔ stringa/decimale che fallisce lato server
- Message: Errore di conversione intera
-
INTERNAL_SERVER_ERROR- Trigger: Eccezioni non catturate; dovresti registrare i dettagli lato server
- Message: Nessun messaggio pubblico (generico 500)
-
INVALID_DISCOUNT_CODE- Trigger: Il codice non esiste / non applicabile
- Message: Codice sconto non valido / Il codice sconto non può essere applicato a nessun prodotto nel carrello
-
INVALID_PERCENTAGE- Trigger: Importo percentuale > 100% (o 10.000 punti base)
- Message: L’importo percentuale non può essere superiore a 10000 / L’importo del codice sconto non può essere superiore al 100%
-
INVALID_QUANTITY- Trigger: Quantità non valida specificata per la fatturazione basata sull’uso
- Message: Solo 1 quantità consentita nei prodotti a prezzo basato sull’uso
-
INVALID_QUERY_PARAMS- Trigger: Parametri di query mutuamente esclusivi / malformati
- Message: I parametri di query devono contenere solo time_frame o (start, end)
-
INVALID_REQUEST_BODY- Trigger: JSON malformato o violazione dello schema
- Message: Il corpo della tua richiesta non è valido. Controlla le intestazioni della richiesta e l’oggetto.
-
INVALID_REQUEST_PARAMETERS- Trigger: Semantica errata (ad es. data nel passato)
- Message: Impossibile cambiare next_billing_date a un tempo passato
-
INVALID_SUGGESTED_PRICE- Trigger: Prezzo PWYW < prezzo minimo consentito
- Message: Il prezzo suggerito non può essere inferiore al prezzo minimo. In caso di paga quanto vuoi, il prezzo è considerato come importo minimo accettato
-
INVALID_TAX_ID- Trigger: Validazione fallita di VAT/GST/TIN
- Message: L’ID fiscale non è valido
-
LICENSE_KEY_LIMIT_REACHED- Trigger: Attivazioni = limite
- Message: Limite di attivazione della chiave di licenza raggiunto
-
LICENSE_KEY_NOT_FOUND- Trigger: ID dell’istanza o ID della chiave non valido
- Message: L’istanza della chiave di licenza non è stata trovata o non appartiene a questa chiave di licenza
-
LINE_ITEM_FULLY_REFUNDED- Trigger: Tentativo di rimborsare un articolo già completamente rimborsato
- Message: L’articolo è stato completamente rimborsato e non può essere ulteriormente rimborsato.
-
LINE_ITEM_NOT_FOUND- Trigger: ID dell’articolo non parte del pagamento di riferimento
- Message: L’articolo non è stato trovato nel pagamento
-
LINE_ITEM_PRORATED- Trigger: Tentativo di rimborso o aggiornamento su una linea prorata
- Message: L’articolo non può essere rimborsato perché è prorata
-
LINE_ITEM_REFUND_AMOUNT_TOO_HIGH- Trigger: Importo del rimborso > importo pagato (tasse incl.)
- Message: L’importo richiesto per il rimborso dell’articolo incluso le tasse è che supera l’importo pagato
-
LINE_ITEM_REFUND_AMOUNT_TOO_LOW- Trigger: Importo del rimborso al di sotto della soglia minima
- Message: L’importo richiesto per il rimborso dell’articolo è che è troppo basso
-
MAXIMUM_KEYS_REACHED- Trigger: Metadata / campi personalizzati superati 50 coppie
- Message: Supera 50 coppie chiave-valore
-
MERCHANT_NOT_LIVE- Trigger: L’attività è ancora in modalità test/sandbox
- Message: Il commerciante non è attivo
-
METER_IS_DELETED- Trigger: Tentativo di utilizzare un misuratore eliminato
- Message: Il misuratore è già stato eliminato
-
MISSING_ADDON_IDS- Trigger:
addon_idlista vuota o ID sconosciuti - Message: Uno o più ID prodotto non esistono:
- Trigger:
-
MISSING_METER_IDS- Trigger: Lista ID del misuratore vuota o contiene ID non validi
- Message: Uno o più ID del misuratore non esistono:
-
MISSING_PRODUCT_INFORMATION- Trigger: Il prodotto esiste ma manca informazioni obbligatorie
- Message: Il prodotto esiste ma altre informazioni obbligatorie sono mancanti o non valide
-
NEGATIVE_BALANCE_ADJUSTMENT- Trigger: Tentativo di rendere negativo il saldo del portafoglio
- Message: Non è consentito rendere negativo il saldo del portafoglio
-
NO_ELIGIBLE_PAYMENT_METHODS- Trigger: Dopo il filtraggio, non rimane nulla
- Message: Nessun metodo di pagamento idoneo trovato
-
NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS- Trigger: Tentativo di impostare la scadenza su chiave basata su sottoscrizione
- Message: Non è possibile impostare la data di scadenza per la chiave di licenza basata su sottoscrizione
-
NOT_FOUND- Trigger: 404 generico per qualsiasi risorsa mancante
- Message: Elemento non trovato (o più specifico)
-
ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED- Trigger: Cambio piano non consentito per on-demand
- Message: Cambiare piano non è supportato per le sottoscrizioni on-demand
-
ON_DEMAND_SUBSCRIPTIONS_NOT_ENABLED- Trigger: L’attività ha il flag di funzionalità disattivato
- Message: Le sottoscrizioni on-demand non sono abilitate per questa attività
-
ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: Tentativo di utilizzare on-demand con fatturazione basata sull’uso
- Message: Le sottoscrizioni on-demand non sono supportate per la fatturazione basata sull’uso
-
PAY_AS_YOU_WANT_AMOUNT_REQUIRED- Trigger: Prezzo mancante per prodotto PWYW
- Message: L’importo è obbligatorio per il prodotto paga quanto vuoi
-
PAYMENT_ALREADY_REFUNDED- Trigger: Rimborso duplicato
- Message: Questo pagamento è già stato rimborsato
-
PAYMENT_HAS_BEEN_REFUNDED- Trigger: Il pagamento è stato completamente rimborsato
- Message: L’ID del pagamento è stato completamente rimborsato.
-
PAYMENT_NOT_SUCCEEDED- Trigger: Tentativo di rimborsare/processare un pagamento non riuscito
- Message: Il pagamento fornito non ha avuto successo
-
PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: Modifica del piano tentata su sottoscrizione programmata per la cancellazione
- Message: Sottoscrizione programmata per la cancellazione
-
PREVIOUS_PAYMENT_PENDING- Trigger: Tentativo di creare un addebito mentre il precedente è in uno stato non terminale
- Message: Impossibile creare un nuovo addebito poiché il pagamento precedente non è ancora riuscito
-
PRODUCT_CART_EMPTY- Trigger: Carrello dei prodotti vuoto inviato
- Message: product_cart è vuoto
-
PRODUCT_IS_DELETED- Trigger: Prodotto eliminato soft
- Message: Nessun messaggio
-
REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT- Trigger: Importo totale del rimborso aggregato > importo pagato
- Message: L’importo del rimborso calcolato è maggiore dell’importo pagato
-
REFUND_WINDOW_EXPIRED- Trigger: Fuori dalla finestra di rimborso consentita
- Message: I rimborsi non possono essere avviati giorni dopo la creazione del pagamento. Contattare support@dodopayments.com.
-
REQUEST_AMOUNT_BELOW_MINIMUM- Trigger: Importo < minimo prodotto
- Message: L’importo non può essere inferiore all’importo minimo specificato per il prodotto
-
SUBSCRIPTION_EXPIRED- Trigger: Fatturazione oltre
ends_at - Message: Sottoscrizione scaduta, non è possibile creare nuovi addebiti
- Trigger: Fatturazione oltre
-
SUBSCRIPTION_INACTIVE- Trigger: Stato ≠
ACTIVE - Message: La sottoscrizione non è attiva
- Trigger: Stato ≠
-
SUBSCRIPTION_NOT_ON_DEMAND- Trigger: Atteso on-demand ma ottenuto intervallo fisso
- Message: La sottoscrizione non è già on-demand
-
SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED- Trigger: I tentativi di pagamento della sottoscrizione hanno superato il numero massimo di tentativi
- Message: Limite massimo di tentativi di 10 superato per questa sottoscrizione
-
TOO_MANY_REQUESTS- Trigger: Limite di velocità 429
- Message: Nessun messaggio
-
TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT- Trigger: Totale del carrello combinato < minimo del gateway
- Message: È richiesto un importo minimo di per elaborare il pagamento
-
UNABLE_TO_EDIT_PRIMARY_BRAND- Trigger: Tentativo di aggiornare il marchio principale tramite API regolare
- Message: Il marchio principale non può essere aggiornato tramite questo endpoint API.
-
UNAUTHORIZED- Trigger: Nessuna chiave API o token non valido / ambito
- Message: Non sei autorizzato a eseguire questa azione
-
UNSUPPORTED_ACTION- Trigger: Azione non supportata per il tipo di risorsa
- Message: Cambiare piano per sottoscrizioni basate sull’uso non è supportato
-
UNSUPPORTED_BILLING_CURRENCY- Trigger: Sottoscrizioni limitate a USD
- Message: La valuta di fatturazione non USD non è supportata per le sottoscrizioni
-
UNSUPPORTED_COUNTRY- Trigger: Geo non ancora supportato
- Message: Il paese attualmente non è supportato
-
UNSUPPORTED_CURRENCY- Trigger: Valuta del prodotto o addon non valida
- Message: La valuta non è attualmente supportata / Solo prodotti USD e INR supportati attualmente / Solo USD e INR supportati per il prezzo dell’addon / Puoi richiedere solo USD o INR per la valuta di fatturazione / Valuta non supportata / Valuta inaspettata per le sottoscrizioni con carta indiana
-
UNSUPPORTED_DISCOUNT_TYPE- Trigger: Sconti a importo fisso, ecc., non ancora attivi
- Message: Solo i codici sconto percentuali sono supportati per ora
-
UNSUPPORTED_PAYMENT_CURRENCY- Trigger: Valuta di pagamento bloccata per il connettore
- Message: La transazione INR non è supportata per questa transazione
-
UNSUPPORTED_TAX_CATEGORY- Trigger: Stringa della categoria fiscale non nell’enum
- Message: Categoria attualmente non supportata
-
UNSUCCESSFUL_PAYMENT_ID- Trigger: L’ID del pagamento fa riferimento a un pagamento non riuscito
- Message: L’ID del pagamento ha uno stato non riuscito.
-
ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED- Trigger: Tentativo di rimborsare un pagamento di importo zero
- Message: Impossibile rimborsare un pagamento con importo di valuta zero
Migliori Pratiche
- Gestisci sempre gli errori in modo elegante nella tua applicazione
- Implementa una corretta registrazione degli errori
- Usa messaggi di errore appropriati per gli utenti finali
- Implementa la logica di ripetizione per errori transitori
- Contatta il supporto per problemi irrisolti