Razorpay支付二维码跳转结账页仅返回{}问题求助
Razorpay订单链接返回{}无结账界面问题排查与修复
核心问题
你用订单ID拼接的https://rzp.io/i/${order.id}是错误的——这个路径是Razorpay**支付链接(Payment Link)**的访问地址,只能用支付链接的专属ID访问,直接用订单ID打开就会返回空对象{},自然看不到结账界面,支付流程也会异常。
修复步骤
- 替换原有逻辑:不要创建订单后硬拼链接,直接调用Razorpay的支付链接API生成合法的支付链接
- 用支付链接的官方短地址生成二维码,用户扫码后就能正常打开结账页
修改后的代码示例:
try { // 直接创建Razorpay支付链接,而非普通订单 const paymentLink = await razorpay.paymentLink.create({ amount: amount * 100, currency: 'INR', description: '订单支付', customer: { // 可选:传入用户信息,优化结账体验 name: '用户姓名', email: 'user@example.com' }, notify: { sms: true, email: true }, reminder_enable: true, // 可选:关联自定义订单标识,方便后续查询 notes: { order_receipt: `receipt_order_${Date.now()}` } }); // 用支付链接的官方短地址生成二维码 const qrCodeData = await QRCode.toDataURL(paymentLink.short_url); // 保存交易记录到MongoDB const transaction = new Transaction({ paymentLinkId: paymentLink.id, orderReceipt: `receipt_order_${Date.now()}`, amount, currency: 'INR', status: 'created', paymentUrl: paymentLink.short_url }); await transaction.save(); res.json({ success: true, qr_code_url: qrCodeData, payment_link_id: paymentLink.id, payment_url: paymentLink.short_url }); } catch (error) { res.status(500).json({ success: false, message: error.message }); }
额外注意事项
- 确保你的Razorpay账号已开启支付链接功能(默认账号均支持)
- 在Razorpay后台配置支付链接的成功/失败回调地址,支付完成后能正确跳转或接收通知,避免返回异常
- 如果需要关联自有系统的订单管理,可以在支付链接的
notes字段中传入自定义订单标识,后续通过Razorpay API查询时能快速关联
内容的提问来源于stack exchange,提问作者priyanshu
相关产品推荐
相关产品推荐

