paybox: fix validate/cancel operations encoding handling (#37322)
This commit is contained in:
parent
3d34d44246
commit
8a6702066d
|
@ -372,10 +372,8 @@ class Payment(PaymentCommon):
|
||||||
}
|
}
|
||||||
response = requests.post(url, params)
|
response = requests.post(url, params)
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
logger.debug('received %r', response.content)
|
logger.debug('received %r', response.text)
|
||||||
data = dict(urlparse.parse_qsl(response.content, True, True))
|
data = dict(urlparse.parse_qsl(response.text, True, True))
|
||||||
if six.PY2:
|
|
||||||
data['COMMENTAIRE'] = data.get('COMMENTAIRE', '').decode('iso-8859-1')
|
|
||||||
if data.get('CODEREPONSE') != PAYBOX_DIRECT_SUCCESS_RESPONSE_CODE:
|
if data.get('CODEREPONSE') != PAYBOX_DIRECT_SUCCESS_RESPONSE_CODE:
|
||||||
if six.PY2:
|
if six.PY2:
|
||||||
raise ResponseError(data['COMMENTAIRE'].encode('utf-8'))
|
raise ResponseError(data['COMMENTAIRE'].encode('utf-8'))
|
||||||
|
|
|
@ -177,7 +177,7 @@ class PayboxTests(TestCase):
|
||||||
'numero_appel': ['30310733'],
|
'numero_appel': ['30310733'],
|
||||||
'reference': ['830657461681']
|
'reference': ['830657461681']
|
||||||
}
|
}
|
||||||
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_raw_response = u"""NUMTRANS=0013989865&NUMAPPEL=0030378572&NUMQUESTION=0013989862&SITE=1999888&RANG=32&AUTORISATION=XXXXXX&CODEREPONSE=00000&COMMENTAIRE=Demande traitée avec succès&REFABONNE=&PORTEUR="""
|
||||||
backend_expected_response = {"CODEREPONSE": "00000",
|
backend_expected_response = {"CODEREPONSE": "00000",
|
||||||
"RANG": "32",
|
"RANG": "32",
|
||||||
"AUTORISATION": "XXXXXX",
|
"AUTORISATION": "XXXXXX",
|
||||||
|
@ -190,7 +190,7 @@ class PayboxTests(TestCase):
|
||||||
"NUMQUESTION": "0013989862"}
|
"NUMQUESTION": "0013989862"}
|
||||||
|
|
||||||
with mock.patch('eopayment.paybox.requests.post') as requests_post:
|
with mock.patch('eopayment.paybox.requests.post') as requests_post:
|
||||||
response = mock.Mock(status_code=200, content=backend_raw_response)
|
response = mock.Mock(status_code=200, text=backend_raw_response)
|
||||||
requests_post.return_value = response
|
requests_post.return_value = response
|
||||||
backend_response = getattr(backend, operation_name)(Decimal('10'), bank_data)
|
backend_response = getattr(backend, operation_name)(Decimal('10'), bank_data)
|
||||||
self.assertEqual(requests_post.call_args[0][0], 'https://preprod-ppps.paybox.com/PPPS.php')
|
self.assertEqual(requests_post.call_args[0][0], 'https://preprod-ppps.paybox.com/PPPS.php')
|
||||||
|
@ -217,14 +217,14 @@ class PayboxTests(TestCase):
|
||||||
params['platform'] = 'prod'
|
params['platform'] = 'prod'
|
||||||
backend = eopayment.Payment('paybox', params)
|
backend = eopayment.Payment('paybox', params)
|
||||||
with mock.patch('eopayment.paybox.requests.post') as requests_post:
|
with mock.patch('eopayment.paybox.requests.post') as requests_post:
|
||||||
response = mock.Mock(status_code=200, content=backend_raw_response)
|
response = mock.Mock(status_code=200, text=backend_raw_response)
|
||||||
requests_post.return_value = response
|
requests_post.return_value = response
|
||||||
getattr(backend, operation_name)(Decimal('10'), bank_data)
|
getattr(backend, operation_name)(Decimal('10'), bank_data)
|
||||||
self.assertEqual(requests_post.call_args[0][0], 'https://ppps.paybox.com/PPPS.php')
|
self.assertEqual(requests_post.call_args[0][0], 'https://ppps.paybox.com/PPPS.php')
|
||||||
|
|
||||||
with mock.patch('eopayment.paybox.requests.post') as requests_post:
|
with mock.patch('eopayment.paybox.requests.post') as requests_post:
|
||||||
error_response = """CODEREPONSE=00015&COMMENTAIRE=PAYBOX : Transaction non trouv\xe9e"""
|
error_response = u"""CODEREPONSE=00015&COMMENTAIRE=PAYBOX : Transaction non trouvée"""
|
||||||
response = mock.Mock(status_code=200, content=error_response)
|
response = mock.Mock(status_code=200, text=error_response)
|
||||||
requests_post.return_value = response
|
requests_post.return_value = response
|
||||||
self.assertRaisesRegexp(eopayment.ResponseError, 'Transaction non trouvée', getattr(backend, operation_name),
|
self.assertRaisesRegexp(eopayment.ResponseError, 'Transaction non trouvée', getattr(backend, operation_name),
|
||||||
Decimal('10'), bank_data)
|
Decimal('10'), bank_data)
|
||||||
|
@ -238,7 +238,12 @@ class PayboxTests(TestCase):
|
||||||
'numero_appel': ['30310733'],
|
'numero_appel': ['30310733'],
|
||||||
'reference': ['830657461681']
|
'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 = u"""NUMTRANS=0013989865&NUMAPPEL=0030378572&NUMQUESTION=0013989862&SITE=1999888&RANG=32&AUTORISATION=XXXXXX&CODEREPONSE=00000&COMMENTAIRE=Demande traitée avec succès&REFABONNE=&PORTEUR="""
|
||||||
|
|
||||||
|
with mock.patch('eopayment.paybox.requests.post') as requests_post:
|
||||||
|
response = mock.Mock(status_code=200, text=backend_raw_response)
|
||||||
|
requests_post.return_value = response
|
||||||
|
backend.validate(Decimal(12), bank_data)
|
||||||
|
|
||||||
|
|
||||||
def test_rsa_signature_validation(self):
|
def test_rsa_signature_validation(self):
|
||||||
|
|
Loading…
Reference in New Issue