Vai al contenuto principale

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
Comprendere questi codici di errore e i loro significati è fondamentale per:
  • 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
Le sezioni seguenti forniscono informazioni dettagliate sui codici di stato HTTP standard e sui codici di errore specifici che potresti incontrare utilizzando l’API di Dodo Payments.

Codici di Errore API Standard

Codice di erroreStato HTTPDescrizione
400Richiesta non validaLa richiesta era malformata o conteneva parametri non validi
401Non autorizzatoL’autenticazione è fallita o la chiave API non è valida
403VietatoLa chiave API non ha il permesso di accedere alla risorsa richiesta
404Non trovatoLa risorsa richiesta non esiste
405Metodo non consentitoIl metodo HTTP non è supportato per questo endpoint
409ConflittoLa richiesta è in conflitto con lo stato attuale della risorsa
422Entità non elaborabileLa richiesta era ben formata ma conteneva errori semantici
429Troppe richiesteLimite di frequenza superato
500Errore interno del serverSi è verificato un errore imprevisto sui nostri server
502Bad GatewayIl server ha ricevuto una risposta non valida da un server a monte
503Servizio non disponibileIl servizio è temporaneamente non disponibile
504Timeout del gatewayIl 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:
{
  "code": "UNSUPPORTED_COUNTRY",
  "message": "Country AI currently not supported"
}

