2016-03-20 9 views
2

So maßgeschneiderte ich Django-oscar, alles bis zur Zahlung Schrittzahlen bei der Ankunft in Django Oscar?

Enter payment details 
This page needs implementing within your project. You may want to use one of Oscar's payment gateway libraries: 

django-oscar-paypal 
django-oscar-datacash 
django-oscar-gocardless 
django-oscar-paymentexpress 
django-oscar-accounts 
Continue 

Ich will nicht, dass Online-Zahlung, wird mein Kurier das Paket senden und sammelt Gebühren gut funktioniert. Ist es möglich, django-oscar so zu konfigurieren, dass die Zahlung bei der Ankunft akzeptiert wird?

Antwort

0

nach der Kasse jedes Produkt müssen Sie Formularseite für Rechnungsadresse bereitstellen.

innerhalb apps/Kasse/view.py

from django.contrib import messages 
from django.http import HttpResponseRedirect 
from django.core.urlresolvers import reverse 
from oscar.apps.checkout import views 
from oscar.apps.payment import forms, models 

class PaymentDetailsView(views.PaymentDetailsView): 

    def get_context_data(self, **kwargs): 

     # Override method so the billing address forms can be 
     # added to the context. 
     ctx = super(PaymentDetailsView, self).get_context_data(**kwargs) 
     ctx['billing_address_form'] = kwargs.get(
      'billing_address_form', forms.BillingAddressForm()) 
     return ctx 

    def post(self, request, *args, **kwargs): 
     # Override so we can validate the bankcard/billingaddress submission. 
     # If it is valid, we render the preview screen with the forms hidden 
     # within it. When the preview is submitted, we pick up the 'action' 
     # parameters and actually place the order. 
     if request.POST.get('action', '') == 'place_order': 
      return self.do_place_order(request) 
     billing_address_form = forms.BillingAddressForm(request.POST) 
     if not all([billing_address_form.is_valid()]): 
      # Form validation failed, render page again with errors 
      self.preview = False 
      ctx = self.get_context_databilling_address_form=billing_address_form) 
      return self.render_to_response(ctx) 

     # Render preview with bankcard and billing address details hidden 
     return self.render_preview(request, billing_address_form=billing_address_form) 

    def do_place_order(self, request): 
     billing_address_form = forms.BillingAddressForm(request.POST) 
     if not all([billing_address_form.is_valid()]): 
      messages.error(request, "Invalid submission") 
      return HttpResponseRedirect(reverse('checkout:payment-details')) 


     submission = self.build_submission() 
     submission['payment_kwargs']['billing_address'] = billing_address_form.cleaned_data 
     return self.submit(**submission) 
+1

Sie haben 1 verpasst '(' char in 'ctx = self.get_context_databilling_address_form = billing_address_form)' Linie. –

Verwandte Themen