Razor Pay Not Calling CallBack URL Python Django

В общем, всплывающее окно razorpay открывается, платеж проходит успешно, но url обратного вызова не происходит:

               var options = {
                    "key": data.razorpay_key,
                    "amount": data.amount,
                    "currency": data.currency,
                    "name": "BusinessCard4U",
                    "image": "{{websitelogo.image.url}}",
                    "description": "Payment for digital card subscription",
                    "order_id": data.razorpay_order_id,
                    "callback_url": "{% url 'PaymentSuccess' %}",
                    "handler": function (response){
                        // Handle Razorpay success callback
                    },
                    "theme": {
                        "color": "#5EB9F0"
                    },
                };

Это данные, которые я передаю... в них есть url обратного вызова, как вы можете видеть... но ничего не выводится и не вызывается. Я попробовал использовать переменную redirect: true, чтобы проверить, работает ли это, но в результате платеж не прошел.

Спасибо!

Насколько я знаю, тег шаблона {% url 'PaymentSuccess' %} в Django генерирует относительный URL, а в callback_url в Razor Pay нужен абсолютный URL, URL примерно такой (измените в соответствии с вашей конфигурацией) "http://127.0.0.1:8000/razorpay/success/".

Итак, сначала попробуйте, предоставив статический абсолютный URL ("callback_url": "http://127.0.0.1:8000/razorpay/success/") и протестируйте процесс оплаты, работает ли он так, как вы ожидали Если он работает, вы можете создать динамический callback_url.

Ваши представления должны выглядеть примерно так:

Также убедитесь, что вы обработали метод POST-запроса. поскольку URL-адрес обратного вызова Razor Pay имеет свой метод и параметры, как показано в документации (https://razorpay.com/docs/payments/payment-gateway/callback-url/)

попробуйте, как показано ниже:

var options = {
  ... // existing options
  callback_url: 'http://127.0.0.1:8000/payment-success/' // adjust URL as per your configuration,
  redirect: true
}

Проверьте, что ваш вид чем-то похож.

@csrf_exempt
def callback(request):
    if "razorpay_signature" in request.POST:
        # If payment is successful
        payment_id = request.POST.get("razorpay_payment_id", "")
        provider_order_id = request.POST.get("razorpay_order_id", "")
        signature_id = request.POST.get("razorpay_signature", "")
        
        # your further code
        return render("#your page redirect") 
    else:
        payment_id = json.loads(request.POST.get("error[metadata]")).get("payment_id")
        
        # your further code
        return render("#your page redirect")
Вернуться на верх