Przejdź do głównej treści
GoCardless API · gocardless · 500 · 504

GoCardless internal_server_error i request_timed_out: błąd leży po stronie GoCardless

Czasem problem nie leży w Twoim żądaniu ani w kliencie, lecz po stronie GoCardless: błąd wewnętrzny (500) albo żądanie, które nie kończy się na czas (504). Konektor Odoo nie powtarza tych żądań samodzielnie i zostawia płatność w błędzie z request_id. Najważniejsze potem to nie pobrać tej samej kwoty dwa razy.

FlexigoTech · Odpowiada: Víctor Gómez · Aktualizacja: 6 listopada 2026

Najważniejsze

Wersje
Odoo 17, 18, 19 i 20
Sprawdzone
w kodzie źródłowym konektora, wersja 17.0, 18.0, 19.0 i 20.0 · w źródłach podanych na końcu
Czas czytania
4 min

Co mówi GoCardless

ReasonTypTekst 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 grupuje te reasons w typ gocardless, czyli błędy powstałe wewnątrz GoCardless: „These errors occurred within GoCardless while processing your request.”. Jego tabela kodów HTTP mówi o obu kodach tak:

HTTPTekst 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.

Na stronie limitów GoCardless określa też, jak długo może trwać żądanie: 29 sekund („Request timeout 29 seconds”).

Karta błędu internal_server_error z GoCardless
Reason błędu wewnętrznego GoCardless, kody HTTP 500 i 504, request_timed_out oraz request_id.

Trzy przypadki, które konektor traktuje inaczej

Konektor czeka na odpowiedź GoCardless do 30 sekund w każdym żądaniu. Przy pobraniu, zwrocie lub ponowieniu Odoo może natrafić na trzy różne sytuacje:

  • GoCardless odpowiada 500 lub 504, z reasonem w odpowiedzi.
  • GoCardless nie odpowiada: połączenie się zrywa albo mijają 30 sekund.
  • Błąd pojawia się przy zastosowaniu zdarzenia, gdy konektor pyta GoCardless o płatność, której dotyczy zdarzenie.

Co robi konektor

Przy 500 lub 504. Konektor powtarza żądanie tylko wtedy, gdy zostaje bez odpowiedzi, albo po 429. Przy 500 lub 504 odpowiedź jest, więc traktuje ją jako odrzuconą. Przy pobraniu transakcja przechodzi w stan „Błąd” z komunikatem „GoCardless rejected the request.”, a pod spodem pojawia się komunikat GoCardless z reasonem i request_id w nawiasach kwadratowych. Zadanie co godzinę nie wysyła ponownie transakcji w błędzie. Gdyby GoCardless mimo wszystko utworzył pobranie, jego pierwsze zdarzenie je połączy: każde pobranie niesie w metadanych referencję transakcji Odoo, konektor wyszukuje ją po niej i stosuje do płatności stan. Transakcja w błędzie wraca wtedy do „Oczekujące” albo przechodzi w „Potwierdzone”.

Brak odpowiedzi. Konektor powtarza żądanie raz, z tym samym kluczem idempotencji. Jeśli nadal nikt nie odpowiada, nie uznaje pobrania za stracone: transakcja pozostaje oczekująca z komunikatem „GoCardless did not answer, so it is not known yet whether it took the request. It will be sent again, safely, within the hour.”. Zadanie co godzinę wysyła je ponownie z tym samym kluczem; jeśli GoCardless już je utworzył, odpowiada 409 i konektor przejmuje to, co już istnieje.

Przy zastosowaniu zdarzenia. Przy każdym zdarzeniu płatności konektor pyta GoCardless o tę płatność. Jeśli to zapytanie się nie powiedzie, webhook odpowiada 500, aby GoCardless ponowił wysyłkę, a zdarzenia już zastosowane nie są stosowane drugi raz. Odzyskiwanie co godzinę również nie pomija zdarzenia, które się nie powiodło.

Konektor nie jest przetłumaczony na polski: te teksty zawsze pojawiają się po angielsku, także w Odoo po polsku, niezależnie od tego, czy uruchamia je użytkownik, czy zaplanowane działanie, na przykład odnowienie subskrypcji albo ponowna wysyłka przez sam konektor: „GoCardless rejected the request.” oraz „GoCardless did not answer, so it is not known yet whether it took the request. It will be sent again, safely, within the hour.”.

Schemat: co GoCardless wysyła przy 500 lub 504 i co robi Odoo z konektorem
Schemat przygotowany na podstawie kodu konektora (17.0, 18.0, 19.0 i 20.0) oraz dokumentacji GoCardless.

Co zrobić

  1. Otwórz transakcję z faktury, przyciskiem „Transakcja płatnicza” u góry; menu transakcji widoczne jest tylko w trybie deweloperskim, a w Odoo 20 nie istnieje. Jeśli komunikat wymienia internal_server_error lub request_timed_out, błąd leży po stronie GoCardless, nie klienta ani jego mandatu.
  2. Zanim ponownie pobierzesz płatność za fakturę, poszukaj pobrania w Dashboardzie GoCardless: konektor jako opis każdego pobrania wpisuje referencję swojej transakcji Odoo. Jeśli ją znajdziesz, nie pobieraj ponownie; jej zdarzenie połączy transakcję.
  3. Jeśli jej nie ma, ponownie pobierz płatność za fakturę zapisaną metodą płatności klienta. Nowe pobranie to inna transakcja, z innym kluczem idempotencji, dlatego warto najpierw sprawdzić.
  4. Jeśli błąd się powtarza, napisz do wsparcia GoCardless, podając request_id z komunikatu: ich dokumentacja prosi o jego podanie przy kontakcie z pomocą techniczną.

