Exemple #1
0
def create_order(request, transaction_id):
    order = Order()
    checkout_form = CheckoutForm(request.POST, instance=order)
    order = checkout_form.save(commit=False)
    order.transaction_id = transaction_id
    order.ip_address = request.META.get('REMOTE_ADDR')
    order.user = None
    if request.user.is_authenticated:
        order.user = request.user
    order.status = Order.SUBMITTED
    order.save()
    # if the order save succeeded
    if order.pk:
        cart_items = cart.get_cart_items(request)
        for ci in cart_items:
            # create order item for each cart item
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = ci.price  # now using @property
            oi.product = ci.product
            oi.save()
        # all set, empty cart
        cart.empty_cart(request)
        # save profile info for future orders
        if request.user.is_authenticated:
            profile.set(request)
    # return the new order object
    return order
    def create_order(request, transaction_id):
        order = Order()
        checkout_form = CheckoutForm(request.POST, instance=order)
        order = checkout_form.save(commit=False)
        order.transaction_id = transaction_id
        order.ip_address = reqest.META.get('REMOTE_ADDR')
        order.user = None
        if request.user.is_authenticated():
            order.user = request.user
        order.status = Order.SUBMITTED
        order.save()

        # If order save succeeded
        if order.pk:
            cart_items = cart_utils.get_cart_items(request)
            for ci in cart_items:
                # Create order item for each cart item
                oi = OrderItem()
                oi.order = order
                oi.quantity = ci.quantity
                oi.price = ci.price
                oi.product = ci.product
                oi.save()
            # Now we can emty the cart
            cart_utils.empty_cart(request)
        # save profile info for future orders
        if request.user.is_authenticated():
            from accounts import profile
            profile.set(request)
        # Return  the new order object
        return order
Exemple #3
0
def create_order(request, transaction_id):

    order = Order()
    checkout_form = CheckoutForm(request.POST, instance = order)
    order = checkout_form.save(commit = False)
    order.transaction_id = transaction_id
    order.ip_address = request.META.get('REMOTE_ADDR')
    order.user = None
    if request.user.is_authenticated():
        order.user = request.user
    order.status = Order.SUBMITTED
    order.save()

    if order.pk:
        cart_items = cart.get_cart_items(request)
        for ci in cart_items:
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = ci.price
            oi.product = ci.product
            oi.save()
        cart.empty_cart(request)

        if request.user.is_authenticated():
            from accounts import profile
            profile.set(request)

    return order
Exemple #4
0
def show_checkout(request):
    if cart.cart.is_empty(request):
        cart_url = urlresolvers.reverse('show_cart')
        return HttpResponseRedirect(cart_url)
    if request.method == 'POST':
        postdata = request.POST.copy()
        form = CheckoutForm(postdata)
        if form.is_valid():
            response = checkout.checkout.process(request)
            order_number = response.get('order_number',0)
            error_message = response.get('message','')
            if order_number:
                request.session['order_number'] = order_number
                receipt_url = urlresolvers.reverse('receipt')
                return HttpResponseRedirect(receipt_url)
            else:
                error_message = 'no order no'
                raise forms.ValidationError(error_message)
        else:
            error_message ='Correct the errors below'
    else:
        if request.user.is_authenticated():
            user_profile = profile.retrieve(request)
            form = CheckoutForm(instance=user_profile)
        else:
            form = CheckoutForm()
    page_title = 'Checkout'
    return render_to_response('checkout/checkout.html', locals(),context_instance=RequestContext(request))
Exemple #5
0
def show_checkout(request, template_name="checkout/checkout.html"):
    if cart.is_empty(request):
        cart_url = urlresolvers.reverse('show_cart')
        return HttpResponseRedirect(cart_url)

    error_message = ''
    if request.method == 'POST':
        form = CheckoutForm(request.POST)
        if form.is_valid():
            response = checkout.process(request)
            order_number = response.get('order_number', 0)
            error_message = response.get('message', '')
            if order_number:
                request.session['order_number'] = order_number
                receipt_url = urlresolvers.reverse('checkout_receipt')
                return HttpResponseRedirect(receipt_url)
        else:
            error_message = 'Correct the errors below'
    else:
        if request.user.is_authenticated():
            user_profile = profile.retrieve(request)
            form = CheckoutForm(instance=user_profile)
        else:
            form = CheckoutForm()
    ctx_dict = {
        'error_message': error_message,
        'form': form,
        'page_title': 'Checkout',
    }
    return render_to_response(template_name, ctx_dict, context_instance=RequestContext(request))
