Development #32441
Nouvel objet PaymentBackend
0%
Description
Destiné à porter la configuration statique actuellement protée par Regie, configuration qui n'a pas de raison de varier d'un paiement à l'autre.
Ouvre la possibilité de déclarer plusieurs plusieurs régies pour un même PaymentBackend et donne ainsi de la souplesse dans les caractéristiques des transactions générés.
Le modèle de données se transforme ainsi : BasketItem → Regie → PaymentBackend , PaymentBackend absorbant service
et service_options
de la Régie (migration).
Dans un deuxième temps (autre ticket) il y aura travail sur les régies pour qu'elles exposent des attributs de configuration permettant de générer des transactions ayant des caractéristiques différentes (ex : capture_mode, author_capture).
Création un endpoint de callback par PaymentBackend, sur le même principe que le endpoint de callback d'une régie (qu'on conserve également).
Fichiers
Demandes liées
Révisions associées
lingo: don't recompute fees after payment (it was for partial payments) (#32441)
lingo: make payment related views compliant with PaymentBackend (#32441)
lingo: make manager views compliant with PaymentBackend (#32441)
Historique
Mis à jour par Frédéric Péters il y a environ 5 ans
Création un endpoint de callback par PaymentBackend, sur le même principe que le endpoint de callback d'une régie (qu'on conserve également).
Qu'on conserve parce que compatibilité avec l'existant parce que des URL ont été enregistrées dans les backoffice de systèmes de paiement, c'est ça ?
Mis à jour par Frédéric Péters il y a environ 5 ans
De manière sauvage :
- url(r'^lingo/callback/(?P<regie_pk>\w+)/$', CallbackView.as_view()), + url(r'^lingo/callback/.*', CallbackView.as_view(), name='lingo-callback'),
Évidemment ça ne prendra pas cette forme mais ça devrait pour moi être une unique vue, qui ignore tout à fait l'info "regie_pk" et se base uniquement sur la transaction (retrouvée via appel aux backends.guess_whatever()).
Mis à jour par Emmanuel Cazenave il y a environ 5 ans
- Lié à Development #32194: Paiement : transaction à validation manuelle sur payzen ajouté
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
- Fichier 0001-lingo-create-PaymentBackend-objects-32441.patch 0001-lingo-create-PaymentBackend-objects-32441.patch ajouté
- Fichier 0002-lingo-make-payment-related-views-compliant-with-Paym.patch 0002-lingo-make-payment-related-views-compliant-with-Paym.patch ajouté
- Fichier 0003-lingo-make-manager-views-compliant-with-PaymentBacke.patch 0003-lingo-make-manager-views-compliant-with-PaymentBacke.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Frédéric Péters a écrit :
Évidemment ça ne prendra pas cette forme mais ça devrait pour moi être une unique vue, qui ignore tout à fait l'info "regie_pk" et se base uniquement sur la transaction (retrouvée via appel aux backends.guess_whatever()).
J'ai été frileux, et donc option minimaliste en maintenant le callback de régie et en offrant un nouveau callback par backend, c'est 0002 dont la simplicité me rassure.
0003 le chantier UI qui fait apparaître le PaymentBackend à la place de Regie et qui permet d'attacher des regies à un PB (fortement inspiré par chrono Agenda/Événement)
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
- Fichier 0003-lingo-make-manager-views-compliant-with-PaymentBacke.patch 0003-lingo-make-manager-views-compliant-with-PaymentBacke.patch ajouté
Un commentaire oublié.
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
- Lié à Development #32967: Commencer les options de transactions sur les régies ajouté
Mis à jour par Frédéric Péters il y a presque 5 ans
Je remplacerais "pb" par "payment_backend", ça facilitera les lectures plus tard.
Je m'interroge sur la description obligatoire (dans la pratique, il me semble qu'on n'y met souvent presque rien, juste parce qu'il faut remplir).
Pour limiter les changements, j'aurais modifié get_eopayment_object() pour accepter régie ou backend de paiement.
Je déplacerais le retrait dans regie.compute_extra_fees(user=transaction.user)
dans un commit indépendant "lingo: don't recompute fees after payment (it was for partial payments) (#.....)".
J'imaginais les backends de paiement plus bas niveau que les "régies", et que du coup ce qui serait proposé comme accès principal aux utilisateurs aie plutôt été un accès à celles-ci, c'est l'inverse qui est fait. À réfléchir un peu je serais pour garder "backends" et "régies" côte à côte, ne pas y inscrire de hiérarchie. (aussi parce que ça me semble permettre de simplifier toutes les vues).
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
- Statut changé de Solution proposée à En cours
Frédéric Péters a écrit :
J'imaginais les backends de paiement plus bas niveau que les "régies", et que du coup ce qui serait proposé comme accès principal aux utilisateurs aie plutôt été un accès à celles-ci, c'est l'inverse qui est fait. À réfléchir un peu je serais pour garder "backends" et "régies" côte à côte, ne pas y inscrire de hiérarchie. (aussi parce que ça me semble permettre de simplifier toutes les vues).
On peut négocier ? (ça ferait pas mal de boulot à la poubelle de tout revoir). Pour simplifier je propose que la création d'un backend déclenche la création automatique d'une régie qui lui est liée, pour ne pas trop en demander à l'utilisateur dès le début.
Mis à jour par Frédéric Péters il y a presque 5 ans
On peut négocier ? (ça ferait pas mal de boulot à la poubelle de tout revoir).
Bof, il s'agit de 1/ ne pas toucher à toute la partie régie, garder un lien vers la liste là où il est aujourd'hui, 2/ retirer toute la partie "régie" des vues "backend de paiement" je trouve que ça simplifie pour l'usager et que ça simplifie le code. Il me semble que ça concerne uniquement 0003, donc il n'y a même pas de rebase compliqué à craindre.
Si c'est une question de temps, je peux me charger de cette reprise du 0003, pour te donner du temps sur #32969 que je trouve également important.
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
- Fichier 0001-lingo-create-PaymentBackend-objects-32441.patch 0001-lingo-create-PaymentBackend-objects-32441.patch ajouté
- Fichier 0002-lingo-don-t-recompute-fees-after-payment-it-was-for-.patch 0002-lingo-don-t-recompute-fees-after-payment-it-was-for-.patch ajouté
- Fichier 0003-lingo-make-payment-related-views-compliant-with-Paym.patch 0003-lingo-make-payment-related-views-compliant-with-Paym.patch ajouté
- Fichier 0004-lingo-make-manager-views-compliant-with-PaymentBacke.patch 0004-lingo-make-manager-views-compliant-with-PaymentBacke.patch ajouté
- Statut changé de En cours à Solution proposée
Toutes les remarques prises en compte.
Mis à jour par Frédéric Péters il y a presque 5 ans
À l'exécution des migrations chez moi :
File "/home/fred/src/eo/venv1.11/local/lib/python2.7/site-packages/django/db/migrations/operations/special.py", line 193, in database_forwards self.code(from_state.apps, schema_editor) File "/home/fred/src/eo/combo/combo/apps/lingo/migrations/0035_auto_20190426_1124.py", line 14, in create_backends service=regie.service, service_options=regie.service_options) File "/home/fred/src/eo/venv1.11/local/lib/python2.7/site-packages/django/db/models/base.py", line 573, in __init__ raise TypeError("'%s' is an invalid keyword argument for this function" % list(kwargs)[0]) TypeError: 'description' is an invalid keyword argument for this function
(simplement en virer l'attribut description permet de passer)
Mis à jour par Frédéric Péters il y a presque 5 ans
Dans la liste des régies on a <span>({{regie.service}})</span>
qui ne donne plus rien.
Je monterais payment_backend entre description et is_default.
Les liens "annuler" devraient retourner sur la page listant les régies/backends (mais je pense avoir lu ça déjà, c'est peut-être un truc fait dans un autre patch).
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Solution proposée à Solution validée
Avec ces changements c'est bon une fois vérifié jenkins.
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
Jenkins content https://jenkins2.entrouvert.org/job/combo-wip/job/wip%252F32441-payment-backend/12/
commit b406f7a99a8f892d4660f2644c69faeaec6ead35 Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Thu May 9 17:05:17 2019 +0200 lingo: make manager views compliant with PaymentBackend (#32441) commit 1deb29c3bf113af577ab7416a5c68e1368ef47a8 Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Mon May 13 15:37:47 2019 +0200 lingo: make payment related views compliant with PaymentBackend (#32441) commit 38ba9004ebd5a8cb7f104258358807c71f17d7ff Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Mon May 13 15:07:58 2019 +0200 lingo: don't recompute fees after payment (it was for partial payments) (#32441) commit 05447f909682ab816b9da8a68a45c8b8b3556df4 Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Thu May 9 16:57:23 2019 +0200 lingo: create PaymentBackend objects (#32441)
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
lingo: create PaymentBackend objects (#32441)