Невозможно сохранить данные в таблице "Заказ оформлен" и удалить данные из таблицы "Корзина" после завершения оплаты

4

я использую веб интеграцию платежного шлюза razorpay для моего учебного проекта eccomerce все работает нормально оплата может быть произведена все что я хочу это сохранить данные корзины в таблице OrderPlaced и удалить данные корзины из таблицы Carts и перенаправить страницу на home после оплаты в моей модели заказа используя тестовый режим. Но в этом коде что-то не так после завершения оплаты Ничего не происходит никаких изменений ни в таблице Carts ни в таблице OrderPlaced. Это мой Checkout View для инициации платежа

class checkout(View):
    def get(self, request):
        user = request.user
        add = Customer.objects.filter(user=user)
        cart_items = Cart.objects.filter(user=user)
        famount = 0
        for p in cart_items:
            value = p.quantity*p.product.discounted_price
            famount = famount+value
        totalamount = famount+30
        razoramount = int(totalamount * 100)
        client = razorpay.Client(
            auth=(settings.RAZOR_KEY_ID, settings.RAZOR_KEY_SECRET))
        data = {"amount": razoramount, "currency": "INR",
                "receipt": "order_rcptid_12"}
        payment_response = client.order.create(data=data)
        print(payment_response)

        order_id = payment_response['id']
        order_status = payment_response['status']
        if order_status == 'created':
            payment = Payment(
                user=user,
                amount=totalamount,
                razorpay_order_id=order_id,
                razorpay_payment_status=order_status
            )
            payment.save()

        return render(request, 'app/checkout.html', locals())

А это мой вид paymentDone View здесь я пытаюсь сохранить все элементы корзины в таблице OrderPlace и удалить элемент из таблицы Cart...

def payment_done(request):
    order_id = request.GET.get('order_id')
    payment_id = request.GET.get('payment_id')
    cust_id = request.GET.get('cust_id')
    user = request.user
    customer = Customer.objects.get(id=cust_id)
    payment = Payment.objects.get(razorpay_order_id=order_id)
    payment.paid = True
    payment.razorpay_payment_id = payment_id
    payment.save()

    cart = Cart.objects.filter(user=user)
    for c in cart:
        OrderPlaced(user=user, customer=customer, product=c.product,
                    quantity=c.quantity, payment=payment).save()
        c.delete()
    return redirect("orders")

А это мои модели для вкладок оплаты, заказа и корзины...

class Cart(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    quantity = models.PositiveIntegerField(default=1)

    @property
    def total_cost(self):
        return self.quantity * self.product.discounted_price


class Payment(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    amount = models.FloatField()
    razorpay_order_id = models.CharField(max_length=100, blank=True, null=True)
    razorpay_payment_status = models.CharField(
        max_length=100, blank=True, null=True)
    razorpay_payment_id = models.CharField(
        max_length=100, blank=True, null=True)
    paid = models.BooleanField(default=False)


STATUS_CHOICES = (
    ('Accepted', 'Accepted'),
    ('Packed', 'Packed'),
    ('On The way', 'On The Way'),
    ('Delivered', 'Delivered'),
    ('Cancel', 'Cancel'),
    ('Pending', 'Pending'),
)


class OrderPlaced(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    quantity = models.PositiveIntegerField(default=1)
    ordered_date = models.DateTimeField(auto_now_add=True)
    status = models.CharField(
        max_length=50, choices=STATUS_CHOICES, default='Pending')
    payment = models.ForeignKey(Payment, on_delete=models.CASCADE, default="")

    @property
    def total_cost(self):
        return self.quantity*self.product.discounted_price

Any Idea What I am Doing worng??

я хочу сохранить данные корзины в таблице OrderPlaced и удалить данные корзины из таблицы Carts и перенаправить страницу на главную после оплаты в моей модели заказа, используя тестовый режим. этот код делает оплату успешно, но не имеет успеха в размещении заказа...

Вернуться на верх