异步回调
平台收到支付宝通知后先落库,再按 voucher_id 找到 shop_id,POST 转发到贵方配置的 callback_url。请先验签,再按 voucher_id + biz_type 做幂等。
POST商户 callback_url
请求头
| Header | 必填 | 说明 |
|---|---|---|
Content-Type |
是 | application/json;charset=UTF-8 |
Authorization |
是 | 平台签名,可用贵方 token 校验 |
通知字段
| 参数 | 类型 | 说明 |
|---|---|---|
biz_type |
string | 事件类型,如 V_BATCH_PUBLISH / V_USE / V_REFUND / V_EXPIRE |
voucher_id |
string | 红包 ID,与发放接口返回一致 |
user_id |
string | 支付宝用户 UID |
activity_id |
string | 活动 ID |
activity_name |
string | 活动名称 |
voucher_status |
string | 券状态,如 ENABLED / DISABLED |
publish_amount |
int | 发放金额,单位一般为分 |
use_amount |
int | 核销金额,单位一般为分,视报文而定 |
refund_amount |
int | 退款金额,单位一般为分,视报文而定 |
order_id |
string | 支付宝侧订单号 |
gmt_voucher_create |
int | 发放时间戳,视报文而定 |
use_time |
int | 使用时间,视报文而定 |
refund_time |
int | 退款时间,视报文而定 |
你会收到什么
请求打到商户配置的 callback_url,Content-Type 为 application/json;charset=UTF-8。签名在请求头 Authorization 里。请尽快返回 HTTP 200,正文建议返回 success。同一 voucher_id + biz_type 可能重复通知。
验签
Authorization = md5( json_to_query_string(body) + "&token=" + 商户token )。先把 Body 各字段按 key 排序;普通值写成 key=value;若值为对象,写成 key="{...}"(内部双引号转成单引号);再用 & 连接。验签通过后再处理业务。
处理建议
实际字段以支付宝通知为准,请按存在字段解析,不要强依赖全部字段。金额相关字段单位一般为分。刚发放成功时本地可能暂时没有 user_id,以本回调为准。
常见 biz_type
| biz_type | 含义 |
|---|---|
V_BATCH_PUBLISH | 发放成功 |
V_USE | 核销使用 |
V_REFUND | 退款 |
V_EXPIRE | 过期 |