lingo: pass PayFip specific data to eopayment for unique item payment (#47477)

This commit is contained in:
Benjamin Dauvergne 2020-10-10 09:02:07 +02:00
parent 8f899a9376
commit e5d9087f3e
2 changed files with 34 additions and 0 deletions

View File

@ -419,6 +419,11 @@ class PayMixin(object):
# copy command reference / invoice number
if item.reference_id:
kwargs['orderid'] = item.reference_id
# PayFiP/TIPI specific
if regie.payment_backend.service in ('payfip_ws', 'tipi'):
if item.request_data and item.request_data.get('exer') and item.request_data.get('refdet'):
kwargs['exer'] = item.request_data['exer']
kwargs['refdet'] = item.request_data['refdet']
# allow easy testing/use of backend specific keyword arguments
EOPAYMENT_REQUEST_KWARGS_PREFIX = 'eopayment_request_kwargs_'
if hasattr(item, 'request_data'):

View File

@ -1619,3 +1619,32 @@ def test_failure_can_only_pay_one_basket_item(get_items_to_be_paid, app, mono_re
assert 'Grouping basket items is not allowed.' in app.session['_messages']
assert len(caplog.records) == 1
assert 'regie can only pay one basket item' in caplog.records[0].message
def test_tipi_kwargs_can_pay_only_one_basket_item(app, basket_page, mono_regie, user):
item = BasketItem.objects.create(user=user, regie=mono_regie, amount=42, subject='foo item',
request_data={'refdet': 'F20201030', 'exer': '2020'})
resp = login(app).get(item.payment_url)
# with dummy refdet/exer are ignored
assert '2020' not in resp.location
mono_regie.payment_backend.service = 'tipi'
mono_regie.payment_backend.save()
resp = login(app).get(item.payment_url)
qs = urlparse.parse_qs(urlparse.urlparse(resp.location).query)
assert qs['refdet'][0] == 'F20201030'
assert qs['exer'][0] == '2020'
@mock.patch('eopayment.payfip_ws.Payment.request', return_value=(1, eopayment.URL, 'https://payfip/'))
def test_payfip_ws_kwargs_can_pay_only_one_basket_item(payment_request, app, basket_page, mono_regie, user):
item = BasketItem.objects.create(user=user, regie=mono_regie, amount=42, subject='foo item',
request_data={'refdet': 'F20201030', 'exer': '2020'})
mono_regie.payment_backend.service = 'payfip_ws'
mono_regie.payment_backend.save()
resp = login(app).get(item.payment_url)
assert resp.location == 'https://payfip/'
assert payment_request.call_args[1]['refdet'] == 'F20201030'
assert payment_request.call_args[1]['exer'] == '2020'