Flutter集成Razorpay运行正常但无法唤起设备UPI应用如何解决
排查与修复步骤
1. Android端配置检查
- 首先确认
android/app/src/main/AndroidManifest.xml中已经添加UPI应用查询的权限声明,Android 11及以上版本强制要求应用可见性配置,缺少该配置会无法识别已安装的UPI应用,需要添加的代码如下:
<queries> <package android:name="net.one97.paytm" /> <package android:name="com.google.android.apps.nbu.paisa.user" /> <package android:name="com.phonepe.app" /> <package android:name="in.org.npci.upiapp" /> <!-- 可补充其他需要支持的UPI应用包名 --> <intent> <action android:name="android.intent.action.VIEW" /> <data android:scheme="upi" /> </intent> </queries>
- 检查Razorpay初始化参数中是否开启了UPI intent调用,确保
upi_intent参数设置为true - 确认测试设备的UPI应用已经完成实名认证、绑定了有效银行卡,处于可正常使用的状态
2. iOS端配置检查
- 首先在
ios/Runner/Info.plist中添加UPI应用的LSApplicationQueriesSchemes白名单配置,缺少该配置会无法唤起已安装的UPI应用,需要添加的代码如下:
<key>LSApplicationQueriesSchemes</key> <array> <string>paytm</string> <string>gpay</string> <string>phonepe</string> <string>upi</string> <!-- 补充其他需要支持的UPI应用的scheme --> </array>
- 确认Razorpay初始化时的参数中
upi_apps配置正确,没有过滤掉需要支持的UPI应用 - 检查iOS系统版本是否在支持范围内,Razorpay UPI唤起功能仅支持iOS 13及以上版本
3. 通用配置检查
- 确认你集成的
razorpay_flutter包是最新稳定版本,旧版本存在已知的UPI唤起异常问题 - 检查支付请求参数中是否传递了正确的
amount、currency等必填字段,字段错误会导致Razorpay SDK跳过UPI应用唤起逻辑 - 测试时不要使用代理或者VPN工具,部分代理会拦截UPI的唤起请求
内容的提问来源于stack exchange,提问作者jhonney
相关产品推荐
相关产品推荐

