JSAPI调起支付分-确认订单

更新时间:2024.11.18

商户通过调用确认订单接口打开微信支付分小程序,引导用户确认订单(Web端)。

接口说明

适用对象: 【从业机构(支付机构)】

接口名称: openBusinessView

此接口引用 JSAPI版本1.5.0,引用地址:https://res.wx.qq.com/open/js/jweixin-1.5.0.js。

要求用户微信版本>=7.0.5

在JSAPI调起支付分相关接口前,需详细阅读JS-SDK说明文档并进行相应配置。

接口参数

Object

businessType 必填 string(16)

固定配置:wxpayScoreUse。


queryString 必填 string(2048)

使用URL的query string方式传递参数,格式为key=value&key2=value2,其中value,value2需要进行UrlEncode处理。

属性

 

请求示例

1let wechatInfo = navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i);
2let wechatVersion = wechatInfo[1];
3if (compareVersion(wechatVersion, '7.0.5') >= 0) {
4   goToWXScore();
5} else {
6   // 提示用户升级微信客户端版本
7   window.href = 'https://support.weixin.qq.com/cgi-bin/readtemplate?t=page/
8   common_page__upgrade&text=text005&btn_text=btn_text_0'
9}
10/**
11 * 跳转微信支付分
12 */
13function goToWXScore() {
14    wx.checkJsApi({
15        jsApiList: ['openBusinessView'], // 需要检测的JS接口列表
16        success: function (res) {
17        // 以键值对的形式返回,可用的api值true,不可用为false
18        // 如:{"checkResult":{"openBusinessView":true},"errMsg":"checkJsApi:ok"}
19        if (res.checkResult.openBusinessView) {
20            wx.invoke(
21                'openBusinessView', {
22                    businessType: 'wxpayScoreEnable',
23                    queryString: 'DJIOSQPYWDxsjdldeuwhdodwxasd_dDiodnwjh9we'
24                },
25                function (res) {
26                // 从微信侧小程序返回时会执行这个回调函数
27                    if (parseint(res.err_code) === 0) {
28                    // 返回成功 
29                    } else {
30                    // 返回失败
31                    }
32                });
33            }
34        }
35    });
36 }
37 /**
38  * 版本号比较
39  * @param {string} v1 
40  * @param {string} v2 
41  */
42function compareVersion(v1, v2) {
43    v1 = v1.split('.')
44    v2 = v2.split('.')
45    const len = Math.max(v1.length, v2.length)
46  
47    while (v1.length < len) {
48      v1.push('0')
49    }
50    while (v2.length < len) {
51      v2.push('0')
52    }
53  
54    for (let i = 0; i < len; i++) {
55      const num1 = parseint(v1[i])
56      const num2 = parseint(v2[i])
57  
58      if (num1 > num2) {
59        return 1
60      } else if (num1 < num2) {
61        return -1
62      }
63    }
64  
65    return 0
66 }

 

返回参数

Object res

err_code 必填 string(32)

返回码,由于iOS和Android实现的差异,err_code类型可能为Number或string,所以在判断支付分是否成功返回商户的H5时,需要对err_code做整型化处理。


err_msg 必填 string(128)

返回信息


extraData 选填 Object

当err_code为0时,extraData才返回;反之,则不返回。

属性

 

 

注意

  1. 带有返回参数不代表订单确认成功,具体状态需以接口查询的结果为准;

  2. 只有用户点支付分页面内返回按钮时,才会带上返回参数;如果用户左滑返回或者点击页面左上角的返回图标返回,则不会带上返回参数。所以推荐在【查询订单】接口使用 out_order_no 作为入参。另外商户侧后台在创建支付分订单时需向前端返回 out_order_no,同时前端需缓存out_order_no,以便在接口回调中查询订单状态。

返回示例

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 * 跳转微信支付分
14 */
15function goToWXScore() {
16    wx.checkJsApi({
17        jsApiList: ['openBusinessView'], // 需要检测的JS接口列表
18        success: function (res) {
19        // 以键值对的形式返回,可用的api值true,不可用为false
20        // 如:{"checkResult":{"openBusinessView":true},"errMsg":"checkJsApi:ok"}
21        if (res.checkResult.openBusinessView) {
22            wx.invoke(
23                'openBusinessView', {
24                    businessType: 'wxpayScoreUse',
25                    queryString
26: 'mch_id=1230000109&package=xxxxx&
27      timestamp=1530097563&nonce_str=zyx53Nkey8o4bHpxTQvd8m7e92nG5mG2&sign_type=HMAC-SHA256&
28      sign=029B52F67573D7E3BE74904BF9AEA'
29                },
30                function (res) {
31                // 从支付分返回时会执行这个回调函数
32                    if (parseint(res.err_code) === 0) {
33                    // 返回成功 
34                    } else {
35                    // 返回失败
36                    }
37                });
38            }
39        }
40    });
41 }
42
43 /**
44  * 版本号比较
45  * @param {string
46} v1 
47  * @param {string
48} v2 
49  */
50function compareVersion(v1, v2) {
51    v1 = v1.split('.')
52    v2 = v2.split('.')
53    const len = Math.max(v1.length, v2.length)
54  
55    while (v1.length < len) {
56      v1.push('0')
57    }
58    while (v2.length < len) {
59      v2.push('0')
60    }
61  
62    for (let i = 0; i < len; i++) {
63      const num1 = parseint(v1[i])
64      const num2 = parseint(v2[i])
65  
66      if (num1 > num2) {
67        return 1
68      } else if (num1 < num2) {
69        return -1
70      }
71    }
72  
73    return 0
74 }

 

 

更多技术问题
技术咨询
反馈
咨询
目录
置顶