Was GoCardless meldet
| Reason | Typ | Text von GoCardless |
|---|---|---|
mandate_not_inactive | invalid_state | «Mandate could not be reinstated» und «it is already active or being submitted.» |
GoCardless trennt die beiden Teile des Textes mit einem Gedankenstrich. In der API-Referenz heißt es dazu: «This will fail with a mandate_not_inactive error if the mandate is already being submitted, or is active.». Es handelt sich um einen invalid_state-Fehler, und für solche Fälle verlangt GoCardless, den Benutzer zu informieren und keinen erneuten Versuch zuzulassen («invalid_state → inform the end user, do not allow retry.»).

Welche Mandate sich reaktivieren lassen
Die Reaktivierung hat mehr Bedingungen als nur den Status:
- Es ist eine eingeschränkte Funktion: «Restricted this endpoint requires approved custom payment pages».
- Sie gilt nur für ein Mandat, das über das Dashboard oder die API gekündigt wurde: «A mandate can only be reinstated if it has been cancelled through the dashboard or the API.». Ein von der Bank gekündigtes Mandat dagegen nicht: «Any mandate that has been cancelled by the bank cannot be reinstated.».
- Sie dient gekündigten oder abgelaufenen Mandaten («Reinstates a cancelled or expired mandate to the banks.»), und ein Mandat kann bis zu 10-mal erneut eingereicht werden («Mandates can be resubmitted up to 10 times.»).
Nach der Anforderung läuft der Vorgang wie eine Neuanlage ab: Es kommt resubmission_requested, und danach, wie GoCardless schreibt, «so you will receive a submitted webhook, followed by a reinstated or failed webhook up to two working days later.».
Was der Konnektor in Odoo tut
Auf der Karte der Zahlungsart des Kunden zeigt der Konnektor die Schaltfläche «Reinstate mandate (sandbox)» an. Sie erscheint nur, wenn das Mandat von GoCardless stammt, der Anbieter nicht in der Produktion ist (in Odoo 17, 18 und 19 der Status des Anbieters, in Odoo 20 das Kontrollkästchen für die Produktion) und «Mandate Status» den Wert cancelled, failed oder expired hat.
Beim Klick:
- Der Konnektor fordert bei GoCardless die Reaktivierung dieses Mandats an.
- Akzeptiert GoCardless das, wechselt der Status zu
reinstate_requested, und auf der Kundenkarte steht «Reinstatement of the GoCardless mandate requested. It stays unusable until the bank confirms it.». Die Zahlungsart bleibt archiviert. - Wenn
reinstatedeintrifft, bestätigt der Konnektor das wieder: Er reaktiviert das Mandat und schreibt «The GoCardless mandate is usable again (reinstated).».
Antwortet GoCardless mit mandate_not_inactive, fängt der Konnektor das nicht ab: Odoo zeigt «GoCardless rejected the request.» mit der Meldung von GoCardless, dem Reason und der request_id, und das Mandat bleibt unverändert. Das geschieht, wenn Odoo das Mandat für erledigt hält, GoCardless es aber bereits als aktiv oder in Einreichung führt, weil dessen Ereignisse Odoo noch nicht erreicht haben. Nach einer angenommenen Anforderung erscheint die Schaltfläche nicht mehr, da der Status zu reinstate_requested wechselt.
Den Hinweis, dass das Mandat wieder verwendbar ist, schreibt der Konnektor beim Anwenden des Ereignisses, ohne dass jemand davor sitzt. Der Konnektor ist nicht ins Deutsche übersetzt: Diese Texte erscheinen immer auf Englisch, auch in einem deutschen Odoo, egal ob ein Benutzer oder eine geplante Aktion sie auslöst: «The GoCardless mandate is usable again (reinstated).».

