JSAPI调起支付-确认订单

更新时间:2025.04.01

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


1. 接口说明

适用对象:机构模式

接口名称:openBusinessView

2. 接口兼容

3. 接口参数

Object

参数名

变量

类型[长度限制]

必填

描述

跳转类型

businessType

string[1,16]

固定配置:wxpayScoreUse
示例值:wxpayScoreUse

业务参数

queryString

string[1,2048]

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

业务参数

4. query示例

机构模式
1mch_id=1230000109&package=XXXXXXXX&
2timestamp=1530097563&nonce_str=zyx53Nkey8o4bHpxTQvd8m7e92nG5mG2
3&sign_type=HMAC-SHA256&sign=029B52F67573D7E3BE74904BF9AEA

5. 返回参数

Object res

参数名

变量

类型[长度限制]

必填

描述

返回码

err_code

Number/string[1,32]

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

返回信息

err_msg

string[1,128]

返回信息
示例值:openBusinessView:ok

业务参数

extraData

Object

当err_code为0时,extraData才返回;反之,则不返回。详细说明见下文

业务参数

注意:

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

6. 示例代码

机构模式
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: 'package=xxxxx'
26          },
27          function (res) {
28            // 从支付分返回时会执行这个回调函数
29            if (parseint(res.err_code) === 0) {
30              // 返回成功 
31            } else {
32              // 返回失败
33            }
34          });
35      }
36    }
37  });
38}
39
40/**
41* 版本号比较
42* @param {string
43} v1 
44* @param {string
45} 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 1
65    } else if (num1 < num2) {
66      return -1
67    }
68  }
69  return 0
70}

 

 

 

 

About  WeChat  Pay

Powered By Tencent & Tenpay Copyright©

2005-2025 Tenpay All Rights Reserved.

Contact Us
Wechat Pay Global

WeChat Pay Global

Contact Us

Customer Service Tel

+86 571 95017

9:00-18:00 Monday-Friday GMT+8

Business Development

wxpayglobal@tencent.com

Developer Support

wepayTS@tencent.com

Wechat Pay Global

About Tenpay
Powered By Tencent & Tenpay Copyright© 2005-2025 Tenpay All Rights Reserved.