---
url: "https://pay.weixin.qq.com/doc/v2/partner/4011988378.md"
title: "签约、解约结果通知"
doc_id: 4011988378
---

>更新时间：2026.01.20

签约、解约成功后（包含用户主动解约），微信会把相关签约、解约信息异步通知给商户。

注意：

1、同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。

推荐的做法是：当商户系统收到通知进行处理时，先检查对应业务数据的状态，并判断该通知是否已经处理。如果未处理，则再进行处理；如果已处理，则直接返回结果成功。在对业务数据进行状态检查和处理之前，要采用数据锁进行并发控制，以避免函数重入造成的数据混乱。

2、如果在所有通知频率(0/10/10/10/30/30/30/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300（单位：秒）)后没有收到微信侧回调,商户应调用查询订单接口确认订单状态。

特别提醒：

1、商户系统对于签约、解约结果通知的内容一定要做签名验证,并校验返回的商户协议号和用户openid信息是否一致，防止数据泄露导致出现“假通知”，造成损失。

2、当收到通知进行处理时，首先检查对应业务数据的状态，判断该通知是否已经处理过，如果没有处理过再进行处理，如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前，要采用数据锁进行并发控制，以避免函数重入造成的数据混乱。



## 接口说明

适用对象：服务商

请求URL：签约结果通知路径为签约接口商户上传的notify\_url字段，解约结果通知路径为商户配置委托扣款模板ID时填写的解约回调地址，必须为https协议。

如果链接无法访问，商户将无法接收到微信通知。 通知url必须为直接可访问的url，不能携带参数。示例： “http://pay.weixin.qq.com/wxpay/pay.action”

## 通知规则

签约、解约成功后，微信会把相关支付结果和订单信息发送给商户，商户需要接收处理该消息，并返回应答。

对后台通知交互时，如果微信收到商户的应答不符合规范或超时，微信认为通知失败，微信会通过一定的策略定期重新发起通知，尽可能提高通知的成功率，但微信不保证通知最终能成功。 （通知频率为：0/10/10/10/30/30/30/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300（单位：秒） ）

## 通知参数

| 参数名 | 变量 | 类型\[长度限制\] | 必填 | 描述 |
| --- | --- | --- | --- | --- |
| 返回状态码 | return\_code | string\[1,16\] | 是 | SUCCESS/FAIL<br>非签约结果标识，签约发起是否成功需要查看result\_code来判断。<br>示例值：SUCCESS |
| 返回信息 | return\_msg | string\[1,128\] | 否 | 返回信息，如非空，为错误原因<br>如：签名失败 等。<br>示例值：签名失败 |

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

| 参数名 | 变量 | 类型\[长度限制\] | 必填 | 描述 |
| --- | --- | --- | --- | --- |
| 业务结果 | result\_code | string\[1,16\] | 是 | SUCCESS/FAIL<br>示例值：SUCCESS |

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

| 参数名 | 变量 | 类型\[长度限制\] | 必填 | 描述 |
| --- | --- | --- | --- | --- |
| 商户号 | mch\_id | string\[1,32\] | 是 | 微信支付分配的商户号<br>示例值：10000098 |
| 子商户号 | sub\_mch\_id | string\[1,32\] | 是 | 微信支付分配的子商户号<br>示例值：1900000109 |
| 签约协议号 | contract\_code | string\[1,128\] | 是 | 商户侧的签约协议号，由商户生成，只能是数字、大小写字母的描述且在同一个商户号下唯一。<br>示例值：100000 |
| 模板id | plan\_id | string\[1,28\] | 是 | 协议模板id，设置路径见[开发步骤](https://pay.weixin.qq.com/doc/v2/partner/4011988361.md)。<br>示例值：12535 |
| 用户标识 | openid | string\[1,32\] | 是 | 同一个Appid下，用户的唯一标识 （注意：商户记录的签约用户的openid ，需以微信侧回调通知的openid为准，不建议商户使用自行记录的openid，避免扣款用户和签约用户对不上）<br>示例值：onqOjjmM1tad-3ROpncN-yUfa6ua |
| 用户子标识 | sub\_openid | string\[1,32\] | 否 | sub\_appid下，用户的唯一标识（注意：商户记录的签约用户的sub\_openid ，需以微信侧回调通知的sub\_openid为准，不建议商户使用自行记录的sub\_openid，避免扣款用户和签约用户对不上）<br>示例值：oUpF8uMuAJO\_M2pxb1Q9zNjWeS6o |
| 签名 | sign | string\[1,32\] | 是 | 详见[签名生成算法](https://pay.weixin.qq.com/doc/v2/partner/4011985884.md)<br>示例值：C380BEC2BFD727A4B6845133519F3AD6 |
| 变更类型 | change\_type | string\[1,32\] | 是 | 枚举值：<br>ADD：签约<br>DELETE：解约<br>商户可通过该字段判断是签约回调还是解约回调<br>示例值：ADD |
| 操作时间 | operate\_time | string\[1,32\] | 是 | 操作时间<br>示例值：2015-07-01 10:00:00 |
| 委托代扣协议id | contract\_id | string\[1,32\] | 是 | 签约成功后，微信返回的委托代扣协议id<br>示例值：Wx15463511252015071056489715 |
| 协议到期时间 | contract\_expired\_time | string\[1,32\] | 否 | 协议到期时间，当change\_type为ADD时有返回（目前协议时间为长期有效，可以忽略该字段）<br>示例值：2016-07-01 10:00:00 |
| 协议解约方式 | contract\_termination\_mode | int | 否 | 当change\_type为DELETE时有返回<br>1：有效期过自动解约（预留功能）<br>2：用户主动解约<br>3：商户API解约<br>4：商户平台解约<br>5：注销（用户微信账户注销）<br>7：用户联系客服发起的解约<br>示例值：3 |
| 请求序列号 | request\_serial | int64 | 是 | 商户请求签约时的序列号，要求唯一性。序列号主要用于排序，不作为查询条件，纯数字,范围不能超过int64的范围（9223372036854775807）。<br>示例值：1695 |

## 通知示例：

示例

```

<xml>
  <return_code><![CDATA[SUCCESS]]></return_code>
  <result_code><![CDATA[SUCCESS]]></result_code>
  <sign><![CDATA[C380BEC2BFD727A4B6845133519F3AD6]]></sign>
  <mch_id>10010404</mch_id>
  <sub_mch_id>10010405</sub_mch_id>
  <contract_code>100001256</contract_code>
  <openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6ua]]></openid>
  <plan_id><![CDATA[123]]></plan_id>
  <change_type><![CDATA[ADD]]></change_type>
  <operate_time><![CDATA[2015-07-01 10:00:00]]></operate_time>
  <contract_id><![CDATA[Wx15463511252015071056489715]]></contract_id>
</xml>

```

## 商户通知应答

如果商户侧未返回正确的内容，微信会多次通知，为了避免给商户服务器造成过大的压力，请在得到微信签约结果通知之后，返回以下内容。（请求方式：post）

注意：当商户后台应答失败时，微信支付将记录下应答的报文，建议商户按照以下格式返回。

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

## 返回示例：

示例

```

<xml>
  <return_code><![CDATA[SUCCESS]]></return_code>>
  <return_msg><![CDATA[OK]]></return_msg>
</xml>

```

微信支付签约、解约通知出口IP列表：

如果商户侧配置了防火墙，需要对商户回调通知功能开通下面白名单网段： 101.226.233.128/25