Allow hidden payment methods on payment method change (#3682)

* Allow hidden payment methods on payment method change

* Save hashes to meta data
This commit is contained in:
Raphael Michel
2023-11-03 13:42:34 +01:00
committed by GitHub
parent 10b515f1d1
commit e0e2b2d7f7
3 changed files with 30 additions and 6 deletions

View File

@@ -1515,6 +1515,9 @@ class ConfirmStep(CartMixin, AsyncAction, TemplateFlowStep):
str(m) for m in self.confirm_messages.values()
]
}
unlock_hashes = request.session.get('pretix_unlock_hashes', [])
if unlock_hashes:
meta_info['unlock_hashes'] = unlock_hashes
for receiver, response in order_meta_from_request.send(sender=request.event, request=request):
meta_info.update(response)

View File

@@ -289,9 +289,17 @@ class OrderDetails(EventViewMixin, OrderDetailMixin, CartMixin, TicketPageMixin,
ctx['can_pay'] = False
for provider in self.request.event.get_payment_providers().values():
if provider.is_enabled and provider.order_change_allowed(self.order):
ctx['can_pay'] = True
break
if provider.is_enabled:
if 'request' in inspect.signature(provider.order_change_allowed).parameters:
if provider.is_enabled and provider.order_change_allowed(self.order, request=self.request):
ctx['can_pay'] = True
break
else:
if provider.is_enabled and provider.order_change_allowed(self.order):
ctx['can_pay'] = True
break
if lp and lp.state not in (OrderPayment.PAYMENT_STATE_CONFIRMED, OrderPayment.PAYMENT_STATE_REFUNDED,
OrderPayment.PAYMENT_STATE_CANCELED):
@@ -665,8 +673,16 @@ class OrderPayChangeMethod(EventViewMixin, OrderDetailMixin, TemplateView):
providers = []
pending_sum = self.order.pending_sum
for provider in self.request.event.get_payment_providers().values():
if not provider.is_enabled or not provider.order_change_allowed(self.order):
if not provider.is_enabled:
continue
if 'request' in inspect.signature(provider.order_change_allowed).parameters:
if not provider.order_change_allowed(self.order, request=self.request):
continue
else:
if not provider.order_change_allowed(self.order):
continue
current_fee = sum(f.value for f in self.open_fees) or Decimal('0.00')
fee = provider.calculate_fee(pending_sum - current_fee)
if 'order' in inspect.signature(provider.payment_form_render).parameters: