Projet

Général

Profil

Development #32441

Nouvel objet PaymentBackend

Ajouté par Emmanuel Cazenave il y a environ 5 ans. Mis à jour il y a presque 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
18 avril 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Lié à Publik - Development #32194: Paiement : transaction à validation manuelle sur payzenFermé11 avril 2019

Actions
Lié à Combo - Development #32967: Commencer les options de transactions sur les régiesFermé10 mai 2019

Actions

Révisions associées

Révision 05447f90 (diff)
Ajouté par Emmanuel Cazenave il y a presque 5 ans

lingo: create PaymentBackend objects (#32441)

Révision 38ba9004 (diff)
Ajouté par Emmanuel Cazenave il y a presque 5 ans

lingo: don't recompute fees after payment (it was for partial payments) (#32441)

Révision 1deb29c3 (diff)
Ajouté par Emmanuel Cazenave il y a presque 5 ans

lingo: make payment related views compliant with PaymentBackend (#32441)

Révision b406f7a9 (diff)
Ajouté par Emmanuel Cazenave il y a presque 5 ans

lingo: make manager views compliant with PaymentBackend (#32441)

Historique

#1

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 ?

#2

Mis à jour par Emmanuel Cazenave il y a environ 5 ans

Oui, autre plan ?

#3

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()).

#4

Mis à jour par Emmanuel Cazenave il y a environ 5 ans

  • Lié à Development #32194: Paiement : transaction à validation manuelle sur payzen ajouté
#5

Mis à jour par Emmanuel Cazenave il y a presque 5 ans

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)

#7

Mis à jour par Emmanuel Cazenave il y a presque 5 ans

  • Lié à Development #32967: Commencer les options de transactions sur les régies ajouté
#8

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).

#9

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.

#10

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.

#12

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)

#13

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).

#14

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.

#15

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)
#16

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

Formats disponibles : Atom PDF