Exemple #6
0
def create_order(request,transaction_id):
    order=Order()
    checkout_form=CheckoutForm(request.POST,instance=order)
    order=checkout_form.save(commit=False)
    order.transaction_id= transaction_id
    order.ip_address = request.META.get('REMOTE_ADDR')
    order.user = None
    order.user = None
    if request.user.is_authenticated():
        order.user=request.user
    order.status = Order.SUBMITTED
    order.save()
    order.status = Order.SUBMITTED
    order.save()
    # if the order save succeeded
    if order.pk:
        cart_items = cart.cart.get_cart_items(request)
        for ci in cart_items:
        # create order item for each cart item
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = ci.price # now using @property
            oi.product = ci.product
            oi.save()
    # all set, empty cart
    cart.cart.empty_cart(request)
    #associate orders placed with registered users if they are logged in during the checkout process.
    if request.user.is_authenticated():
        from account import profile
        profile.set(request)
            # return the new order object
    return order
Exemple #7
0
def create_order(request):
	order = Order()
	checkout_form = CheckoutForm(request.POST, instance=order)
	order = checkout_form.save(commit=False)
	order.user = None
	if request.user.is_authenticated():
		order.user = request.user
	order.status = Order.SUBMITTED
	print (order.number)
	order.save()
	print (order.number)
	order.number = int(str(order.id) + datetime.today().strftime('%m%d%Y'))
	order.save()
	print (order.number)
	# create order item for each cart item
	if order.pk:
		cart_items = carts.get_cart_items(request)
		for ci in cart_items: 
			oi = OrderItem()
			oi.order = order
			oi.quantity = ci.quantity
			oi.price = ci.product.price
			oi.product = ci.product
			oi.save()
			carts.empty_cart(request)
	return order
Exemple #8
0
    def get(self, request, *args, **kwargs):
        buyer = Buyer(request)
        cart = buyer.cart

        if not cart.items_qty:
            if request.LANGUAGE_CODE == 'ua':
                return redirect('/ua/')
            else:
                return redirect('/')

        if request.user.is_authenticated:
            user = request.user
            initial = {
                'name': user.name,
                'phone': user.phone,
                'email': user.email,
                'lname': user.lname,
                'sname': user.sname
            }
            form = CheckoutForm(initial=initial)
        else:
            form = CheckoutForm()

        context = {
            'cart': cart,
            'form': form,
            'discount': cart.discount,
            'title': _("Оформление заказа"),
            'view': 'Checkout',
            'cartJson': cart.dict
        }
        return render(request, 'checkout/%s/checkout.html' % request.folder,
                      context)
Exemple #9
0
def show_checkout(request,
                  checkout_type,
                  template_name="checkout/checkout.html"):
    print(request.GET.copy())
    # request1 = locals()
    # print(request1)
    print('ian')
    print(request)
    if cart.is_empty(request):
        cart_url = reverse('show_cart')
        return HttpResponseRedirect(cart_url)
    if request.method == 'POST' and request.POST.copy(
    )['submit'] == "Mpesa Payment":
        postdata = request.POST.copy()
        form = MpesaCheckoutForm(postdata)
        if form.is_valid():
            response = mpesa_processor.process(request)
            order_number = response.get('order_number', 0)
            error_message = response.get('message', '')
            if order_number:
                request.session['order_number'] = order_number
                receipt_url = reverse('checkout_receipt')
                CART_ID_SESSION_KEY = cart.CART_ID_SESSION_KEY
                pending = PendingMpesa.objects.filter(
                    cart=request.session[CART_ID_SESSION_KEY])
                pending.delete()
                return HttpResponseRedirect(receipt_url)
        else:
            error_message = "Correct the errors below"
    if request.method == 'POST' and request.POST.copy(
    )['submit'] == "Place Order":
        postdata = request.POST.copy()
        form = CheckoutForm(postdata)
        if form.is_valid():
            response = checkout.process(request)
            order_number = response.get('order_number', 0)
            error_message = response.get('message', '')
            if order_number:
                request.session['order_number'] = order_number
                receipt_url = reverse('checkout_receipt')
                return HttpResponseRedirect(receipt_url)
        else:
            error_message = 'Correct the errors below'
    else:
        if request.user.is_authenticated:
            user_profile = profile.retrieve(request)
            form = CheckoutForm(instance=user_profile)
        else:
            form = CheckoutForm()
    page_title = 'Checkout'
    if request.method == 'POST' and checkout_type == "Lipa":
        postdata = request.POST.copy()
        form = MpesaCheckoutForm(postdata)
    if request.GET and checkout_type == "Lipa":
        form = MpesaCheckoutForm()
    checkout_type = checkout_type
    return render(request, template_name, locals(), RequestContext(request))
