Flutter集成Razorpay时结算页、支付操作触发JS日志错误求助
排查解决方案
一、结算页JS语法错误修复
- 校验初始化配置:检查传入Razorpay的options参数格式,确保
amount为整数类型(单位为最小货币单位,如人民币分、印度卢比派士),无特殊转义字符、未闭合引号等非法内容,必填字段key、currency、name取值均合法。 - 清理编译缓存:依次执行
flutter clean、删除Android项目根目录下的.gradle缓存文件夹,再重新打包运行,避免缓存的旧版JS资源引发语法异常。 - 验证WebView兼容性:如果测试设备为Android 7及以下系统,需升级系统WebView内核,或更换Android 8及以上版本的设备测试,老旧WebView内核不兼容Razorpay新版JS SDK会触发该报错。
二、支付阶段报错修复
- 补充OTP相关权限:在Android项目的
AndroidManifest.xml中<manifest>标签下添加如下权限:
<uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.READ_SMS" />
- 禁用自动OTP读取功能:初始化支付配置时,在options参数中加入
"send_sms_hash": false,关闭SDK自带的自动填OTP逻辑,从根源避免otpPermissionCallback未定义和广播泄露问题。 - 正确销毁SDK实例:在调用支付的页面
dispose生命周期方法中执行razorpay.clear(),释放SDK占用的资源,解决广播接收器泄露报错。
三、版本兼容修复
- 降级SDK版本:razorpay_flutter 1.2.6、1.2.7存在已知的Android端JS桥接兼容问题,可将依赖版本降级为
razorpay_flutter: 1.2.5后重新拉取依赖测试。 - 升级编译配置:将Android项目的
compileSdkVersion升级到31及以上,匹配Razorpay 1.2.x版本的最低编译要求。
内容的提问来源于stack exchange,提问作者Harsh Bhalala
相关产品推荐
相关产品推荐

