---
url: "https://pay.weixin.qq.com/doc/v2/merchant/4011987320.md"
title: "支付中签约"
doc_id: 4011987320
---

>更新时间：2026.03.18

支付的同时完成代扣协议的签约。

开发流程介绍：

步骤1 请求支付中签约接口（参数见[请求参数](https://pay.weixin.qq.com/doc/v2/merchant/4011987320.md#%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0)），获取预支付id（对应参数：prepay\_id）此步骤需要根据不同支付方式选择不同的trade\_type（trade\_type详细介绍请参见交易类型规则）。

步骤2 按照不同支付方式的不同规则，按要求唤起微信支付收银台，不同的支付方式，对于唤起微信支付收银台的方法要求不同，具体可以参见以下表格：

| 扫码支付（NATIVE）详见： | [扫码支付(NATIVE)在线文档](https://pay.weixin.qq.com/doc/v2/merchant/4011936456.md) |
| --- | --- |
| 公众号支付（JSAPI）详见： | [公众号支付(JSAPI)在线文档](https://pay.weixin.qq.com/doc/v2/merchant/4011935213.md) |
| App支付（APP）详见： | [App支付(APP)在线文档](https://pay.weixin.qq.com/doc/v2/merchant/4011936836.md) |
| H5（MWEB）支付详见： | [H5(MWEB)在线文档](https://pay.weixin.qq.com/doc/v2/merchant/4011936565.md) |
| 小程序（JSAPI）支付详见： | [小程序支付在线文档](https://pay.weixin.qq.com/doc/v2/merchant/4011939566.md) |

步骤3 用户完成支付，微信通过支付中签约接口中商户上传的通知回调地址（对应参数：notify\_url），将支付结果返回给商户，同时将签约结果通过contract\_notify\_url通知给商户，两次通知皆为异步通知。



## 接口说明

适用对象：直连商户

请求URL： https://api.mch.weixin.qq.com/pay/contractorder

请求方式： POST

是否需要证书： 否

## 请求参数

| 参数名 | 变量 | 类型\[长度限制\] | 必填 | 描述 |
| --- | --- | --- | --- | --- |
| 应用ID | appid | string\[1,32\] | 是 | 由微信生成的应用ID，全局唯一。<br>请求查单接口时请注意APPID的应用属性，例如公众号场景下，需使用应用属性为公众号的APPID<br>示例值：wxcbda96de0b165486 |
| 商户号 | mch\_id | string\[1,32\] | 是 | 商户号是商户在微信申请微信支付成功后分配的账号ID，登录平台为pay.weixin.qq.com<br>示例值：1200009811 |
| 签约商户号 | contract\_mchid | string\[1,32\] | 是 | 签约商户号，必须与mch\_id一致<br>示例值：1200009811 |
| 签约appid | contract\_appid | string\[1,32\] | 是 | 签约公众号，必须与appid一致<br>示例值：wxcbda96de0b165486 |
| 商户订单号 | out\_trade\_no | string\[1,32\] | 是 | 商户系统内部的订单号,32个字符内、可包含字母,其他说明见[商户订单号](https://pay.weixin.qq.com/doc/v2/merchant/4011941162.md)<br>示例值：123456 |
| 设备号 | device\_info | string\[1,32\] | 否 | 终端设备号(门店号或收银设备ID)，注意：PC网页或公众号内支付请传"WEB"<br>示例值：013467007045764 |
| 随机字符串 | nonce\_str | string\[1,32\] | 是 | 随机字符串，不长于32位.<br>示例值：5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
| 商品描述 | body | string\[1,127\] | 是 | 商品或支付单简要描述<br>示例值：Ipad mini 16G 白色 |
| 商品详情 | detail | string\[1,8192\] | 否 | 商品名称明细列表<br>示例值：Ipad mini 16G 白色 |
| 附加数据 | attach | string\[1,127\] | 否 | 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据<br>示例值：深圳分店 |
| 回调通知url | notify\_url | string\[1,256\] | 是 | 回调通知地址，以http或https开头，通知url必须为外网可访问的url，不能携带参数。<br>示例值：https://weixin.qq.com |
| 总金额 | total\_fee | int | 是 | 订单总金额，单位为分<br>示例值：888 |
| 终端IP | spbill\_create\_ip | string\[1,16\] | 是 | 用户的客户端IP ，同时支持IPV4和IPV6。<br>示例值：123.12.12.123 |
| 交易起始时间 | time\_start | string\[1,14\] | 否 | 订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010. 其他详见[时间规则](https://pay.weixin.qq.com/doc/v2/merchant/4011941162.md)<br>示例值：20091225091010 |
| 交易结束时间 | time\_expire | string\[1,14\] | 否 | 订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010. 其他详见[时间规则](https://pay.weixin.qq.com/doc/v2/merchant/4011941162.md)<br>示例值：20091227091010 |
| 商品标记 | goods\_tag | string\[1,32\] | 否 | 商品标记,代金券或立减优惠功能的参数<br>示例值：WXG |
| 交易类型 | trade\_type | string\[1,16\] | 是 | 取值如下：JSAPI,NATIVE,APP,MWEB<br>示例值：JSAPI |
| 商品ID | product\_id | string\[1,32\] | 否 | trade\_type=NATIVE,此参数必传. 此id为二维码中包含的商品ID,商户自行定义.<br>示例值：12235413214070356458058 |
| 用户标识 | openid | string\[1,128\] | 否 | trade\_type=JSAPI,此参数必传，用户在商户appid下的唯一标识.<br>示例值：oUpF8uMuAJO\_M2pxb1Q9zNjWeS6o |
| 模板id | plan\_id | int | 是 | 协议模板id<br>示例值：123 |
| 签约协议号 | contract\_code | string\[1,64\] | 是 | 商户侧的签约协议号，由商户生成，只能是数字、大小写字母的描述且在同一个商户号下唯一。<br>示例值：100001256 |
| 请求序列号 | request\_serial | int 64 | 是 | 商户请求签约时的序列号，要求唯一性。禁止使用0开头，序列号主要用于排序，不作为查询条件，纯数字，范围不能超过int 64的范围（9223372036854775807）。<br>示例值：1695 |
| 用户账户展示名称 | contract\_display\_account | string\[1,64\] | 是 | 签约用户的名称,用于支付中签约页面的“开通账号”处进行展示，参数值不支持UTF8非3字节编码的字符，例如表情符号，所以请勿传微信昵称到该字段<br>示例值：123 |
| 签约信息通知url | contract\_notify\_url | string\[1,256\] | 是 | 签约信息回调通知的url，以http或https开头，通知url必须为外网可访问的url，不能携带参数。<br>示例值：https://yoursite.com |
| 签名 | sign | string\[1,32\] | 是 | 签名规则详见[签名生成算法](https://pay.weixin.qq.com/doc/v2/merchant/4011985891.md) 注：所有参数都是encode前做签名<br>示例值：E1EE61A91C8E90F299DE6AE075D60A2D |

## 请求示例：

XML

```
<xml>
 <appid>wxcbda96de0b165486</appid>
 <mch_id>1200009811</mch_id>
 <contract_mchid>1200009811</contract_mchid>
 <contract_appid>wxcbda96de0b165486</contract_appid>
 <out_trade_no>123456</out_trade_no>
 <device_info>013467007045764</device_info>
 <nonce_str>5K8264ILTKCH16CQ2502SI8ZNMTM67VS</nonce_str>
 <body>Ipad mini 16G 白色</body>
 <detail>Ipad mini 16G 白色</detail>
 <notify_url>https://weixin.qq.com</notify_url>
 <total_fee>888</total_fee>
 <spbill_create_ip>123.12.12.123</spbill_create_ip>
 <trade_type>JSAPI</trade_type>
 <plan_id>123</plan_id>
 <contract_code>100001256</contract_code>
 <request_serial>1000</request_serial>
 <contract_display_account>微信代扣</contract_display_account>
 <contract_notify_url>https://yoursite.com</contract_notify_url>
 <sign>C380BEC2BFD727A4B6845133519F3AD6</sign>
</xml>
```

## 返回参数

| 参数名 | 变量 | 类型\[长度限制\] | 必填 | 描述 |
| --- | --- | --- | --- | --- |
| 返回状态码 | return\_code | string\[1,16\] | 是 | SUCCESS/FAIL<br>示例值：SUCCESS |
| 返回信息 | return\_msg | string\[1,128\] | 否 | 返回信息，如非空，为错误原因<br>如：签名失败 等。<br>示例值：签名失败 |

以下字段在return\_code为SUCCESS的时候有返回

| 参数名 | 变量 | 类型\[长度限制\] | 必填 | 描述 |
| --- | --- | --- | --- | --- |
| 业务结果 | result\_code | string\[1,16\] | 是 | SUCCESS/FAIL<br>示例值：SUCCESS |
| 应用ID | appid | string\[1,32\] | 是 | 直连商户申请的公众号或移动应用appid。<br>示例值：wxcbda96de0b165486 |
| 商户号 | mch\_id | string\[1,32\] | 是 | 商户号是商户在微信申请微信支付成功后分配的账号ID，登录平台为pay.weixin.qq.com<br>示例值：1200009811 |
| 随机字符串 | nonce\_str | string\[1,32\] | 是 | 随机字符串,不长于32位.<br>示例值：5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
| 签名 | sign | string\[1,32\] | 是 | 签名规则详见签名生成算法 注：所有参数都是encode前做签名.<br>示例值：E1EE61A91C8E90F299DE6AE075D60A2D |
| 错误代码 | err\_code | string\[1,32\] | 否 | 错误返回的错误代码<br>示例值：SYSTEMERROR |
| 错误代码描述 | err\_code\_des | string\[1,128\] | 否 | 错误返回的信息描述<br>示例值：系统错误 |
| 预签约结果 | contract\_result\_code | string\[1,16\] | 是 | 预签约结果<br>示例值：SUCCESS |
| 预签约错误代码 | contract\_err\_code | string\[1,32\] | 否 | 预签约错误代码<br>示例值：Fail |
| 预签约错误描述 | contract\_err\_code\_des | string\[1,32\] | 否 | 预签约错误描述<br>示例值：已签约 |

以下字段在return\_code 和result\_code都为SUCCESS的时候有返回

| 参数名 | 变量 | 类型\[长度限制\] | 必填 | 描述 |
| --- | --- | --- | --- | --- |
| 签名 | sign | string\[1,32\] | 是 | [详见签名生成算法](https://pay.weixin.qq.com/doc/v2/merchant/4011985891.md)<br>示例值：C380BEC2BFD727A4B6845133519F3AD6 |
| 公众账号id | appid | string\[1,32\] | 是 | 微信支付分配的公众账号id<br>示例值：wxcbda96de0b165486 |
| 商户号 | mch\_id | string\[1,32\] | 是 | 微信支付分配的商户号<br>示例值：10000098 |
| 预支付交易会话标识 | prepay\_id | string\[1,64\] | 是 | 微信生成的预支付回话标识,用于后续接口调用中使用,该值有效期为2小时.<br>示例值：wx201410272009395522657a690389285100 |
| 交易类型 | trade\_type | string\[1,16\] | 是 | 调用接口提交的交易类型，取值如下：JSAPI,NATIVE,APP,MWEB<br>示例值：JSAPI |
| 二维码链接 | code\_url | string\[1,64\] | 否 | trade\_type为NATIVE是有返回,可将该参数值生成二维码展示出来进行扫码支付<br>示例值：weixin：//wxpay/s/An4baqw |
| 模板id | plan\_id | int | 否 | 商户在微信商户平台设置的代扣协议模板id<br>示例值：123 |
| 请求序列号 | request\_serial | int 64 | 否 | 商户请求签约时的序列号,商户侧须唯一，禁止使用0开头<br>示例值：1695 |
| 签约协议号 | contract\_code | string\[1,64\] | 否 | 商户请求签约时传入的签约协议号,商户侧须唯一<br>示例值：1023658866 |
| 用户账户展示名称 | contract\_display\_account | string\[1,64\] | 否 | 签约用户的名称,用于页面展示<br>示例值：张三 |
| 支付跳转链接 | mweb\_url | string\[1,64\] | 否 | mweb\_url为拉起微信支付收银台的中间页面，可通过访问该url来拉起微信客户端，完成支付,mweb\_url的有效期为5分钟。<br>示例值：https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay\_id=wx2016121516420242444321ca0631331346&package=1405458241 |
| 商户订单号 | out\_trade\_no | string\[1,32\] | 是 | 商户订单号<br>示例值：123456 |

## 返回示例：

正常示例

```
<xml>
 <return_code><![CDATA[SUCCESS]]></return_code>
 <result_code><![CDATA[SUCCESS]]></result_code>
 <appid><![CDATA[wxcbda96de0b165486]]></appid>
 <mch_id><![CDATA[1200009811]]></mch_id>
 <prepay_id><![CDATA[wx201410272009395522657a690389285100]]></prepay_id>
 <sign><![CDATA[E1EE61A91C8E90F299DE6AE075D60A2D]]></sign>
 <trade_type><![CDATA[JSAPI]]></trade_type>
 <code_url><![CDATA[weixin：//wxpay/s/An4baqw]]></code_url>
 <plan_id><![CDATA[123]]></plan_id>
 <out_trade_no><![CDATA[123456]]></out_trade_no>
</xml>
```

## 错误码

| 错误码 | 描述 | 解决方案 |
| --- | --- | --- |
| SIGN\_ERROR | 签名错误 | 验证签名算法 |
| PARAMETER FAIL | 参数错误 | 验证参数 |
| XML FAIL | XML格式错误 | 检查XML格式 |
| RESULT NULL | 查询为空 | 传入正确查询参数 |
| MERCHANT PERMISSION ERROR | 受理商户没有权限 | 确认商户权限 |
| INVALID PLAN\_ID | 签约模板无效 | 检查正确模板id |
| CONTRACT\_CODE DUPLICATION | 该签约号已存在 | contract\_code已经被签约，请传入不重复的签约号 |
| MERCHANT AUTHORITY ERROR | 商户权限校验失败 | 联系相关接口人确认委托代扣权限 |