小程序 a 携带参数 跳转 小程序b 并且小程序b 携带参数 返回

const version = wx.getAppBaseInfo().SDKVersion

if (compareVersion(version, '2.26.2') >= 0) {

// openEmbeddedMiniProgram,需要小程序基础库版本不低于 2.26.2

wx.openEmbeddedMiniProgram({

appId: '小程序appid',

extraData: param

})

} else {

wx.navigateToMiniProgram({

appId: '小程序appid',

extraData: param

})

}

上述方法可以跳转到b小程序,其中openEmbeddedMiniProgram可以打开半屏小程序,注意调用该方法需要申请,且该方法仅支持小程序基础库2.26.2以上(详见5.8.1),如果调用该方法需要进行版本判断兼容,若无半屏打开需求,建议直接调用navigateToMiniProgram打开

在b小程序中完成后,会回调结果,具体结果可以在小程序生命周期Page.onShow中通过以下方式获取:

onShow: function () {

let options = wx.getEnterOptionsSync();

if (options.scene == '1038' &&

options.referrerInfo.appId=='b小程序appid') {

// 代表从b小程序返回

let extraData = options.referrerInfo.extraData;

if (!extraData) {

// "当前通过物理按键返回,未接收到返参,建议自行查询交易结果";

} else {

if (extraData.code == 'success') {

// "回调成功";

} else if (extraData.code == 'cancel') {

// "回调已取消";

} else {

// "回调失败:" + extraData.errmsg;

}

}

}

},

特殊说明:

一般情况下wx.getEnterOptionsSync()中获取的extraData为b小程序返回的支付结果,但是当通过物理返回键或者通过半屏小程序右上角关闭退出(即未通过收银台小程序内按钮退出),extraData内容会为空,调用方小程序会无法获得支付结果,该情况为微信小程序特性,小程序代码无法处理。

如遇到该情况,通过判断场景值为1038且来源小程序为b小程序,即可认定为收银台返回,当前若extraData为空,则需要自行查询回调结果

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值