Невозможно сохранить данные в таблице "Заказ оформлен" и удалить данные из таблицы "Корзина" после завершения оплаты
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 и перенаправить страницу на главную после оплаты в моей модели заказа, используя тестовый режим. этот код делает оплату успешно, но не имеет успеха в размещении заказа...