Exemple #10
0
    def post(self,request,*args,**kwargs):
        if request.user.is_admin:
            order = Order.objects.get(id=kwargs['id'])
        else:
            order = Order.objects.get(id=kwargs['id'],user=request.user)
        order = CheckoutForm(request.POST,instance=order)
        if order.is_valid():
            order.save()
            return JsonResponse({'result':1})

        return JsonResponse({'result':order.errors})
def order_complete(request):
    if request.method == 'POST':
        print("inside post")
        form = CheckoutForm(request.POST)
        if form.is_valid():
            print("form is valid")
            response = requests.post('http://localhost:8000/api/v1/checkout/', request.POST)
            print('response', response.text)
            if response.status_code != 200:
                return HttpResponse("Your order could not be submitted. Please try again.")
    template = loader.get_template('order_complete.html')
    return HttpResponse(template.render({"request": request}))
Exemple #12
0
def show_checkout(request, template_name="checkout/checkout.html"):
    if cart.is_empty(request):
        cart_url = reverse("cart:show_cart")
        return HttpResponseRedirect(cart_url)
    if request.method == "POST":
        postdata = request.POST.copy()
        form = CheckoutForm(postdata)
        if form.is_valid():
            response = checkout.process(request)
            order_number = response.get("order_number", 0)
            error_message = response.get("message", "")
            if order_number:
                request.session["order_number"] = order_number
                receipt_url = reverse("checkout:checkout_receipt")
                return HttpResponseRedirect(receipt_url)
        else:
            error_message = "Correct the errors below"
    else:
        if request.user.is_authenticated:
            user_profile = profile.retrieve(request)
            form = CheckoutForm(instance=user_profile)
        else:
            form = CheckoutForm()
    page_title = "Checkout"
    return render(request, template_name, locals())
Exemple #13
0
def show_checkout(request, template_name='checkout/checkout.djhtml'):
    if cart.is_empty(request):
        cart_url = urlresolvers.reverse('show_cart')
        return HttpResponseRedirect(cart_url)
    if request.method == 'POST':
        postdata = request.POST.copy()
        form = CheckoutForm(postdata)
        if form.is_valid():
            response = checkout.process(request)
            order_number = response.get('order_number', 0)
            error_message = response.get('message', '')
            if order_number:
                request.session['order_number'] = order_number
                receipt_url = urlresolvers.reverse('checkout_receipt')
                return HttpResponseRedirect(receipt_url)
        else:
            error_message = 'Correct the errors below'
    else:
        if request.user.is_authenticated():
            user_profile = profile.retrieve(request)
            form = CheckoutForm(instance=user_profile)
        else:
            form = CheckoutForm()
    page_title = 'Checkout'
    return render(request, template_name, locals())
