# 簡介
商戶通過調(diào)用確認(rèn)訂單接口打開微信支付分小程序,引導(dǎo)用戶確認(rèn)訂單(Web端)
接口名稱: openBusinessView
接口兼容: 此接口引用 JSAPI版本1.5.0,引用地址:https://res.wx.qq.com/open/js/jweixin-1.5.0.js (opens new window)。
支持商戶: 【普通服務(wù)商】
# 接口參數(shù)
# Object
- businessType 必填 string(16)【跳轉(zhuǎn)類型】
固定配置:wxpayScoreDetail。 - queryString 必填 string(2048)【業(yè)務(wù)參數(shù)】
使用URL的query string方式傳遞參數(shù),格式為key=value&key2=value2,其中value,value2需要進(jìn)行UrlEncode處理。- 屬性
# 返回參數(shù)
# Object
- err_code 必填 string(32)【返回碼】
返回碼,由于iOS和Android實(shí)現(xiàn)的差異,err_code類型可能為Number或string,所以在判斷支付分是否成功返回商戶的H5時,需要對err_code做整型化處理。 - err_msg 必填 string(128)【返回信息】
返回信息 - extraData 選填 string(32)【業(yè)務(wù)參數(shù)】
當(dāng)err_code為0時,extraData才返回;反之,則不返回。- 屬性
注意
只有用戶點(diǎn)支付分頁面內(nèi)返回按鈕時,才會帶上返回參數(shù);如果用戶左滑返回或者點(diǎn)擊頁面左上角的返回圖標(biāo)返回,則不會帶上返回參數(shù)。所以推薦在【查詢支付分訂單】接口使用out_order_no作為入?yún)ⅰA硗馍虘魝?cè)后臺在創(chuàng)建支付分訂單時需向前端返回out_order_no,同時前端需緩存out_order_no,以便在接口回調(diào)中查詢訂單狀態(tài)。
query示例
1package=XXXXXXXX
示例代碼
1let wechatInfo = navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i);2let wechatVersion = wechatInfo[1];3?4if (compareVersion(wechatVersion, '7.0.5') >= 0) {5 goToWXScore();6} else {7 // 提示用戶升級微信客戶端版本8 window.href = 'https://support.weixin.qq.com/cgi-bin/readtemplate?t=page/common_page__upgrade&9 text=text005&btn_text=btn_text_0'10}11?12/**13 * 跳轉(zhuǎn)微信支付分14 */15function goToWXScore() {16 wx.checkJsApi({17 jsApiList: ['openBusinessView'], // 需要檢測的JS接口列表18 success: function (res) {19 // 以鍵值對的形式返回,可用的api值true,不可用為false20 // 如:{"checkResult":{"openBusinessView":true},"errMsg":"checkJsApi:ok"}21 if (res.checkResult.openBusinessView) {22 wx.invoke(23 'openBusinessView', {24 businessType: 'wxpayScoreUse',25 queryString: 'package=xxxxx'26 },27 function (res) {28 // 從支付分返回時會執(zhí)行這個回調(diào)函數(shù)29 if (parseint(res.err_code) === 0) {30 // 返回成功 31 } else {32 // 返回失敗33 }34 });35 }36 }37 });38 }39?40 /**41 * 版本號比較42 * @param {string43} v1 44 * @param {string45} v2 46 */47function compareVersion(v1, v2) {48 v1 = v1.split('.')49 v2 = v2.split('.')50 const len = Math.max(v1.length, v2.length)51 52 while (v1.length < len) {53 v1.push('0')54 }55 while (v2.length < len) {56 v2.push('0')57 }58 59 for (let i = 0; i < len; i++) {60 const num1 = parseint(v1[i])61 const num2 = parseint(v2[i])62 63 if (num1 > num2) {64 return 165 } else if (num1 < num2) {66 return -167 }68 }69 return 070 }