Przejdź do głównej treści
GoCardless API · invalid_api_usage · 401

GoCardless access_token_revoked: Odoo nie może już komunikować się z Twoim kontem

Token dostępu to klucz, którym Odoo komunikuje się z Twoim kontem GoCardless. Jeśli zostanie unieważniony lub wyłączony, GoCardless odrzuca każde żądanie i nie można pobrać żadnej płatności. Przy połączeniu jednym kliknięciem GoCardless wysyła powiadomienie, a konektor je zapisuje; w trybie zaawansowanym dowiesz się o tym dopiero po odrzuceniu kolejnego żądania.

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

ReasonTipoTexto de GoCardless
access_token_revokedinvalid_api_usageToken has been revoked by the user.
access_token_not_activeinvalid_api_usageToken has been disabled.
unauthorizedinvalid_api_usageCredentials not recognised.

Dla Odoo wszystkie trzy oznaczają to samo: poświadczenie, którym wysyłane są żądania, nie działa już. W tabeli kodów HTTP GoCardless zarezerwowało 401 właśnie dla tego przypadku: „Missing or invalid Authorization header, or the user has been disabled.”. To błędy invalid_api_usage, wynikające ze sposobu wysłania żądania, a w ich przypadku GoCardless zaleca powiadomienie zespołu technicznego („alert your dev team”).

Karta błędu access_token_revoked z GoCardless
Trzy reasony dla tokenu, który już nie działa, jego typ invalid_api_usage i kod HTTP 401.

Kiedy token przestaje działać

Konektor łączy się z GoCardless na dwa sposoby i token wygasa w każdym z nich inaczej:

  • „Connect my GoCardless account” to połączenie jednym kliknięciem, przez FlexigoTech: integrację partnerską. Zgodnie z przewodnikiem dla partnerów GoCardless, sprzedawca może cofnąć ten dostęp w swoim Dashboardzie („they can revoke your access from the GoCardless dashboard”) albo zamknąć konto. Wtedy GoCardless wysyła ostatni webhook i token przestaje działać: „Your access token stops working, so you can't make any more API calls for that user.”.
  • „Paste an access token (advanced)” to tryb, w którym sam tworzysz token w Dashboardzie GoCardless i wklejasz go do Odoo. Jeśli cofniesz go lub wyłączysz tam, Odoo dowie się o tym przy następnym żądaniu, gdy GoCardless je odrzuci.

Co robi Odoo z konektorem

Przy połączeniu jednym kliknięciem ostatni webhook przychodzi bez identyfikatora zdarzenia, jako organisations · disconnected. Konektor stosuje go w następujący sposób:

  1. Usuwa token i sekret webhooka, a połączenie dostawcy przechodzi w stan „Disconnected in GoCardless”.
  2. Zapisuje w kontakcie Twojej firmy: „GoCardless reports that the account was disconnected from Odoo on … (…). No collection can be taken until it is connected again.”, z datą i przyczyną podaną przez GoCardless.
  3. Tworzy aktywność „GoCardless disconnected”, aby ktoś to zauważył, nie otwierając dostawcy.

Od tego momentu konektor nie wywołuje już GoCardless przez tego dostawcę: zadanie co godzinę go pomija, a płatność zapisaną metodą płatności klienta przechodzi w stan „Błąd” z komunikatem „This provider is not connected to GoCardless any more: connect it again first.”.

Bez tego powiadomienia token nadal jest zapisany, a GoCardless odrzuca każde żądanie. Przy płatności transakcja przechodzi w stan „Błąd” z komunikatem „GoCardless rejected the request.” i poniżej z komunikatem GoCardless zawierającym reason (access_token_revoked, access_token_not_active lub unauthorized) oraz request_id w nawiasach kwadratowych. Faktura pozostaje nieopłacona, a zadanie co godzinę nie ponawia transakcji w stanie błędu.

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: powiadomienie w kontakcie i aktywność („GoCardless reports that the account was disconnected from Odoo on … (…). No collection can be taken until it is connected again.” oraz „GoCardless disconnected”), a przy płatności „This provider is not connected to GoCardless any more: connect it again first.” i „GoCardless rejected the request.”, na przykład gdy odnowienie subskrypcji uruchamia zaplanowane działanie.

Schemat: co wysyła GoCardless, gdy token przestaje działać, i co robi z tym Odoo przez konektor
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 jest widoczne tylko w trybie deweloperskim, a w Odoo 20 nie istnieje. Jeśli komunikat mówi, że dostawca nie jest już połączony, albo wskazuje jeden z trzech reasonów, problemem jest połączenie, a nie klient ani jego mandat.
  2. Przy połączeniu jednym kliknięciem otwórz dostawcę płatności GoCardless i połącz się ponownie przez „Connect my GoCardless account”.
  3. W trybie zaawansowanym utwórz nowy token w Dashboardzie GoCardless, wklej go w polu „GoCardless Access Token” i kliknij „Test connection”. Konektor pobiera z GoCardless wierzyciela Twojego konta tym tokenem: jeśli GoCardless go odrzuci, zobaczysz jego błąd od razu, a nie przy następnej płatności.
  4. Gdy połączenie znowu działa, ponów płatności za faktury, które pozostały nieopłacone. Transakcje w błędzie nie są wysyłane ponownie automatycznie.
  5. Jeśli potrzebujesz pomocy GoCardless, zapisz request_id z komunikatu: ich dokumentacja prosi o podanie go przy kontakcie z pomocą techniczną.