Exemple #14
0
def show_checkout(request, template_name):
    """ checkout form page to collect user shipping and billing information """
    if cart.is_empty(request):
        cart_url = reverse('cart:show_cart')
        return HttpResponseRedirect(cart_url)

    if request.method == 'POST':
        postdata = request.POST.copy()
        form = CheckoutForm(postdata)
        if form.is_valid():
            response = checkout.process(request)
            order_number = response.get('order_number', 0)
            error_message = response.get('message', '')
            if order_number:
                request.session['order_number'] = order_number
                receipt_url = reverse('checkout:checkout_receipt')
                return HttpResponseRedirect(receipt_url)
        else:
            error_message = 'Please correct the errors below'
    else:
        if request.user.is_authenticated():
            user_p = profile.retrieve(request)
            form = CheckoutForm(instance=user_p)
        else:
            form = CheckoutForm()
    page_title = 'Checkout'

    return render(request, template_name, locals(),
                  RequestContext(request, processors=[context_processors]))
Exemple #15
0
def create_order(request):
    order = Order()
    checkout_form = CheckoutForm(request.POST, instance=order)
    order = checkout_form.save(commit=False)
    order.ip_address = request.META.get('REMOTE_ADDR')
    order.user = None
    if request.user.is_authenticated():
        order.user = request.user
    order.status = Order.SUBMITTED
    order.save()
    # if the order save succeeded
    if order.pk:
        cart_items = cart.get_cart_items(request)
        for ci in cart_items:
            # create order item for each cart item
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.product = ci.product
            oi.save()
        # all set, empty cart
        cart.empty_cart(request)
    # save profile info for future orders
    if request.user.is_authenticated():
        from accounts import profile
        profile.fill(request)
    # mail the managers
    mail_manager_subject = '{0} has been placed!'.format(order)
    mail_manager_message = '{0} has been placed by {1}.\n\nClick here: {2}'.format(
        order, order.user if order.user else 'anonymous',
        request.build_absolute_uri(
            reverse('admin:checkout_order_change', args=(order.pk, ))))
    mail_managers(mail_manager_subject, mail_manager_message)
    # mail the customer
    if order.email:
        # FIXME: someday make templates for these emails
        mail_customer_subject = 'Thank you for placing {0}!'.format(order.name)
        mail_customer_message = '{0} was placed by you.  Click here for more details: {1}\n\nThank you for your order!\n\n{2}'.format(
            order.name, request.build_absolute_uri(order.get_absolute_url()),
            settings.SITE_NAME)
        send_mail(mail_customer_subject, mail_customer_message,
                  settings.DEFAULT_FROM_EMAIL, [order.email])
    # return the new order object
    return order
Exemple #16
0
def create_order(request):
	order = Order()
	checkout_form = CheckoutForm(request.POST, instance=order)
	order = checkout_form.save(commit=False)
	order.user = None
	if request.user.is_authenticated():
		order.user = request.user
	order.status = Order.SUBMITTED
	order.save()
	order.number = int(str(order.id) + datetime.today().strftime('%m%d%Y'))
	order.save()
	# create order item for each cart item
	if order.pk:
		cart_items = carts.get_cart_items(request)
		for ci in cart_items: 
			oi = OrderItem()
			oi.order = order
			oi.quantity = ci.quantity

			if ci.product.quantity >= ci.quantity:
				ci.product.quantity = ci.product.quantity - ci.quantity
			else:
				ci.product.quantity = 0	
			ci.product.save()

			oi.price = ci.product.price
			oi.product = ci.product
			oi.save()
			carts.empty_cart(request)
	# send_mail('Subject here', 'Here is the message.', '*****@*****.**',
	# ['*****@*****.**'], fail_silently=False)
	items = OrderItem.objects.filter(order = order)
	plaintext = get_template('email.txt')
	htmly = get_template('email.html')
	d = Context({ 'order': order, 'items': items})
	subject, from_email, to = 'Ваш заказ', '*****@*****.**', [order.email]
	text_content = plaintext.render(d)
	html_content = htmly.render(d)
	msg = EmailMultiAlternatives(subject, text_content, from_email, to)
	msg.attach_alternative(html_content, "text/html")
	msg.send()
	print('sent!')
	return order
