Android

更新时间:2025.06.25

简介

商户在申请批量结算后,可在移动端应用APP中集成开放SDK调起微信,请求用户确认收款。

接入前注意事项

在接入前需详细阅读下方说明:

  • 该能力依赖微信Open SDK,需按照指引在微信开放平台申请开通移动应用的微信支付能力,以完成相关初始化配置

  • 该能力需要使用微信支付商户号,需配置 Api key 配置商户号证书等内容,详情可参考开发必要参数说明

接口说明

支持商户:【平台商户】

接口名称:WXOpenBusinessView

需要引用新的openSDK:

接口兼容:

Android兼容性表现:若微信版本>=8.0.45,开发者可以通过此openSDK接口调起用户确认收款页面;若微信版本< 8.0.45,开发者通过此openSDK接口不能跳转到微信,此时开发者应提示用户更新微信版本。

接口参数

Android对应对象:WXOpenBusinessView.Req

请求参数

businessType 必填 string(16)

【业务类型】固定配置:liteAppSettleC2CUserConfirmPay


query 必填 string(2048)

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

属性

调用示例

1int wxSdkVersion = api.getWXAppSupportAPI();
2if (wxSdkVersion >= Build.OPEN_BUSINESS_VIEW_SDK_iNT) {
3  WXOpenBusinessView.Req req = new WXOpenBusinessView.Req();
4  req.businessType = "liteAppSettleC2CUserConfirmPay";
5  req.query = "mchid=111111&appid=222222&package=settle_batch_no%3D3333&timeStamp=1750819431&nonceStr=444&signType=RSA&certSerialNo=5555&signature=666";
6  Boolean ret = api.sendReq(req);
7} else {
8  /*需提示用户升级微信版本*/
9}

返回参数

Android对应对象:WXOpenBusinessView.Resp

businessType 必填 string(16)

【业务类型】打开的业务类型。


extMsg 必填 string

【扩展信息】返回的业务数据,格式为JSON字符串,如 {"result":"success","code":"SUCCESS","settleBatchNo":"1111","outSettleBatchNo":"222"}。具体内部字段如下

属性

返回示例

1// 展示成功的返回数据示例
2resp.businessType == "liteAppSettleC2CUserConfirmPay"
3resp.extMsg == "{\"result\":\"success\",\"code\":\"SUCCESS\",\"settleBatchNo\":\"3333\",\"outSettleBatchNo\":\"444\"}"

注意:

带有返回结果信息不代表收款成功,具体状态应以服务端收到回调或主动查单的详情为准。

错误码

错误码

描述

解决方案

PARAM_ERROR

参数错误

请检查传入参数是否符合格式要求

INVALID_REQUEST

请求失败

参数格式正确,但不符合业务规则,请查看失败原因

SIGN_ERROR

签名验证不通过

请参阅 签名常见问题

NO_AUTH

无接口权限

没有调用此接口的权限,请查看失败原因

RATELIMIT_EXCEEDED

频率超限

请降低请求接口频率

USER_ERROR

用户原因失败

客户端不受支持、用户主动取消、网络异常等用户原因失败,通常无需处理

注意:网络异常时,可能用户已发出确认请求,最终收款状态请以服务端回调或主动查单为准

ALREADY_EXISTS

资源已经存在

请求创建的资源重复,或者请求执行的操作已经完成,请检查资源状态

例如:存在已受理过的结算单,不可重复发起结算

SYSTEM_ERROR

系统异常,请稍后再试

请稍后再试

签名步骤

构造待签名串

待签名串共有四行,每行为一个参数值,并以 \n(换行符,ASCII 编码值为 0x0A)结尾,最后一行也需要以 \n 结尾。

如果参数值以 \n 结束,也需要额外附加一个 \n

待签名串的结构:

1小程序AppID
2签名时间戳
3随机字符串
4结算详情扩展字符串
5

待签名串的内容示例:

1wx8888888888888888
21414561699
35K8264ILTKCH16CQ2502SI8ZNMTM67VS
4settle_batch_no=1236698745558870
5

计算签名值

使用商户私钥对 待签名串 进行 SHA256 with RSA 签名,并对签名结果进行 Base64 编码,得到签名值 signature

以命令行为例:

1echo -n -e \
2"wx8888888888888888\n1414561699\n5K8264ILTKCH16CQ2502SI8ZNMTM67VS\nsettle_batch_no=1236698745558870\n" \
3  | openssl dgst -sha256 -sign apiclient_key.pem \
4  | openssl base64 -A

输出结果示例:

1uOVRnA4qG/MNnYzdQxJanN+zU+lTgIcnU9BxGw5dKjK+VdEUz2FeIoC+D5sB/LN+nGzX3hfZg6r5wT1pl2ZobmIc6p0ldN7J6yDgUzbX8Uk3sD4a4eZVPTBvqNDoUqcYMlZ9uuDdCvNv4TM3c1WzsXUrExwVkI1XO5jCNbgDJ25nkT/c1gIFvqoogl7MdSFGc4W4xZsqCItnqbypR3RuGIlR9h9vlRsy7zJR9PBI83X8alLDIfR1ukt1P7tMnmogZ0cuDY8cZsd8ZlCgLadmvej58SLsIkVxFJ8XyUgx9FmutKSYTmYtWBZ0+tNvfGmbXU7cob8H/4nLBiCwIUFluw==

在以上计算签名值的过程中,没有使用到 signType 参数,但调用接口时仍需要传递默认值 RSA