Riferimento ai Codici di Errore

  • ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT
    • Trigger: Attivazioni della chiave di licenza: nuovo limite < numero di istanze esistente
    • Message: Il nuovo limite di attivazioni non può essere inferiore al numero di istanze corrente
  • ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Trigger: Tentativo di aggiungere componenti aggiuntivi a sottoscrizioni con fatturazione basata sull’utilizzo
    • Message: I componenti aggiuntivi nelle sottoscrizioni non sono supportati per la fatturazione basata sull’utilizzo
  • ADDONS_NOT_ALLOWED_FOR_ON_DEMAND
    • Trigger: Tentativo di aggiungere componenti aggiuntivi a sottoscrizioni on demand
    • Message: I componenti aggiuntivi 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 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 utilizzata
  • DISCOUNT_CODE_ALREADY_EXISTS
    • Trigger: Creazione di 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
  • DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
    • Trigger: Il codice sconto è stato riutilizzato dopo che 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
  • DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND
    • Trigger: Codice applicato a una 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_id appare due volte in items[]
    • Message: Sono stati specificati item_id duplicati nell’array items
  • DUPLICATE_METER_IDS_IN_REQUEST
    • Trigger: Lo stesso meter ID appare più volte nella richiesta
    • Message: Non sono consentiti ID contatore duplicati
  • EXCHANGE_RATE_NOT_FOUND
    • Trigger: Nessun tasso di cambio per la coppia di valute from → to
    • Message: Impossibile trovare il tasso di cambio per convertire da Currency a Currency
  • EXISTING_REFUND_REQUEST_PROCESSING
    • Trigger: La precedente richiesta di rimborso è ancora in elaborazione
    • Message: Una richiesta di rimborso con stato “Pending” è ancora in elaborazione
  • INACTIVE_LICENSE_KEY
    • Trigger: Lo stato della chiave ≠ ACTIVE
    • Message: La chiave di licenza non è attiva
  • INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED
    • Trigger: Cambio piano su sottoscrizione inattiva
    • Message: Il cambio piano non è supportato per sottoscrizioni inattive
  • INSUFFICIENT_WALLET_FUNDS
    • Trigger: Il saldo del wallet è inferiore all’importo da addebitare
    • Message: Fondi insufficienti nel wallet
  • INTEGER_CONVERSION_FAILURE
    • Trigger: Qualsiasi conversione intero ↔ stringa/decimale che fallisce lato server
    • Message: Errore di conversione dell’intero
  • INTERNAL_SERVER_ERROR
    • Trigger: Eccezioni non gestite; dovresti registrare i dettagli lato server
    • Message: Nessun messaggio pubblico (errore 500 generico)
  • 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ò superare 10000 / L’importo del codice sconto non può superare il 100%
  • INVALID_QUANTITY
    • Trigger: Quantità non valida specificata per il pricing basato sull’utilizzo
    • Message: È consentita solo una quantità per i prodotti con prezzo basato sull’utilizzo
  • INVALID_QUERY_PARAMS
    • Trigger: Parametri di query mutuamente esclusivi / 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 le intestazioni e l’oggetto della richiesta.
  • INVALID_REQUEST_PARAMETERS
    • Trigger: Semantica errata (es. data nel passato)
    • Message: Impossibile impostare next_billing_date in un momento passato
  • INVALID_SUGGESTED_PRICE
    • Trigger: Il prezzo PWYW è inferiore al prezzo minimo consentito
    • Message: Il prezzo suggerito non può essere inferiore al prezzo minimo. Nel caso di pay what you want, il prezzo è considerato come importo minimo accettato
  • INVALID_TAX_ID
    • Trigger: La validazione di VAT/GST/TIN è fallita
    • Message: L’ID fiscale non è valido
  • LICENSE_KEY_LIMIT_REACHED
    • Trigger: Attivazioni = limite
    • Message: È stato raggiunto il limite di attivazioni della chiave di licenza
  • LICENSE_KEY_NOT_FOUND
    • Trigger: ID istanza o ID chiave non valido
    • Message: Istanza della chiave di licenza non trovata o non appartiene a questa chiave
  • LINE_ITEM_FULLY_REFUNDED
    • Trigger: Tentativo di rimborsare una voce già completamente rimborsata
    • Message: La voce è già stata completamente rimborsata e non può essere rimborsata ulteriormente.
  • LINE_ITEM_NOT_FOUND
    • Trigger: L’ID dell’articolo non fa parte del pagamento indicato
    • Message: La voce non è stata trovata nel pagamento
  • LINE_ITEM_PRORATED
    • Trigger: Tentativo di rimborso o aggiornamento su una voce proporzionata
    • Message: La voce non può essere rimborsata perché è proporzionata
  • LINE_ITEM_REFUND_AMOUNT_TOO_HIGH
    • Trigger: L’importo del rimborso è superiore all’importo pagato (incluse tasse)
    • Message: La voce ha richiesto un rimborso di incluse tasse, superiore all’importo pagato
  • LINE_ITEM_REFUND_AMOUNT_TOO_LOW
    • Trigger: L’importo del rimborso è inferiore alla soglia minima
    • Message: La voce ha richiesto un rimborso di che è troppo basso
  • MAXIMUM_KEYS_REACHED
    • Trigger: I metadata / campi personalizzati hanno superato 50 coppie
    • Message: Supera le 50 coppie chiave-valore
  • MERCHANT_NOT_LIVE
    • Trigger: L’azienda è ancora in modalità di test/sandbox
    • Message: Il commerciante non è attivo
  • METER_IS_DELETED
    • Trigger: Tentativo di utilizzare un contatore eliminato
    • Message: Il contatore è già stato eliminato
  • MISSING_ADDON_IDS
    • Trigger: La lista addon_id è vuota o contiene ID sconosciuti
    • Message: Uno o più ID prodotto non esistono:
  • MISSING_METER_IDS
    • Trigger: L’elenco degli ID contatore è vuoto o contiene ID non validi
    • Message: Uno o più ID contatore non esistono:
  • MISSING_PRODUCT_INFORMATION
    • Trigger: Il prodotto esiste ma mancano 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 wallet
    • Message: Non è consentito rendere negativo il saldo del wallet
  • 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 una data di scadenza su una chiave basata su sottoscrizione
    • Message: Non è possibile impostare una data di scadenza per una chiave di licenza basata su sottoscrizione
  • NOT_FOUND
    • Trigger: 404 generico per qualsiasi risorsa mancante
    • Message: Voce non trovata (o più specifica)
  • ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED
    • Trigger: Il cambio piano non è consentito per on-demand
    • Message: Il cambio piano non è supportato per le sottoscrizioni on demand
  • ON_DEMAND_SUBSCRIPTIONS_NOT_ENABLED
    • Trigger: L’azienda ha la feature flag disattivata
    • Message: Le sottoscrizioni on demand non sono abilitate per questa azienda
  • ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Trigger: Tentativo di usare on-demand con fatturazione basata sull’utilizzo
    • Message: Le sottoscrizioni on demand non sono supportate per la fatturazione basata sull’utilizzo
  • PAY_AS_YOU_WANT_AMOUNT_REQUIRED
    • Trigger: Mancanza del prezzo per un prodotto PWYW
    • Message: L’importo è obbligatorio per un prodotto pay as you want
  • 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 pagamento è stato completamente rimborsato.
  • PAYMENT_NOT_SUCCEEDED
    • Trigger: Tentativo di rimborsare/elaborare un pagamento non riuscito
    • Message: Il pagamento fornito non è stato completato con successo
  • PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Trigger: Tentativo di cambio piano su una 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 prodotti vuoto inviato
    • Message: product_cart è vuoto
  • PRODUCT_IS_DELETED
    • Trigger: Prodotto eliminato in modo soft
    • Message: Nessun messaggio
  • REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT
    • Trigger: L’importo totale del rimborso è superiore all’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. Contatta support@dodopayments.com.
  • REQUEST_AMOUNT_BELOW_MINIMUM
    • Trigger: Importo < minimo del prodotto
    • Message: L’importo non può essere inferiore al minimo specificato per il prodotto
  • SUBSCRIPTION_EXPIRED
    • Trigger: La fatturazione è passata oltre ends_at
    • Message: La sottoscrizione è scaduta, impossibile creare nuovi addebiti
  • SUBSCRIPTION_INACTIVE
    • Trigger: Lo stato ≠ ACTIVE
    • Message: La sottoscrizione non è attiva
  • SUBSCRIPTION_NOT_ON_DEMAND
    • Trigger: Era previsto on-demand ma è arrivato un 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: È stato superato il limite massimo di 10 tentativi per questa sottoscrizione
  • TOO_MANY_REQUESTS
    • Trigger: Limite di velocità 429
    • Message: Nessun messaggio
  • TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT
    • Trigger: Il totale combinato del carrello è inferiore al minimo del gateway
    • Message: È richiesto un importo minimo di per elaborare il pagamento
  • UNABLE_TO_EDIT_PRIMARY_BRAND
    • Trigger: Tentativo di aggiornare il marchio primario tramite l’API normale
    • Message: Il marchio primario non può essere aggiornato tramite questo endpoint API.
  • UNAUTHORIZED
    • Trigger: Nessuna chiave API o token/scope non valido
    • Message: Non sei autorizzato a eseguire questa azione
  • UNSUPPORTED_ACTION
    • Trigger: Azione non supportata per il tipo di risorsa
    • Message: Il cambio piano per le sottoscrizioni basate sull’utilizzo non è supportato
  • UNSUPPORTED_BILLING_CURRENCY
    • Trigger: Sottoscrizioni limitate al USD
    • Message: Le valute di fatturazione non USD non sono supportate per le sottoscrizioni
  • UNSUPPORTED_COUNTRY
    • Trigger: Geolocalizzazione non ancora supportata
    • Message: Il paese non è attualmente supportato
  • UNSUPPORTED_CURRENCY
    • Trigger: Valuta del prodotto o dell’addon non valida
    • Message: La valuta non è attualmente supportata / Attualmente sono supportati solo prodotti in USD e INR / Solo USD e INR supportati per il prezzo degli addon / È possibile richiedere solo USD o INR per billing_currency / Valuta non supportata / Valuta imprevista per sottoscrizioni con carta indiana
  • UNSUPPORTED_DISCOUNT_TYPE
    • Trigger: Sconti a importo fisso, ecc., non ancora disponibili
    • Message: Per ora sono supportati solo i codici sconto percentuali
  • UNSUPPORTED_PAYMENT_CURRENCY
    • Trigger: La valuta di pagamento è bloccata per il connettore
    • Message: Le transazioni INR non sono supportate per questa transazione
  • UNSUPPORTED_TAX_CATEGORY
    • Trigger: La stringa della categoria fiscale non è nell’enumerazione
    • Message: La categoria non è attualmente supportata
  • UNSUCCESSFUL_PAYMENT_ID
    • Trigger: L’ID pagamento fa riferimento a un pagamento non riuscito
    • Message: L’ID pagamento ha uno stato non riuscito.
  • ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED
    • Trigger: Tentativo di rimborsare un pagamento con importo zero
    • Message: Impossibile rimborsare un pagamento con importo zero

Migliori Pratiche

  1. Gestisci sempre gli errori in modo elegante nella tua applicazione
  2. Implementa una corretta registrazione degli errori
  3. Usa messaggi di errore appropriati per gli utenti finali
  4. Implementa la logica di ripetizione per errori transitori
  5. Contatta il supporto per problemi irrisolti

Supporto

Per ulteriore aiuto con i codici di errore o problemi di integrazione, contatta il nostro team di supporto all’indirizzo support@dodopayments.com.