При оплате в razorpay появляется всплывающее окно "Недействительная сумма".

Ниже я прикрепил изображение, которое возникает, когда я нажимаю на Proceed To Pay. enter image description here

При создании заказа успешно создается 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>
Вернуться на верх