Razorpay回调URL异常:无法获取关键参数及请求方式不符问题
Razorpay回调URL故障排查与修复方案
问题1:服务器收到GET请求,签名验证需POST请求
- 检查Razorpay后台配置:确保Webhook或订单回调的请求方法设置为POST(Razorpay默认用POST,若手动修改过需改回)。
- 修正后端路由逻辑:你的回调端点必须允许POST方法访问。比如用Express框架时,要写
app.post('/razorpay-webhook', ...)而非app.get。 - 核对订单创建代码:如果创建订单时通过API指定了回调方法,确认
callback_method参数值为post,不要误设为get。
问题2:HTTP URL无法正常生效
- 生产环境必须用HTTPS:Razorpay已强制要求生产环境回调URL为HTTPS,HTTP地址会被直接拒绝,需为服务器配置SSL证书并替换为HTTPS格式的URL。
- 本地测试用HTTPS隧道:开发阶段可借助ngrok等工具生成HTTPS隧道,映射本地HTTP服务,将隧道提供的HTTPS URL填入Razorpay测试环境的回调配置。
问题3:req.body为空,无法获取razorpay_order_id等参数
- 配置表单数据解析中间件:Razorpay回调发送的是
x-www-form-urlencoded格式请求体,后端必须适配解析。比如Express框架需添加:
仅用app.use(express.urlencoded({ extended: true }));express.json()无法解析表单格式数据,会导致req.body为空。 - 排查中间件干扰:检查回调端点前的限流、认证类中间件,是否存在修改或清空
req.body的逻辑,可暂时禁用这类中间件测试。 - 避免重定向问题:确认回调URL未被服务器重定向(比如HTTP自动转HTTPS配置不当),重定向会将POST转为GET,同时丢失请求体数据。
内容的提问来源于stack exchange,提问作者Jagrit Joshi
相关产品推荐
相关产品推荐

