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
Questi sono errori di API e logica aziendale. Per i motivi di rifiuto della carta restituiti su un pagamento non riuscito (come
INSUFFICIENT_FUNDS o CARD_DECLINED), consulta invece il riferimento Fallimenti delle Transazioni.Codici di Errore API Standard
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
I codici di errore riportati di seguito sono raggruppati per area API a cui si riferiscono. Ogni voce elenca la condizione che lo attiva e il messaggio che l’API restituisce.Autenticazione & Account
-
UNAUTHORIZED- Trigger: Nessuna chiave API o token / ambito non valido
- Messaggio: Non sei autorizzato a eseguire questa azione
-
MERCHANT_NOT_LIVE- Trigger: Attività ancora in modalità test/sandbox
- Messaggio: Il commerciante non è in modalità live
Pagamenti & Checkout
-
CHECKOUT_SESSION_CONSUMED- Trigger: La sessione di checkout ha già generato un pagamento
- Messaggio: La sessione di checkout è già stata consumata
-
NO_ELIGIBLE_PAYMENT_METHODS- Trigger: Dopo il filtraggio, niente resta
- Messaggio: Nessun metodo di pagamento idoneo trovato
-
PAYMENT_NOT_SUCCEEDED- Trigger: Tentativo di rimborso/elaborazione di pagamento non riuscito
- Messaggio: Il pagamento fornito non è riuscito
-
PREVIOUS_PAYMENT_PENDING- Trigger: Tentativo di creare un addebito mentre il precedente è in stato non terminale
- Messaggio: Impossibile creare un nuovo addebito poiché il pagamento precedente non è ancora riuscito
-
UNSUCCESSFUL_PAYMENT_ID- Trigger: ID pagamento riferisce a un pagamento non riuscito
- Messaggio: L’ID pagamento ha uno stato non riuscito.
Connettori & BYOP
Questi errori riguardano i connettori di pagamento posseduti dal commerciante (Porta il Tuo Processore).-
BYOP_CONNECTOR_DISABLED- Trigger: Aggiornamento di un metodo di pagamento su un abbonamento instradato tramite un connettore BYOP disabilitato
- Messaggio: L’abbonamento è instradato tramite il connettore proprio del commerciante (BYOP) attualmente disabilitato
-
BYOP_CUSTOM_INVOICE_ADDRESS_MISSING- Trigger: Un pagamento instradato dal commerciante (BYOP) manca dell’indirizzo fattura personalizzato richiesto
- Messaggio: Indirizzo fattura personalizzato BYOP richiesto quando un pagamento è instradato tramite il connettore del commerciante
-
CONNECTOR_LABEL_ALREADY_EXISTS- Trigger: Creazione di un connettore con un’etichetta già esistente
- Messaggio: Esiste già un connettore con questa etichetta. Si prega di scegliere un’etichetta diversa.
Rimborsi
-
EXISTING_REFUND_REQUEST_PROCESSING- Trigger: La precedente richiesta di rimborso è ancora in elaborazione
- Message: Una richiesta di rimborso con stato “Pending” è ancora in elaborazione
-
LINE_ITEM_FULLY_REFUNDED- Trigger: Tentativo di rimborso di un articolo già rimborsato completamente
- Messaggio: Voce di fila è stata completamente rimborsata non può essere rimborsata ulteriormente.
-
LINE_ITEM_NOT_FOUND- Trigger: ID articolo non fa parte del pagamento di riferimento
- Messaggio: Voce di fila non trovata nel pagamento
-
LINE_ITEM_PRORATED- Trigger: Tentativo di rimborso o aggiornamento su una linea prorata
- Messaggio: Voce di fila non può essere rimborsata perché è prorata
-
LINE_ITEM_REFUND_AMOUNT_TOO_HIGH- Trigger: Importo del rimborso > importo pagato (tasse incluse)
- Messaggio: La richiesta di rimborso della voce di fila inclusa di tasse è che è oltre l’importo pagato
-
LINE_ITEM_REFUND_AMOUNT_TOO_LOW- Trigger: Importo del rimborso sotto la soglia minima
- Messaggio: La richiesta di rimborso della voce di fila è che è troppo bassa
-
NOTHING_TO_REFUND- Trigger: Nessun importo rimborsabile rimasto; tutte le voci di fila positive già completamente rimborsate
- Messaggio: Nessun importo rimborsabile rimasto. Tutte le voci di fila positive sono state completamente rimborsate.
-
PARTIAL_REFUND_NOT_ALLOWED- Trigger: Tentativo di rimborso parziale su un metodo di pagamento che supporta solo rimborsi completi
- Messaggio: I rimborsi parziali non sono consentiti per questo metodo di pagamento
-
PAYMENT_ALREADY_REFUNDED- Trigger: Rimborso duplicato
- Messaggio: Questo pagamento è già stato rimborsato
-
PAYMENT_HAS_BEEN_REFUNDED- Trigger: Pagamento è stato completamente rimborsato
- Messaggio: L’ID pagamento è stato completamente rimborsato.
-
REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT- Trigger: Importo aggregato del rimborso > importo pagato
- Messaggio: L’importo calcolato del rimborso è maggiore dell’importo pagato
-
REFUND_WINDOW_EXPIRED- Trigger: Fuori dalla finestra temporale consentita per il rimborso
- Messaggio: I rimborsi non possono essere iniziati giorni dopo la creazione del pagamento. Contatta support@dodopayments.com.
-
ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED- Trigger: Tentativo di rimborso di un pagamento di importo zero
- Messaggio: Impossibile rimborsare un pagamento con importo valuta zero
Abbonamenti & Add-on
-
ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: Tentativo di aggiungere add-on agli abbonamenti basati sull’uso
- Messaggio: Gli add-on negli abbonamenti non sono supportati per la fatturazione basata sull’uso
-
ADDONS_NOT_ALLOWED_FOR_ON_DEMAND- Trigger: Tentativo di aggiungere add-on agli abbonamenti su richiesta
- Messaggio: Gli add-on non sono consentiti per gli abbonamenti su richiesta
-
CANCEL_SCHEDULED_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Trigger: Il portale clienti tenta di annullare un cambio piano programmato mentre l’azienda ha disabilitato tale azione
- Messaggio: L’annullamento del cambio piano programmato è disabilitato per il portale clienti.
-
CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: Tentativo di addebitare un abbonamento programmato per l’annullamento
- Messaggio: Abbonamento programmato per l’annullamento
-
CUSTOMER_HAS_EXISTING_SUBSCRIPTION- Trigger: Creazione di un abbonamento per un cliente che ne ha già uno, quando più abbonamenti per cliente non sono consentiti
- Messaggio: Il cliente ha già un abbonamento esistente. Per consentire più abbonamenti per cliente, modifica le impostazioni aziendali
-
DO_NOT_BILL_NOT_ALLOWED_IN_CUSTOMER_PORTAL- Trigger: Modalità di proratazione
do_not_billutilizzata in un cambio piano del portale clienti - Messaggio: La modalità di proratazione do_not_bill non è consentita nel portale clienti
- Trigger: Modalità di proratazione
-
DUPLICATE_ADDON_IDS_IN_REQUEST- Trigger: Lo stesso
addon_idappare più di una volta nella richiesta - Messaggio: ID degli add-on duplicati non sono consentiti
- Trigger: Lo stesso
-
INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED- Trigger: Cambio piano su abbonamento inattivo
- Messaggio: Cambiare piani non è supportato per gli abbonamenti inattivi
-
INVALID_PRORATION_MODE_WITH_NEXT_BILLING_DATE- Trigger: Una modalità di proratazione diversa da
full_immediatelyutilizzata coneffective_at: next_billing_date - Messaggio: Solo la modalità di proratazione full_immediately è consentita con effective_at: next_billing_date
- Trigger: Una modalità di proratazione diversa da
-
MISSING_ADDON_IDS- Trigger: Lista di
addon_idvuota o ID sconosciuti - Messaggio: Uno o più ID prodotto non esistono:
- Trigger: Lista di
-
ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED- Trigger: Cambio piano non consentito per su richiesta
- Messaggio: Cambiare piani non è supportato per gli abbonamenti su richiesta
-
ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: Tentativo di utilizzare con fatturazione basata sull’uso
- Messaggio: Gli abbonamenti su richiesta non sono supportati per la fatturazione basata sull’uso
-
ONE_TIME_PRODUCTS_NOT_ALLOWED_FOR_ON_DEMAND- Trigger: Prodotto una tantum aggiunto a un abbonamento su richiesta
- Messaggio: I prodotti una tantum non sono consentiti per gli abbonamenti su richiesta
-
PENDING_PLAN_CHANGE_EXISTS- Trigger: Nuovo cambio piano richiesto mentre uno precedente è ancora in attesa di pagamento
- Messaggio: Esiste già un cambio piano pendente per questo abbonamento. Si prega di attendere il completamento del pagamento corrente.
-
PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Trigger: Cambio piano tramite il Portale Clienti mentre l’azienda lo ha disabilitato
- Messaggio: Il cambio del piano di abbonamento per il portale clienti è disabilitato.
-
PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: Tentativo di cambio piano su abbonamento programmato per l’annullamento
- Messaggio: Abbonamento programmato per l’annullamento
-
SCHEDULE_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Trigger: Programmazione di un cambio piano tramite il Portale Clienti mentre l’azienda lo ha disabilitato
- Messaggio: La programmazione dei cambiamenti di piano è disabilitata per questa azienda.
-
SCHEDULED_PLAN_CHANGE_EXISTS- Trigger: Creazione di un cambio piano programmato quando uno è già esistente
- Messaggio: Esiste già un cambio piano programmato per questo abbonamento. Si prega di annullare l’esistente cambiamento programmato prima di crearne uno nuovo.
-
SCHEDULED_PLAN_CHANGE_NOT_FOUND- Trigger: Riferimento o cancellazione di un cambio piano programmato che non esiste
- Messaggio: Nessun cambio piano programmato trovato per questo abbonamento.
-
SUBSCRIPTION_EXPIRED- Trigger: Fatturazione oltre
ends_at - Messaggio: Abbonamento scaduto impossibile creare nuovi addebiti
- Trigger: Fatturazione oltre
-
SUBSCRIPTION_INACTIVE- Trigger: Stato ≠
ACTIVE - Messaggio: Abbonamento non attivo
- Trigger: Stato ≠
-
SUBSCRIPTION_NOT_ON_DEMAND- Trigger: Previsto su richiesta ma ottenuto intervallo fisso
- Messaggio: L’abbonamento non è già su richiesta
-
SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED- Trigger: Tentativi di pagamento d’abbonamento ripetuti hanno superato il massimo numero di tentativi
- Messaggio: Limite massimo di 10 tentativi superato per questo abbonamento
Prodotti, Carrello & Marchi
-
BRAND_MISMATCH- Trigger: Gli articoli del carrello appartengono a marchi diversi
- Messaggio: Tutti gli articoli nel carrello del prodotto devono appartenere allo stesso marchio
-
BRAND_NOT_ENABLED- Trigger: Marchio è disabilitato o non attivo
- Messaggio: Il marchio fornito non è abilitato
-
BRAND_SUBMISSION_NOT_ENABLED- Trigger: Funzione di reinvio della verifica del marchio non abilitata
- Messaggio: Il reinvio della verifica del marchio non è abilitato
-
FILE_IN_USE- Trigger: Eliminazione di un file di prodotto digitale ancora referenziato da assegnazioni attive
- Message: Il file digitale è referenziato da assegnazioni attive
-
INVALID_SUGGESTED_PRICE- Trigger: Prezzo PWYW < prezzo minimo consentito
- Messaggio: Il prezzo suggerito non può essere inferiore al prezzo minimo. In caso di paga quello che vuoi, il prezzo è considerato l’importo minimo accettato
-
LOCALIZED_PRICE_ALREADY_EXISTS- Trigger: Esiste già un prezzo localizzato per questo prodotto e paese/valuta
- Messaggio: Esiste già un prezzo localizzato per questo prodotto e paese/valuta
-
LOCALIZED_PRICE_DUPLICATES_BASE- Trigger: Il prezzo localizzato duplica la valuta/paese base del prodotto
- Messaggio: Il prezzo localizzato duplica la valuta/paese base del prodotto
-
LOCALIZED_PRICE_SHAPE_MISMATCH- Trigger: La forma del prezzo localizzato non corrisponde all’
pricing_modedel prodotto - Messaggio: La forma del prezzo localizzato non corrisponde al pricing_mode del prodotto
- Trigger: La forma del prezzo localizzato non corrisponde all’
-
MISSING_PRODUCT_INFORMATION- Trigger: Il prodotto esiste ma manca info obbligatorie
- Messaggio: Prodotto esiste ma altre informazioni obbligatorie mancano o sono non valide
-
PAY_AS_YOU_WANT_AMOUNT_REQUIRED- Trigger: Prezzo mancante per prodotto PWYW
- Messaggio: L’importo è obbligatorio per il prodotto paga come vuoi
-
PRODUCT_CART_EMTPY- Trigger: Carrello del prodotto vuoto inviato
- Messaggio: il product_cart è vuoto (il codice di errore è intenzionalmente scritto
EMTPYper corrispondere al valore esatto che l’API restituisce)
-
PRODUCT_COLLECTION_IS_DELETED- Trigger: Operazione su una collezione di prodotti che è stata eliminata
- Messaggio: Nessun messaggio
-
PRODUCT_COLLECTION_MUST_HAVE_PRODUCTS- Trigger: Rimozione dell’ultimo prodotto (o ultimo gruppo con prodotti) da una collezione
- Messaggio: Impossibile eliminare l’ultimo prodotto in una collezione. Archivia invece la collezione.
-
PRODUCT_IS_DELETED- Trigger: Prodotto cancellato morbido
- Messaggio: Nessun messaggio
-
PRODUCT_PRICING_MODE_REQUIRED- Trigger: Aggiunta di prezzi localizzati prima che l’
pricing_modedel prodotto sia impostato - Messaggio: Il pricing_mode del prodotto deve essere impostato prima di aggiungere prezzi localizzati
- Trigger: Aggiunta di prezzi localizzati prima che l’
-
SLUG_ALREADY_TAKEN- Trigger: Lo slug del prodotto richiesto / URL corto è già in uso
- Messaggio: Lo slug è già preso
-
UNABLE_TO_EDIT_PRIMARY_BRAND- Trigger: Tentativo di aggiornare il marchio primario tramite API regolare
- Messaggio: Il marchio primario non può essere aggiornato tramite questo endpoint API.
Sconti
-
DISCOUNT_ALREADY_USED_ON_SUBSCRIPTION- Trigger: Riapplicazione di uno sconto già utilizzato su questo abbonamento
- Messaggio: Questo sconto è già stato utilizzato su questo abbonamento
-
DISCOUNT_CODE_ALREADY_EXISTS- Trigger: Creazione di un codice sconto duplicato
- Messaggio: Il Codice Sconto esiste già
-
DISCOUNT_CODE_EXPIRED- Trigger: Codice sconto oltre la sua
expires_atdata - Messaggio: Codice sconto scaduto
- Trigger: Codice sconto oltre la sua
-
DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED- Trigger: Sconto riutilizzato dopo il raggiungimento di
usage_limit - Message: Il limite di utilizzo non può essere inferiore a times_used / Il codice sconto ha raggiunto il limite di utilizzo
- Note: Terminale: il codice è esaurito. Non riprovare.
- Trigger: Sconto riutilizzato dopo il raggiungimento di
-
DISCOUNT_CONCURRENT_REDEMPTION- Trigger: Un’altra riscossione dello stesso codice ha mantenuto troppo a lungo il lock della riga del limite di utilizzo (HTTP 503)
- Message: Lo sconto è in fase di riscossione contemporaneamente; riprova
- Note: Temporaneo. Il codice potrebbe avere ancora disponibilità, quindi è sicuro riprovare la richiesta. Non mostrare questo errore al cliente come “codice esaurito”.
-
DISCOUNT_CURRENCY_OPTION_INVALID- Trigger:
currency_optionsnon valido durante la creazione o l’aggiornamento - Message: Uno sconto fisso richiede almeno un’opzione di valuta con un valore predefinito risolvibile / Non sono consentite opzioni di valuta duplicate / È possibile contrassegnare come predefinita una sola opzione di valuta
- Trigger:
-
DISCOUNT_CUSTOMER_NOT_ELIGIBLE- Trigger: Il cliente non soddisfa
customer_eligibilitydel codice (first_time,existingoppure non è presente nell’elenco di autorizzazione del codicespecific) - Message: Il cliente non è idoneo per questo codice sconto
- Trigger: Il cliente non soddisfa
-
DISCOUNT_MINIMUM_SUBTOTAL_NOT_MET- Trigger: Il subtotale del carrello è inferiore a
minimum_subtotalconfigurato per la valuta del checkout - Message: Il subtotale del carrello è inferiore al subtotale minimo richiesto dallo sconto
- Trigger: Il subtotale del carrello è inferiore a
-
DISCOUNT_NOT_YET_ACTIVE- Trigger: Codice utilizzato prima della relativa data
starts_at - Message: Il codice sconto non è ancora attivo (starts_at è nel futuro)
- Trigger: Codice utilizzato prima della relativa data
-
DISCOUNT_PER_CUSTOMER_USAGE_LIMIT_EXCEEDED- Trigger: Il cliente ha già riscattato il codice
per_customer_usage_limitvolte - Message: Limite di utilizzo per cliente superato per questo codice sconto
- Trigger: Il cliente ha già riscattato il codice
-
DISCOUNT_NOT_APPLICABLE_TO_NEW_PRODUCT- Trigger: Cambio di piano verso un prodotto a cui lo sconto esistente non si applica
- Message: Lo sconto non è applicabile al prodotto del nuovo piano
-
DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND- Trigger: Codice applicato a un abbonamento on-demand
- Message: Il coupon sconto non è disponibile per gli abbonamenti on-demand
-
DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT- Trigger: Codice applicato a prodotti non correlati
- Message: Il coupon sconto non è disponibile per questo prodotto
-
INVALID_DISCOUNT_CODE- Trigger: Il codice non esiste o non è applicabile
- Message: Codice sconto non valido / Il codice sconto non può essere applicato ad alcun prodotto nel carrello
-
INVALID_PERCENTAGE- Trigger: Percentuale > 100% (o 10.000 punti base)
- Message: La percentuale non può essere superiore a 10000 / L’importo del codice sconto non può essere superiore al 100%
-
UNSUPPORTED_DISCOUNT_TYPE- Trigger: Tipo di sconto non supportato.
percentageeflatsono entrambi supportati; gli sconti con importo per unità non lo sono. - Message: Sono supportati solo i codici sconto percentuali e fissi
- Trigger: Tipo di sconto non supportato.
Chiavi di licenza
-
ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT- Trigger: Attivazioni delle chiavi di licenza: nuovo limite < conteggio delle istanze esistenti
- Message: Il nuovo limite di attivazione non può essere inferiore al conteggio delle istanze correnti
-
INACTIVE_LICENSE_KEY- Trigger: Stato della chiave ≠
ACTIVE - Message: La chiave di licenza non è attiva
- Trigger: Stato della chiave ≠
-
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
-
NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS- Trigger: Tentativo di impostare la scadenza su una chiave basata su abbonamento
- Message: Non è possibile impostare una data di scadenza per una chiave di licenza basata su abbonamento
Fatturazione basata sull’utilizzo e Meter
-
DUPLICATE_METER_IDS_IN_REQUEST- Trigger: Lo stesso ID Meter compare più volte nella richiesta
- Message: Non sono consentiti ID Meter duplicati
-
INVALID_QUANTITY- Trigger: Quantità non valida specificata per la tariffazione basata sull’utilizzo
- Message: È consentita una sola quantità nei prodotti con prezzo basato sull’utilizzo
-
METER_IS_DELETED- Trigger: Tentativo di utilizzare un Meter eliminato
- Message: Il Meter è già stato eliminato
-
MISSING_METER_IDS- Trigger: L’elenco degli ID Meter è vuoto o contiene ID non validi
- Message: Uno o più ID Meter non esistono:
Fatturazione basata sui crediti
-
CREDIT_ENTITLEMENT_IS_DELETED- Trigger: Operazione su un’entitlement di credito che è stata eliminata
- Message: L’entitlement di credito è già stata eliminata
-
CREDIT_ENTITLEMENT_NAME_ALREADY_EXISTS- Trigger: Creazione di un’entitlement di credito con un nome già esistente
- Message: Esiste già un’entitlement di credito con questo nome
-
OVERAGE_LIMIT_EXCEEDED- Trigger: Un utilizzo o una detrazione di credito supererebbe il limite di overage configurato
- Message: Limite di overage superato
Wallet
-
INSUFFICIENT_WALLET_FUNDS- Trigger: Saldo del Wallet < importo dell’addebito
- Message: Fondi insufficienti nel Wallet
-
NEGATIVE_BALANCE_ADJUSTMENT- Trigger: Tentativo di rendere negativo il saldo del Wallet
- Message: Non è consentito rendere negativo il saldo del Wallet
Valuta, imposte e area geografica
-
EXCHANGE_RATE_NOT_FOUND- Trigger: Nessun tasso FX per la coppia di valute
from → to - Message: Tasso di cambio non trovato per la conversione da Currency a Currency
- Trigger: Nessun tasso FX per la coppia di valute
-
INVALID_TAX_ID- Trigger: La validazione di VAT/GST/TIN non è riuscita
- Message: L’ID fiscale non è valido
-
REQUEST_AMOUNT_BELOW_MINIMUM- Trigger: Importo < minimo del prodotto
- Message: L’importo non può essere inferiore all’importo minimo specificato per il prodotto
-
TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT- Trigger: Totale combinato del carrello < minimo del gateway
- Message: È richiesto un importo minimo di per elaborare il pagamento
-
UNSUPPORTED_BILLING_CURRENCY- Trigger: La valuta di fatturazione richiesta non è supportata per questo abbonamento
- Message: La valuta di fatturazione non USD non è supportata per gli abbonamenti
-
UNSUPPORTED_COUNTRY- Trigger: Area geografica non ancora supportata
- Message: Il paese non è attualmente supportato
-
UNSUPPORTED_CURRENCY- Trigger: La valuta del prodotto o dell’addon non è una valuta in cui Dodo Payments può effettuare addebiti. I prezzi di base possono essere impostati in qualsiasi valuta addebitabile; ciò significa solitamente che il codice valuta non è valido o non è ancora supportato.
- Message: La valuta non è attualmente supportata / Attualmente sono supportati solo prodotti in USD e INR / Per il prezzo dell’addon sono supportati solo USD e INR / È possibile richiedere USD o INR per billing_currency / Valuta non supportata / Valuta imprevista per gli abbonamenti con carta indiana
-
UNSUPPORTED_TAX_CATEGORY- Trigger: La stringa della categoria fiscale non è inclusa nell’enum
- Message: La categoria non è attualmente supportata
Validazione e richieste
-
DUPLICATE_LINE_ITEMS_IN_REQUEST- Trigger: Lo stesso
item_idcompare due volte initems[] - Message: item_ids duplicati specificati nell’array items
- Trigger: Lo stesso
-
INVALID_QUERY_PARAMS- Trigger: Parametri di query reciprocamente esclusivi o malformati
- Message: I parametri di query devono contenere solo time_frame oppure (start, end)
-
INVALID_REQUEST_BODY- Trigger: JSON malformato o violazione dello schema
- Message: Il corpo della richiesta non è valido. Controlla gli header della richiesta e l’oggetto.
-
INVALID_REQUEST_PARAMETERS- Trigger: Semantica errata (ad esempio, data nel passato)
- Message: Non è possibile modificare next_billing_date impostandola su un momento passato
-
MAXIMUM_KEYS_REACHED- Trigger: Metadata / custom-fields hanno superato 50 coppie
- Message: Sono state superate 50 coppie chiave-valore
Generale e sistema
-
INTEGER_CONVERSION_FAILURE- Trigger: Qualsiasi conversione da intero a stringa/decimale che non riesca lato server
- Message: Errore di conversione dell’intero
-
INTERNAL_SERVER_ERROR- Trigger: Eccezioni non intercettate; devi registrare i dettagli lato server
- Message: Nessun messaggio pubblico (500 generico)
-
NOT_FOUND- Trigger: 404 generico per qualsiasi risorsa mancante
- Message: Elemento non trovato (o più specifico)
-
TOO_MANY_REQUESTS- Trigger: Limite di frequenza 429
- Message: Nessun messaggio
-
UNSUPPORTED_ACTION- Trigger: Azione non supportata per il tipo di risorsa
- Message: La modifica dei piani per gli abbonamenti basati sull’utilizzo non è supportata
Best practice
- Gestisci sempre gli errori in modo appropriato nella tua applicazione
- Implementa una registrazione corretta degli errori
- Utilizza messaggi di errore appropriati per gli utenti finali
- Implementa una logica di retry per gli errori temporanei
- Contatta il supporto per i problemi irrisolti