React Native集成PayTM AllInOneSDK iOS端Promise未决议未拒绝问题
PayTM AllInOneSDK Promise无响应问题排查(RN 74.5 + SDK 1.2.2 + Xcode15.0)
针对你遇到的AllInOneSDKManager.startTransaction()返回的Promise多数情况下既不resolve也不reject、偶尔才能正常启动PayTM的问题,可按以下步骤排查:
1. 适配Xcode15环境
Xcode15对iOS原生API有较多调整,旧版本SDK可能存在兼容性问题:
- 调整项目的iOS Deployment Target:在Xcode中打开项目,将目标iOS版本设置为SDK要求的最低版本(建议iOS12.0及以上)
- 关闭Bitcode:在Build Settings中找到
Enable Bitcode,设置为NO(部分旧SDK不支持Bitcode) - 清理构建缓存:执行
Command+Shift+K清理当前构建,再删除Derived Data(路径:Xcode → Settings → Locations → Derived Data)
2. 严格校验参数合法性
参数的隐性错误可能导致SDK无响应:
- 确保
CALLBACK_URL为可访问的HTTPS地址,PayTM对回调地址的有效性要求严格,本地测试需用ngrok等工具提供公网可访问的地址 - 检查
txnToken的有效期,调用startTransaction时token必须未过期 - 验证最后一个参数(商户名称)格式,避免包含特殊字符或过长内容
3. 查看原生层日志
RN Promise无响应通常源于原生模块未正确触发resolve/reject,需通过Xcode查看原生日志:
- 在Xcode中运行项目,打开Console面板,过滤PayTM相关日志(搜索"PayTM"或"AllInOneSDK"),排查是否有未捕获的异常或错误信息
4. 优化Promise错误捕获逻辑
尝试改用async/await + try-catch的方式,可能捕获到链式调用中遗漏的异常:
const handlePaytmPayment = async () => { try { const result = await AllInOneSDKManager.startTransaction( data.ORDER_ID, data.MID, txnToken, data.TXN_AMOUNT, data.CALLBACK_URL, false, true, "paytm" + data.MID ); console.log('paytmPayment result:', result); } catch (err) { console.error('PayTM支付错误:', err); } };
5. 调整SDK或RN版本
当前版本组合可能存在兼容性冲突:
- 升级
paytm_allinonesdk_react-native至最新版本,确认官方是否已适配Xcode15和RN74.x - 若升级无效,可尝试降级RN至73.x版本,验证是否为RN74的兼容性问题
内容的提问来源于stack exchange,提问作者user
相关产品推荐
相关产品推荐

