APP纯签约

更新时间:2024.11.14

外部App拉起微信客户端发起签约前,需先后台调用预签约接口完成预签约,获取pre_entrustweb_id,再拉起微信客户端,完成签约,返回App。

注意:

  • 该业务接口暂未全面开放,暂只支持由微信支付运营人员代为申请,如有需求请咨询与您对接的微信支付运营人员。如无对接的微信支付人员,请等待产品全面开放,我们将另行通知。

步骤1:预签约接口

接口说明

适用对象:服务商

请求URL: https://api.mch.weixin.qq.com/papay/partner/preentrustweb

请求方式: POST

数据格式: XML

签名方式: HMAC-SHA256、MD5

是否需要证书:

请求参数

参数名

变量

类型[长度限制]

必填

描述

应用ID

appid

string[1,32]

服务商申请的公众号或移动应用appid。
示例值:wxcbda96de0b165486

商户号

mch_id

string[1,32]

商户号是商户在微信申请微信支付成功后分配的账号ID,登录平台为pay.weixin.qq.com
示例值:1200009811

子商户应用ID

sub_appid

string[1,32]

子商户号绑定的appid(非必填,如需操作,需要服务商在商户平台为子商户绑定)
示例值:wxcbda96de0b165489

子商户号

sub_mch_id

string[1,32]

微信支付分配的子商户号
示例值:1900000109

模板id

plan_id

string[1,28]

协议模板id,设置路径见开发步骤
示例值:12535

签约协议号

contract_code

string[1,128]

商户侧的签约协议号,由商户生成,只能是数字、大小写字母的描述。
示例值:100000

请求序列号

request_serial

int64

商户请求签约时的序列号,要求唯一性。禁止使用0开头,序列号主要用于排序,不作为查询条件,纯数字,范围不能超过int64的范围(9223372036854775807)。
示例值:1000

用户账户展示名称

contract_display_account

string[1,128]

签约用户的名称,用于页面展示,参数值不支持UTF8非3字节编码的字符,例如表情符号,所以请勿传微信昵称到该字段
示例值:微信代扣

回调通知url

notify_url

string[1,256]

用于接收签约成功消息的回调通知地址,以http或https开头,通知url必须为外网可访问的url,不能携带参数。

版本号

version

string[1,8]

固定值1.0
示例值:1.0

签名类型

sign_type

string[1,32]

MD5或者HMAC-SHA256,不填默认MD5
注意:app预签约的默认签名方式是(sign_type为空或无该字段):MD5
示例值:MD5

签名

sign

string[1,64]

详见签名生成算法
示例值:C380BEC2BFD727A4B6845133519F3AD6

时间戳

timestamp

string[1,10]

系统当前时间,10位
示例值:1414488825

返回app

return_app

string[1,1]

用来控制签约页面结束后的返回路径(不传此参数,则签约完成后停留在微信内)。
Y表示返回app, 不填则不返回 注:签约参数appid必须为发起签约的app所有,且在微信开放平台注册过。
ios和android用户点完成按钮才返回原APP,直接右划关闭页面或左上角不支持返回APP
示例值:Y

请求示例:

XML

1<xml>
2 <appid>wxcbda96de0b165486</appid>
3 <mch_id>1200009811</mch_id>
4 <sub_appid>wxcbda96de0b165489</sub_appid>
5 <sub_mch_id>1900000109</sub_mch_id>
6 <plan_id>12535</plan_id>
7 <contract_code>100000</contract_code>
8 <request_serial>1000</request_serial>
9 <contract_display_account>微信代扣</contract_display_account>
10 <notify_url>https://weixin.qq.com</notify_url>
11 <version>1.0</version>
12 <sign_type>MD5</sign_type>
13 <sign>C380BEC2BFD727A4B6845133519F3AD6</sign>
14 <timestamp>1414488825</timestamp>
15 <return_app>Y</return_app>
16</xml>

返回参数

参数名

变量

类型[长度限制]

必填

描述

返回状态码

return_code

string[1,16]

SUCCESS/FAIL
非签约结果标识,签约发起是否成功需要查看result_code来判断。
示例值:SUCCESS

返回信息

return_msg

string[1,128]

返回信息,如非空,为错误原因
如:签名失败 等。
示例值:签名失败

以下字段在return_code为SUCCESS的时候有返回

参数名

变量

类型[长度限制]

必填

描述

业务结果