Was zu tun ist
- Erscheint
mandate_not_inactive, suchen Sie das Mandat im GoCardless-Dashboard. Ist es aktiv oder wird es eingereicht, gibt es nichts zu reaktivieren: Warten Sie, bis dessen Ereignisse eintreffen. Die Aufgabe, die stündlich verlorene Ereignisse nachholt, holt sie ab. - Hat die Bank das Mandat gekündigt, versuchen Sie es nicht: GoCardless reaktiviert solche Mandate nicht. Bitten Sie den Kunden um ein neues Mandat.
- In der Produktion bietet der Konnektor keine Reaktivierung an: Der Weg ist ein neues, vom Kunden unterschriebenes Mandat.
- Zum Testen nutzen Sie die Sandbox von GoCardless mit dem Anbieter im Testbetrieb.
Warum erscheint die Schaltfläche nur außerhalb der Produktion?
Weil GoCardless die Reaktivierung auf Konten mit genehmigten eigenen Zahlungsseiten beschränkt, und der Konnektor sie nur außerhalb der Produktion anbietet.
Wie lange dauert es, bis das Mandat wieder gilt?
So lange, wie die Banken brauchen: Laut GoCardless meldet es zuerst, dass die Reaktivierung angefordert wurde, danach, dass das Mandat eingereicht wurde, und bis zu zwei Werktage später, ob es reaktiviert wurde oder fehlgeschlagen ist. Bis dahin verwendet der Konnektor das Mandat nicht.
Mit unserem Konnektor
In Odoo 17, 18, 19 und 20 bietet der Konnektor eine Reaktivierung nur für ein gekündigtes, fehlgeschlagenes oder abgelaufenes Mandat an, und nur außerhalb der Produktion. Er verwendet das Mandat erst wieder, wenn GoCardless die Reaktivierung mit seinem Ereignis bestätigt.
Weiterlesen
Geprüft im Quellcode des Connectors (Version 17.0, 18.0, 19.0 und 20.0) und in den verlinkten Quellen
Quellen
- docs.gocardless.com/docs/api-reference/responses-and-errors
- docs.gocardless.com/docs/api-reference/mandate
- docs.gocardless.com/docs/api-reference/events/mandate
- Quellcode des Moduls: flexigo_payment_gocardless: const.py, Zeile 134 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: views/payment_token_views.xml, Zeile 23 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: views/payment_token_views.xml, Zeile 22 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 998 in 17.0 (d203ee6), Zeile 998 in 18.0 (e2ab18b), Zeile 998 in 19.0 (ce7f5a3) und Zeile 1013 in 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: models/payment_token.py, Zeile 176 in 17.0 (d203ee6), Zeile 176 in 18.0 (e2ab18b), Zeile 176 in 19.0 (ce7f5a3) und Zeile 175 in 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: models/payment_token.py, Zeile 173 in 17.0 (d203ee6), Zeile 173 in 18.0 (e2ab18b), Zeile 173 in 19.0 (ce7f5a3) und Zeile 172 in 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 1004 in 17.0 (d203ee6), Zeile 1004 in 18.0 (e2ab18b), Zeile 1004 in 19.0 (ce7f5a3) und Zeile 1019 in 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: models/payment_token.py, Zeile 170 in 17.0 (d203ee6), Zeile 170 in 18.0 (e2ab18b), Zeile 170 in 19.0 (ce7f5a3) und Zeile 169 in 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: models/payment_provider.py, Zeile 397 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: models/payment_provider.py, Zeile 462 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 521 in 17.0 (d203ee6), Zeile 521 in 18.0 (e2ab18b), Zeile 521 in 19.0 (ce7f5a3) und Zeile 523 in 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: const.py, Zeile 158 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: models/payment_token.py, Zeile 77 in 17.0 (d203ee6), Zeile 77 in 18.0 (e2ab18b), Zeile 77 in 19.0 (ce7f5a3) und Zeile 76 in 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 1157 in 17.0 (d203ee6), Zeile 1157 in 18.0 (e2ab18b), Zeile 1157 in 19.0 (ce7f5a3) und Zeile 1164 in 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: views/payment_token_views.xml, Zeile 15 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 785 in 17.0 (d203ee6), Zeile 785 in 18.0 (e2ab18b), Zeile 785 in 19.0 (ce7f5a3) und Zeile 800 in 20.0 (688d86b)
- Quellcode des Moduls: flexigo_payment_gocardless: const.py, Zeile 117 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
- 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
- Quellcode des Moduls: flexigo_payment_gocardless: __manifest__.py, Zeile 31 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
