You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native集成Paytm支付成功后.then(result)代码块不执行问题求助

问题排查与修复方案

1. 修复then回调内的语法问题

你当前startTransaction的then回调中第一行仅定义了匿名箭头函数未执行,虽然不影响后续代码逻辑,但建议修正为直接打印日志:

// 原错误写法
.then((result) => {
  () => console.log(result); 
  this.props.navigation.navigate("MyDrawerRP");
})

// 修正后
.then((result) => {
  console.log(result); 
  //AsyncStorage.setItem("is_payment_done", "Y");
  this.props.navigation.navigate("MyDrawerRP");
})

2. 修复异步setState的时序问题

setState是异步API,你连续两次调用setState后立刻执行handleTransaction,可能出现state还未更新就传参给Paytm SDK的情况,建议合并setState操作,在回调中触发交易,确保参数正确:

// 原写法
this.setState({ order_id: response[0].data.order_id });
this.setState({ tranxToken: response[0].data.txnToken });
this.handleTransaction();

// 修正后
this.setState({
  order_id: response[0].data.order_id,
  tranxToken: response[0].data.txnToken
}, () => this.handleTransaction());

3. 修复回调地址响应格式问题

Paytm SDK要求交易完成后,回调接口必须返回状态码200且响应体为SUCCESS字符串,你当前返回的"[{\"message\":\"success\",\"is_payment_done\":\"Y\"}]"不符合SDK要求,会导致SDK无法识别交易完成状态,不会触发then回调,调整回调接口的返回值即可。

4. 调整SDK参数排查兼容性问题

你当前设置的appInvokeRestricted: true会禁止唤起Paytm客户端,仅走网页支付流程,部分旧版本SDK的网页模式存在回调丢失的问题,可以先改为false测试是否能正常触发回调。如果还是无法触发,建议升级Paytm AllInOneSDK到最新稳定版,官方已修复多个版本的回调不触发问题。

5. 补充错误日志排查

可以在catch块中打印完整错误信息,确认是否是交易过程中抛出异常进入了catch分支而未走到then:

.catch((err) => {
  console.log("支付异常:", JSON.stringify(err));
  Toast.show("Something went wrong");
});

内容的提问来源于stack exchange,提问作者user14877357

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 05:24:03