---
url: "https://pay.weixin.qq.com/doc/v2/merchant/4011937361.md"
title: "撤销订单"
doc_id: 4011937361
---

>更新时间：2024.08.06

### 应用场景

支付交易返回失败或支付系统超时，调用该接口撤销交易。如果此订单用户支付失败，微信支付系统会将此订单关闭；如果用户支付成功，微信支付系统会将此订单资金退还给用户。

注意：

7天以内的交易单可调用撤销，其他正常支付的单如需实现相同功能请调用申请退款API。提交支付交易后调用【[查询订单API](https://pay.weixin.qq.com/doc/v2/merchant/4011937320.md)】，没有明确的支付结果再调用【撤销订单API】。

调用支付接口后请勿立即调用撤销订单API，建议支付后至少15s后再调用撤销订单接口。

### 接口链接

URL地址：https://api.mch.weixin.qq.com/secapi/pay/reverse

URL地址：https://api2.mch.weixin.qq.com/secapi/pay/reverse(备用域名)[见跨城冗灾方案](https://pay.weixin.qq.com/doc/v2/merchant/4011984887.md)

### 是否需要证书

请求需要双向证书。 详见[证书使用](https://pay.weixin.qq.com/doc/v2/merchant/4011985891.md)

### 请求参数

| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
| --- | --- | --- | --- | --- | --- |
| 公众账号ID | appid | 是 | String(32) | wx8888888888888888 | 微信分配的公众账号ID（企业号corpid即为此appid） |
| 商户号 | mch\_id | 是 | String(32) | 1900000109 | 微信支付分配的商户号 |
| 微信订单号 | transaction\_id | 否 | String(32) | 1217752501201407033233368018 | 微信的订单号，优先使用 |
| 商户订单号 | out\_trade\_no | 是 | String(32) | 1217752501201407033233368018 | 商户系统内部的订单号,transaction\_id、out\_trade\_no二选一，如果同时存在优先级：transaction\_id> out\_trade\_no |
| 随机字符串 | nonce\_str | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串，不长于32位。推荐[随机数生成算法](https://pay.weixin.qq.com/doc/v2/merchant/4011985891.md) |
| 签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 签名，详见[签名生成算法](https://pay.weixin.qq.com/doc/v2/merchant/4011985891.md) |
| 签名类型 | sign\_type | 否 | String(32) | HMAC-SHA256 | 签名类型，目前支持HMAC-SHA256和MD5，默认为MD5 |

提交参数举例如下：

```
<xml>
   <appid>wx2421b1c4370ec43b</appid>
   <mch_id>10000100</mch_id>
   <nonce_str>b7ffb16a7150cf08639db472c5f5bdae</nonce_str>
   <out_trade_no>1415717424</out_trade_no>
   <sign>9B2EA16C05A5CEF8E53B14D53932D012</sign>
</xml>
```

### 返回结果

| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
| --- | --- | --- | --- | --- | --- |
| 返回状态码 | return\_code | 是 | String(16) | SUCCESS | SUCCESS/FAIL<br>此字段是通信标识，非交易标识 |
| 返回信息 | return\_msg | 是 | String(128) | OK | 当return\_code为FAIL时返回信息为错误原因 ，例如签名失败、参数格式校验错误 |

当return\_code为SUCCESS的时候，还会包括以下字段：

| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
| --- | --- | --- | --- | --- | --- |
| 公众账号ID | appid | 是 | String(32) | wx8888888888888888 | 返回提交的公众账号ID |
| 商户号 | mch\_id | 是 | String(32) | 1900000109 | 返回提交的商户号 |
| 随机字符串 | nonce\_str | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 微信返回的随机字符串 |
| 签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 返回数据的签名，详见[签名算法](https://pay.weixin.qq.com/doc/v2/merchant/4011985891.md) |
| 业务结果 | result\_code | 是 | String(16) | SUCCESS | SUCCESS/FAIL |
| 错误代码 | err\_code | 否 | String(32) | SYSTEMERROR | 详细参见错误列表 |
| 错误描述 | err\_code\_des | 否 | String(128) | 系统错误 | 结果信息描述 |
| 是否重调 | recall | 否 | String(1) | Y | 是否需要继续调用撤销，Y-需要，N-不需要 |

返回参数举例如下：

```
<xml>
   <return_code><![CDATA[SUCCESS]]></return_code>
   <return_msg><![CDATA[OK]]></return_msg>
   <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
   <mch_id><![CDATA[10000100]]></mch_id>
   <nonce_str><![CDATA[o5bAKF3o2ypC8hwa]]></nonce_str>
   <sign><![CDATA[6F5080EDDD196FFCDE53F786BBB93899]]></sign>
   <result_code><![CDATA[SUCCESS]]></result_code>
   <recall><![CDATA[N]]></recall>
</xml>
```

### 错误码

| 名称 | 描述 | 原因 | 解决方案 |
| --- | --- | --- | --- |
| SYSTEMERROR | 接口返回错误 | 系统超时 | 请立即调用被扫订单结果查询API，查询当前订单状态，并根据订单的状态决定下一步的操作。 |
| INVALID\_TRANSACTIONID | 无效transaction\_id | 请求参数未按指引进行填写 | 参数错误，请重新检查 |
| PARAM\_ERROR | 参数错误 | 请求参数未按指引进行填写 | 请根据接口返回的详细信息检查您的程序 |
| REQUIRE\_POST\_METHOD | 请使用post方法 | 未使用post传递参数 | 请检查请求参数是否通过post方法提交 |
| SIGNERROR | 签名错误 | 参数签名结果不正确 | 请检查签名参数和方法是否都符合签名算法要求 |
| REVERSE\_EXPIRE | 订单无法撤销 | 订单有7天的撤销有效期，过期将不能撤销 | 请检查需要撤销的订单是否超过可撤销有效期 |
| INVALID\_REQUEST | 无效请求 | 商户系统异常导致 | 请检查商户权限是否异常、重复请求支付、证书错误、频率限制等 |
| TRADE\_ERROR | 订单错误 | 业务错误导致交易失败 | 请检查用户账号是否异常、被风控、是否符合规则限制等 |
| USERPAYING | 用户支付中 | 用户正在支付中的订单不允许撤销 | 用户正在支付中的订单不允许撤销，请稍后再试 |