Projet

Général

Profil

Bug #27543

paybox: decoder correctement la réponse lors d'une validation ou annulation d'une transaction

Ajouté par Serghei Mihai il y a plus de 5 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
24 octobre 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Révision 0e6a7242 (diff)
Ajouté par Serghei Mihai il y a plus de 5 ans

paybox: decode correctly responses of validation and cancellation operations (#27543)

Révision 8df6db6f (diff)
Ajouté par Serghei Mihai il y a plus de 5 ans

paybox: add python3 compat for transaction operations (#27543)

Historique

#1

Mis à jour par Serghei Mihai il y a plus de 5 ans

#2

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)

#3

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

#4

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

#5

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')]
#6

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='

#7

Mis à jour par Serghei Mihai il y a plus de 5 ans

Voilà.

Décodage uniquement du COMMENTAIRE, encodage du message de la ReponseError.

#8

Mis à jour par Benjamin Dauvergne il y a plus de 5 ans

  • Statut changé de Solution proposée à Solution validée
#9

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

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.

#11

Mis à jour par Serghei Mihai il y a plus de 5 ans

Testé en local, les tests tox et à la construction du paquet passent.

#12

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

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

Formats disponibles : Atom PDF