Exemple #17
0
    def post(self, request, *args, **kwargs):
        buyer = Buyer(request)
        cart = buyer.cart

        if not cart.items_qty:
            if request.LANGUAGE_CODE == 'ua':
                return redirect('/ua/')
            else:
                return redirect('/')

        form = CheckoutForm(request.POST)
        if form.is_valid():
            order = form.save(commit=False)
            data = form.cleaned_data

            order.cart = cart
            order.user, request = self.user(request, data)
            order.save()
            buyer.new()
            try:
                order.send_mail(language=request.LANGUAGE_CODE)
            except:
                pass
            try:
                OrderView.send_sms(order.phone, order.id)
            except Exception as e:
                print(e)

            messages.success(request, 'Ваш заказ успешно оформлен.')

            if request.user.is_authenticated:
                return redirect('/user/order/%s' % order.id)
            else:
                return redirect('/')

        context = {
            'cart': cart,
            'form': form,
            'title': _("Оформление заказа"),
            'view': 'Checkout'
        }
        return render(request, 'checkout/%s/checkout.html' % request.folder,
                      context)
def create_order(request, transaction_id):
    """
    if the POST to the payment gateway successfully billed the customer, create a new order
    containing each CartItem instance, save the order with the transaction ID from the gateway,
    and empty the shopping cart

    """
    order = Order()
    checkout_form = CheckoutForm(request.POST, instance=order)
    order = checkout_form.save(commit=False)

    order.transaction_id = transaction_id
    order.ip_address = request.META.get('REMOTE_ADDR')
    order.user = None
    if request.user.is_authenticated():
        order.user = request.user
    order.status = Order.SUBMITTED
    order.save()

    if order.pk:
        """ if the order save succeeded """
        cart_items = carts.get_cart_items(request)
        for ci in cart_items:
            """ create order item for each cart item """
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = ci.price  # now using @property
            oi.product = ci.product
            oi.save()
        # all set, clear the cart
        carts.empty_cart(request)

        # save profile info for future orders
        if request.user.is_authenticated():
            from accounts import profile
            profile.set(request)

    return order
Exemple #19
0
def checkout(request):
    carts = Cart.objects.all()
    price_details = get_price_details(carts)

    csrfContext = RequestContext(request)
    checkout_form = CheckoutForm()
    return render(
        request, 'checkout.html', {
            'form': checkout_form,
            "carts": carts,
            "request": request,
            "price_details": price_details
        }, csrfContext)
def create_order(request, transaction_id):
  """ if the POST to the payment gateway successfully billed the customer, create a new order
  containing each CartItem instance, save the order with the transaction ID from the gateway,
  and empty the shopping cart

  """
  order = Order()
  checkout_form = CheckoutForm(request.POST, instance=order)
  order = checkout_form.save(commit=False)

  order.transaction_id = transaction_id
  order.ip_address = request.META.get('REMOTE_ADDR')
  order.user = None
  if request.user.is_authenticated():
    order.user = request.user
  order.status = Order.SUBMITTED
  order.save()

  if order.pk:
    """ if the order save succeeded """
    cart_items = cart.get_cart_items(request)
    for ci in cart_items:
      """ create order item for each cart item """
      oi = OrderItem()
      oi.order = order
      oi.quantity = ci.quantity
      oi.price = ci.price  # now using @property
      oi.product = ci.product
      oi.save()
    # all set, clear the cart
    cart.empty_cart(request)

    # save profile info for future orders
    if request.user.is_authenticated():
      from ecomstore.accounts import profile
      profile.set(request)

  return order
