Flutter集成Razorpay支付时金额超出上限错误求助
解决Razorpay支付报错「Amount exceeds maximum amount allowed」的方案
核心修复步骤
1. 修正金额参数类型
你的代码将amount参数转为字符串传入,但Razorpay要求该参数必须是整数数值类型,字符串类型会导致网关解析异常,触发超限报错。
修改lunchRazorPay方法中的options配置:
void lunchRazorPay() { int amountToPay = int.parse(amountController.text) * 100; var options = { 'key': "rzp_test_dLlOPoSwRLpQJE", 'amount': amountToPay, // 直接传入整数,无需转为字符串 'name': 'JMC', 'description': 'Donate', 'timeout': 300, 'prefill': {'contact': '', 'email': ''} }; try { _razorpay.open(options); } catch (e) { print(e); } }
2. 限制输入合法性
避免用户输入非整数金额导致计算错误,给TextField添加输入限制:
// 需先导入 import 'package:flutter/services.dart'; TextField( controller: amountController, keyboardType: TextInputType.number, inputFormatters: [FilteringTextInputFormatter.digitsOnly], decoration: const InputDecoration(hintText: "Enter your Amount"), )
额外排查项
- 登录Razorpay后台检查测试模式下的单笔交易限额,确认是否存在手动设置的金额上限。
- 确认账户默认货币与金额转换逻辑匹配(如印度卢比需转为派萨,乘以100为正确操作)。
内容的提问来源于stack exchange,提问作者Dhruv Mavani
相关产品推荐
相关产品推荐