Dlaczego konektor nie ponawia 500 tak jak przy braku odpowiedzi?

Bo ponawia w ciemno tylko to, co można powtórzyć bez ryzyka: żądanie bez odpowiedzi, z tym samym kluczem, albo takie, które dostało 429 (według GoCardless można je bez problemu powtórzyć). 500 lub 504 to odpowiedź, a konektor traktuje ją jako odrzucenie.

Czy może powstać zduplikowane pobranie?

Przy tym samym kluczu nie: GoCardless odpowiada kodem 409 i konektor przejmuje istniejące pobranie. Ryzyko pojawia się, gdy pobierzesz płatność ponownie z faktury, bo wtedy powstaje nowa transakcja z innym kluczem. Dlatego warto najpierw poszukać pobrania w Dashboardzie.

Z naszym konektorem

W Odoo 17, 18, 19 i 20 konektor odróżnia błąd GoCardless od żądania bez odpowiedzi: pierwszy trafia do błędu z request_id, drugi pozostaje oczekujący i jest wysyłany ponownie z tym samym kluczem, a w obu przypadkach zdarzenie istniejącego pobrania łączy je z transakcją.

Czytaj dalej

GoCardless 409 idempotent_creation_conflict: obciążenie już istniałoGoCardless zwraca 409 idempotent_creation_conflict, gdy klucz idempotentności coś już utworzył. Czemu to nie błąd i jak konektor zapobiega podwójnej opłacie.GoCardless 429 rate_limit_exceeded: zbyt wiele żądań na minutęGoCardless zwraca 429 rate_limit_exceeded po przekroczeniu 1600 żądań na minutę. Jak konektor czeka i ponawia żądanie oraz co zrobić, gdy błąd wraca.GoCardless access_token_revoked: Odoo nie może już komunikować się z Twoim kontemGoCardless odrzuca żądania martwego tokenu z access_token_revoked, access_token_not_active lub unauthorized. Co robi Odoo i jak połączyć ponownie.
Sprawdzone w kodzie źródłowym konektora (wersja 17.0, 18.0, 19.0 i 20.0) i w podlinkowanych źródłach

Źródła

  • docs.gocardless.com/docs/api-reference/responses-and-errors
  • docs.gocardless.com/docs/api-reference/limits
  • Kod modułu: flexigo_payment_gocardless: models/payment_provider.py, wiersz 361 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_provider.py, wiersz 394 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_provider.py, wiersz 357 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_provider.py, wiersz 373 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 448 w 17.0 (d203ee6), wiersz 448 w 18.0 (e2ab18b), wiersz 448 w 19.0 (ce7f5a3) i wiersz 450 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 29 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 299 w 17.0 (d203ee6), wiersz 299 w 18.0 (e2ab18b), wiersz 299 w 19.0 (ce7f5a3) i wiersz 310 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_provider.py, wiersz 391 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 68 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_provider.py, wiersz 397 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_provider.py, wiersz 462 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 521 w 17.0 (d203ee6), wiersz 521 w 18.0 (e2ab18b), wiersz 521 w 19.0 (ce7f5a3) i wiersz 523 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 281 w 17.0 (d203ee6), wiersz 281 w 18.0 (e2ab18b), wiersz 281 w 19.0 (ce7f5a3) i wiersz 292 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 258 w 17.0 (d203ee6), wiersz 258 w 18.0 (e2ab18b), wiersz 258 w 19.0 (ce7f5a3) i wiersz 269 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 115 w 17.0 (d203ee6), wiersz 115 w 18.0 (e2ab18b), wiersz 115 w 19.0 (ce7f5a3) i wiersz 118 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 572 w 17.0 (d203ee6), wiersz 572 w 18.0 (e2ab18b), wiersz 571 w 19.0 (ce7f5a3) i wiersz 590 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 697 w 17.0 (d203ee6), wiersz 697 w 18.0 (e2ab18b), wiersz 696 w 19.0 (ce7f5a3) i wiersz 720 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_provider.py, wiersz 623 w 17.0 (d203ee6), wiersz 623 w 18.0 (e2ab18b), wiersz 623 w 19.0 (ce7f5a3) i wiersz 625 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 589 w 17.0 (d203ee6), wiersz 589 w 18.0 (e2ab18b), wiersz 588 w 19.0 (ce7f5a3) i wiersz 607 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: controllers/main.py, wiersz 124 w 17.0 (d203ee6), wiersz 124 w 18.0 (e2ab18b), wiersz 124 w 19.0 (ce7f5a3) i wiersz 127 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_provider.py, wiersz 603 w 17.0 (d203ee6), wiersz 603 w 18.0 (e2ab18b), wiersz 603 w 19.0 (ce7f5a3) i wiersz 605 w 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/pl.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
  • Kod modułu: flexigo_payment_gocardless: __manifest__.py, wiersz 31 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)