diff --git a/src/pretix/base/payment.py b/src/pretix/base/payment.py index b66a60c71..e6d9129df 100644 --- a/src/pretix/base/payment.py +++ b/src/pretix/base/payment.py @@ -105,7 +105,7 @@ class BasePaymentProvider: """ raise NotImplementedError() # NOQA - def checkout_prepare(self, request, total) -> "bool|HttpResponse": + def checkout_prepare(self, request, cart) -> "bool|HttpResponse": """ Will be called if the user selects this provider as his payment method. If the payment provider provides a form to the user to enter payment data, @@ -117,8 +117,6 @@ class BasePaymentProvider: On errors, it should use Django's message framework to display an error message to the user (or the normal form validation error messages). - - :param total: The total price of the order, including the payment method fee. """ form = self.checkout_form(request) if form.is_valid(): diff --git a/src/pretix/presale/views/checkout.py b/src/pretix/presale/views/checkout.py index a25d232d3..3cdadac2e 100644 --- a/src/pretix/presale/views/checkout.py +++ b/src/pretix/presale/views/checkout.py @@ -205,7 +205,7 @@ class CheckoutStart(EventViewMixin, CartDisplayMixin, EventLoginRequiredMixin, return ctx -class PaymentDetails(EventViewMixin, EventLoginRequiredMixin, CheckoutView): +class PaymentDetails(EventViewMixin, CartDisplayMixin, EventLoginRequiredMixin, CheckoutView): template_name = "pretixpresale/event/checkout_payment.html" @cached_property @@ -234,10 +234,10 @@ class PaymentDetails(EventViewMixin, EventLoginRequiredMixin, CheckoutView): for p in self.provider_forms: if p['provider'].identifier == request.POST.get('payment', ''): request.session['payment'] = p['provider'].identifier - total = self._total_order_value + p['provider'].calculate_fee(self._total_order_value) - resp = p['provider'].checkout_prepare(request, total) + resp = p['provider'].checkout_prepare( + request, self.get_cart(payment_fee=p['provider'].calculate_fee(self._total_order_value))) if isinstance(resp, str): - return redirect(str) + return redirect(resp) elif resp is True: return redirect(self.get_confirm_url()) else: