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: L’attività è ancora in Test Mode
- Message: L’esercente non è ancora live
-
BUSINESS_ARCHIVED- Trigger: Qualsiasi richiesta rivolta al cliente (checkout, payment link, storefront, Customer Portal o license key) per un’attività che è stata archiviata
- Message: Questa attività è archiviata e non accetta più richieste
Pagamenti e checkout
-
CHECKOUT_SESSION_CONSUMED- Trigger: La sessione di checkout ha già generato un pagamento
- Message: La sessione di checkout è già stata utilizzata
-
NO_ELIGIBLE_PAYMENT_METHODS- Trigger: Dopo il filtraggio, non è rimasto nulla
- Message: Non sono stati trovati metodi di pagamento idonei
-
PAYMENT_NOT_SUCCEEDED- Trigger: Tentativo di rimborsare/elaborare un pagamento non riuscito
- Message: Il pagamento fornito non è andato a buon fine
-
PREVIOUS_PAYMENT_PENDING- Trigger: Tentativo di creare un addebito mentre quello precedente si trova in uno stato non terminale
- Message: Impossibile creare un nuovo addebito perché il pagamento precedente non è ancora andato a buon fine
-
UNSUCCESSFUL_PAYMENT_ID- Trigger: Il Payment ID fa riferimento a un pagamento non riuscito
- Message: Il Payment ID ha uno stato non riuscito.
Connector e BYOP
Questi errori riguardano i connector di pagamento di proprietà del merchant (Bring Your Own Processor).-
BYOP_CONNECTOR_DISABLED- Trigger: Aggiornamento di un metodo di pagamento su una subscription instradata tramite un connector BYOP disabilitato
- Message: La subscription è instradata tramite il connector del merchant (BYOP), attualmente disabilitato
-
BYOP_CUSTOM_INVOICE_ADDRESS_MISSING- Trigger: Un pagamento instradato dal merchant (BYOP) non contiene l’indirizzo di fatturazione personalizzato richiesto
- Message: L’indirizzo di fatturazione personalizzato BYOP è obbligatorio quando un pagamento viene instradato tramite il connector del merchant
-
CONNECTOR_LABEL_ALREADY_EXISTS- Trigger: Creazione di un connector con un’etichetta già esistente
- Message: Esiste già un connector con questa etichetta. Scegli un’etichetta diversa.
Rimborsi
-
EXISTING_REFUND_REQUEST_PROCESSING- Trigger: La richiesta di rimborso precedente è ancora in elaborazione
- Message: Una richiesta di rimborso con stato “Pending” è ancora in elaborazione
-
LINE_ITEM_FULLY_REFUNDED- Trigger: Tentativo di rimborsare una voce già completamente rimborsata
- Message: La voce è stata completamente rimborsata e non può essere rimborsata ulteriormente.
-
LINE_ITEM_NOT_FOUND- Trigger: L’ID dell’elemento non fa parte del pagamento indicato
- Message: Voce non trovata nel pagamento
-
LINE_ITEM_PRORATED- Trigger: Tentativo di rimborso o aggiornamento su una voce soggetta a prorata
- Message: La voce non può essere rimborsata perché è soggetta a prorata
-
LINE_ITEM_REFUND_AMOUNT_TOO_HIGH- Trigger: Importo del rimborso > importo pagato (tasse incluse)
- Message: L’importo del rimborso richiesto per la voce , tasse incluse, è , superiore all’importo pagato
-
LINE_ITEM_REFUND_AMOUNT_TOO_LOW- Trigger: Importo del rimborso inferiore alla soglia minima
- Message: L’importo del rimborso richiesto per la voce è , un importo troppo basso
-
NOTHING_TO_REFUND- Trigger: Non rimane alcun importo rimborsabile; tutte le voci positive sono già state completamente rimborsate
- Message: Non rimane alcun importo rimborsabile. Tutte le voci positive sono state completamente rimborsate.
-
PARTIAL_REFUND_NOT_ALLOWED- Trigger: Tentativo di rimborso parziale su un metodo di pagamento che supporta solo rimborsi completi
- Message: I rimborsi parziali non sono consentiti per questo metodo di pagamento
-
PAYMENT_ALREADY_REFUNDED- Trigger: Rimborso duplicato
- Message: Questo pagamento è già stato rimborsato
-
PAYMENT_HAS_BEEN_REFUNDED- Trigger: Il pagamento è stato completamente rimborsato
- Message: Il Payment ID è stato completamente rimborsato.
-
REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT- Trigger: Importo complessivo dei rimborsi > importo pagato
- Message: L’importo del rimborso calcolato è superiore all’importo pagato
-
REFUND_WINDOW_EXPIRED- Trigger: Al di fuori del periodo di rimborso consentito
- Message: I rimborsi non possono essere avviati dopo giorni dalla creazione del pagamento. Contatta support@dodopayments.com.
-
ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED- Trigger: Tentativo di rimborsare un pagamento di importo zero
- Message: Impossibile rimborsare un pagamento con importo monetario pari a zero
Subscription e add-on
-
ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: Tentativo di aggiungere add-on a subscription con fatturazione basata sull’utilizzo
- Message: Gli add-on nelle subscription non sono supportati per la fatturazione basata sull’utilizzo
-
ADDONS_NOT_ALLOWED_FOR_ON_DEMAND- Trigger: Tentativo di aggiungere add-on a subscription on-demand
- Message: Gli add-on non sono consentiti per le subscription on-demand
-
CANCEL_SCHEDULED_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Trigger: Customer Portal tenta di annullare una modifica di piano pianificata mentre l’attività ha disabilitato questa azione
- Message: L’annullamento della modifica di piano pianificata è disabilitato per il Customer Portal.
-
CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: Tentativo di addebitare una subscription pianificata per l’annullamento
- Message: Subscription pianificata per l’annullamento
-
CUSTOMER_HAS_EXISTING_SUBSCRIPTION- Trigger: Creazione di una subscription per un cliente che ne possiede già una, quando non sono consentite più subscription per cliente
- Message: Il cliente ha una subscription esistente. Per consentire più subscription per cliente, modifica le impostazioni dell’attività
-
DO_NOT_BILL_NOT_ALLOWED_IN_CUSTOMER_PORTAL- Trigger: Modalità di prorata
do_not_billutilizzata in una modifica di piano nel Customer Portal - Message: La modalità di prorata do_not_bill non è consentita nel Customer Portal
- Trigger: Modalità di prorata
-
DUPLICATE_ADDON_IDS_IN_REQUEST- Trigger: Lo stesso
addon_idcompare più di una volta nella richiesta - Message: Gli ID degli add-on duplicati non sono consentiti
- Trigger: Lo stesso
-
INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED- Trigger: Modifica di piano su una subscription inattiva
- Message: La modifica dei piani non è supportata per le subscription inattive
-
INVALID_PRORATION_MODE_WITH_NEXT_BILLING_DATE- Trigger: Una modalità di prorata diversa da
full_immediatelyutilizzata coneffective_at: next_billing_date - Message: Con effective_at: next_billing_date è consentita solo la modalità di prorata full_immediately
- Trigger: Una modalità di prorata diversa da
-
MISSING_ADDON_IDS- Trigger: Elenco
addon_idvuoto o con ID sconosciuti - Message: Uno o più product ID non esistono:
- Trigger: Elenco
-
ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED- Trigger: Sostituzione del piano non consentita per le subscription on-demand
- Message: La modifica dei piani non è supportata per le subscription on-demand
-
ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: Tentativo di utilizzare on-demand con la fatturazione basata sull’utilizzo
- Message: Le subscription On Demand non sono supportate per la fatturazione basata sull’utilizzo
-
ONE_TIME_PRODUCTS_NOT_ALLOWED_FOR_ON_DEMAND- Trigger: Prodotto una tantum aggiunto a una subscription on-demand
- Message: I prodotti una tantum non sono consentiti per le subscription on-demand
-
PENDING_PLAN_CHANGE_EXISTS- Trigger: Richiesta di una nuova modifica di piano mentre una precedente è ancora in attesa di pagamento
- Message: Esiste già una modifica di piano in sospeso per questa subscription. Attendi il completamento del pagamento corrente.
-
PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Trigger: Modifica del piano tramite Customer Portal mentre l’attività l’ha disabilitata
- Message: La modifica del piano della subscription per il Customer Portal è disabilitata.
-
PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: Tentativo di modifica del piano su una subscription pianificata per l’annullamento
- Message: Subscription pianificata per l’annullamento
-
SCHEDULE_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Trigger: Pianificazione di una modifica del piano tramite Customer Portal mentre l’attività l’ha disabilitata
- Message: La pianificazione delle modifiche di piano è disabilitata per questa attività.
-
SCHEDULED_PLAN_CHANGE_EXISTS- Trigger: Creazione di una modifica di piano pianificata quando ne esiste già una
- Message: Esiste già una modifica di piano pianificata per questa subscription. Annulla la modifica pianificata esistente prima di crearne una nuova.
-
SCHEDULED_PLAN_CHANGE_NOT_FOUND- Trigger: Riferimento o annullamento di una modifica di piano pianificata che non esiste
- Message: Nessuna modifica di piano pianificata trovata per questa subscription.
-
SUBSCRIPTION_EXPIRED- Trigger: Fatturazione oltre
expires_at - Message: La subscription è scaduta; non è possibile creare nuovi addebiti
- Trigger: Fatturazione oltre
-
SUBSCRIPTION_INACTIVE- Trigger: Status ≠
active - Message: La subscription non è attiva
- Trigger: Status ≠
-
SUBSCRIPTION_NOT_ON_DEMAND- Trigger: Previsto on-demand, ma ricevuto un intervallo fisso
- Message: La subscription non è più on-demand
-
SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED- Trigger: I tentativi di pagamento della subscription hanno superato il numero massimo di tentativi
- Message: Il limite massimo di 10 tentativi è stato superato per questa subscription
Prodotti, carrello e brand
-
BRAND_ALREADY_ARCHIVED- Trigger: Archiviazione di un brand già archiviato
- Message: Il brand è già archiviato
-
BRAND_ARCHIVED- Trigger: Aggiornamento di un brand archiviato, invio per la verifica o associazione di un nuovo prodotto, raccolta di prodotti o subscription
- Message: Il brand è archiviato e non può essere aggiornato
-
BRAND_ARCHIVE_TARGET_REQUIRED- Trigger: Archiviazione di un brand che contiene ancora prodotti, subscription attive o raccolte di prodotti senza una destinazione
move_products_to - Message: Il brand contiene 12 prodotto/i. Imposta move_products_to su un brand di destinazione per riassegnarli.
- Trigger: Archiviazione di un brand che contiene ancora prodotti, subscription attive o raccolte di prodotti senza una destinazione
-
BRAND_MISMATCH- Trigger: Gli articoli del carrello appartengono a brand diversi
- Message: Tutti gli articoli nel carrello dei prodotti devono appartenere allo stesso brand
-
BRAND_NOT_ENABLED- Trigger: Il brand è disabilitato o non attivo
- Message: Il brand fornito non è abilitato
-
BRAND_SUBMISSION_NOT_ENABLED- Trigger: La funzionalità di reinvio della verifica del brand non è abilitata
- Message: Il reinvio della verifica del brand non è abilitato
-
CANNOT_ARCHIVE_PRIMARY_BRAND- Trigger: Archiviazione del brand principale, il cui brand ID corrisponde al business ID
- Message: Il brand principale non può essere archiviato
-
FILE_IN_USE- Trigger: Eliminazione di un file di prodotto digitale ancora referenziato da concessioni di entitlement attive
- Message: Il file digitale è referenziato da concessioni attive
-
INVALID_BRAND_ARCHIVE_TARGET- Trigger:
move_products_toindica il brand da archiviare, un brand archiviato o un brand di un’altra attività - Message: move_products_to deve essere un brand di questa attività che non sia archiviato
- Trigger:
-
INVALID_SUGGESTED_PRICE- Trigger: Prezzo PWYW < prezzo minimo consentito
- Message: Il prezzo suggerito non può essere inferiore al prezzo minimo. Nel caso di pay what you want, il prezzo è considerato l’importo minimo accettato
-
LOCALIZED_PRICE_ALREADY_EXISTS- Trigger: Esiste già un prezzo localizzato per questo prodotto e paese/valuta
- Message: Esiste già un prezzo localizzato per questo prodotto e paese/valuta
-
LOCALIZED_PRICE_DUPLICATES_BASE- Trigger: Il prezzo localizzato duplica la valuta/il paese di base del prodotto
- Message: Il prezzo localizzato duplica la valuta/il paese di base del prodotto
-
LOCALIZED_PRICE_SHAPE_MISMATCH- Trigger: La struttura del prezzo localizzato non corrisponde a
pricing_modedel prodotto - Message: La struttura del prezzo localizzato non corrisponde a pricing_mode del prodotto
- Trigger: La struttura del prezzo localizzato non corrisponde a
-
MISSING_PRODUCT_INFORMATION- Trigger: Il prodotto esiste, ma mancano informazioni obbligatorie
- Message: Il prodotto esiste, ma altre informazioni obbligatorie mancano o non sono valide
-
PAY_AS_YOU_WANT_AMOUNT_REQUIRED- Trigger: Prezzo mancante per il prodotto PWYW
- Message: L’importo è obbligatorio per un prodotto pay as you want
-
PRODUCT_CART_EMTPY- Trigger: Carrello dei prodotti vuoto inviato
- Message: product_cart è vuoto (il codice errore è scritto intenzionalmente
EMTPYper corrispondere al valore esatto restituito dall’API)
-
PRODUCT_COLLECTION_IS_DELETED- Trigger: Operazione su una raccolta di prodotti che è stata eliminata
- Message: Nessun messaggio
-
PRODUCT_COLLECTION_MUST_HAVE_PRODUCTS- Trigger: Rimozione dell’ultimo prodotto (o dell’ultimo gruppo contenente prodotti) da una raccolta
- Message: Impossibile eliminare l’ultimo prodotto di una raccolta. Archivia invece la raccolta.
-
PRODUCT_IS_DELETED- Trigger: Prodotto eliminato logicamente
- Message: Nessun messaggio
-
PRODUCT_PRICING_MODE_REQUIRED- Trigger: Aggiunta di prezzi localizzati prima che
pricing_modedel prodotto sia impostato - Message: pricing_mode del prodotto deve essere impostato prima di aggiungere prezzi localizzati
- Trigger: Aggiunta di prezzi localizzati prima che
-
SLUG_ALREADY_TAKEN- Trigger: Lo slug / short URL del prodotto richiesto è già in uso
- Message: Lo slug è già utilizzato
-
UNABLE_TO_EDIT_PRIMARY_BRAND- Trigger: Tentativo di aggiornare il brand principale tramite l’API standard
- Message: Il brand principale non può essere aggiornato tramite questo endpoint API.
Sconti
-
DISCOUNT_ALREADY_USED_ON_SUBSCRIPTION- Trigger: Riapplicazione di uno sconto già utilizzato su questa subscription
- Message: Questo sconto è già stato utilizzato su questa subscription
-
DISCOUNT_CODE_ALREADY_EXISTS- Trigger: Creazione di un codice sconto duplicato
- Message: Il codice sconto esiste già
-
DISCOUNT_CODE_EXPIRED- Trigger: Il codice sconto ha superato la data
expires_at - Message: Il codice sconto è scaduto
- Trigger: Il codice sconto ha superato la data
-
DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED- Trigger: Riutilizzo dello sconto 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: Riutilizzo dello sconto dopo il raggiungimento di
-
DISCOUNT_CONCURRENT_REDEMPTION- Trigger: Un’altra applicazione dello stesso codice ha mantenuto troppo a lungo il lock della riga del limite di utilizzo
- Message: Lo sconto è in fase di applicazione simultanea; riprova
- Note: Temporaneo. Il codice potrebbe avere ancora disponibilità, quindi è sicuro riprovare la richiesta. Non mostrare al cliente il messaggio “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,existingo non è incluso nell’elenco dei codici consentitispecific) - 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 di 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 data
starts_at - Message: Il codice sconto non è ancora attivo (starts_at è nel futuro)
- Trigger: Codice utilizzato prima della data
-
DISCOUNT_PER_CUSTOMER_USAGE_LIMIT_EXCEEDED- Trigger: Il cliente ha già utilizzato il codice
per_customer_usage_limitvolte - Message: Il limite di utilizzo per cliente è stato superato per questo codice sconto
- Trigger: Il cliente ha già utilizzato il codice
-
DISCOUNT_NOT_APPLICABLE_TO_NEW_PRODUCT- Trigger: Modifica del piano a 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 una subscription on-demand
- Message: Il coupon sconto non è disponibile per le subscription 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: L’importo percentuale non può superare 10000 / L’importo del codice sconto non può superare il 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.
License key
-
ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT- Trigger: Attivazioni della license key: nuovo limite < numero di istanze esistenti
- Message: Il nuovo limite di attivazione non può essere inferiore al numero attuale di istanze
-
INACTIVE_LICENSE_KEY- Trigger: Stato della key ≠
active - Message: La license key non è attiva
- Trigger: Stato della key ≠
-
LICENSE_KEY_LIMIT_REACHED- Trigger: Attivazioni = limite
- Message: Il limite di attivazione della license key è stato raggiunto
-
LICENSE_KEY_NOT_FOUND- Trigger: Instance ID o key ID non valido
- Message: L’istanza della license key non è stata trovata o non appartiene a questa license key
-
NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS- Trigger: Tentativo di impostare la scadenza su una key basata su subscription
- Message: Impossibile impostare la data di scadenza per una license key basata su subscription
Fatturazione basata sull’utilizzo e meter
-
DUPLICATE_METER_IDS_IN_REQUEST- Trigger: Lo stesso meter ID compare più volte nella richiesta
- Message: Non sono consentiti Meter ID duplicati
-
INVALID_QUANTITY- Trigger: Quantità non valida specificata per il pricing basato 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: Elenco di Meter ID vuoto o contenente ID non validi
- Message: Uno o più Meter ID non esistono:
Fatturazione basata sui crediti
-
CREDIT_ENTITLEMENT_IS_DELETED- Trigger: Operazione su un entitlement di crediti che è stato eliminato
- Message: L’entitlement di crediti è già stato eliminato
-
CREDIT_ENTITLEMENT_NAME_ALREADY_EXISTS- Trigger: Creazione di un entitlement di crediti con un nome già esistente
- Message: Esiste già un entitlement di crediti con questo nome
-
OVERAGE_LIMIT_EXCEEDED- Trigger: Un utilizzo o una detrazione di crediti 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: Validazione di VAT/GST/TIN non riuscita
- Message: Il Tax Id 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 questa subscription
- Message: La valuta di fatturazione diversa da USD non è supportata per le subscription
-
UNSUPPORTED_COUNTRY- Trigger: L’area geografica non è ancora supportata
- Message: Il paese non è attualmente supportato
-
UNSUPPORTED_CURRENCY- Trigger: La valuta del prodotto o dell’add-on non è una valuta in cui Dodo Payments può addebitare. I prezzi di base possono essere impostati in qualsiasi valuta addebitabile; ciò significa generalmente 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’add-on sono attualmente supportati solo USD e INR / È possibile richiedere USD o INR per billing_currency / Valuta non supportata / Valuta imprevista per le subscription 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 mutuamente esclusivi o non validi
- Message: I parametri di query devono contenere solo time_frame oppure (start, end)
-
INVALID_REQUEST_BODY- Trigger: JSON non valido 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, una data nel passato)
- Message: Impossibile modificare next_billing_date impostandolo su un orario passato
-
MAXIMUM_KEYS_REACHED- Trigger: Metadata / custom-fields oltre 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 riesce lato server
- Message: Errore di conversione da intero
-
INTERNAL_SERVER_ERROR- Trigger: Eccezioni non gestite; è necessario 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 le subscription basate 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