收藏
回答

微信小程序被第三方小程序调起后,在被调起的页面支付完成跳转下一页面时,取不到全局数据

小程序A调起小程序B,小程序B在被调起的页面使用wx.requestPayment调起微信支付后,在回调函数中使用wx.navigateTo跳转下一个页面时,下一个页面取不到保存在getApp()中的数据。

代码片段:

//调起支付的页面:page/containers/payment/result/result
wx.requestPayment({
  timeStamp: res.data.result.jsapi.timeStamp,
  nonceStr: res.data.result.jsapi.nonceStr,
  package: res.data.result.jsapi.packageParam,
  signType: res.data.result.jsapi.signType,
  paySign: res.data.result.jsapi.paySign,
  success: function (res) {
    wx.navigateTo({
      url: '../result/result?payResult=true',
    });
  },
  fail: function (res) {
    getApp().payment.errorMessage = res.err_desc;
    console.log(getApp().payment); //保存了一些信息在payment中
    wx.navigateTo({
      url: '../result/result?payResult=false',
    })
  }
//结果页面:page/containers/payment/result/result
onLoad: function (options) {
  console.log(getApp().payment);//取不到前一页面保存的信息
  this.setData({
    payResult:options.payResult,
    errMsg: getApp().payment.errorMessage||'',
    payInfo: getApp().payment.payInfo
  })
}

复现场景:仅在A小程序调起B小程序,并且跳转页面就是调起支付的页面时出现上述状况,直接进入B小程序支付不会出现问题,A小程序调B小程序的其他页面再在B小程序上跳转到支付页面也不会出现问题。

问题原因:

在出现问题的场景中,调起微信支付后再发起navigatorTo做页面跳转,小程序app有一次退出的过程,导致全局保存的数据丢失:

而正常情况下是不会出现app onHide和onShow被调起一次的:

此问题仅出现在被第三方小程序调起的小程序在当前页面支付后再跳转的场景,如果没有调起微信支付直接用navigatorTo做跳转,也不会出现这种状况。


回答关注问题邀请回答
收藏
登录 后发表内容
问题标签