Vai al contenuto principale
GoCardless API · gocardless · 500 · 504

GoCardless internal_server_error e request_timed_out: il guasto è di GoCardless

A volte il problema non è nella tua richiesta né nel tuo client, ma in GoCardless: un guasto interno (500) o una richiesta che non termina in tempo (504). Il connettore di Odoo non ripete queste richieste di propria iniziativa e lascia l'incasso in errore con il request_id. Ciò che conta dopo è non incassare due volte la stessa cosa.

FlexigoTech · Responsabile: Víctor Gómez · Aggiornato il 6 novembre 2026

In breve

Versioni
Odoo 17, 18, 19 e 20
Verificato
nel codice del connettore, versione 17.0, 18.0, 19.0 e 20.0 · nelle fonti collegate in fondo
Lettura
4 min

Cosa dice GoCardless

ReasonTipoTesto di GoCardless
internal_server_errorgocardlessAn internal error occurred. Report to support with request_id.
request_timed_outgocardlessRequest did not complete in time. Retry, report if persistent.

GoCardless raggruppa questi reason nel tipo gocardless, quello degli errori che si verificano dentro GoCardless: «These errors occurred within GoCardless while processing your request.». La sua tabella dei codici HTTP dice questo dei due codici:

HTTPTesto di GoCardless
500Server-side error. Retry, and report to support with the request_id if it persists.
504Request timed out. Retry, and report with request_id if it persists.

Nella pagina dei limiti, GoCardless fissa inoltre quanto può durare una richiesta: 29 secondi («Request timeout 29 seconds»).

Scheda dell'errore internal_server_error di GoCardless
Il reason di un guasto interno di GoCardless, i codici HTTP 500 e 504, request_timed_out e il request_id.

Tre casi che il connettore non tratta allo stesso modo

Il connettore attende la risposta di GoCardless fino a 30 secondi per ogni richiesta. Con un incasso, un rimborso o un nuovo tentativo, Odoo può trovarsi di fronte a tre situazioni diverse:

  • GoCardless risponde con un 500 o un 504, con il reason nella risposta.
  • GoCardless non risponde: la connessione si interrompe o scadono i 30 secondi.
  • Il guasto arriva nell'applicare un evento, quando il connettore chiede a GoCardless il pagamento a cui si riferisce l'evento.

Cosa fa il connettore

Con un 500 o un 504. Il connettore ripete una richiesta solo quando resta senza risposta o dopo un 429. Con un 500 o un 504 la risposta c'è, quindi la considera rifiutata. In un incasso, la transazione passa a «Errore» con «GoCardless rejected the request.» e, sotto, il messaggio di GoCardless con il reason e il request_id tra parentesi quadre. L'attività oraria non reinvia una transazione in errore. Se GoCardless creasse comunque l'incasso, il suo primo evento lo collega: ogni incasso porta nei propri metadati il riferimento della transazione di Odoo, il connettore lo cerca con esso e applica lo stato del pagamento. Una transazione in errore torna così «In sospeso» oppure passa a «Confermato».

Senza risposta. Il connettore ripete la richiesta una volta, con la stessa chiave di idempotenza. Se nemmeno così risponde nessuno, non considera perso l'incasso: la transazione resta in sospeso con «GoCardless did not answer, so it is not known yet whether it took the request. It will be sent again, safely, within the hour.». L'attività oraria la reinvia con la stessa chiave; se GoCardless l'aveva già creata, risponde 409 e il connettore adotta ciò che esiste già.

Nell'applicare un evento. Per ogni evento di un pagamento, il connettore chiede quel pagamento a GoCardless. Se questa richiesta fallisce, il webhook risponde 500 così che GoCardless reinvii l'invio, e gli eventi già applicati non vengono applicati due volte. Il recupero orario non lascia indietro nemmeno un evento fallito.

Il connettore non è tradotto in italiano: questi testi compaiono sempre in inglese, anche in un Odoo in italiano, sia che li avvii un utente sia un'azione pianificata: «GoCardless rejected the request.» e «GoCardless did not answer, so it is not known yet whether it took the request. It will be sent again, safely, within the hour.».

Schema: cosa invia GoCardless con un 500 o un 504 e cosa fa Odoo con il connettore
Schema realizzato a partire dal codice del connettore (17.0, 18.0, 19.0 e 20.0) e dalla documentazione di GoCardless.

