def checkout(request): if not request.user.is_authenticated: return redirect('login') else: try: if (request.user.is_superuser or request.user.swimmer.graduation_year is not None): if request.method == "POST": order_form = OrderForm(request.POST) payment_form = MakePaymentForm(request.POST) if order_form.is_valid() and payment_form.is_valid(): # Save The Order order = order_form.save(commit=False) order.date = timezone.now() order.save() # Save the Order Line Items cart = request.session.get('cart', {}) save_order_items(order, cart) # Charge the Card items_and_total = get_cart_items_and_total(cart) total = items_and_total['totals'] stripe_token = payment_form.cleaned_data['stripe_id'] try: customer = charge_card(stripe_token, total) except stripe.error.CardError: messages.error(request, "Your card was declined!") if customer.paid: messages.error(request, "You have successfully paid!") # Send confirmation email send_confirmation_email(request.user.email, request.user, items_and_total) # Clear the Cart del request.session['cart'] return redirect('get_products') else: order_form = OrderForm() payment_form = MakePaymentForm() context = {'order_form': order_form, 'payment_form': payment_form, 'publishable': settings.STRIPE_PUBLISHABLE} cart = request.session.get('cart', {}) cart_items_and_total = get_cart_items_and_total(cart) context.update(cart_items_and_total) except Swimmer.DoesNotExist: return HttpResponseForbidden() return render(request, "checkout/checkout.html", context)
def checkout(request): print("**** Enter checkout ***") print(request.method) if request.method == "POST": print("you are posting - great") # Save The Order order_form = OrderForm(request.POST) order = order_form.save(commit=False) order.date = timezone.now() order.user = request.user order.save() # Save the Order Line Items print("in the cart") cart = request.session.get('cart', {}) for id, quantity in cart.items(): service = get_object_or_404(Service, pk=id) order_line_item = OrderLineItem(order=order, service=service, quantity=quantity) order_line_item.save() print("did cart stuff") # Charge the Card payment_form = MakePaymentForm(request.POST) if payment_form.is_valid(): total = get_cart_items_and_total(cart)['total'] total_in_cent = int(total * 100) try: customer = stripe.Charge.create( amount=total_in_cent, currency="EUR", description="Website_Transaction", card=payment_form.cleaned_data['stripe_id'], ) if customer.paid: messages.error(request, "You have successfully paid") except stripe.error.CardError: messages.error(request, "Your card was declined!") #Clear the Cart del request.session['cart'] return redirect("profile") else: order_form = OrderForm() payment_form = MakePaymentForm() context = { 'order_form': order_form, 'payment_form': payment_form, 'publishable': settings.STRIPE_PUBLISHABLE_KEY } cart = request.session.get('cart', {}) cart_items_and_total = get_cart_items_and_total(cart) context.update(cart_items_and_total) return render(request, "checkout/checkout.html", context)
def checkout(request): if request.method == "POST": order_form = OrderForm(request.POST) payment_form = MakePaymentForm(request.POST) print(payment_form.errors) if order_form.is_valid() and payment_form.is_valid(): print("******ODER AND PAYMENT VALID") # Save The Order order = order_form.save(commit=False) order.date = timezone.now() order.save() # Save the Order Line Items cart = request.session.get('cart', {}) save_order_items(order, cart) # Charge the Card items_and_total = get_cart_items_and_total(cart) total = items_and_total['total'] stripe_token = payment_form.cleaned_data['stripe_id'] try: customer = charge_card(stripe_token, total) except stripe.error.CardError: messages.error(request, "Your card was declined!") if customer.paid: messages.error(request, "You have successfully paid.") # Send Email if request.user.is_authenticated: send_confirmation_email(request.user.email, request.user, items_and_total) else: messages.error( request, "Please register for easy shopping experience next time." ) #Clear the Cart del request.session['cart'] return redirect("/") else: order_form = OrderForm() payment_form = MakePaymentForm() context = { 'order_form': order_form, 'payment_form': payment_form, 'publishable': settings.STRIPE_PUBLISHABLE } cart = request.session.get('cart', {}) cart_items_and_total = get_cart_items_and_total(cart) context.update(cart_items_and_total) return render(request, "checkout/checkout.html", context)
def checkout(request): if request.method == "POST": order_form = OrderForm(request.POST) if order_form.is_valid() and request.POST['stripe_id']: # Save The Order # añadir cargar user id si lo hay order = order_form.save(commit=False) order.date = timezone.now() order.save() # Save the Order Line Items cart = request.session.get('cart', {}) save_order_items(order, cart) # Charge the Card items_and_total = get_cart_items_and_total(cart) total = items_and_total['total'] stripe_token = request.POST['stripe_id'] try: customer = charge_card(stripe_token, total) except stripe.error.CardError: messages.warning(request, "¡Pago no completado!") if customer['paid']: messages.success(request, "¡Pago realizado correctamente!") # Send Email send_confirmation_email(request.POST['email'], request.POST['full_name'], items_and_total) send_confirmation_email('*****@*****.**', request.POST['full_name'], items_and_total) #Clear the Cart del request.session['cart'] return redirect("home") else: # Si esta registrado pre rellenar if request.user.id: data = {'email': request.user.email, 'full_name': 'CXXX'} else: data = {} order_form = OrderForm(data) payment_form = MakePaymentForm() context = { 'order_form': order_form, 'payment_form': payment_form, 'publishable': settings.STRIPE_PUBLISHABLE } cart = request.session.get('cart', {}) cart_items_and_total = get_cart_items_and_total(cart) context.update(cart_items_and_total) return render(request, "checkout/checkout.html", context)
def checkout(request): if request.method == "POST": #save the order order_form = OrderForm(request.POST) order = order_form.save(commit=False) order.date = timezone.now() order.save() #save order line items cart = request.session.get('cart', {}) for id, quantity in cart.items(): product = get_object_or_404(Product, pk=id) order_line_item = OrderLineItem(order=order, product=product, quantity=quantity) order_line_item.save() #charge the card payment_form = MakePaymentForm(request.POST) if payment_form.is_valid(): total = get_cart_items_and_total(cart)['total'] total_in_cent = int(total * 100) try: customer = stripe.Charge.create( amount=total_in_cent, currency="EUR", description="Dummy Transaction", card=payment_form.cleaned_data['stripe_id'], ) except stripe.error.CardError: messages.error(request, "Your card was declined!") if customer.paid: messages.error(request, "You have successfully paid") #clear the cart del request.session['cart'] return redirect('home') else: order_form = OrderForm() payment_form = MakePaymentForm() context = { 'order_form': order_form, 'payment_form': payment_form, 'publishable': settings.STRIPE_PUBLISHABLE } cart = request.session.get('cart', {}) cart_items_and_total = get_cart_items_and_total(cart) context.update(cart_items_and_total) return render(request, "checkout/checkout.html", context)
def confirmation(request): if not request.session.get('payment-completed', False): return redirect("index") else: request.session['payment-completed'] = False cart = request.session.pop('cart', {}) cart_items_and_total = get_cart_items_and_total(cart) if cart_items_and_total['total'] == 0: return redirect("index") context = get_cart_items_and_total(cart) billing_details = Order.objects.latest('id') context.update({'billing_details': billing_details}) return render(request, "checkout/confirmation.html", context)
def go_to_checkout(request): if request.method == "POST": #pdb.set_trace() order_form = OrderForm(request.POST) payment_form = MakePaymentForm(request.POST) if order_form.is_valid(): # Save The Order order = order_form.save(commit=False) order.date = timezone.now() order.save() # Save the Order Line Items userid = request.user.id cart = request.session.get('cart', {}) save_order_items(userid, order, cart) # Charge the Card items_and_total = get_cart_items_and_total(cart) total = items_and_total['cart_total'] #stripe_token=payment_form.cleaned_data['stripe_id'] try: #customer = charge_card(stripe_token, total) complete = True except stripe.error.CardError: messages.error(request, "Your card was declined!") if complete: messages.success(request, "Thanks, will deliver ypu soon.") # Send Email # send_confirmation_email(request.user.email, request.user, items_and_total) #Clear the Cart del request.session['cart'] return redirect("home") else: order_form = OrderForm() #payment_form = MakePaymentForm() context = { 'order_form': order_form, 'publishable': settings.STRIPE_PUBLISHABLE } cart = request.session.get('cart', {}) cart_items_and_total = get_cart_items_and_total(cart) context.update(cart_items_and_total) return render(request, "checkout/checkout.html", context)
def checkout(request): if request.method == "POST": order_form = OrderForm(request.POST) payment_form = MakePaymentForm(request.POST) if order_form.is_valid() and payment_form.is_valid(): # Save The Order order = order_form.save(commit=False) order.date = timezone.now() order.save() # Save the Order Line Items cart = request.session.get('cart', {}) save_order_items(order, cart) # Charge the Card items_and_total = get_cart_items_and_total(cart) total = items_and_total['total'] stripe_token = payment_form.cleaned_data['stripe_id'] try: customer = charge_card(stripe_token, total) except stripe.error.CardError: messages.error(request, "Your card was declined!") if customer.paid: messages.error(request, "You have successfully paid") # Send Email customer_email = request.POST.get("email") full_name = request.POST.get("full_name") send_confirmation_email(customer_email, full_name, items_and_total) #Clear the Cart del request.session['cart'] return redirect("home") else: order_form = OrderForm() payment_form = MakePaymentForm() context = { 'order_form': order_form, 'payment_form': payment_form, 'publishable': settings.STRIPE_PUBLISHABLE } cart = request.session.get('cart', {}) cart_items_and_total = get_cart_items_and_total(cart) context.update(cart_items_and_total) return render(request, "checkout/checkout.html", context)
def view_cart(request): cart = request.session.get('cart', {}) discount = request.session.get('discount', 0) context = get_cart_items_and_total(cart, discount) return render(request, "cart/view_cart.html", context)
def view_cart(request): cart = request.session.get('cart', {}) cart_items = [] total = 0 for item_id, item_quantity in cart.items(): this_product = get_object_or_404(Product, pk=item_id) this_total = this_product.price * Decimal(item_quantity) total += this_total this_item = { 'product_id': item_id, 'image': this_product.image, 'name': this_product.name, 'quantity': item_quantity, 'price': this_product.price, 'total': this_total, } cart_items.append(this_item) args = {'cart_items': cart_items, 'total': total} return render(request, "cart/view_cart.html", args) context = get_cart_items_and_total(cart) return render(request, "cart/view_cart.html", context)
def view_cart(request): cart = request.session.get('cart', {}) print(cart) print(cart.items()) context = get_cart_items_and_total(cart) return render(request, 'cart/view_cart.html', context)
def apply_coupon(request): if request.method=='POST': form=CouponForm(request.POST) if form.is_valid(): if Coupon.objects.filter(code=request.POST['code']).exists(): cart = request.session.get('cart', {}) context = get_cart_items_and_total(cart) q=Coupon.objects.get(code=request.POST['code']) total=context['total'] total=Decimal(total-(total*(q.discount))).quantize(Decimal('.01')) cart_items = [] for item_id, item_quantity in cart.items(): this_product = get_object_or_404(Product, pk=item_id) this_total = this_product.price * Decimal(item_quantity) this_item = { 'product_id': item_id, 'image': this_product.image, 'name': this_product.name, 'quantity': item_quantity, 'price': this_product.price, 'total': this_total, } cart_items.append(this_item) request.session['cart'] = cart # coupon=form.save(commit=False) # coupon.save() return render(request,"cart/view_cart.html",{'cart_items': cart_items,'total': total}) else: form=CouponForm() return HttpResponse("cart/view_cart.html",{'form':form})
def checkout(request): if request.method == "POST": # Save The Order order_form = OrderForm(request.POST) order = order_form.save(commit=False) order.date = timezone.now() order.save() # Save the Order Line Items cart = request.session.get('cart', {}) for id, quantity in cart.items(): product = get_object_or_404(Product, pk=id) order_line_item = OrderLineItem(order=order, product=product, quantity=quantity) order_line_item.save() # Charge the Card #Clear the Cart del request.session['cart'] return redirect("home") else: order_form = OrderForm() payment_form = MakePaymentForm() context = { 'order_form': order_form, 'payment_form': payment_form, 'publishable': 'whatever' } cart = request.session.get('cart', {}) cart_items_and_total = get_cart_items_and_total(cart) context.update(cart_items_and_total) return render(request, "checkout/checkout.html", context)
def show_checkout(request): payment_form = PaymentForm() cart = request.session.get('cart', {}) context = get_cart_items_and_total(cart) context.update({ 'payment_form': payment_form, 'publishable': settings.STRIPE_PUBLISHABLE_KEY }) return render(request, "checkout/checkout.html", context)
def checkout(request): if request.method=="POST": order_form = OrderForm(request.POST) payment_form = MakePaymentForm(request.POST) if order_form.is_valid(): # and payment_form.is_valid() # Save The Order in the Order database and we keep it somewhere live # There are two tables : one with the order (Num / Who / Adress / Time ) # Another one with : each line is : pk / ordre number / product / qty order = order_form.save() cart = request.session.get('cart', {}) for product_id, quantity in cart.items(): line_item = OrderLineItem() line_item.order = order # IMPORTANT !! This is SQL (one field) - Here OOM is happening, that takes care of making the links line_item.product = get_object_or_404(Product, pk=product_id) line_item.quantity = quantity line_item.save() del request.session["cart"] return HttpResponse("That's a post") # Save the Order Line Items # cart = request.session.get('cart', {}) # save_order_items(order, cart) # # Charge the Card # items_and_total = get_cart_items_and_total(cart) # total = items_and_total['total'] # # stripe_token=payment_form.cleaned_data['stripe_id'] # try: # customer = charge_card(stripe_token, total) # except stripe.error.CardError: # messages.error(request, "Your card was declined!") # if customer.paid: # messages.error(request, "You have successfully paid") # # Send Email # send_confirmation_email(request.user.email, request.user, items_and_total) # #Clear the Cart # del request.session['cart'] # return redirect("home") else: order_form = OrderForm() payment_form = MakePaymentForm() context = {'order_form': order_form, 'payment_form': payment_form, "publishable": settings.STRIPE_PUBLISHABLE_KEY} cart = request.session.get('cart', {}) cart_items_and_total = get_cart_items_and_total(cart) context.update(cart_items_and_total) return render(request, "checkout/checkout.html", context)
def confirm_checkout(request): order_form = OrderForm(request.POST) payment_form = PaymentForm(request.POST) if order_form.is_valid() and payment_form.is_valid(): order = order_form.save() cart = request.session.get('cart', {}) for product_id, quantity in cart.items(): lineItem = OrderLineItem(order=order, quantity=quantity, product_id=product_id) lineItem.save() items_and_total = get_cart_items_and_total(cart) total = items_and_total['grand_total'] stripe_token = payment_form.cleaned_data['stripe_id'] charge = charge_card(total, stripe_token, request) if charge == None: return HttpResponse("Error creating charge") if charge.paid: messages.error(request, "You have successfully paid") del request.session['cart'] return redirect("home") else: return HttpResponse("Charge Not Paid") else: cart = request.session.get('cart', {}) context = get_cart_items_and_total(cart) context.update({'order_form': order_form}) return render(request, 'checkout/view_checkout.html', context)
def checkout(request): if request.method=="POST": order_form = OrderForm(request.POST) payment_form = MakePaymentForm(request.POST) if order_form.is_valid() and payment_form.is_valid(): order = order_form.save(commit=False) order.date = timezone.now() order.save() cart = request.session.get('cart', {}) for id, quantity in cart.items(): photo = get_object_or_404(Photo, pk=id) order_line_item = OrderLineItem( order = order, photo = photo, quantity = quantity ) order_line_item.save() items_and_total = get_cart_items_and_total(cart) total = items_and_total['total'] total_in_cent = int(total*100) try: customer = stripe.Charge.create( amount=total_in_cent, currency="EUR", description="Dummy Transaction", card=payment_form.cleaned_data['stripe_id'], ) except stripe.error.CardError: messages.error(request, "Your card was declined!") if customer.paid: messages.success(request, "You have successfully paid") context = { 'site_name': "Blah Blah dot com", 'user': request.user, } context.update(items_and_total) message = render_to_string('checkout/text_confirmation_email.html', context) html_message = render_to_string('checkout/html_confirmation_email.html', context) subject = 'Thanks for buying our stuff!' message = message from_email = settings.SYSTEM_EMAIL to_email = [request.user.email] send_mail(subject,message,from_email,to_email,fail_silently=True,html_message=html_message) del request.session['cart'] return redirect("photo_list") else: order_form = OrderForm() payment_form = MakePaymentForm() context = {'order_form': order_form, 'payment_form': payment_form, 'publishable': settings.STRIPE_PUBLISHABLE } cart = request.session.get('cart', {}) cart_items_and_total = get_cart_items_and_total(cart) context.update(cart_items_and_total) return render(request, "checkout/checkout.html", context)
def confirm_checkout(request): order_form = OrderForm(request.POST) payment_form = PaymentForm(request.POST) if order_form.is_valid() and payment_form.is_valid(): order = order_form.save(commit=False) if request.user.profile: order.profile = request.user.profile order.save() cart = request.session.get('cart', {}) for order_id, basket in cart.items(): line_item = OrderLineItem( order=order, product_id=basket['id'], quantity=basket['quantity'], weight=basket['weight'], ) line_item.save() items_and_total = get_cart_items_and_total(cart) total = items_and_total['total'] stripe_token = payment_form.cleaned_data['stripe_id'] total_in_cent = int(total * 100) try: charge = stripe.Charge.create( amount=total_in_cent, currency="EUR", description="Dummy Transaction", card=stripe_token, ) except: messages.error( request, "Unfortunately there was an ERROR Charging this Credit Card, please try again" ) return redirect('show_checkout') if charge.paid: messages.success(request, "Thank you, you have successfully paid") del request.session['cart'] return redirect("show_home") else: messages.error( request, "Unfortunately there was an ERROR Charging this Credit Card, please try again" ) return redirect('show_checkout') else: print(order_form.errors) cart = request.session.get('cart', {}) context = get_cart_items_and_total(cart) context.update({'form': form}) return render(request, "checkout/checkout.html", context)
def view_cart(request): cart = request.session.get('cart', {}) if not cart: return render(request, "cart/empty_cart.html") context = get_cart_items_and_total(cart) return render(request, "cart/view_cart.html", context)
def item_quantity(request): cart = request.session.get('cart', {}) context = get_cart_items_and_total(cart) return context