# 关闭订单

> 使用本接口需要开启[开放接口服务](/minigame/dev/wxcloudrun/src/guide/weixin/open)

以下情况需要调用关单接口：

- 商户订单支付失败需要生成新单号重新发起支付，要对原订单号调用关单，避免重复支付；
- 系统下单后，用户支付超时，系统退出不再受理，避免用户继续，请调用关单接口。

**注意：订单生成后不能马上调用关单接口，最短调用时间间隔为 5 分钟。**

## 接口地址

``` bash
http://api.weixin.qq.com/_/pay/closeorder
```

## 入参数据

``` json
{
  "out_trade_no":"2021WERUN1647840687637",
  "sub_mch_id":"1712734762"
}
```

## 出参数据

``` json
{
  "errcode":0,
  "errmsg":"ok",
  "respdata":{
    "return_code":"SUCCESS",
    "return_msg":"OK",
    "appid":"wxd2565e6a04246fd1",
    "mch_id":"1800780001",
    "sub_appid":"wxd2565e6a04246fd1",
    "sub_mch_id":"1712734762",
    "nonce_str":"9uI3AxvJ7GLpGIIX",
    "sign":"A1826DE9C17DE39BF3B01A521DE6BFE",
    "result_code":"SUCCESS"
  }
}
```

## 参数说明

| 字段名| 变量名 | 必填 | 类型 | 示例值 | 描述 |
|----|---|---|---|---|---|
| 子商户号| sub_mch_id | 是 | String(32) | 1900000109 | 微信支付分配的子商户号 |
| 商户订单号| out_trade_no | 是 | String(32) | 1217752501201407033233368018 | 商户系统内部订单号，要求 32 个字符内，只能是数字、大小写字母_-\|*@ ，且在同一个商户号下唯一。 |
| 随机字符串| nonce_str| 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 商户系统内部的订单号,32 个字符内、可包含字母, 其他说明见[安全规范](https://pay.weixin.qq.com/doc/v2/partner/4011985884)|

## 返回值说明

| 字段名 | 变量名| 必填 | 类型| 示例值 | 描述 |
|---|---|---|---|---|---|
| 返回状态码 | return_code | 是 | String(16)| SUCCESS| SUCCESS/FAIL |
| 返回信息 | return_msg| 否 | String(128) | 签名失败 | 返回信息，如非空，为错误原因。如 签名失败、参数格式校验错误|

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

| 字段名| 变量名 | 必填 | 类型| 示例值 | 描述 |
|----|---|------|--|-|--|
| 服务商的 APPID | AppID| 是 | String(32)| wxd678efh567hg6787 | 服务商商户的 APPID|
| 商户号| mch_id | 是 | String(32)| 1230000109 | 微信支付分配的商户号 |
| 小程序的 APPID | sub_appid| 是 | String(32)| wx8888888888888888 | 微信分配的小程序 ID |
| 子商户号| sub_mch_id | 是 | String(32)| 1900000109 | 微信支付分配的子商户号 |
| 随机字符串| nonce_str| 是 | String(32)| 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串，不长于 32 位 |
| 签名| sign | 是 | String(32)| C380BEC2BFD727A4B6845133519F3AD6 | 签名，[验证签名算法](https://pay.weixin.qq.com/doc/v2/partner/4011985884) |
| 业务结果| result_code| 是 | String(16)| SUCCESS| SUCCESS/FAIL |
| 业务结果描述| result_msg | 是 | String(32)| OK | 对于业务执行的详细描述 |
| 错误代码| err_code | 否 | String(32)| SYSTEMERROR| 详细参见下文错误列表 |
| 错误代码描述| err_code_des | 否 | String(128) | 系统错误 | 结果信息描述 |

## 错误码

| 名称| 描述 | 原因 | 解决方案 |
|----------|-----|----|------|
| ORDERPAID | 订单已支付 | 订单已支付，不能发起关单 | 订单已支付，不能发起关单，请当作已支付的正常交易 |
| SYSTEMERROR | 系统错误 | 系统错误 | 系统异常，请重新调用该 API|
| ORDERCLOSED | 订单已关闭 | 订单已关闭，无法重复关闭 | 订单已关闭，无需继续调用 |
| SIGNERROR | 签名错误 | 参数签名结果不正确 | 请检查签名参数和方法是否都符合签名算法要求 |
| REQUIRE_POST_METHOD | 请使用 post 方法 | 未使用 post 传递参数 | 请检查请求参数是否通过 post 方法提交 |
| XML_FORMAT_ERROR| XML 格式错误| XML 格式错误| 请检查 XML 参数格式是否正确|
