def form_valid(self, form): # save the current order order = self.object = form.save() if not order.user or order.user != self.request.user: order.user = self.request.user order.proceed_to_confirm() order.confirm() # proceed this payment according to payment method method = form.cleaned_data['payment_method'] for backend in payment_backend_pool.get_backend_list(): if backend.backend_name == method: break else: # fool, the method not found raise ValueError("Invalid payment method selected") # clear the session session = getattr(self.request, 'session', None) if session is not None: session['order_id'] = None redirect_to = backend.process_order(order, self.request) return HttpResponseRedirect(redirect_to)
def get_backend_choices(): backends = payment_backend_pool.get_backend_list() list_backends = [(x.backend_name, getattr(x, 'backend_verbose_name', x.backend_name)) for x in backends] return tuple(list_backends)