商户小程序跳转微信侧小程序建议使用两种方式:调用wx.openBusinessView或者wx.navigateToMiniProgram。其中wx.openBusinessView不占用小程序跳转其他小程序的数量名额。
接口名称:wx.openBusinessView
接口兼容:
●小程序版本库 >= 2.6.0,低版本需提示用户升级微信版本。
● iOS兼容性表现:若微信版本 >= 7.0.3,开发者可以通过此openSDK接口跳转到微信支付分小程序;若微信版本 < 7.0.3,开发者通过此openSDK接口可以跳转到微信,但不能跳转到微信支付分小程序,此时微信会提示用户可能由于应用的请求非法或者微信版本过低。
● Android兼容性表现:若微信版本>=7.0.3,开发者可以通过此openSDK接口跳转到微信支付分小程序;若微信版本< 7.0.3,开发者通过此openSDK接口不能跳转到微信,此时开发者应提示用户更新微信版本。
参数名 | 变量 | 类型[长度限制] | 必填 | 描述 |
---|---|---|---|---|
跳转类型 | businessType | string[1,32] | 是 | 固定配置:wxpayScoreUse 示例值:wxpayScoreUse |
+业务参数 | extraData | Object | 是 | 需要传递给支付分的业务数据。 |
if (wx.openBusinessView) {
wx.openBusinessView({
businessType: 'wxpayScoreUse',
extraData: {
mch_id: '1230000109',
package: 'XXXXXXXX',
timestamp: '1530097563',
nonce_str: 'zyx53Nkey8o4bHpxTQvd8m7e92nG5mG2',
sign_type: 'HMAC-SHA256',
sign: '029B52F67573D7E3BE74904BF9AEA'
},
success() {
//dosomething
},
fail() {
//dosomething
},
complete() {
//dosomething
}
});
} else {
//引导用户升级微信版本
}
接口名称: wx.navigateToMiniProgram,详见小程序API文档。
接口兼容:每个小程序可跳转的其他小程序数量限制为不超过 10 个。
参数名 | 变量 | 类型[长度限制] | 必填 | 描述 |
---|---|---|---|---|
公众号ID | appId | string[1,32] | 是 | 支付分公众账号ID,固定配置:wxd8f3793ea3b935b8。 示例值:wxd8f3793ea3b935b8 |
路径 | path | string[1,64] | 是 | 固定配置:pages/use/use 示例值:pages/use/use |
+业务参数 | extraData | Object | 是 | 需要传递给支付分的业务数据。 |
wx.navigateToMiniProgram({
appId: 'wxd8f3793ea3b935b8',
path: 'pages/use/use',
extraData: {
mch_id: '1230000109',
package: 'XXXXXXXX',
timestamp: '1530097563',
nonce_str: 'zyx53Nkey8o4bHpxTQvd8m7e92nG5mG2',
sign_type: 'HMAC-SHA256',
sign: '029B52F67573D7E3BE74904BF9AEA'
},
success() {
//dosomething
},
fail() {
//dosomething
},
complete() {
//dosomething
}
});
触发场景: 用户从商户小程序页面进入到支付分后再返回到商户小程序页面。
返回参数:商户小程序可在 App.onLaunch,App.onShow 中获取到这份数据。
参数名 | 变量 | 类型[长度限制] | 必填 | 描述 |
---|---|---|---|---|
业务参数 | query_id | string[1,64] | 是 | 单据查询id,对应【查询订单】接口中入参query_id。 示例值:XXXXXXXX |
注意: 只有用户点击支付分页面内返回按钮时,才会带上返回参数;如果用户点击页面左上角的返回图标按钮,则不会带上返回参数。
// app.js
onShow(res) {
if (res.scene === 1038) { // 场景值1038:从被打开的小程序返回
const { appId, extraData } = res.referrerInfo;
if (appId === miniprogram_appid) { // miniprogram_appid由【创建订单】返回,建议检查是否等于appId,不强制
let query_id = extraData.query_id;
let result = this.queryOrderStatus(query_id);
if (result) {
// 成功
} else {
// 失败
}
}
}
}
/**
* 查询订单状态函数
* 由商家后台服务提供
* @param query_id {string
} 单据id,可以在接口【查询订单】进行单据查询
*/
queryOrderStatus: function(query_id) {
// 商家小程序向商家后台服务请求查询订单状态,
// 这里的前后端接口和数据协议由商家侧设计
// 函数返回查询结果,这里以布尔值true代表成功,布尔值false代表失败
}