Я получаю ошибку значения при получении значения идентификатора клиента из запроса в ссылке, которая находится в файле кассы. Я использую платежный шлюз razorpay.
Я использую фреймворк django и получаю ошибку значения при использовании платежного шлюза razorpay введите описание изображения здесь
**Это модели **
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)
class OrderPlaced(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE)
#cid = models.ForeignKey(Payment,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.DateField(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
Это html-код
Это функции просмотра
class checkout(View):
def get(self,request):
user = request.user
add = Customer.objects.filter(user=user)
cart_items = Cart.objects.filter(user=user)
amount=0
for p in cart_items:
value = p.quantity*p.product.discounted_price
amount = amount + value
totalamount = amount + 40
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_capture': 1 }
payment_response = client.order.create(data=data)
print(payment_response)
order_id = payment_response['id']
order_status = payment_response['status']
print(order_id)
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())
def payment_done(request):
order_id = request.GET.get('order_id')
payment_id = request.GET.get('payment_id')
cust_id = str(request.GET.get('cust_id'))
user = request.user
print("pid=",payment_id,"oid=",order_id)
#Payment.objects.create(razorpay_order_id=order_id, razorpay_payment_id=payment_id, cust_id=cust_id)
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
cart = Cart.objects.filter(user=user)
payment.save()
for c in cart:
OrderPlaced(user=user,customer=customer,product=c.product,quantity=c.quantity,payment=payment).save()
c.delete()
return redirect('orders')
Я хочу гвитировать id заказа cust_id id платежа и т.д. из метода get и сохранять в базе данных после завершения оплаты
Пожалуйста, помогите мне решить эту ошибку