Quando un pagamento fallisce, Dodo Payments ti comunica perché attraverso un
error_code standardizzato e un error_message leggibile. Questa guida mostra come leggere quei campi, decidere se vale la pena riprovare e recuperare il pagamento senza esporre informazioni sensibili ai clienti.Come Dodo Payments Riporta un Fallimento
Ogni pagamento fallito — sia un checkout una tantum che un rinnovo di abbonamento — porta gli stessi campi di fallimento sull’oggetto di pagamento:| Campo | Tipo | Descrizione |
|---|---|---|
status | string | failed per un pagamento fallito. Altri stati non di successo includono cancelled, requires_customer_action, e requires_payment_method. |
error_code | string | null | Il motivo standardizzato del fallimento, per esempio INSUFFICIENT_FUNDS o PROCESSING_ERROR. Vedi il riferimento Transaction Failures per la lista completa. |
error_message | string | null | Una spiegazione leggibile del fallimento. |
retry_attempt | integer | 0 per l’addebito originale. 1 o superiore identifica un tentativo di rinnovo abbonamento programmato. |
error_code e error_message sono null finché un pagamento non fallisce effettivamente. Controlla sempre prima status, poi leggi i campi di errore.Il Webhook payment.failed
Il modo più affidabile per rilevare un fallimento è il webhook payment.failed. L’evento avvolge l’intero oggetto di pagamento in data:
payment.failed payload
error_code e instrada su di esso:
Decidi se Riprovare: Declini Soft vs. Hard
error_code ti dice se vale la pena riprovare con lo stesso metodo di pagamento.
| Tipo di declino | Cosa significa | Cosa fare |
|---|---|---|
| Declino soft | Temporaneo o correggibile (per esempio INSUFFICIENT_FUNDS, PROCESSING_ERROR, NETWORK_ERROR, TRY_AGAIN_LATER). | Riprovare, dopo un ritardo o una volta che il cliente ha corretto il proprio input, può avere successo. |
| Declino hard | Terminale (per esempio STOLEN_CARD, LOST_CARD, DO_NOT_HONOR, FRAUDULENT). | Non riprovare con lo stesso carta. Chiedi al cliente un diverso metodo di pagamento. |
error_code.
Gestire i Fallimenti al Checkout vs. al Rinnovo
Come si recupera dipende dal fatto che il cliente sia presente.- At checkout (customer present)
- On subscription renewal (customer not present)
Il cliente sta effettuando attivamente il checkout. Mostra un messaggio chiaro e lascia che riprovino immediatamente o utilizzino un’altra carta.
requires_payment_method— il cliente non ha mai fornito un metodo di pagamento: non ha inserito i dettagli della carta o è stato richiesto di farlo e non ha agito. Questo è di solito un abbandono del checkout, non un rifiuto: re-ingaggia il cliente per completare il pagamento (vedi Abandoned Cart Recovery).requires_customer_action— è necessaria un’autenticazione aggiuntiva (come 3DS); fai completare al cliente. Vedi gestione 3D Secure.
Riprovare un Pagamento Fallito
- Abbonamenti: Abilita Subscription Payment Retries per recuperare declini soft senza lavoro di integrazione. Puoi anche innescare il recupero facendo aggiornare al cliente il proprio metodo di pagamento tramite l’API di Aggiornamento Metodo di Pagamento, che addebita eventuali importi in sospeso.
- Pagamenti una tantum: Invia nuovamente il checkout o
payment_linkaffinché il cliente possa riprovare con un metodo diverso. Non esiste un ripetizione automatica per pagamenti una tantum.
Comunicazione degli Errori ai Clienti in Sicurezza
Mostra ai clienti un messaggio amichevole — mai il veroerror_code.
Customer-facing messaging
Correlati
Transaction Failures
Ogni codice di declino, il suo tipo e l’azione raccomandata.
Error Codes
Errori di API e logica aziendale che non sono declini di carta.
Subscription Payment Retries
Recupero automatico dei declini soft sui rinnovi degli abbonamenti.
Subscription Dunning
Sequenze email che recuperano declini hard.
Payment Webhooks
Schema completo del payload per eventi di pagamento.
Testing Failures
Carte di test che simulano declini e fallimenti di rinnovo.