确认发放用户商品券

更新时间:2025.08.28

给用户发券后,微信支付会给品牌发送「商品券发放通知」,此时品牌应调用本接口确认发放成功。

:商品券有多个发券渠道,可以由微信支付提供的营销渠道(摇一摇有优惠、商家名片等)发券,品牌方也可以调用商品券本身的发券API主动发券,不论由何渠道发放,微信支付均会发送该通知给品牌方,品牌方均需调用本接口确认发放成功。

接口说明

支持商户:【品牌商户】

请求方式:【POST】/brand/marketing/product-coupon/users/{openid}/coupons/{coupon_code}/confirm

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

     【备域名】https://api2.mch.weixin.qq.com 使用该域名将访问异地的接入点 ,指引点击查看

请求参数

Header  HTTP头参数

 Authorization  必填 string

请参考签名认证生成认证信息


 Accept  必填 string

请设置为application/json


 Content-Type  必填 string

请设置为application/json


 Wechatpay-Serial  必填 string

【微信支付公钥ID】  请传入brand_id对应的微信支付公钥ID,接口将会校验两者的关联关系,参考微信支付公钥产品简介及使用说明获取微信支付公钥ID和相关的介绍。以下两种场景将使用到微信支付公钥: 1、接收到接口的返回内容,需要使用微信支付公钥进行验签; 2、调用含有敏感信息参数(如姓名、身份证号码)的接口时,需要使用微信支付公钥加密敏感信息后再传输参数,加密指引请参考微信支付公钥加密敏感信息指引


path  路径参数

 coupon_code  必填   string(40)

【用户商品券Code】 用户商品券的唯一标识


 openid  必填   string

【用户OpenID】 OpenID信息,用户在AppID下的唯一标识,获取方式参考OpenID


body  包体参数

 product_coupon_id  必填   string

【商品券ID】 商品券的唯一标识,创建商品券时由微信支付生成


 stock_id  必填   string

【批次ID】 商品券批次的唯一标识,商品券批次创建时由微信支付生成(可使用创建商品券添加商品券批次创建),请确保该批次属于 product_coupon_id 对应的商品券


 appid  必填   string

【公众账号AppID】 请传入与当前调用接口品牌ID有绑定关系的AppID,如何绑定请参考品牌经营平台指引,支持小程序AppID与公众号AppID


 out_request_no  必填   string(40)

【确认发放请求单号】 品牌确认发放用户商品券的请求流水号,品牌侧需保持唯一性,可使用 数字、大小写字母、下划线_、短横线- 组成,长度在6-40个字符之间

请求示例

POST

1curl -X POST \
2  https://api.mch.weixin.qq.com/brand/marketing/product-coupon/users/oh-394z-6CGkNoJrsDLTTUKiAnp4/coupons/123446565767/confirm \
3  -H "Authorization: WECHATPAY-BRAND-SHA256-RSA2048 brand_id=\"XXXX\",..." \
4  -H "Accept: application/json" \
5  -H "Wechatpay-Serial: PUB_KEY_ID_XXXX"  \
6  -H "Content-Type: application/json" \
7  -d '{
8    "product_coupon_id" : "1002323",
9    "stock_id" : "100232301",
10    "appid" : "wx233544546545989",
11    "out_request_no" : "MCHCONFIRM202003101234"
12  }'
13

应答参数

200 OK

 coupon_code  必填   string(40)

【用户商品券Code】 用户商品券的唯一标识


 coupon_state  必填   string

【用户商品券状态】 

可选取值

  • CONFIRMING:  待确认,用户商品券发放需要品牌方调用确认发放用户商品券接口后才能生效

  • PENDING:  已发放待生效,用户商品券已发放成功但尚未到达可用开始时间

  • EFFECTIVE:  已生效,用户商品券已成功发放且到达可用开始时间

  • USED:  已核销,用户商品券已核销

  • EXPIRED:  已过期,用户商品券已超过有效期,不再可用

  • DELETED:  已删除,用户主动删除该券

  • DEACTIVATED:  已失效,品牌方主动调用失效用户商品券接口使用户商品券失效


 valid_begin_time  必填   string

