При оплате в razorpay появляется всплывающее окно "Недействительная сумма".
Ниже я прикрепил изображение, которое возникает, когда я нажимаю на Proceed To Pay.
При создании заказа успешно создается razorpay_order_id и также печатается order_amount, но эта сумма не передается на шлюз. Если не был создан новый razorpay_order_id, то будет создан razorpay_order_id и выведены значения order (т.е. username), order_id, x и order_amount, в противном случае выводится только значение order и выполняется блок else. Но после выполнения любого из блоков сумма_заказа не передается в процесс оплаты razorpay.
Ниже приведен код python для интеграции Razorpay:
Views.py-
@login_required
def payment(request):
add = Address.objects.filter(default=True)
order = Order.objects.filter(user=request.user).first()
print(order)
client = razorpay.Client(auth=("ABC", "XYZ"))
# Creating a Razorpay order if no order_id has been created
if order.razorpay_order_id is None:
order_id = order.order_id
print(order_id) #prints the order_id
x = order.get_total()
print(x) #prints the total amount
order_amount = int(x * 100)
print(order_amount) #prints the total amount in paise
order_currency = 'INR'
order_receipt = 'Rcpt'
notes = {'Shipping address': 'LMN, OPQ'} # OPTIONAL
# data = {"amount": order_amount, "currency": order_currency, "receipt": order_receipt, "payment_capture": '1', "notes": notes}
# razorpay_order = client.order.create(data)
razorpay_order = client.order.create(amount=order_amount, currency=order_currency, receipt=order_receipt, payment_capture=1, notes=notes)
# Razorpay order inserted into database Order
order.razorpay_order_id = razorpay_order["id"]
order.save()
else:
# Fetching a Razorpay Order, if the order_id has already been created
razorpay_order = client.order.fetch(order.razorpay_order_id)
return render(request, 'payment.html', {'razorpay_order': razorpay_order, 'add': add})
HTML код-
<center>
<form action="/payment/" method="POST">{% csrf_token %}
<button class="btn btn-primary" id="rzp-button1" type="submit">Proceed to Payment</button>
</form>
</center>
</div>
<script src="https://checkout.razorpay.com/v1/checkout.js"></script>
<script>
var options = {
"key": "ABC",
"amount": "{{ razorpay_order.order_amount }}",
"currency": "INR",
"name": "XYZ",
"description": "Test Transaction",
"image": "/static/img/logo.png",
"order_id": "{{ razorpay_order_id }}",
"handler": function (response){
alert(response.razorpay_payment_id);
alert(response.razorpay_order_id);
alert(response.razorpay_signature)
},
"theme": {
"color": "#3399cc"
}
};
var rzp1 = new Razorpay(options);
rzp1.on('payment.failed', function (response){
alert(response.error.code);
alert(response.error.description);
alert(response.error.source);
alert(response.error.step);
alert(response.error.reason);
alert(response.error.metadata.order_id);
alert(response.error.metadata.payment_id);
});
document.getElementById('rzp-button1').onclick = function(e){
rzp1.open();
e.preventDefault();
}
</script>