diff --git a/src/pretix/base/payment.py b/src/pretix/base/payment.py index d19901489d..a3423be429 100644 --- a/src/pretix/base/payment.py +++ b/src/pretix/base/payment.py @@ -92,3 +92,26 @@ class BasePaymentProvider: template = get_template('pretixpresale/event/checkout_payment_form_default.html') ctx = Context({'request': request, 'form': form}) return template.render(ctx) + + def checkout_prepare(self, request, total): + """ + 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, + this method should at least store the user's input into his session. + + It should return True or False, depending of the validity of the user's input, + if the frontend should continue with default behaviour, or a custom HTTP response + (for example, a redirect), if you need special behaviour. + + 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(): + for k, v in form.cleaned_data.items(): + request.session['payment_%s_%s' % (self.identifier, k)] = v + return True + else: + return False diff --git a/src/pretix/plugins/banktransfer/payment.py b/src/pretix/plugins/banktransfer/payment.py index 5206b5eca9..facb865839 100644 --- a/src/pretix/plugins/banktransfer/payment.py +++ b/src/pretix/plugins/banktransfer/payment.py @@ -23,3 +23,6 @@ class BankTransfer(BasePaymentProvider): template = get_template('pretixplugins/banktransfer/checkout_payment_form.html') ctx = Context({'request': request, 'event': self.event, 'settings': self.settings}) return template.render(ctx) + + def checkout_prepare(self, request, total): + return True diff --git a/src/pretix/presale/templates/pretixpresale/event/checkout_payment.html b/src/pretix/presale/templates/pretixpresale/event/checkout_payment.html index 4d3a5952fc..45a1553ff4 100644 --- a/src/pretix/presale/templates/pretixpresale/event/checkout_payment.html +++ b/src/pretix/presale/templates/pretixpresale/event/checkout_payment.html @@ -21,7 +21,8 @@ -