payfip_ws: consider cancelled transaction as still waiting for a resolution (#71155)

This commit is contained in:
Benjamin Dauvergne 2022-11-08 18:39:22 +01:00
parent 97b6bac733
commit 1841f1fa4a
2 changed files with 20 additions and 3 deletions

View File

@ -327,7 +327,14 @@ class Payment(PaymentCommon):
if e.code == 'P5' and delta < threshold:
return PaymentResponse(result=WAITING, signed=True, order_id=transaction_id)
raise e
return self.payfip_response_to_eopayment_response(idop, response)
eopayment_response = self.payfip_response_to_eopayment_response(idop, response)
# convert CANCELLED to WAITING during the first 20 minutes
if eopayment_response.result == CANCELLED and delta < threshold:
eopayment_response.result = WAITING
eopayment_response.bank_status = (
'%s - still waiting as idop is still active' % eopayment_response.bank_status
)
return eopayment_response
def response(self, query_string, **kwargs):
fields = parse_qs(query_string, True)

View File

@ -393,8 +393,8 @@ def test_payment_cancelled(history, backend):
assert url == 'https://www.payfip.gouv.fr/tpa/paiementws.web?idop=cc0cb210-1cd4-11ea-8cca-0213ad91a103'
response = backend.response('idop=%s' % payment_id)
assert response.result == eopayment.CANCELLED
assert response.bank_status == 'cancelled CB'
assert response.result == eopayment.WAITING
assert response.bank_status == 'cancelled CB - still waiting as idop is still active'
assert response.order_id == payment_id
assert response.transaction_id == '201912261758460053903194 cc0cb210-1cd4-11ea-8cca-0213ad91a103'
@ -406,7 +406,17 @@ def test_payment_status_cancelled(history, backend, freezer):
response = backend.payment_status(
transaction_id='cc0cb210-1cd4-11ea-8cca-0213ad91a103', transaction_date=now
)
assert response.result == eopayment.WAITING
assert response.bank_status == 'cancelled CB - still waiting as idop is still active'
freezer.move_to(datetime.timedelta(minutes=20, seconds=1))
history.counter = 1 # only the response
response = backend.payment_status(
transaction_id='cc0cb210-1cd4-11ea-8cca-0213ad91a103', transaction_date=now
)
assert response.result == eopayment.CANCELLED
assert response.bank_status == 'cancelled CB'
def test_normalize_objet():