Wat GoCardless zegt
| Reason | Tipo | Texto de GoCardless |
|---|---|---|
access_token_revoked | invalid_api_usage | Token has been revoked by the user. |
access_token_not_active | invalid_api_usage | Token has been disabled. |
unauthorized | invalid_api_usage | Credentials not recognised. |
Voor Odoo betekenen de drie hetzelfde: de referentie waarmee het verzoeken doet, werkt niet meer. In hun tabel met HTTP-codes reserveert GoCardless de 401 voor dat geval: "Missing or invalid Authorization header, or the user has been disabled.". Het zijn invalid_api_usage-fouten, die komen door de manier waarop het verzoek is gedaan, en voor die fouten vraagt GoCardless om het technische team te waarschuwen ("alert your dev team").

Wanneer het token ophoudt te werken
De connector verbindt op twee manieren met GoCardless, en het token sterft op een andere manier in elk geval:
- "Connect my GoCardless account" is de verbinding in twee klikken, via FlexigoTech: een partnerintegratie. Volgens de partnergids van GoCardless kan de handelaar die toegang intrekken via zijn Dashboard ("they can revoke your access from the GoCardless dashboard") of zijn account sluiten. Dan stuurt GoCardless een laatste webhook en werkt het token niet meer: "Your access token stops working, so you can't make any more API calls for that user.".
- "Paste an access token (advanced)" is de modus waarin jij het token aanmaakt in het Dashboard van GoCardless en het in Odoo plakt. Als je het daar intrekt of deactiveert, ontdekt Odoo dat bij het volgende verzoek, wanneer GoCardless het afwijst.
Wat Odoo met de connector doet
Bij de verbinding in twee klikken komt die laatste webhook zonder event-id, als organisations · disconnected. De connector verwerkt hem zo:
- Hij wist het token en het geheim van de webhook, en de verbinding van de provider wordt "Disconnected in GoCardless".
- Hij schrijft op het contact van je bedrijf "GoCardless reports that the account was disconnected from Odoo on … (…). No collection can be taken until it is connected again.", met de datum en de oorzaak die GoCardless meldt.
- Hij maakt de activiteit "GoCardless disconnected", zodat iemand het ziet zonder de provider te openen.
Vanaf dat moment roept de connector GoCardless met die provider niet meer aan: de taak van elk uur slaat hem over, en een incasso met de opgeslagen betaalmethode van een klant krijgt de status "Fout" met "This provider is not connected to GoCardless any more: connect it again first.".
Zonder die melding blijft het token opgeslagen en wijst GoCardless elk verzoek af. Bij een incasso krijgt de transactie de status "Fout" met "GoCardless rejected the request." en daaronder het bericht van GoCardless met de reason (access_token_revoked, access_token_not_active of unauthorized) en de request_id tussen vierkante haken. De factuur blijft openstaan voor incasso, en de taak van elk uur stuurt een transactie in fout niet opnieuw.
De melding op het contact en de activiteit schrijft de connector zonder dat iemand erbij is, bij het verwerken van de webhook. De connector is niet in het Nederlands vertaald: deze teksten verschijnen altijd in het Engels, ook in een Nederlandstalige Odoo, of een gebruiker of een geplande actie ze nu start: "GoCardless reports that the account was disconnected from Odoo on … (…). No collection can be taken until it is connected again." en "GoCardless disconnected". De berichten van een incasso verschijnen in de taal van wie hem start; start een geplande actie hem, zoals de verlenging van een abonnement, dan geldt dezelfde regel: "This provider is not connected to GoCardless any more: connect it again first." en "GoCardless rejected the request.".