Dlaczego konektor usuwa token zamiast dalej próbować?

Ponieważ GoCardless informuje, że ten token już nie działa. Dzięki temu kolejne płatności wyjaśniają, co się stało (dostawca nie jest już połączony), zamiast otrzymywać jedno odrzucenie za drugim, a w kontakcie firmy zapisane jest, kiedy i dlaczego została rozłączona.

Czy token z sandboxa działa z kontem produkcyjnym?

Nie. Pomoc przy polu tokenu mówi to wprost: tokeny sandboxa zaczynają się od sandbox_ i działają tylko z API sandboxa. Do prawdziwych płatności potrzebny jest token produkcyjny.

Z naszym konektorem

W Odoo 17, 18, 19 i 20 konektor nie pozwala, by martwy token przerodził się w łańcuch nieudanych płatności bez wyjaśnienia: jeśli GoCardless zgłosi rozłączenie, zapisuje to w firmie i w aktywności, a jeśli nie zgłosi, każde odrzucenie zawiera reason i request_id od GoCardless.

Czytaj dalej

Webhook GoCardless: 498 Token Invalid, 204 i podpis Webhook-SignatureGoCardless otrzymuje 498, gdy podpis Webhook-Signature nie pasuje, a 204, gdy nie rozpoznaje zdarzenia. Co zwraca Odoo 17, 18, 19 i 20 i czemu w 20 to 401.GoCardless internal_server_error i request_timed_out: błąd leży po stronie GoCardlessGoCardless odpowiada 500 internal_server_error lub 504 request_timed_out, gdy problem leży po jego stronie. Co robi konektor i jak nie pobrać płatności dwa razyGoCardless 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.
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/partner-integrations/connect-your-merchants
  • docs.gocardless.com/docs/partner-integrations/webhooks-for-partners
  • Kod modułu: flexigo_payment_gocardless: models/payment_provider.py, wiersz 71 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 143 w 17.0 (d203ee6), wiersz 143 w 18.0 (e2ab18b), wiersz 143 w 19.0 (ce7f5a3) i wiersz 145 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 888 w 17.0 (d203ee6), wiersz 888 w 18.0 (e2ab18b), wiersz 888 w 19.0 (ce7f5a3) i wiersz 903 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_provider.py, wiersz 1237 w 17.0 (d203ee6), wiersz 1237 w 18.0 (e2ab18b), wiersz 1237 w 19.0 (ce7f5a3) i wiersz 1234 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_provider.py, wiersz 1241 w 17.0 (d203ee6), wiersz 1241 w 18.0 (e2ab18b), wiersz 1241 w 19.0 (ce7f5a3) i wiersz 1238 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 265 w 17.0 (d203ee6), wiersz 265 w 18.0 (e2ab18b), wiersz 265 w 19.0 (ce7f5a3) i wiersz 267 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 545 w 17.0 (d203ee6), wiersz 545 w 18.0 (e2ab18b), wiersz 545 w 19.0 (ce7f5a3) i wiersz 547 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 456 w 17.0 (d203ee6), wiersz 456 w 18.0 (e2ab18b), wiersz 456 w 19.0 (ce7f5a3) i wiersz 458 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_provider.py, wiersz 732 w 17.0 (d203ee6), wiersz 732 w 18.0 (e2ab18b), wiersz 732 w 19.0 (ce7f5a3) i wiersz 734 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_provider.py, wiersz 336 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 1740 w 17.0 (d203ee6), wiersz 1740 w 18.0 (e2ab18b), wiersz 1740 w 19.0 (ce7f5a3) i wiersz 1745 w 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 247 w 17.0 (d203ee6), wiersz 247 w 18.0 (e2ab18b), wiersz 247 w 19.0 (ce7f5a3) i wiersz 258 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_provider.py, wiersz 742 w 17.0 (d203ee6), wiersz 742 w 18.0 (e2ab18b), wiersz 742 w 19.0 (ce7f5a3) i wiersz 744 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 1100 w 17.0 (d203ee6), wiersz 1100 w 18.0 (e2ab18b), wiersz 1100 w 19.0 (ce7f5a3) i wiersz 1107 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 346 w 17.0 (d203ee6), wiersz 346 w 18.0 (e2ab18b), wiersz 346 w 19.0 (ce7f5a3) i wiersz 348 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 1167 w 17.0 (d203ee6), wiersz 1167 w 18.0 (e2ab18b), wiersz 1167 w 19.0 (ce7f5a3) i wiersz 1174 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)