From b836b9f0ff3f978c6b473f544ab1fe90fc6f7269 Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Tue, 23 Oct 2018 20:30:34 +0200 Subject: [PATCH] paybox: decode correctly responses of validation and cancellation operations (#27543) --- eopayment/paybox.py | 3 ++- tests/test_paybox.py | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/eopayment/paybox.py b/eopayment/paybox.py index f6e8625..f6eb886 100644 --- a/eopayment/paybox.py +++ b/eopayment/paybox.py @@ -364,8 +364,9 @@ class Payment(PaymentCommon): response.raise_for_status() logger.debug('received %r', response.content) data = dict(urlparse.parse_qsl(response.content, True, True)) + data['COMMENTAIRE'] = data.get('COMMENTAIRE', '').decode('iso-8859-1') if data.get('CODEREPONSE') != PAYBOX_DIRECT_SUCCESS_RESPONSE_CODE: - raise ResponseError(data.get('COMMENTAIRE')) + raise ResponseError(data['COMMENTAIRE'].encode('utf-8')) return data def validate(self, amount, bank_data, **kwargs): diff --git a/tests/test_paybox.py b/tests/test_paybox.py index 335f686..7045026 100644 --- a/tests/test_paybox.py +++ b/tests/test_paybox.py @@ -146,13 +146,13 @@ class PayboxTests(TestCase): 'numero_appel': ['30310733'], 'reference': ['830657461681'] } - backend_raw_response = """NUMTRANS=0013989865&NUMAPPEL=0030378572&NUMQUESTION=0013989862&SITE=1999888&RANG=32&AUTORISATION=XXXXXX&CODEREPONSE=00000&COMMENTAIRE=Demande traitée avec succès&REFABONNE=&PORTEUR=""" + backend_raw_response = """NUMTRANS=0013989865&NUMAPPEL=0030378572&NUMQUESTION=0013989862&SITE=1999888&RANG=32&AUTORISATION=XXXXXX&CODEREPONSE=00000&COMMENTAIRE=Demande trait\xe9e avec succ\xe8s&REFABONNE=&PORTEUR=""" backend_expected_response = {"CODEREPONSE": "00000", "RANG": "32", "AUTORISATION": "XXXXXX", "NUMTRANS": "0013989865", "PORTEUR": "", - "COMMENTAIRE": "Demande traitée avec succès", + "COMMENTAIRE": u"Demande traitée avec succès", "SITE": "1999888", "NUMAPPEL": "0030378572", "REFABONNE": "", @@ -192,7 +192,7 @@ class PayboxTests(TestCase): self.assertEqual(requests_post.call_args[0][0], 'https://ppps.paybox.com/PPPS.php') with mock.patch('eopayment.paybox.requests.post') as requests_post: - error_response = """CODEREPONSE=00015&COMMENTAIRE=PAYBOX : Transaction non trouvée""" + error_response = """CODEREPONSE=00015&COMMENTAIRE=PAYBOX : Transaction non trouv\xe9e""" response = mock.Mock(status_code=200, content=error_response) requests_post.return_value = response self.assertRaisesRegexp(eopayment.ResponseError, 'Transaction non trouvée', getattr(backend, operation_name), -- 2.19.1