Bug #27543
paybox: decoder correctement la réponse lors d'une validation ou annulation d'une transaction
0%
Description
La réponse HTML retournée par Paybox indique un charster utf-8 or c'est du iso-8859-1.
Par ex:
NUMTRANS=0013989865&NUMAPPEL=0030378572&NUMQUESTION=0013989862&SITE=1999888&RANG=32&AUTORISATION=XXXXXX&CODEREPONSE=00000&COMMENTAIRE=Demande trait\xe9e avec succ\xe8s&REFABONNE=&PORTEUR="""
Ça provoque des erreurs d'encodage quand l'opération échoue, dans raise ResponseError
Fichiers
Révisions associées
paybox: add python3 compat for transaction operations (#27543)
Historique
Mis à jour par Serghei Mihai il y a plus de 5 ans
- Fichier 0001-paybox-decode-correctly-responses-of-validation-and-.patch 0001-paybox-decode-correctly-responses-of-validation-and-.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Assigné à mis à Serghei Mihai
- Patch proposed changé de Non à Oui
Mis à jour par Thomas Noël il y a plus de 5 ans
A priori seul COMMENTAIRE est en latin1 ; et c'est je pense de toute façon une mauvaise pratique de considérer que la querystring est en latin1 dans son ensemble, ce sont les éléments qui la composent qui sont à décoder (et donc ici juste COMMENTAIRE, selon moi)
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
Mais c'est quoi ce truc du URL encoded avec des caractères autres que ASCII avant décodage URL encode ? Pfiouu...
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
L'API d'eopayment est sensé travailler en unicode (en entrée comme en sortie).
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
Benjamin Dauvergne a écrit :
L'API d'eopayment est sensé travailler en unicode (en entrée comme en sortie).
A priori si on reste sur un encodage mono-octet (latin1, ascii) tu dois pouvoir dé-url-encodé la chaîne puis décodé en unicode uniquement COMMENTAIRE.
In [5]: urlparse.parse_qsl(u'COMMENTAIRE=éé&COUCOU=1'.encode('latin1')) Out[5]: [('COMMENTAIRE', '\xe9\xe9'), ('COUCOU', '1')]
Mis à jour par Serghei Mihai il y a plus de 5 ans
Benjamin Dauvergne a écrit :
L'API d'eopayment est sensé travailler en unicode (en entrée comme en sortie).
Je peux utiliser response.text
au lieu de response.content
pour avoir de l'unicode en entrée, mais le résultat est pire:
u'NUMTRANS=0000000000&NUMAPPEL=0000000000&NUMQUESTION=0014061790&SITE=1999888&RANG=32&AUTORISATION=&CODEREPONSE=00015&COMMENTAIRE=PAYBOX : Transaction non trouv\ufffde&REFABONNE=&PORTEUR='
Mis à jour par Serghei Mihai il y a plus de 5 ans
- Fichier 0001-paybox-decode-correctly-responses-of-validation-and-.patch 0001-paybox-decode-correctly-responses-of-validation-and-.patch ajouté
Voilà.
Décodage uniquement du COMMENTAIRE, encodage du message de la ReponseError.
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Serghei Mihai il y a plus de 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 0e6a724231e501287f8c3593e2691f7e22f06c01 (origin/master, origin/HEAD) Author: Serghei Mihai <smihai@entrouvert.com> Date: Tue Oct 23 20:30:34 2018 +0200 paybox: decode correctly responses of validation and cancellation operations (#27543)
Mis à jour par Serghei Mihai il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à En cours
Echec de build en python3.
Mis à jour par Serghei Mihai il y a plus de 5 ans
- Fichier 0001-paybox-add-python3-compat-for-transaction-operations.patch 0001-paybox-add-python3-compat-for-transaction-operations.patch ajouté
- Statut changé de En cours à Solution proposée
Testé en local, les tests tox et à la construction du paquet passent.
Mis à jour par Serghei Mihai il y a plus de 5 ans
- Statut changé de Solution proposée à Résolu (à déployer)
commit 8df6db6fcd82794047646a15c71b71e2258485d7 (origin/master, origin/HEAD) Author: Serghei Mihai <smihai@entrouvert.com> Date: Thu Oct 25 17:49:10 2018 +0200 paybox: add python3 compat for transaction operations (#27543)
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
paybox: decode correctly responses of validation and cancellation operations (#27543)