Django集成Razorpay:支付成功后自定义跳转URL配置方法
修改Django中Razorpay支付成功后的跳转URL
我来帮你搞定这个问题!在Django里调整Razorpay支付成功后的跳转目标,主要看你采用的集成方式,下面分两种最常见的场景说明:
场景1:前端用Razorpay JS SDK调起支付
如果你的前端是直接通过Razorpay的JavaScript弹窗发起支付,那跳转逻辑完全在前端的handler函数里控制。找到你初始化Razorpay的代码块,修改handler里的跳转地址就行:
var options = { "key": "YOUR_KEY_ID", "amount": "50000", // 注意:金额是最小货币单位(比如印度卢比的派萨) "currency": "INR", "name": "你的店铺名称", "description": "测试交易", "order_id": "order_xxxxxx", // 后端生成的订单ID "handler": function (response){ // 把原来的"/purchase"换成你的自定义URL window.location.href = "/payment-success"; // 如果是外部域名,直接写完整路径:window.location.href = "https://your-domain.com/success" }, "prefill": { "name": "测试用户", "email": "test@example.com", "contact": "1234567890" }, "theme": { "color": "#3399cc" } }; var rzp1 = new Razorpay(options); rzp1.open();
重点就是修改handler函数里的window.location.href值,换成你想要的目标路径。
场景2:后端接收Webhook回调后控制跳转
如果你的项目是通过后端接收Razorpay的支付成功回调(Webhook),然后在回调视图里做重定向,那只需要修改视图中的redirect参数:
from django.shortcuts import redirect from django.http import HttpResponseBadRequest from razorpay import Client def razorpay_webhook(request): # 第一步:验证Razorpay的回调签名(必须做,防止伪造请求) client = Client(auth=("YOUR_KEY_ID", "YOUR_KEY_SECRET")) webhook_secret = "YOUR_WEBHOOK_SECRET" signature = request.headers.get('X-Razorpay-Signature') try: client.utility.verify_webhook_signature( request.body, signature, webhook_secret ) except Exception as e: return HttpResponseBadRequest() # 第二步:处理支付成功后的业务逻辑(比如更新订单状态、生成凭证) payment_id = request.POST.get('payment_id') order_id = request.POST.get('order_id') # ... 这里写你的业务代码 ... # 第三步:修改重定向目标为自定义URL # 原来的:return redirect('/purchase') return redirect('/your-custom-success-page')
要是需要跳转到外部域名,直接传递完整URL即可,比如return redirect('https://your-external-domain.com/payment-completed')。
额外提示
如果你用了第三方Django Razorpay集成库(比如django-razorpay),通常可以在settings.py里直接配置成功跳转URL:
RAZORPAY_SUCCESS_URL = '/your-custom-success-page'
具体可以参考你所用库的文档,但核心都是找到配置跳转地址的地方修改就行。另外要确保你的自定义URL对应的Django视图已经配置好路由,并且有权限访问哦。
内容的提问来源于stack exchange,提问作者user7104029
相关产品推荐
相关产品推荐

