向用户预发放商品券
更新时间:2025.11.05品牌方可以通过本接口向用户预发放指定商品券批次,并使用返回的token在领券组件中完成发券,当用户已领取过时使用相同参数获取的token拉起的领券组件会返回已领取状态,能否发放受限于商品券批次的发放限额:
商品券批次总预算
商品券批次每日预算(如果有)
商品券批次每人限领(如果有)
前置条件:已创建商品券批次,商品券批次处于 SENDING 状态
接口说明
支持商户:【品牌商户】
请求方式:【POST】/brand/marketing/product-coupon/users/{openid}/pre-send-coupon
请求域名:【主域名】https://api.mch.weixin.qq.com 使用该域名将访问就近的接入点
【备域名】https://api2.mch.weixin.qq.com 使用该域名将访问异地的接入点 ,指引点击查看
接口限频:500/秒(品牌ID维度)
请求参数
Header HTTP头参数
Authorization 必填 string
请参考签名认证生成认证信息
Accept 必填 string
请设置为application/json
Content-Type 必填 string
请设置为application/json
Wechatpay-Serial 必填 string
【微信支付公钥ID】 请传入brand_id对应的微信支付公钥ID,接口将会校验两者的关联关系,参考微信支付公钥产品简介及使用说明获取微信支付公钥ID和相关的介绍。以下两种场景将使用到微信支付公钥: 1、接收到接口的返回内容,需要使用微信支付公钥进行验签; 2、调用含有敏感信息参数(如姓名、身份证号码)的接口时,需要使用微信支付公钥加密敏感信息后再传输参数,加密指引请参考微信支付公钥加密敏感信息指引。
path 路径参数
openid 必填 string
【用户OpenID】 OpenID信息,用户在AppID下的唯一标识,获取方式参考OpenID
body 包体参数
product_coupon_id 必填 string
【商品券ID】 商品券的唯一标识,创建商品券时由微信支付生成
stock_id 必填 string
【批次ID】 商品券批次的唯一标识,商品券批次创建时由微信支付生成(可使用【创建商品券API】或【添加商品券批次API】创建),请确保该批次属于 product_coupon_id 对应的商品券
coupon_code 选填 string(40)
【用户商品券Code】 用户商品券的唯一标识,给用户发券时需要为该用户的券分配,可使用 数字、大小写字母、下划线_、短横线- 组成,长度不超过40个字符。当且仅当 coupon_code_mode 为 API_ASSIGN 时必传,其他模式下用户商品券Code由微信支付分配,不允许传入。
appid 必填 string
【公众账号ID】 公众账号ID也称AppID,是(微信开放平台、微信公众平台)为开发者提供的一个唯一标识,用于识别开发者的应用程序(APP、小程序、公众号)。 开发者需要先在微信开放平台或微信公众平台中申请ID,然后在品牌经营平台中绑定,详见品牌经营平台指引。
send_request_no 必填 string(128)
【发券请求单号】 品牌给用户发券的请求流水号,品牌侧需保持唯一性,可使用 数字、大小写字母、下划线_、短横线- 组成,长度在6-128个字符之间
attach 选填 string(150)
【自定义附加信息】 发券时品牌方可以使用该字段附带自定义附加信息,长度限制150个UTF-8字符。微信支付不会解析该信息,仅在查询用户商品券和回调中原样返回。
注: 发券渠道多样,只有品牌方通过调用「向用户发放商品券」接口发放以及调用该接口预发券并在领券组件中发放的券才会在查询和回调中携带此字段,其他渠道发放的券 attach 为空。
请求示例
POST
应答参数
200 OK
token 必填 string(1024)
【预发券token】 商品券生成的预发券token,用于领券组件,该值有效期为5分钟
应答示例
200 OK
错误码
以下是本接口返回的错误码列表。详细错误码规则,请参考微信支付接口规则-错误码和错误提示
状态码 | 错误码 | 描述 | 解决方案 |
|---|---|---|---|
400 | PARAM_ERROR | 参数错误 | 请根据错误提示正确传入参数 |
400 | INVALID_REQUEST | HTTP 请求不符合微信支付 APIv3 接口规则 | 请参阅 接口规则 |
401 | SIGN_ERROR | 验证不通过 | 请参阅 签名常见问题 |
500 | SYSTEM_ERROR | 系统异常,请稍后重试 | 请稍后重试 |
400 | ALREADY_EXISTS | 该券已不可用,如需重新发券,请使用新的发券单号 | 请使用新的发券单号 |
400 | INVALID_REQUEST | 商品券批次核销方式需要支持小程序核销 | 修改商品券批次核销方式,添加小程序核销 |
403 | NO_AUTH | 品牌没有此接口权限 | 品牌没有此接口权限 |
400 | INVALID_REQUEST | 命中商品发放限制 | 提高商品券限额或更换发放批次 |
400 | INVALID_REQUEST | 券Code已使用 | 更换券code |
400 | INVALID_REQUEST | 发放单号已使用 | 更换发券单号 |
404 | NOT_FOUND | 用户券不存在 | 用户券不存在 |
404 | NOT_FOUND | 当前访问对象不存在,请确认ID是否合法且属于当前品牌 | 请确认ID是否合法且属于当前品牌 |
400 | INVALID_REQUEST | 传入的OpenID不合法 | 请使用参数 AppID 对应的的OpenID |
400 | PARAM_ERROR | 用户商品券Code不能为空 | 补充商品券Code参数 |
400 | INVALID_REQUEST | 命中商品券批次日限额 | 增加商品券批次日限额或更换批次后发放 |
400 | PARAM_ERROR | 参数错误,请根据接口文档检查字段要求 | 请根据接口文档检查字段要求,修复参数后重试 |
400 | INVALID_REQUEST | 发券时间大于商品券批次结束时间 | 检查商品券批次是否已过期 |
400 | INVALID_REQUEST | 商品券批次状态不是发放中 | 等待商品券批次生效后再发放 |
400 | INVALID_REQUEST | 商品券状态不是生效中 | 等待商品券批次生效后再发放 |
403 | USER_ERROR | 发券达到用户日限额 | 提高用户日限额或更换批次 |
403 | USER_ERROR | 发券达到用户总限额 | 更换发放批次 |
400 | PARAM_ERROR | Http header中缺少必填参数Wechatpay-Serial | 缺少必要商品券图片,请补充上传后重试 |
401 | SIGN_ERROR | Authorization不合法 | Http头未传递Authorization值或Authorization值格式错误,请参考《APIv3如何签名和验签》,检查传递的Authorization值是否符合规则 |
401 | SIGN_ERROR | Http头Authorization认证类型不正确 | Http头Authorization认证类型不正确,请将认证类型修改为WECHATPAY-BRAND-SHA256-RSA2048 |
403 | USER_ERROR | 用户领取券张数已达上限 | 增加用户限额或更换发放批次 |