【有效期开始时间】 用户商品券可用开始时间,遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)


 valid_end_time  必填   string

【有效期结束时间】 用户商品券可用结束时间。遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)


 receive_time  必填   string

【领券时间】 用户领券时间。遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)


 send_request_no  必填   string

【发券请求单号】 发券时传入的请求流水号


 send_channel  必填   string

【发券渠道】 描述用户商品券是经由什么渠道发送的

可选取值

  • API:  品牌方自主发放,品牌方调用发券接口自行发放

  • BRAND_MANAGE:  摇一摇有优惠,通过摇一摇有优惠渠道发放

  • MERCHANT_CARD:  名片优惠,通过名片优惠渠道发放

  • MEMBER:  会员优惠,通过会员优惠渠道发放

  • SMALL_ACTIVITY:  小活动,通过小活动渠道发放


 confirm_request_no  选填   string

【确认请求单号】 品牌方确认发券请求时传入的的请求流水号。当且仅当 品牌方调用确认发放用户商品券接口后提供。


 confirm_time  选填   string

【确认发放时间】 品牌方确认发券时间,当且仅当 品牌方调用确认发放用户商品券接口后提供。遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)


 deactivate_request_no  选填   string

【失效请求单号】 品牌方失效券请求时传入的的请求流水号。当且仅当 coupon_state 为 DEACTIVATED 时提供。


 deactivate_time  选填   string

【失效时间】 失效时间,当且仅当 coupon_state 为 DEACTIVATED 时提供。遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)


 deactivate_reason  选填   string

【失效原因】 失效券的原因,当且仅当 coupon_state 为 DEACTIVATED 时提供,返回品牌方调用失效用户商品券接口时传入的失效原因


 single_usage_detail  选填   object

【单券使用详情】 当且仅当 usage_mode 为 SINGLE 时提供

属性

 sequential_usage_detail  选填   object

【多次优惠使用详情】 当且仅当 usage_mode 为 SEQUENTIAL 时提供

属性

 product_coupon  必填   object

【商品券信息】 该用户商品券对应的商品券详情

属性

 stock  必填   object

【批次信息】 该用户商品券发券时使用的批次详情

属性

 attach  选填   string

【自定义附加信息】 调用发券接口时品牌方使用 attach 字段主动设置的附加信息。微信支付不会解析该信息,仅在查询用户商品券和回调中原样返回。

注: 发券渠道多样,只有品牌方通过发券接口发放的券才会在查询和回调中携带此字段,其他渠道发放的券 attach 为空。


 channel_custom_info  选填   string(1000)

【渠道自定义信息】 使用微信支付提供的其他渠道(比如「摇一摇有优惠」)发放商品券时,渠道可能会设置该渠道特定的自定义信息,请根据 send_channel 字段判断如何解析本字段。不同渠道的自定义信息格式不同,请根据对应渠道的文档解析。

应答示例

200 OK

