Development #9941
possibilité de passer l'ordre d'achat(numéro de facture) à tous les backends de paiement
0%
Description
Afin de remonter dans les transactions du côté du système de paiement et faciliter le pointage des paiements
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Serghei Mihai il y a environ 8 ans
- Lié à Development #9793: Possibilité de passer des paramètres supplémentaires lors de l'envoi d'un paiement au module bancaire ajouté
Mis à jour par Serghei Mihai il y a environ 8 ans
- Fichier 0001-pass-order-id-to-all-backends-9941.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Mis à jour par Serghei Mihai il y a environ 8 ans
- Fichier
0001-pass-order-id-to-all-backends-9941.patchsupprimé
Mis à jour par Serghei Mihai il y a environ 8 ans
Mis à jour par Benjamin Dauvergne il y a environ 8 ans
Le transaction_id n'est pas là pour faire jolie, il faut trouver un moyen de le transférer sinon impossible de différencier deux requêtes différentes.
J'ai mis dans le wiki les docs de tous les systèmes de paiement, il faut passer sur chacun d'entre eux et voir s'il y a un champ prévu pour ça. La plupart ont un champ pour la référence commande et un autre pour un id de transaction.
Si ce n'est pas le cas (notamment pour Paybox1) alors il faut encoder transaction_id + order_id proprement dans le champs PBX_CMD (un séparateur qui n'apparait pas dans transaction_id doit suffire2) puis l'extraire quand ça revient dans la réponse.
Ensuite il faudra aussi vérifier que c'est bien cet identifiant qui apparait dans le backoffice pour la recherche de transactions, ça dépend vraiment des backoffices.
Voilà, voilà :) Et puis quand ce sera tout bien documenté, il faudra recopier ces informations dans le README d'eopayment, merci bien.
1 http://www1.paybox.com/espace-integrateur-documentation/dictionnaire-des-donnees/paybox-system/
2 code qui pourrait faire ça
PBX_CMD = order_id + '!' + transaction_id # entrée order_id, transaction_id = PBX_CMD.rsplit('!', 1) # sortie
Mis à jour par Benjamin Dauvergne il y a environ 8 ans
Pour tipi je virerai refdet c'est le seul à supporter ce champ, je ferai la même tambouille que pour paybox puisqu'on a un qu'un champ.
Mis à jour par Serghei Mihai il y a environ 8 ans
Pour TIPI je pensais garder refdet
pour la retrocompatibilité.
Mis à jour par Serghei Mihai il y a environ 8 ans
- Fichier 0001-pass-order-id-to-all-backends-9941.patch 0001-pass-order-id-to-all-backends-9941.patch ajouté
Patch à jour.
Ogone semble avoir également un champ unique pour le "orderid
. Donc j'ai fait la même chose que pour Paybox.
Dans le backoffice Paybox, par exemple, il n'y a que le champs orderid
et rien pour la transaction, donc le fait de concatener les 2 séparés par "!" devrait suffire pour matcher le numéro de la facture(commande) et la transaction.
Mis à jour par Benjamin Dauvergne il y a environ 8 ans
Il faut vérifier les formats autorisés, tout n'est pas parmis, par exemple pour payzen/system vads_order_id
c'est (p.126 de la doc payzen):
vads_order_id Description Numéro de commande. Il est également inclu dans l'e-mail de confirmation de paiement adressé à l’acheteur. Champ au format alphanumérique. Seul le caractère spécial « - » est autorisé. S'il contient un caractère spécial (&, ;, @, etc...), la plateforme de paiement retourne une erreur. Format an..32 Code erreur 13 Catégorie Informations sur la commande.
Donc il faut s'assurer que ça rentre dans les 32 caractères et que ça rentre et que ça respecte les limitations sur les caractères; coté sips, paybox tipi il ne semble pas y avoir de limitation, Pour ogone difficile de savoir, je dirai alphanumérique et tiret 30 caractères max (mais j'ai lu 40 aussi).
Mis à jour par Serghei Mihai il y a environ 8 ans
- Fichier 0001-pass-order-id-to-all-backends-9941.patch 0001-pass-order-id-to-all-backends-9941.patch ajouté
Dans certaines doc Ogone j'ai trouvé l'info suivante pour le champs ORDERID
: "The exact accepted length and data validation format depend on the acquirer/bank." Donc je pars du principe que c'est 30 caractères.
Mis à jour par Benjamin Dauvergne il y a environ 8 ans
Pour Orgone je réduirai la longueur du transaction_id en fonction de la longue de order_id, sinon ça va péter dès que len(order_id) > 10
, un id de transaction de 4 caractères parmi 36 ça parait suffisant au pire.
if order_id: if len(order_id) > 25: # 36^4 gives more than 1 million transaction id, it should be enough raise ValueError('order_id length exceed 25 characters) reference = order_id + '!' + self.transaction_id(30 - len(order_id) - 1, string.digits + string.ascii_letters)
Mis à jour par Serghei Mihai il y a environ 8 ans
- Fichier 0001-pass-order-id-to-all-backends-9941.patch 0001-pass-order-id-to-all-backends-9941.patch ajouté
Yep
Mis à jour par Benjamin Dauvergne il y a environ 8 ans
Manque plus que quelque tests, voir si le order_id ressort bien dans la requête si ce qui sort n'est pas trop long.
Mis à jour par Serghei Mihai il y a environ 8 ans
- Fichier 0001-pass-order-id-to-all-backends-9941.patch ajouté
Avec test pour Ogone en plus
Mis à jour par Benjamin Dauvergne il y a environ 8 ans
- Fichier
0001-pass-order-id-to-all-backends-9941.patchsupprimé
Mis à jour par Serghei Mihai il y a environ 8 ans
- Statut changé de En cours à Résolu (à déployer)
Validé avec Benjamin en privé. J'ai poussé
commit 8cd625e4651ededa92d888c31d64fafa578f2a9e Author: Serghei Mihai <smihai@entrouvert.com> Date: Mon Feb 8 18:40:45 2016 +0100 pass order id to all backends (#9941)
Mis à jour par Victor Claudet il y a environ 8 ans
Feature très importante pour Fondettes qui me relance aujourd'hui.
On peut envisager une mise en recette rapidement ?
Mis à jour par Frédéric Péters il y a environ 8 ans
Mis à jour par Benjamin Dauvergne il y a environ 8 ans
- Statut changé de Résolu (à déployer) à Fermé
pass order id to all backends (#9941)