Razorpay报错‘Amount exceeds maximum amount allowed’排查求助
解决Razorpay支付报错:Amount exceeds maximum amount allowed
问题核心
仅高金额支付触发该报错,低金额正常,说明问题出在金额限额校验或前后端金额一致性上,以下是具体原因和修复方案:
原因1:商户账户单笔支付限额不足
Razorpay会根据商户资质、风控等级设置单笔支付上限,新商户或免费账户的默认限额通常较低(比如单笔最高10000卢比,即1000000派萨),当订单金额超过该限额时会触发报错。
修复方案:
- 登录Razorpay商户后台,进入「设置>支付设置>限额」,查看当前单笔支付限额
- 若限额低于业务需求,提交限额提升申请(需提供商户资质、业务证明等材料)
原因2:前后端金额不匹配
Razorpay要求前端初始化支付的amount必须与后端创建订单时的amount完全一致(均为货币最小单位,INR为派萨),硬编码前端金额或前后端单位不一致都会触发校验失败。
看你的代码,前端硬编码了amount: 51000,但后续逻辑使用data.amount,存在不一致风险:
修复方案:
- 移除前端硬编码的金额,直接使用后端返回的
data.amount:var options = { key: 'API_KEY', amount: data.amount, // 替换硬编码的51000,用后端订单返回的金额 currency: 'INR', name: 'Phone Dekho', order_id: data.id, // ... 其他配置保持不变 }; - 检查后端创建订单的API,确保返回的
data.amount是最小单位的金额(比如510卢比对应51000派萨)
原因3:金额单位错误
若后端创建订单时误将卢比作为最小单位传入(比如想收510卢比,却传了510而非51000),前端再传入正确的派萨金额,会导致前后端金额不匹配,触发报错;反之若后端传的是放大100倍的金额,会直接超过账户限额。
修复方案:
- 统一前后端金额单位:后端创建订单时必须传入货币最小单位的金额(INR为派萨),前端直接复用该值,不做任何转换
额外排查建议
- 查看Razorpay商户后台的「交易日志」,找到报错订单的详细日志,可明确是账户限额问题还是金额不匹配问题
- 使用测试模式密钥测试高金额支付(测试模式限额更高),快速定位是账户配置问题还是代码问题
内容的提问来源于stack exchange,提问作者Azim Kazi
相关产品推荐
相关产品推荐