Exemple #21
0
def create_order(request):
    order = Order()
    checkout_form = CheckoutForm(request.POST, instance=order)
    order = checkout_form.save(commit=False)
    order.ip_address = request.META.get('REMOTE_ADDR')
    order.user = None
    if request.user.is_authenticated():
        order.user = request.user
    order.status = Order.SUBMITTED
    order.save()
    # if the order save succeeded
    if order.pk:
        cart_items = cart.get_cart_items(request)
        for ci in cart_items:
            # create order item for each cart item
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.product = ci.product
            oi.save()
        # all set, empty cart
        cart.empty_cart(request)
    # save profile info for future orders
    if request.user.is_authenticated():
        from accounts import profile
        profile.fill(request)
    # mail the managers
    mail_manager_subject = '{0} has been placed!'.format(order)
    mail_manager_message = '{0} has been placed by {1}.\n\nClick here: {2}'.format(order, order.user if order.user else 'anonymous', request.build_absolute_uri(reverse('admin:checkout_order_change', args=(order.pk,))))
    mail_managers(mail_manager_subject, mail_manager_message)
    # mail the customer
    if order.email:
        # FIXME: someday make templates for these emails
        mail_customer_subject = 'Thank you for placing {0}!'.format(order.name)
        mail_customer_message = '{0} was placed by you.  Click here for more details: {1}\n\nThank you for your order!\n\n{2}'.format(order.name, request.build_absolute_uri(order.get_absolute_url()), settings.SITE_NAME)
        send_mail(mail_customer_subject, mail_customer_message, settings.DEFAULT_FROM_EMAIL, [order.email])
    # return the new order object
    return order
def checkout(request):
   carts = Cart.objects.all()
   price_details = get_cart_price_details(carts)
   if len(carts) < 1:
      return redirect('/cart')
   quantity=get_total_quantity_in_cart() 
   csrfContext = RequestContext(request)
   checkout_form = CheckoutForm()
   return render(request,'checkout.html',
      {
         "quantity":quantity,
         'form': checkout_form,
         "active_tab":"checkout",
         "request":request,
         "carts": carts,
         "price_details": price_details
      },
      csrfContext) 
Exemple #23
0
def checkoutpage(request):
    form = CheckoutForm()
    if request.method == 'POST':
        form = CheckoutForm(data=request.POST)
        if form.is_valid():
            order = form.save(commit=False)
            order.author = request.user
            order.completed = True
            order.save()
            OrderItem.objects.filter(author=request.user).update(
                order=order.id, completed=True)
            send_form(instance=order)
            return redirect('/az/')
    context = {'form': form}
    return render(request, 'checkout.html', context)
Exemple #24
0
    def get(self,request,*args,**kwargs):
        context = {
            'view':'Profile'
        }
        try:
            if request.user.is_admin:
                order = Order.objects.get(id=kwargs['id'])
            else:
                order = Order.objects.get(id=kwargs['id'],user=request.user)
            if order.status == 1 and order.payment_type == 2:
                if CHECKOUT_TYPE == 'wfp':
                    context['data'],context['signature'] = self.wfp(order)
                else:
                    context['data'],context['signature'] = self.liqpay(order)

            context['title'] = 'Заказ №%s' % order.id
            context['form'] = CheckoutForm(initial=order.__dict__)
            context['order'] = order
            context['CHECKOUT_TYPE'] = CHECKOUT_TYPE
        except Order.DoesNotExist:
            if 'order' in context:
                del context['order']
            context['title'] = _('Информации нет')
        return render(request, 'user/%s/order.html' % request.folder, context)
