Итак, по сути, открывается всплывающее окно 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, чтобы проверить, работает ли это, но платеж не прошел.
Спасибо!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Насколько мне известно, тег шаблона {% url 'PaymentSuccess' %} в Django генерирует относительный URL-адрес, а в callback_url Razor Pay вам нужен абсолютный URL-адрес, примерно такой URL-адрес (измените в соответствии с вашей конфигурацией) «http://127.0.0.1:8000/razorpay/ успех/".
Итак, во-первых, попробуйте, предоставив статический абсолютный URL-адрес ("callback_url": "http://127.0.0.1:8000/razorpay/success/") и проверьте процесс оплаты, работает ли он так, как вы ожидали. Если он работает, вы можете создать динамический callback_url.
ваши взгляды должны выглядеть примерно так:
Также убедитесь, что вы обработали метод запроса POST. поскольку URL-адрес обратного вызова Razor Pay имеет метод и параметры, как показано в документации (https://razorpay.com/docs/pays/pay-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")
Не могли бы вы поделиться своим urls.py-кодом для PaymentSuccess URL?
путь('успех платежа/',views.CallBackUrl, name='PaymentSuccess')
Вы добавили опцию redirect, как показано в документации, а также передали абсолютный URL-адрес?
Я написал вопрос, попробовал добавить, но после выбора любого типа выяснилось, что оплата не удалась.
да, но вы тогда еще не передали абсолютный URL, верно? Я говорю, что попробуйте оба параметра (перенаправление и абсолютный URL), также я обновил ответ, просто проверьте, что ваши параметры и представление выглядят так.
Давайте продолжим обсуждение в чате.
Оставив всё... ЭТО РАБОТАЕТ! Спасибо!
Ничего не изменилось... все по-прежнему, братан.