Co mówi GoCardless
| Zdarzenie | Kody | Tekst GoCardless |
|---|---|---|
| payments · failed | AC01, BE06 | The bank account specified does not exist. The mandate will also be cancelled. |
| mandates · failed | AC01 | The bank account specified does not exist. Any subscriptions and pending payments will also be cancelled. |
| mandates · cancelled | AC01, BE06 | The bank account specified does not exist. Any subscriptions and pending payments will also be cancelled. |

Kiedy się pojawia
Zależy od tego, kiedy bank to wykryje. Jeśli odrzuci mandat przy jego zakładaniu, GoCardless oznacza go jako nieudany (mandates · failed) i nic nigdy nie zostaje pobrane. Jeśli mandat był już aktywny, a pierwsze obciążenie zwróci się z AC01 lub BE06, płatność kończy się niepowodzeniem, a GoCardless anuluje mandat (mandates · cancelled) wraz z oczekującymi płatnościami z tego mandatu.
W obu przypadkach rozwiązanie jest takie samo: klient musi podpisać ponownie, używając rachunku, który istnieje.
Co robi Odoo z konektorem
Konektor reaguje na każde zdarzenie osobno i warto wiedzieć, co robi każde z nich:
- Nieudana płatność przenosi transakcję do błędu z komunikatem „GoCardless could not collect this payment (invalid_bank_details).”. Jeśli faktura była już opłacona tym obciążeniem, anuluje płatność i faktura znów jest do zapłaty.
- Zdarzenie mandatu, nieudanego lub anulowanego, to ono go usuwa z obiegu: konektor uznaje mandaty w tych stanach za martwe, archiwizuje metodę płatności, zapisuje w karcie klienta, że mandatu nie można już użyć, i tworzy aktywność „GoCardless mandate lost”.
Te teksty zapisuje konektor przy stosowaniu zdarzenia, bez niczyjego udziału. Konektor nie jest przetłumaczony na polski, więc te komunikaty zawsze pojawiają się po angielsku: „GoCardless could not collect this payment (invalid_bank_details).” i „GoCardless mandate lost”.
Sama nieudana płatność nie archiwizuje mandatu: invalid_bank_details nie znajduje się wśród czterech przyczyn, dla których konektor robi to przy odebraniu płatności. Archiwizuje go zdarzenie mandatu, które w tym przypadku GoCardless zawsze wysyła. Gdyby się zagubiło, zadanie odzyskujące zgubione zdarzenia co godzinę je przywróci.
Transakcję otwiera się z faktury, przyciskiem „Transakcja płatnicza” u góry; menu transakcji widać tylko w trybie deweloperskim, a w Odoo 20 nie istnieje. Dopóki mandat nie jest zarchiwizowany w Odoo, transakcja w błędzie pokazuje przycisk „Retry collection”, ale nic on nie daje. GoCardless ponawia płatność tylko wtedy, gdy jej mandat jest aktywny, a przy AC01 lub BE06 go anuluje. Jeśli go klikniesz, a GoCardless odrzuci, konektor sprawdza mandat i jeśli jest martwy, archiwizuje go i pisze o tym w transakcji: „The customer's GoCardless mandate is …, so it cannot be charged. Ask the customer for a new mandate.”. Gdy mandat jest zarchiwizowany, przycisk przestaje się pojawiać.
Co zrobić
- Sprawdź z klientem pełny IBAN: wystarczy jedna zmieniona cyfra, by rachunku nie było.
- Poproś go o podpisanie nowego mandatu z poprawnym rachunkiem. W Odoo będzie to nowa metoda płatności.
- Pobierz z nim faktury, które zostały nieopłacone; te, które GoCardless anulował, nie zostaną przedstawione same z siebie.
- Jeśli klient twierdzi, że IBAN był poprawny, niech skonsultuje to ze swoim bankiem: AC01 i BE06 to odpowiedź jego banku, a nie GoCardless. W Odoo zobaczysz tylko przyczynę, bo konektor nie zapisuje kodu SEPA. Według centrum pomocy GoCardless powód każdej porażki jest w osi czasu płatności w Dashboardzie („You are able to view the reason for a payment failure in the status timeline of the payment in your GoCardless dashboard.”).