result_code

string[1,16]

SUCCESS/FAIL
示例值:SUCCESS

错误代码

err_code

string[1,32]

错误码
示例值:SIGN_ERROR

错误代码描述

err_code_des

string[1,32]

错误码描述
示例值:签名错误

请求appid

appid

string[1,32]

微信开放平台审核通过的应用APPID(请登录开放平台查看,注意与公众号的APPID不同)
示例值:wxcbda96de0b165486

商户号

mch_id

string[1,32]

商户号是商户在微信申请微信支付成功后分配的账号ID,登录平台为http://pay.weixin.qq.com
示例值:1200009811

子商户公众账号ID

sub_appid

string[1,32]

子商户号绑定的APP的appid(非必填,如需操作,需要服务商在商户平台为子商户绑定)
示例值:wxcbda96de0b165489

子商户号

sub_mch_id

string[1,32]

微信支付分配的子商户号
示例值:1900000109

签名

sign

string[1,32]

详见签名生成算法
示例值:C380BEC2BFD727A4B6845133519F3AD6

随机字符串

nonce_str

string[1,64]

随机字符串,不长于32位。推荐随机数生成
示例值:5K8264ILTKCH16CQ2502SI8ZNMTM67VS

以下字段在return_code 、result_code都为SUCCESS时有返回

参数名

变量

类型[长度限制]

必填

描述

预签约id

pre_entrustweb_id

string[1,128]

预签约id,两个小时内有效
示例值:5778aadY9nltAsZzXixCkFIGYnV2V

返回示例:

正常示例

1<xml>
2 <return_code><![CDATA[SUCCESS]]></return_code>
3 <return_msg><![CDATA[OK]]></return_msg>
4 <result_code><![CDATA[SUCCESS]]></result_code>
5 <appid><![CDATA[wxcbda96de0b165486]]></appid>
6 <mch_id><![CDATA[10000098]]></mch_id>
7 <sub_appid><![CDATA[wxcbda96de0b165489]]></sub_appid>
8 <sub_mch_id><![CDATA[1900000109]]></sub_mch_id>
9 <nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str>
10 <sign><![CDATA[E1EE61A91C8E90F299DE6AE075D60A2D]]></sign>
11 <pre_entrustweb_id><![CDATA[5778aadY9nltAsZzXixCkFIGYnV2V]]></pre_entrustweb_id>
12</xml>    

错误码

错误码

描述

解决方案

SYSTEMERROR

接口返回错误

请使用相同参数再次调用API

PARAMERROR

参数错误

请根据接口返回的详细信息检查您的程序

SIGNERROR

签名错误

请根据指引生成正确签名

PAYAUTHERROR

权限校验错误

确认商户委托代扣权限权限

步骤2:签约接口

接入流程

一、该接口需要额外申请OpenBusinessWebview权限,请联系对接您的运营同学协助申请,具体参看接入流程

     邮件模板如下:

     标题:OpenBusinessWebview权限申请_APP纯签约

     正文:

      (1)说明使用背景

      (2)appid、mchid(appid和mchid需要有绑定关系)

二、在微信开放平台(open.weixin.qq.com)注册APP信息

三、在开放平台-资源中心下载SDK:资源下载

四、按照下面的接口指引文档完成对接

接口说明

适用对象: 服务商

请求方式: POST

请求参数

参数名

变量

类型[长度限制]

必填

描述

预签约id

pre_entrustweb_id

string[1,128]

预签约id
示例值:5778aadY9nltAsZzXixCkFIGYnV2V

接入代码示例:

  • IOS

1WXOpenBusinessWebViewReq *req = [[WXOpenBusinessWebViewReq alloc] init];
2req.businessType =12; //固定值
3NSMutableDictionary *queryInfoDic = [NSMutableDictionary dictionary];
4[queryInfoDic setObject:"5778aadY9nltAsZzXixCkFIGYnV2V" forKey:"pre_entrustweb_id"];
5req.queryInfoDic = queryInfoDic;
6[WxApi sendReq:req];       
  • Android

1WXOpenBusinessWebview.Req req = new WXOpenBusinessWebview.Req();
2req.businessType = 12;//固定值
3HashMap  queryInfo = new HashMap<>();
4queryInfo.put("pre_entrustweb_id","5778aadY9nltAsZzXixCkFIGYnV2V");
5req.queryInfo = queryInfo;
6api.sendReq(req);