最新更新時(shí)間:2019.12.16 版本說(shuō)明
商戶通過(guò)調(diào)用確認(rèn)訂單接口打開(kāi)微信支付分小程序,引導(dǎo)用戶確認(rèn)訂單(Web端)
接口名稱(chēng): openBusinessView
此接口引用 JSAPI版本1.5.0,引用地址:https://res.wx.qq.com/open/js/jweixin-1.5.0.js。
要求用戶微信版本>=7.0.5
參數(shù)名 | 變量 | 類(lèi)型[長(zhǎng)度限制] | 必填 | 描述 |
---|---|---|---|---|
跳轉(zhuǎn)類(lèi)型 | businessType | string[1,16] | 是 | 固定配置:wxpayScoreUse 示例值:wxpayScoreUse |
業(yè)務(wù)參數(shù) | queryString | string[1,2048] | 是 | 使用URL的query string方式傳遞參數(shù),格式為key=value&key2=value2,其中value,value2需要進(jìn)行UrlEncode處理。 示例值:見(jiàn)queryString示例 |
mch_id=1230000109&package=XXXXXXXX&
timestamp=1530097563&nonce_str=zyx53Nkey8o4bHpxTQvd8m7e92nG5mG2
&sign_type=HMAC-SHA256&sign=029B52F67573D7E3BE74904BF9AEA
參數(shù)名 | 變量 | 類(lèi)型[長(zhǎng)度限制] | 必填 | 描述 |
---|---|---|---|---|
商戶號(hào) | mch_id | string[1,32] | 是 | 微信支付分配的商戶號(hào)。 示例值:1230000109 |
擴(kuò)展字符串 | package | string[1,128] | 是 | 可在【創(chuàng)建訂單】接口的返回字段package中獲取。 示例值:XXXXXXXX |
時(shí)間戳 | timestamp | string[1,32] | 是 | 生成簽名時(shí)間戳,單位秒。 示例值:1530097563 |
隨機(jī)字符串 | nonce_str | string[1,32] | 是 | 生成簽名隨機(jī)串。由數(shù)字、大小寫(xiě)字母組成,長(zhǎng)度不超過(guò)32位。 示例值:zyx53Nkey8o4bHpxTQvd8m7e92nG5mG2 |
簽名方式 | sign_type | string[1,32] | 是 | 簽名類(lèi)型,僅支持HMAC-SHA256。 示例值:HMAC-SHA256 |
簽名 | sign | string[1,64] | 是 | 使用字段mch_id、package、timestamp、nonce_str、sign_type按照簽名生成算法計(jì)算得出的簽名值。 示例值:029B52F67573D7E3BE74904BF9AEA |
參數(shù)名 | 變量 | 類(lèi)型[長(zhǎng)度限制] | 必填 | 描述 |
---|---|---|---|---|
返回碼 | err_code | Number/string[1,32] | 是 | 返回碼,由于iOS和Android實(shí)現(xiàn)的差異,err_code類(lèi)型可能為Number或string ,所以在判斷支付分是否成功返回商戶的H5時(shí),需要對(duì)err_code做整型化處理。 示例值: iOS:0 Android:'0' |
返回信息 | err_msg | string[1,128] | 是 | 返回信息 示例值:openBusinessView:ok |
+業(yè)務(wù)參數(shù) | extraData | Object | 否 | 當(dāng)err_code為0時(shí),extraData才返回;反之,則不返回。 |
注意:只有用戶點(diǎn)支付分頁(yè)面內(nèi)返回按鈕時(shí),才會(huì)帶上返回參數(shù);如果用戶左滑返回或者點(diǎn)擊頁(yè)面左上角的返回圖標(biāo)返回,則不會(huì)帶上返回參數(shù)。所以推薦在【查詢訂單】接口使用out_order_no作為入?yún)ⅰA硗馍虘魝?cè)后臺(tái)在創(chuàng)建支付分訂單時(shí)需向前端返回out_order_no,同時(shí)前端需緩存out_order_no,以便在接口回調(diào)中查詢訂單狀態(tài)。
let wechatInfo = navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i);
let wechatVersion = wechatInfo[1];
?
if (compareVersion(wechatVersion, '7.0.5') >= 0) {
goToWXScore();
} else {
// 提示用戶升級(jí)微信客戶端版本
window.href = 'https://support.weixin.qq.com/cgi-bin/readtemplate?t=page/common_page__upgrade&
text=text005&btn_text=btn_text_0'
}
?
/**
* 跳轉(zhuǎn)微信支付分
*/
function goToWXScore() {
wx.checkJsApi({
jsApiList: ['openBusinessView'], // 需要檢測(cè)的JS接口列表
success: function (res) {
// 以鍵值對(duì)的形式返回,可用的api值true,不可用為false
// 如:{"checkResult":{"openBusinessView":true},"errMsg":"checkJsApi:ok"}
if (res.checkResult.openBusinessView) {
wx.invoke(
'openBusinessView', {
businessType: 'wxpayScoreUse',
queryString
: 'mch_id=1230000109&package=xxxxx&
timestamp=1530097563&nonce_str=zyx53Nkey8o4bHpxTQvd8m7e92nG5mG2&sign_type=HMAC-SHA256&
sign=029B52F67573D7E3BE74904BF9AEA'
},
function (res) {
// 從支付分返回時(shí)會(huì)執(zhí)行這個(gè)回調(diào)函數(shù)
if (parseint(res.err_code) === 0) {
// 返回成功
} else {
// 返回失敗
}
});
}
}
});
}
?
/**
* 版本號(hào)比較
* @param {string
} v1
* @param {string
} v2
*/
function compareVersion(v1, v2) {
v1 = v1.split('.')
v2 = v2.split('.')
const len = Math.max(v1.length, v2.length)
while (v1.length < len) {
v1.push('0')
}
while (v2.length < len) {
v2.push('0')
}
for (let i = 0; i < len; i++) {
const num1 = parseint(v1[i])
const num2 = parseint(v2[i])
if (num1 > num2) {
return 1
} else if (num1 < num2) {
return -1
}
}
return 0
}