Exemple #25
0
def show_checkout(request,
                  checkout_type,
                  template_name="checkout/checkout.html"):
    # print(request.POST.copy())
    # request1 = locals()
    # print(request1)
    print('ian')
    print(request.method)
    error_message = ''
    if cart.is_empty(request):
        cart_url = reverse('show_cart')
        return HttpResponseRedirect(cart_url)
    if request.method == 'POST' and request.POST.copy()['payment'] == "Mpesa Payment" or request.method == 'POST' and\
            request.POST.copy()['phone2'] != '' and request.POST.copy()['credit_card_number'] == '' and\
            request.POST.copy()['credit_card_cvv'] == '':
        postdata = request.POST.copy()
        postdata['billing_name'] = postdata['shipping_name']
        postdata['billing_address_1'] = postdata['shipping_address_1']
        postdata['billing_address_2'] = postdata['shipping_address_2']
        postdata['billing_city'] = postdata['shipping_city']
        postdata['billing_zip'] = postdata['shipping_zip']
        postdata['billing_country'] = postdata['shipping_country']
        postdata['payment'] = postdata['payment']
        form = CheckoutForm(postdata)
        if form.is_valid():
            response = mpesa_processor.process(request)
            order_number = response.get('order_number', 0)
            error_message = response.get('message', '')
            if order_number:
                request.session['order_number'] = order_number
                receipt_url = reverse('checkout_receipt')
                CART_ID_SESSION_KEY = cart.CART_ID_SESSION_KEY
                pending = PendingMpesa.objects.filter(
                    cart=request.session[CART_ID_SESSION_KEY])
                if pending.count() == 1:
                    pending.delete()
                return HttpResponseRedirect(receipt_url)
        else:
            error_message = "Correct the errors below"
    if request.method == 'POST' and request.POST.copy()['payment'] == "Place Order" or request.method == 'POST' and\
            request.POST.copy()['credit_card_number'] != '' and request.POST.copy()['credit_card_cvv'] != '' and\
            request.POST.copy()['phone2'] == '':
        postdata = request.POST.copy()
        if 'billing' in request.POST.copy():
            if postdata['billing_name'] == '':
                error_message = 'Input billing name'
            if postdata['billing_address_1'] == '':
                error_message = 'Input billing address'
            if postdata['billing_city'] == '':
                error_message = 'Input billing city'
            if postdata['billing_zip'] == '':
                error_message = 'Input billing zip/postal code'
            if postdata['billing_country'] == '':
                error_message = 'Input billing country'
        if not 'billing' in request.POST.copy():
            postdata['billing_name'] = postdata['shipping_name']
            postdata['billing_address_1'] = postdata['shipping_address_1']
            postdata['billing_address_2'] = postdata['shipping_address_2']
            postdata['billing_city'] = postdata['shipping_city']
            postdata['billing_zip'] = postdata['shipping_zip']
            postdata['billing_country'] = postdata['shipping_country']
        form = CheckoutForm(postdata)
        # print(postdata)
        # print(form)
        # print("frm")
        if form.is_valid():
            response = checkout.process(request)
            order_number = response.get('order_number', 0)
            error_message = response.get('message', '')
            if order_number:
                request.session['order_number'] = order_number
                receipt_url = reverse('checkout_receipt')
                return HttpResponseRedirect(receipt_url)
        else:
            error_message = 'Correct the errors below'
    else:
        if request.user.is_authenticated:
            user_profile = profile.retrieve(request)
            form = CheckoutForm(instance=user_profile)
        else:
            form = CheckoutForm()
            """if request.method == 'GET' and checkout_type != 'Lipa' and checkout_type != 'PendingLipa':
                form = CheckoutForm(instance=user_profile)
            if request.method == 'POST' and checkout_type == "Lipa":
                postdata = request.POST.copy()
                form = MpesaCheckoutForm(postdata)
            if request.GET and checkout_type == "Lipa":
                form = MpesaCheckoutForm(instance=user_profile)
            if request.GET and checkout_type == "PendingLipa":
                form = MpesaCheckoutForm(instance=user_profile)"""

        if request.method == 'POST' and checkout_type == "Lipa":
            postdata = request.POST.copy()
            # print(postdata)
            form = CheckoutForm(postdata)
            # print(request.POST.copy()['payment'])
            if request.POST.copy()['payment'] == 'on' and postdata['phone2'] == '' and postdata['credit_card_number']\
                    == '' and postdata['credit_card_cvv'] == '':
                empty1 = 'Please select payment method'
                error_message = 'Correct the errors below'
            if request.POST.copy()['payment'] == 'on' and postdata['phone2'] != '' and postdata['credit_card_number']\
                    != '' or postdata['credit_card_cvv'] != '':
                empty1 = 'Please select payment method'
                error_message = 'Correct the errors below'
        if request.GET and checkout_type == "Lipa":
            form = CheckoutForm()
            """if request.method == 'POST' and checkout_type == "Lipa":
                postdata = request.POST.copy()
                form = MpesaCheckoutForm(postdata)
            if request.GET and checkout_type == "Lipa":
                form = MpesaCheckoutForm()
            if request.GET and checkout_type == "PendingLipa":
                form = MpesaCheckoutForm()"""
    page_title = 'Checkout'
    cart_items = cart.get_cart_items(request)
    cart_subtotal = cart.cart_subtotal(request)
    checkout_type = checkout_type
    return render(request, template_name, locals(), RequestContext(request))