1{
2  "coupon_code" : "123446565767",
3  "coupon_state" : "USED",
4  "valid_begin_time" : "2025-01-01T00:00+08:00",
5  "valid_end_time" : "2025-01-30T23:59:59+08:00",
6  "receive_time" : "2025-01-01T09:10:00+08:00",
7  "send_request_no" : "MCHSEND202003101234",
8  "send_channel" : "API",
9  "confirm_request_no" : "MCHCONFIRM202003101234",
10  "confirm_time" : "2025-01-20T13:29:35+08:00",
11  "deactivate_request_no" : "1002600620019090123143254436",
12  "deactivate_time" : "2025-01-20T13:29:35+08:00",
13  "deactivate_reason" : "商品已下线",
14  "single_usage_detail" : {
15    "use_request_no" : "MCHUSE202003101234",
16    "use_time" : "2025-07-20T13:29:35+08:00",
17    "associated_order_info" : {
18      "transaction_id" : "4200000000123456789123456789",
19      "out_trade_no" : "trade_no_20250724123456",
20      "mchid" : "1234567890",
21      "sub_mchid" : "1234567890"
22    },
23    "return_request_no" : "MCHRETURN202003101234",
24    "return_time" : "2025-07-20T14:29:35+08:00"
25  },
26  "sequential_usage_detail" : {
27    "total_count" : 10,
28    "used_count" : 3,
29    "detail_item_list" : [
30      {
31        "detail_state" : "USED",
32        "valid_begin_time" : "2025-07-24T00:00+08:00",
33        "valid_end_time" : "2025-07-30T23:59:59+08:00",
34        "use_request_no" : "MCHUSE202003101234",
35        "use_time" : "2025-07-20T13:29:35+08:00",
36        "associated_order_info" : {
37          "transaction_id" : "4200000000123456789123456789",
38          "out_trade_no" : "trade_no_20250724123456",
39          "mchid" : "1234567890",
40          "sub_mchid" : "1234567890"
41        },
42        "return_request_no" : "MCHRETURN202003101234",
43        "return_time" : "2025-07-20T14:29:35+08:00",
44        "delete_time" : "2025-07-20T14:29:35+08:00"
45      }
46    ]
47  },
48  "product_coupon" : {
49    "product_coupon_id" : "1002323",
50    "scope" : "ALL",
51    "type" : "NORMAL",
52    "usage_mode" : "SEQUENTIAL",
53    "single_usage_info" : {
54      "normal_coupon" : {
55        "threshold" : 10000,
56        "discount_amount" : 100
57      },
58      "discount_coupon" : {
59        "threshold" : 10000,
60        "percent_off" : 30
61      }
62    },
63    "sequential_usage_info" : {
64      "type" : "EQUAL",
65      "count" : 10,
66      "available_days" : 10,
67      "interval_days" : 1
68    },
69    "display_info" : {
70      "name" : "全场满100可减10元",
71      "image_url" : "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx",
72      "background_url" : "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx",
73      "detail_image_url_list" : [
74        "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx"
75      ],
76      "original_price" : 10000,
77      "combo_package_list" : [
78        {
79          "name" : "咖啡2选1",
80          "pick_count" : 3,
81          "choice_list" : [
82            {
83              "name" : "美式",
84              "price" : 10000,
85              "count" : 2,
86              "image_url" : "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx",
87              "mini_program_appid" : "wx4fd12345678",
88              "mini_program_path" : "/pages/index/index"
89            }
90          ]
91        }
92      ]
93    },
94    "out_product_no" : "Product_1234567890",
95    "state" : "AUDITING",
96    "deactivate_request_no" : "1002600620019090123143254436",
97    "deactivate_time" : "2025-06-20T13:29:35+08:00",
98    "deactivate_reason" : "商品已下架"
99  },
100  "stock" : {
101    "product_coupon_id" : "200000001",
102    "stock_id" : "123456789",
103    "remark" : "满减券",
104    "coupon_code_mode" : "UPLOAD",
105    "coupon_code_count_info" : {
106      "total_count" : 10000,
107      "available_count" : 999
108    },
109    "stock_send_rule" : {
110      "max_count" : 10000000,
111      "max_count_per_day" : 10000,
112      "max_count_per_user" : 1
113    },
114    "single_usage_rule" : {
115      "coupon_available_period" : {
116        "available_begin_time" : "2025-01-01T00:00:00+08:00",
117        "available_end_time" : "2025-10-01T00:00:00+08:00",
118        "available_days" : 10,
119        "wait_days_after_receive" : 1,
120        "weekly_available_period" : {
121          "day_list" : [
122            "MONDAY"
123          ],
124          "day_period_list" : [
125            {
126              "begin_time" : 60,
127              "end_time" : 86399
128            }
129          ]
130        },
131        "irregular_available_period_list" : [
132          {
133            "begin_time" : "2025-01-01T00:00:00+08:00",
134            "end_time" : "2025-10-01T00:00:00+08:00"
135          }
136        ]
137      },
138      "normal_coupon" : {
139        "threshold" : 10000,
140        "discount_amount" : 100
141      },
142      "discount_coupon" : {
143        "threshold" : 10000,
144        "percent_off" : 30
145      },
146      "exchange_coupon" : {
147        "threshold" : 10000,
148        "exchange_price" : 100
149      }
150    },
151    "sequential_usage_rule" : {
152      "coupon_available_period" : {
153        "available_begin_time" : "2025-01-01T00:00:00+08:00",
154        "available_end_time" : "2025-10-01T00:00:00+08:00",
155        "wait_days_after_receive" : 1,
156        "weekly_available_period" : {
157          "day_list" : [
158            "MONDAY"
159          ],
160          "day_period_list" : [
161            {
162              "begin_time" : 60,
163              "end_time" : 86399
164            }
165          ]
166        },
167        "irregular_available_period_list" : [
168          {
169            "begin_time" : "2025-01-01T00:00:00+08:00",
170            "end_time" : "2025-10-01T00:00:00+08:00"
171          }
172        ]
173      },
174      "normal_coupon_list" : [
175        {
176          "threshold" : 10000,
177          "discount_amount" : 100
178        }
179      ],
180      "discount_coupon_list" : [
181        {
182          "threshold" : 10000,
183          "percent_off" : 30
184        }
185      ],
186      "exchange_coupon_list" : [
187        {
188          "threshold" : 10000,
189          "exchange_price" : 100
190        }
191      ],
192      "special_first" : false
193    },
194    "usage_rule_display_info" : {
195      "coupon_usage_method_list" : [
196        "MINI_PROGRAM"
197      ],
198      "mini_program_appid" : "wx1234567890",
199      "mini_program_path" : "/pages/index/product",
200      "app_path" : "https://www.example.com/jump-to-app",
201      "usage_description" : "全场可用",
202      "coupon_available_store_info" : {
203        "description" : "可在上海市区的所有门店使用,详细列表参考小程序内信息为准",
204        "mini_program_appid" : "wx1234567890",
205        "mini_program_path" : "/pages/index/store-list"
206      }
207    },
208    "coupon_display_info" : {
209      "code_display_mode" : "QRCODE",
210      "background_color" : "Color010",
211      "entrance_mini_program" : {
212        "appid" : "wx1234567890",
213        "path" : "/pages/index/product",
214        "entrance_wording" : "欢迎选购",
215        "guidance_wording" : "获取更多优惠"
216      },
217      "entrance_official_account" : {
218        "appid" : "wx1234567890"
219      },
220      "entrance_finder" : {
221        "finder_id" : "gh_12345678",
222        "finder_video_id" : "UDFsdf24df34dD456Hdf34",
223        "finder_video_cover_image_url" : "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx"
224      }
225    },
226    "notify_config" : {
227      "notify_appid" : "wx4fd12345678"
228    },
229    "store_scope" : "SPECIFIC",
230    "sent_count_info" : {
231      "total_count" : 100,
232      "today_count" : 10
233    },
234    "state" : "SENDING",
235    "deactivate_request_no" : "1002600620019090123143254436",
236    "deactivate_time" : "2025-01-01T00:00+08:00",
237    "deactivate_reason" : "批次信息有误,重新创建"
238  },
239  "attach" : "example_attach",
240  "channel_custom_info" : "example_channel_custom_info"
241}
242

 

错误码

公共错误码

状态码

错误码

描述

解决方案

400

PARAM_ERROR

参数错误

请根据错误提示正确传入参数

400

INVALID_REQUEST

HTTP 请求不符合微信支付 APIv3 接口规则

请参阅 接口规则

401

SIGN_ERROR

验证不通过

请参阅 签名常见问题

500

SYSTEM_ERROR

系统异常,请稍后重试

请稍后重试

业务错误码

状态码

错误码

描述

解决方案

400

INVALID_REQUEST

传入参数不符合业务规则

请参考文档中对每个字段的要求以及组合要求,确认请求参数是否满足

403

NO_AUTH

缺少业务相关权限

请确认已开通商品券权限

404

NOT_FOUND

未找到 product_coupon_id 对应的商品券

请确认 product_coupon_id 存在且属于当前品牌

404

NOT_FOUND

未找到 stock_id 对应的商品券批次

请确认 stock_id 存在且属于当前商品券

404

NOT_FOUND

未找到 coupon_code 对应的用户商品券

请确认 coupon_code 存在且属于当前商品券批次,且已发放给用户

429

RATELIMIT_EXCEEDED

请求超过接口频率限制

请稍后使用原参数重试