Cosa fare

  1. Apri la transazione dalla fattura, con il pulsante «Transazione di pagamento» in alto; il menu delle transazioni compare solo in modalità sviluppatore e in Odoo 20 non esiste. Se il messaggio cita internal_server_error o request_timed_out, il guasto è di GoCardless, non del cliente né del suo mandato.
  2. Prima di incassare di nuovo la fattura, cerca l'incasso nella Dashboard di GoCardless: il connettore indica come descrizione di ogni incasso il riferimento della propria transazione di Odoo. Se c'è, non incassare di nuovo; il suo evento collegherà la transazione.
  3. Se non c'è, incassa di nuovo la fattura con il metodo di pagamento salvato del cliente. Un nuovo incasso è un'altra transazione, con un'altra chiave di idempotenza: per questo conviene controllare prima.
  4. Se il problema si ripete, scrivi al supporto di GoCardless con il request_id del messaggio: la loro documentazione chiede di includerlo quando si contatta il supporto.

Perché il connettore non ritenta un 500 come fa in caso di assenza di risposta?

Perché ripete alla cieca solo ciò che si può ripetere senza rischi: una richiesta senza risposta, con la stessa chiave, oppure una che ha ricevuto un 429 (secondo GoCardless, quelle si possono ripetere senza problemi). Un 500 o un 504 è una risposta, e il connettore la tratta come un rifiuto.

Può restare un incasso duplicato?

Con la stessa chiave, no: GoCardless risponde 409 e il connettore adotta l'incasso già esistente. Il rischio sta nell'incassare di nuovo dalla fattura, perché questo crea un'altra transazione con un'altra chiave. Per questo conviene cercare prima l'incasso nella Dashboard.

Con il nostro connettore

In Odoo 17, 18, 19 e 20 il connettore distingue un errore di GoCardless da una richiesta senza risposta: il primo finisce in errore con il suo request_id, la seconda resta in sospeso e viene reinviata con la stessa chiave, e in entrambi i casi l'evento di un incasso già esistente lo collega alla sua transazione.

Continua a leggere

GoCardless 409 idempotent_creation_conflict: l'addebito esisteva giàGoCardless risponde 409 idempotent_creation_conflict se una chiave di idempotenza ha già creato qualcosa. Non è un errore: ecco come evita il doppio addebito.GoCardless 429 rate_limit_exceeded: troppe richieste al minutoGoCardless risponde 429 rate_limit_exceeded oltre 1.600 richieste al minuto. Come il connettore attende e ripete la richiesta e cosa fare se si ripresenta.GoCardless access_token_revoked: Odoo non riesce più a parlare con il tuo accountGoCardless rifiuta con access_token_revoked, access_token_not_active o unauthorized le richieste di un token non più valido. Cosa fa Odoo e come riconnettere.
Verificato nel codice del connettore (versione 17.0, 18.0, 19.0 e 20.0) e nelle fonti collegate

Fonti

  • docs.gocardless.com/docs/api-reference/responses-and-errors
  • docs.gocardless.com/docs/api-reference/limits
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 361 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 394 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 357 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 373 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 448 in 17.0 (d203ee6), riga 448 in 18.0 (e2ab18b), riga 448 in 19.0 (ce7f5a3) e riga 450 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 29 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 299 in 17.0 (d203ee6), riga 299 in 18.0 (e2ab18b), riga 299 in 19.0 (ce7f5a3) e riga 310 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 391 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 68 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 397 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 462 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 521 in 17.0 (d203ee6), riga 521 in 18.0 (e2ab18b), riga 521 in 19.0 (ce7f5a3) e riga 523 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 281 in 17.0 (d203ee6), riga 281 in 18.0 (e2ab18b), riga 281 in 19.0 (ce7f5a3) e riga 292 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 258 in 17.0 (d203ee6), riga 258 in 18.0 (e2ab18b), riga 258 in 19.0 (ce7f5a3) e riga 269 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 115 in 17.0 (d203ee6), riga 115 in 18.0 (e2ab18b), riga 115 in 19.0 (ce7f5a3) e riga 118 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 572 in 17.0 (d203ee6), riga 572 in 18.0 (e2ab18b), riga 571 in 19.0 (ce7f5a3) e riga 590 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 697 in 17.0 (d203ee6), riga 697 in 18.0 (e2ab18b), riga 696 in 19.0 (ce7f5a3) e riga 720 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 623 in 17.0 (d203ee6), riga 623 in 18.0 (e2ab18b), riga 623 in 19.0 (ce7f5a3) e riga 625 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 589 in 17.0 (d203ee6), riga 589 in 18.0 (e2ab18b), riga 588 in 19.0 (ce7f5a3) e riga 607 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: controllers/main.py, riga 124 in 17.0 (d203ee6), riga 124 in 18.0 (e2ab18b), riga 124 in 19.0 (ce7f5a3) e riga 127 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 603 in 17.0 (d203ee6), riga 603 in 18.0 (e2ab18b), riga 603 in 19.0 (ce7f5a3) e riga 605 in 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/it.po
  • github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_move_views.xml
  • github.com/odoo/odoo/blob/17.0/odoo/http.py
  • Codice del modulo: flexigo_payment_gocardless: __manifest__.py, riga 31 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)