def add(request):
    basket = Basket(request)
    if request.POST.get("action") == "post":

        order_key = request.POST.get("order_key")
        user_id = request.user.id
        baskettotal = basket.get_total_price()

        # Check if order exists
        if Order.objects.filter(order_key=order_key).exists():
            pass
        else:
            order = Order.objects.create(
                user_id=user_id,
                full_name="name",
                address1="add1",
                address2="add2",
                total_paid=baskettotal,
                order_key=order_key,
            )
            order_id = order.pk

            for item in basket:
                OrderItem.objects.create(order_id=order_id,
                                         product=item["product"],
                                         price=item["price"],
                                         quantity=item["qty"])

        response = JsonResponse({"success": "Return something"})
        return response
Example #2
0
def payment_selection(request):
    if 'address' not in request.session:
        messages.success(request, 'Please select address option')
        return HttpResponseRedirect(request.META['HTTP_REFERER'])
    basket = Basket(request)
    total = basket.get_total_price()
    price = int(total)
    print(total)
    stripe.api_key = settings.STRIPE_SECRET_KEY
    intent = stripe.PaymentIntent.create(
        description='Software development services',
        shipping={
            'name': 'Jenny Rosen',
            'address': {
                'line1': '510 Townsend St',
                'postal_code': '98140',
                'city': 'San Francisco',
                'state': 'CA',
                'country': 'US',
            },
        },
        amount=price,
        currency='gbp',
        metadata={'userid': request.user.id})

    return render(
        request, 'checkout/payment_selection.html', {
            'client_secret': intent.client_secret,
            'STRIPE_PUBLISHABLE_KEY': os.environ.get('STRIPE_PUBLISHABLE_KEY')
        })
Example #3
0
def add(request):
    basket = Basket(request)
    if request.method == "POST":
        user_id = request.user.id
        order_key = request.POST['order_key']
        obj = basket.get_total_price()
        baskettotal = obj
        # check order is exist
        # print(baskettotal)
        if Order.objects.filter(order_key=order_key).exists():
            pass
        else:
            order = Order.objects.create(user_id=user_id,
                                         full_name='name',
                                         address1='add1',
                                         address2='add2',
                                         total_paid=baskettotal,
                                         order_key=order_key)
            order_id = order.pk
            for item in basket:
                OrderItem.objects.create(order_id=order_id,
                                         product=item['product'],
                                         price=item['price'],
                                         quantity=item['quantity'])
        response = JsonResponse({'success': 'success'})
        return response
Example #4
0
def basket_update_delivery(request):
    basket = Basket(request)
    if request.POST.get('action') == 'post':
        delivery_option = int(request.POST.get("deliveryoption"))
        delivery_type = DeliveryOptions.objects.get(id=delivery_option)
        update_total_price = basket.basket_update_delivery(
            delivery_type.delivery_price)
        session = request.session
        if "purchase" not in request.session:
            session['purchase'] = {"delivery_id": delivery_type.id}
        else:
            session['purchase']['delivery_id'] = delivery_type.id
            session.modified = True
        response = JsonResponse({
            "total": update_total_price,
            "delivery_price": delivery_type.delivery_price
        })
        return response
    return render(request, 'checkout/delivery_choices.html')
Example #5
0
def basket_update_delivery(request):
    basket = Basket(request)
    if request.POST.get('action') == 'post':
        delivery_option = int(request.POST.get('deliveryoption'))
        delivery_type = DeliveryOptions.objects.get(id=delivery_option)
        updated_total_price = basket.basket_update_delivery(
            delivery_type.delivery_price)

        session = request.session
        if 'purchase' not in request.session:
            session['purchase'] = {'delivery_id': delivery_type.id}
        else:
            session['purchase']['delivery_id'] = delivery_type.id
            session.modified = True

        response = JsonResponse({
            'total': updated_total_price,
            'delivery_price': delivery_type.delivery_price
        })
        return response
Example #6
0
def basket_update_delivery(request):
    basket = Basket(request)
    if request.POST.get("action") == "post":
        delivery_option = int(request.POST.get("deliveryoption"))
        delivery_type = DeliveryOptions.objects.get(id=delivery_option)
        updated_total_price = basket.basket_update_delivery(
            delivery_type.delivery_price)

        session = request.session
        if "purchase" not in request.session:
            session["purchase"] = {
                "delivery_id": delivery_type.id,
            }
        else:
            session["purchase"]["delivery_id"] = delivery_type.id
            session.modified = True

        response = JsonResponse({
            "total": updated_total_price,
            "delivery_price": delivery_type.delivery_price
        })
        return response
Example #7
0
def payment_complete(request):
    PPClient = PayPalClient()

    body = json.loads(request.body)
    data = body["orderID"]
    user_id = request.user.id

    requestorder = OrdersGetRequest(data)
    response = PPClient.client.execute(requestorder)

    total_paid = response.result.purchase_units[0].amount.value

    basket = Basket(request)
    order = Order.objects.create(
        user_id=user_id,
        full_name=response.result.purchase_units[0].shipping.name.full_name,
        email=response.result.payer.email_address,
        address1=response.result.purchase_units[0].shipping.address.
        address_line_1,
        address2=response.result.purchase_units[0].shipping.address.
        admin_area_2,
        postal_code=response.result.purchase_units[0].shipping.address.
        postal_code,
        country_code=response.result.purchase_units[0].shipping.address.
        country_code,
        total_paid=response.result.purchase_units[0].amount.value,
        order_key=response.result.id,
        payment_option="paypal",
        billing_status=True,
    )
    order_id = order.pk

    for item in basket:
        OrderItem.objects.create(order_id=order_id,
                                 product=item["product"],
                                 price=item["price"],
                                 quantity=item["qty"])

    return JsonResponse("Payment completed!", safe=False)
Example #8
0
def order_place(request):
    basket = Basket(request)
    basket.clear()
    return render(request, 'checkout/orderplaced.html')
Example #9
0
def payment_successful(request):
    basket = Basket(request)
    basket.clear()
    return render(request, "checkout/payment_successful.html", {})
Example #10
0
def payment_successful(request):
    basket = Basket(request)
    basket.clear()  # address is missing from the session?!
    return render(request, "checkout/payment_successful.html", {})