---
url: "https://pay.weixin.qq.com/doc/brand/4016427797.md"
title: "预上传券CODE"
doc_id: 4016427797
---

>更新时间：2025.11.07

品牌方可以通过该接口为商品券批次预上传券Code

前置条件：

1. 批次的 `coupon_code_mode` 配置为 `UPLOAD`

2. 批次未失效或过期





## 接口说明

支持商户：【品牌商户】

请求方式：【POST】 `/brand/marketing/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/upload-coupon-codes`

请求域名：【主域名】https://api.mch.weixin.qq.com 使用该域名将访问就近的接入点

　　　　　【备域名】https://api2.mch.weixin.qq.com 使用该域名将访问异地的接入点，指引[点击查看](https://pay.weixin.qq.com/doc/brand/4015596635.md)

接口限频：20/秒（品牌ID维度）

## 请求参数

### Header 参数
| 参数名 | 类型 | 必填 | 描述 |
| --- |  --- | --- | --- |
| Authorization | string | true | 请参考 [签名认证](https://pay.weixin.qq.com/doc/brand/4015407568.md) 生成认证信息 |
| Accept | string | true | 请设置为 `application/json` |
| Content-Type | string | true | 请设置为 `application/json` |
| Wechatpay-Serial | string | true | 【微信支付公钥ID】  请传入brand\_id对应的微信支付公钥ID，接口将会校验两者的关联关系，参考 [微信支付公钥产品简介及使用说明](https://pay.weixin.qq.com/doc/brand/4015597001.md) 获取微信支付公钥ID和相关的介绍。以下两种场景将使用到微信支付公钥：<br>1、接收到接口的返回内容，需要使用微信支付公钥进行验签；<br>2、调用含有敏感信息参数（如姓名、身份证号码）的接口时，需要使用微信支付公钥加密敏感信息后再传输参数，加密指引请参考 [微信支付公钥加密敏感信息指引](https://pay.weixin.qq.com/doc/brand/4015407587.md)。 |
### Path 参数
| 参数名 | 类型 | 必填 | 描述 |
| --- |  --- | --- | --- |
| product_coupon_id | string | true | 【商品券ID】 商品券的唯一标识， [创建商品券](https://pay.weixin.qq.com/doc/brand/4015736297.md) 时由微信支付生成 |
| stock_id | string | true | 【批次ID】 商品券批次的唯一标识，商品券批次创建时由微信支付生成（可使用【 [创建商品券API](https://pay.weixin.qq.com/doc/brand/4015736297.md)】或【 [添加商品券批次API](https://pay.weixin.qq.com/doc/brand/4015736342.md)】创建），请确保该批次属于 `product_coupon_id` 对应的商品券 |
### Body 参数
| 参数名 | 类型 | 必填 | 描述 |
| --- |  --- | --- | --- |
| out_request_no | string(40) | true | 【请求单号】 品牌上传券Code的请求流水号，品牌侧需保持唯一性，可使用 数字、大小写字母、下划线 `_`、短横线 `-` 组成，长度在6-40个字符之间 |
| code_list | array[string(40)] | true | 【券Code列表】 商户待上传的券Code列表，券Code需保持唯一性，可使用 数字、大小写字母、下划线 `_`、短横线 `-` 组成，长度不超过40个字符。<br>单次最多可上传200个券Code |
## 应答参数

200 OK

| 参数名 | 类型 | 必填 | 描述 |
| --- |  --- | --- | --- |
| total_count | integer | true | 【去重后券Code总数】 系统会自动对请求中的券Code去重，这里是去重后的券Code总数 |
| success_code_list | array[string] | false | 【上传成功的券Code列表】 上传成功的券Code列表，原样返回 |
| failed_code_list | array[object] | false | 【上传失败的券Code列表】 每个失败券Code的详细错误信息 |
| failed_code_list.coupon_code | string | true | 【券Code】 上传失败的券Code，原样返回 |
| failed_code_list.code | string | true | 【错误码】 上传失败的错误码 |
| failed_code_list.message | string | true | 【错误信息】 上传失败的错误描述 |
| already_exist_code_list | array[string] | false | 【已经存在的券Code列表】 这些券Code已经存在于系统中，不会重复上传 |
| duplicate_code_list | array[string] | false | 【重复的券Code列表】 这些券Code在请求中重复出现，不会重复上传 |
## 错误码

以下是本接口返回的错误码列表。详细错误码规则，请参考[微信支付接口规则-错误码和错误提示](https://pay.weixin.qq.com/doc/brand/4015407525.md#%E9%94%99%E8%AF%AF%E7%A0%81%E5%92%8C%E9%94%99%E8%AF%AF%E6%8F%90%E7%A4%BA)

| 状态码 | 错误码 | 描述 | 解决方案 |
| --- | --- | --- | --- |
| 400 | PARAM\_ERROR | 参数错误 | 请根据错误提示正确传入参数 |
| 400 | INVALID\_REQUEST | HTTP 请求不符合微信支付 APIv3 接口规则 | 请参阅 [接口规则](https://pay.weixin.qq.com/doc/brand/4015407525.md) |
| 401 | SIGN\_ERROR | 验证不通过 | 请参阅 [签名常见问题](https://pay.weixin.qq.com/doc/brand/4015597625.md) |
| 500 | SYSTEM\_ERROR | 系统异常，请稍后重试 | 请稍后重试 |
| 400 | INVALID\_REQUEST | 单券使用模式的商品券批次，应该在「单券使用规则」中包含对应类型的优惠规则。对于文档中标记不应填写的优惠规则应删除。 | 请在「单券使用规则」中包含对应类型的优惠规则，并删除文档中标记不应填写的优惠规则。 |
| 400 | INVALID\_REQUEST | 多次优惠使用模式的商品券批次，应该在「多次优惠使用规则」中包含对应类型的优惠规则，且数量与多次优惠的优惠次数相等 | 在「多次优惠使用规则」中包含对应类型的优惠规则，且数量与多次优惠的优惠次数相等 |
| 400 | INVALID\_REQUEST | 单品满减券或单品折扣券不应在商品券中设置「满减券使用规则」或「折扣券使用规则」，而是应该在商品券批次中设置 | 请删除商品券中的「满减券使用规则」或「折扣券使用规则」，并在商品券批次中设置对应的优惠规则 |
| 403 | NO\_AUTH | 品牌没有此接口权限 | 品牌没有此接口权限 |
| 400 | INVALID\_REQUEST | 商品券支持APP核销时，必须提供「APP跳转路径」 | 请提供「APP跳转路径」参数 |
| 400 | PARAM\_ERROR | 分页大小超出限制，请根据接口文档调整到允许的范围 | 请调整分页大小到规定范围 |
| 404 | NOT\_FOUND | 当前访问对象不存在，请确认ID是否合法且属于当前品牌 | 请确认ID是否合法且属于当前品牌 |
| 400 | INVALID\_REQUEST | 商品券支持小程序核销时，必须提供「小程序AppID」 | 请提供「小程序AppID」 |
| 400 | INVALID\_REQUEST | 单品券必须提供商品原价，请补充 | 请补充商品原价 |
| 400 | INVALID\_REQUEST | 商品券支持小程序核销时，必须提供「小程序跳转路径」 | 请提供提供「小程序跳转路径」 |
| 400 | PARAM\_ERROR | 时间字符串格式错误，请使用 RFC3339 标准格式 | 请使用 RFC3339 标准格式 |
| 400 | INVALID\_REQUEST | 单券模式下，全场满减券应在商品券中提供满减券使用规则信息 | 请在商品券中提供「满减券使用规则信息」 |
| 400 | INVALID\_REQUEST | 每周固定可用时间(weekly\_available\_period)中提供当天可用时间段时(day\_period\_list)，每周可用星期数(day\_list)必填 | 请补充 每周可用星期数(day\_list) |
| 400 | INVALID\_REQUEST | 单券模式下，全场券需要提供「单券模式信息(single\_usage\_info)」 | 请提供单券模式信息(single\_usage\_info) |
| 400 | INVALID\_REQUEST | 多次优惠模式下必须提供「多次优惠模式信息(sequential\_usage\_info)」 | 请填写 多次优惠模式信息(sequential\_usage\_info) |
| 400 | INVALID\_REQUEST | 传入的OpenID不合法 | 请使用参数 AppID 对应的的OpenID |

请求示例

- [curl 示例](https://pay.weixin.qq.com/doc/brand/4016427797-curl.md)
- [Java 示例](https://pay.weixin.qq.com/doc/brand/4016427797-java.md)
- [Go 示例](https://pay.weixin.qq.com/doc/brand/4016427797-go.md)


应答示例

> 200 OK

上传自定义券Code

```
{
  "total_count" : 3,
  "success_code_list" : [
    "code_0000002",
    "code_0000003"
  ],
  "already_exist_code_list" : [
    "code_0000001"
  ],
  "duplicate_code_list" : [
    "code_0000002"
  ]
}

```