Wat te doen
- Open de transactie vanaf de factuur, via de knop "Betalingstransactie" bovenaan; het menu met transacties verschijnt alleen in de ontwikkelaarsmodus, en in Odoo 20 bestaat het niet. Als het bericht zegt dat de provider niet meer verbonden is, of een van de drie reasons noemt, ligt het probleem bij de verbinding, niet bij de klant of zijn mandaat.
- Bij de verbinding in twee klikken open je de betaalprovider GoCardless en verbind je opnieuw met "Connect my GoCardless account".
- In de geavanceerde modus maak je een nieuw token aan in het Dashboard van GoCardless, plak je het in "GoCardless Access Token" en klik je op "Test connection". De connector vraagt met dat token de schuldeiser van je account op: als GoCardless het afwijst, zie je de fout op dat moment en niet pas bij de volgende incasso.
- Als de verbinding weer werkt, incasseer je de facturen die openstaan opnieuw. Transacties in fout worden niet vanzelf opnieuw verstuurd.
- Heb je GoCardless nodig, bewaar dan de
request_iduit het bericht: hun documentatie vraagt om die bij contact met hun support te vermelden.
Waarom verwijdert de connector het token in plaats van het te blijven proberen?
Omdat GoCardless zegt dat dat token niet meer werkt. Zo leggen de volgende incasso's uit wat er aan de hand is (dat de provider niet meer verbonden is), in plaats van de ene afwijzing na de andere te krijgen, en op het contact van het bedrijf staat geschreven wanneer en waarom het is losgekoppeld.
Werkt een token van de sandbox met het productieaccount?
Nee. De help van het tokenveld zegt het: sandboxtokens beginnen met sandbox_ en werken alleen met de sandbox-API. Om echt te incasseren heb je een productietoken nodig.
Met onze connector
In Odoo 17, 18, 19 en 20 laat de connector niet toe dat een dood token overgaat in een reeks mislukte incasso's zonder uitleg: als GoCardless de afkoppeling meldt, zegt de connector dat op het bedrijf en in een activiteit, en als GoCardless dat niet meldt, bevat elke afwijzing de reason en de request_id van GoCardless.
Lees verder
Gecontroleerd in de broncode van de connector (versie 17.0, 18.0, 19.0 en 20.0) en in de gelinkte bronnen
Bronnen
- 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
- Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 71 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 143 in 17.0 (d203ee6), regel 143 in 18.0 (e2ab18b), regel 143 in 19.0 (ce7f5a3) en regel 145 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 888 in 17.0 (d203ee6), regel 888 in 18.0 (e2ab18b), regel 888 in 19.0 (ce7f5a3) en regel 903 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 1237 in 17.0 (d203ee6), regel 1237 in 18.0 (e2ab18b), regel 1237 in 19.0 (ce7f5a3) en regel 1234 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 1241 in 17.0 (d203ee6), regel 1241 in 18.0 (e2ab18b), regel 1241 in 19.0 (ce7f5a3) en regel 1238 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 265 in 17.0 (d203ee6), regel 265 in 18.0 (e2ab18b), regel 265 in 19.0 (ce7f5a3) en regel 267 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 545 in 17.0 (d203ee6), regel 545 in 18.0 (e2ab18b), regel 545 in 19.0 (ce7f5a3) en regel 547 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 456 in 17.0 (d203ee6), regel 456 in 18.0 (e2ab18b), regel 456 in 19.0 (ce7f5a3) en regel 458 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 732 in 17.0 (d203ee6), regel 732 in 18.0 (e2ab18b), regel 732 in 19.0 (ce7f5a3) en regel 734 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 336 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 1740 in 17.0 (d203ee6), regel 1740 in 18.0 (e2ab18b), regel 1740 in 19.0 (ce7f5a3) en regel 1745 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 397 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 462 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 521 in 17.0 (d203ee6), regel 521 in 18.0 (e2ab18b), regel 521 in 19.0 (ce7f5a3) en regel 523 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 281 in 17.0 (d203ee6), regel 281 in 18.0 (e2ab18b), regel 281 in 19.0 (ce7f5a3) en regel 292 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 247 in 17.0 (d203ee6), regel 247 in 18.0 (e2ab18b), regel 247 in 19.0 (ce7f5a3) en regel 258 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 623 in 17.0 (d203ee6), regel 623 in 18.0 (e2ab18b), regel 623 in 19.0 (ce7f5a3) en regel 625 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 742 in 17.0 (d203ee6), regel 742 in 18.0 (e2ab18b), regel 742 in 19.0 (ce7f5a3) en regel 744 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 1100 in 17.0 (d203ee6), regel 1100 in 18.0 (e2ab18b), regel 1100 in 19.0 (ce7f5a3) en regel 1107 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 346 in 17.0 (d203ee6), regel 346 in 18.0 (e2ab18b), regel 346 in 19.0 (ce7f5a3) en regel 348 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 1167 in 17.0 (d203ee6), regel 1167 in 18.0 (e2ab18b), regel 1167 in 19.0 (ce7f5a3) en regel 1174 in 20.0 (688d86b)
- github.com/odoo/odoo/blob/20.0/addons/payment/i18n/nl.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
- Broncode van de module: flexigo_payment_gocardless: __manifest__.py, regel 31 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