Dlaczego są dwa kody, AC01 i BE06?
GoCardless grupuje oba pod tą samą przyczyną i tym samym tekstem dla SEPA Core. Dla Ciebie konsekwencja jest identyczna: tym rachunkiem nie da się obciążyć, potrzebne jest nowe podpisanie.
Czy można poprawić IBAN w mandacie w Odoo?
Nie. Mandat to upoważnienie, które klient podpisał tym rachunkiem; poprawny rachunek trafia do nowego mandatu.
Z naszym konektorem
W Odoo 17, 18, 19 i 20 konektor nie zostawia nieużywalnego mandatu do wglądu przy następnej fakturze: usuwa go, gdy GoCardless uzna go za nieudany lub anulowany, ponownie otwiera to, co trzeba otworzyć, i zapisuje w karcie klienta, co się stało.
Czytaj dalej
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
- Kod modułu: flexigo_payment_gocardless: const.py, wiersz 15 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- Kod modułu: flexigo_payment_gocardless: const.py, wiersz 76 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- Kod modułu: flexigo_payment_gocardless: const.py, wiersz 33 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- Kod modułu: flexigo_payment_gocardless: models/payment_token.py, wiersz 83 w 17.0 (d203ee6), wiersz 83 w 18.0 (e2ab18b), wiersz 83 w 19.0 (ce7f5a3) i wiersz 82 w 20.0 (688d86b)
- Kod modułu: flexigo_payment_gocardless: models/payment_token.py, wiersz 131 w 17.0 (d203ee6), wiersz 131 w 18.0 (e2ab18b), wiersz 131 w 19.0 (ce7f5a3) i wiersz 130 w 20.0 (688d86b)
- Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 725 w 17.0 (d203ee6), wiersz 725 w 18.0 (e2ab18b), wiersz 724 w 19.0 (ce7f5a3) i wiersz 748 w 20.0 (688d86b)
- Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 754 w 17.0 (d203ee6), wiersz 754 w 18.0 (e2ab18b), wiersz 753 w 19.0 (ce7f5a3) i wiersz 777 w 20.0 (688d86b)
- Kod modułu: flexigo_payment_gocardless: const.py, wiersz 117 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 442 w 17.0 (d203ee6), wiersz 442 w 18.0 (e2ab18b), wiersz 441 w 19.0 (ce7f5a3) i wiersz 456 w 20.0 (688d86b)
- Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 436 w 17.0 (d203ee6), wiersz 436 w 18.0 (e2ab18b), wiersz 436 w 19.0 (ce7f5a3) i wiersz 438 w 20.0 (688d86b)
- Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 1148 w 17.0 (d203ee6), wiersz 1148 w 18.0 (e2ab18b), wiersz 1148 w 19.0 (ce7f5a3) i wiersz 1155 w 20.0 (688d86b)
- Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 495 w 17.0 (d203ee6), wiersz 495 w 18.0 (e2ab18b), wiersz 495 w 19.0 (ce7f5a3) i wiersz 497 w 20.0 (688d86b)
- Kod modułu: flexigo_payment_gocardless: __manifest__.py, wiersz 31 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- docs.gocardless.com/docs/api-reference/events/payment
- docs.gocardless.com/docs/api-reference/events/mandate
- Kod modułu: flexigo_payment_gocardless: views/payment_transaction_views.xml, wiersz 13 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 63 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 418 w 17.0 (d203ee6), wiersz 418 w 18.0 (e2ab18b), wiersz 417 w 19.0 (ce7f5a3) i wiersz 432 w 20.0 (688d86b)
- Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 1016 w 17.0 (d203ee6), wiersz 1016 w 18.0 (e2ab18b), wiersz 1016 w 19.0 (ce7f5a3) i wiersz 1031 w 20.0 (688d86b)
- docs.gocardless.com/docs/api-reference/payment
- Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 469 w 17.0 (d203ee6), wiersz 469 w 18.0 (e2ab18b), wiersz 468 w 19.0 (ce7f5a3) i wiersz 487 w 20.0 (688d86b)
- Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 1233 w 17.0 (d203ee6), wiersz 1233 w 18.0 (e2ab18b), wiersz 1233 w 19.0 (ce7f5a3) i wiersz 1240 w 20.0 (688d86b)
- github.com/odoo/odoo/blob/17.0/odoo/http.py
- support.gocardless.com/hc/en-gb/articles/360001467265
- Kod modułu: flexigo_payment_gocardless: const.py, wiersz 66 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_move_views.xml
