Wat GoCardless zegt
| Waar | Reason of oorzaak | Tekst van GoCardless |
|---|---|---|
API, bij het aanmaken van een betaling (invalid_state) | mandate_replaced | Mandate has been replaced. Check links[new_mandate] in the error or on the mandate itself. |
| mandates · replaced | scheme_identifier_changed | The creditor has changed to a different scheme identifier, so this mandate has been cancelled and replaced by a new one. |
De documentatie van gebeurtenissen legt het zo uit: "The mandate has been cancelled and replaced by a new mandate (for example, because the creditor has moved to a new Service User Number).". En wat de gebeurtenis bevat: "The event will include links[new_mandate] with the ID of the new mandate.".
mandate_replaced is een fout invalid_state: de actie is in de huidige status niet geldig. Bij dat soort fouten vraagt GoCardless de gebruiker te informeren en niet opnieuw te proberen ("invalid_state → inform the end user, do not allow retry.").

Wanneer verschijnt het
De wijziging wordt niet door de klant of diens bank veroorzaakt: de gebeurtenis replaced heeft als bron gocardless, en de gedocumenteerde oorzaak is dat de crediteur, het account waarmee je bij GoCardless incasseert, is overgestapt naar een ander schema-identifier. GoCardless annuleert het oude mandaat en maakt er een nieuw voor in de plaats.
mandate_replaced verschijnt alleen als Odoo met het oude mandaat probeert te incasseren: de incasso van een abonnement dat wordt verlengd, of een betaling die wordt geregistreerd met de opgeslagen betaalmethode van de klant, voordat Odoo de gebeurtenis heeft verwerkt.
Wat Odoo met de connector doet
Bij de gebeurtenis replaced:
- Haalt Odoo het nieuwe mandaat uit
links.new_mandate. - Koppelt het opgeslagen betaalmethode van de klant aan dat nieuwe mandaat en houdt het als geldig, in plaats van het als verloren te beschouwen. Stond de methode gearchiveerd, dan wordt ze opnieuw geactiveerd; Odoo 17 laat een betaalmethode niet dearchiveren, en daar maakt de connector een nieuwe betaalmethode voor het nieuwe mandaat aan.
- Schrijft dit in het klantdossier: "The GoCardless mandate is usable again (replaced).".
Die notitie schrijft de connector zelf bij het verwerken van de gebeurtenis, zonder dat iemand ingrijpt. 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.
Bij mandate_replaced in een betaling doet de connector niets bijzonders: bij het aanmaken van een betaling behandelt hij alleen mandate_is_inactive apart. De transactie gaat naar "Fout" met "GoCardless rejected the request." en daaronder het bericht van GoCardless met mandate_replaced en de request_id tussen haakjes. Het nieuwe mandaat haalt hij uit de gebeurtenis, niet uit de fout.

Wat te doen
- Blijft een betaling op een fout met
mandate_replacedstaan, open dan de transactie vanuit de factuur, met de knop "Betalingstransactie" bovenaan; het menu met transacties verschijnt alleen in de ontwikkelaarsmodus, en in Odoo 20 bestaat het niet. - Controleer in het klantdossier of de notitie staat dat het mandaat opnieuw bruikbaar is (replaced). Staat ze er, dan verwijst de betaalmethode al naar het nieuwe mandaat.
- Staat ze er niet, dan is de gebeurtenis nog niet binnengekomen. De taak die elk uur verloren gebeurtenissen ophaalt, brengt die alsnog binnen; duurt dat langer, controleer dan of de webhooks van GoCardless bij Odoo aankomen.
- Is de betaalmethode actueel, incasseer de factuur dan opnieuw.
Moet de klant opnieuw tekenen?
Nee, om met de connector door te incasseren niet: het nieuwe mandaat maakt GoCardless aan, en de connector koppelt de opgeslagen betaalmethode eraan.
Wat gebeurt er in Odoo 17?
Hetzelfde, met één verschil: stond de oude betaalmethode gearchiveerd, dan laat Odoo 17 die niet opnieuw activeren, dus maakt de connector een nieuwe betaalmethode voor het nieuwe mandaat aan. In 18, 19 en 20 wordt de bestaande geactiveerd.
Met onze connector
In Odoo 17, 18, 19 en 20 volgt de connector het nieuwe mandaat zodra GoCardless de vervanging meldt: de klant behoudt zijn betaalmethode en de volgende factuur wordt geïncasseerd met het mandaat dat GoCardless in de plaats heeft gezet.
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/api-reference/events/mandate
- Broncode van de module: flexigo_payment_gocardless: models/payment_token.py, regel 72 in 17.0 (d203ee6), regel 72 in 18.0 (e2ab18b), regel 72 in 19.0 (ce7f5a3) en regel 71 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: const.py, regel 150 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: const.py, regel 158 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_token.py, regel 77 in 17.0 (d203ee6), regel 77 in 18.0 (e2ab18b), regel 77 in 19.0 (ce7f5a3) en regel 76 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_token.py, regel 96 in 17.0 (d203ee6), regel 96 in 18.0 (e2ab18b), regel 96 in 19.0 (ce7f5a3) en regel 95 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 1157 in 17.0 (d203ee6), regel 1157 in 18.0 (e2ab18b), regel 1157 in 19.0 (ce7f5a3) en regel 1164 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 278 in 17.0 (d203ee6), regel 278 in 18.0 (e2ab18b), regel 278 in 19.0 (ce7f5a3) en regel 289 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_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: const.py, regel 117 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 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)
- 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)
