出金
奖励分发通知
奖励分发批量转账订单状态变更时,GatePay 发送 bizType 为 PAY_BATCH 的 webhook 通知。根据当前代码实现,该通知在批次全部成功后由 BatchTransferProcessTask 调用 BatchNotifyService.batchNotify(...) 发送。
商户须校验签名,处理成功后返回 {'returnCode':'SUCCESS','returnMessage':''}。通知失败时按 通知概览 中的间隔重试。
WEBHOOK
概述
本页说明奖励分发场景下的订单状态异步通知,对应webhook batchTransferNotify。
根据当前代码实现,该通知由批量处理任务在全部子单处理成功后触发发送:
- 调用位置:
BatchTransferProcessTask第 187 行 - 发送方法:
BatchNotifyService.batchNotify(...)
bizType固定为PAY_BATCHbizId为批量订单 ID(batchTransferModel.getBatchId())bizStatus为批量订单状态(当前这条发送链路下实际为PAID)data为 JSON 字符串,值来自JSON.toJSONString(batchOrderNotify)
说明
- 验签、重试、成功应答规则见 通知概览。
- 签名规则见 安全与签名。
- 建议基于
merchant_batch_no+reward_id做幂等处理。 - 若长时间未收到通知,可调用 商户批量转账订单查询 做补偿查询。
触发情形
当前代码中,奖励分发通知只在批次全部成功时发送:BatchTransferProcessTask先判断批次处理状态- 当状态为
BatchTransferProcessStatusEnum.AllPaid时 - 调用
batchNotifyService.batchNotify(batchTransferModel.getMerchantBatchNo(), batchTransferModel, batchTransferProcessStatus.getTransferOrderModels())
bizStatus 与子单 status 示例应与成功场景保持一致。
消息结构
| 字段名 | 类型 | 说明 |
|---|---|---|
bizType | string | 固定为 PAY_BATCH |
bizId | string | 批量订单 ID |
bizStatus | string | 批量订单状态;按当前代码发送链路,示例为 PAID |
client_id | string | 创建订单的商户 client_id |
data | string | 业务数据 JSON 字符串,需先 JSON.parse |
消息结构示例
data 字段说明
data 解析后为一个对象,字段如下:
| 字段名 | 类型 | 说明 |
|---|---|---|
currency | string | 批次币种,对应 BatchOrderNotify.currency |
merchant_batch_no | string | 商户批次号,对应 batchTransferModel.getMerchantBatchNo() |
batchItemList | array | 奖励分发子单列表 |
batchItemList 子项字段
| 字段名 | 类型 | 说明 |
|---|---|---|
receiver_id | int64 | 接收方 UID,对应 transferOrderModel.getReceive() |
amount | string | 奖励金额,对应 transferOrderModel.getAmount().toPlainString() |
currency | string | 币种,对应 transferOrderModel.getCurrency() |
status | string | 子单状态,对应 transferOrderModel.getStatus();当前成功回调示例为 PAID |
reward_id | string | 奖励单号 / 业务子单标识,对应 transferOrderModel.getRewardId() |
create_time | int64 | 创建时间(毫秒),对应 transferOrderModel.getCreateTime() |
channel_id | string | 客户名称 / 渠道标识,对应 transferOrderModel.getChannelId() |
代码实现对应关系
根据代码,通知体由BatchNotifyService.batchNotify(...) 构造:
- 顶层通知字段:
bizType = BizTypeEnum.PAY_BATCH.getType()bizId = batchTransferModel.getBatchId()bizStatus = batchTransferModel.getStatus()data = JSON.toJSONString(batchOrderNotify)
data内部对象batchOrderNotify字段:currencymerchant_batch_nobatchItemList
batchItemList子项字段:receiver_idamountcurrencystatusreward_idcreate_timechannel_id
回调示例
奖励分发批量成功通知
接入建议
- 先校验签名,再解析通知体。
- 对
data先做 JSON 反序列化,再读取merchant_batch_no与batchItemList。 - 以
merchant_batch_no识别批次,以reward_id识别单笔奖励。 - 以每个子项的
status作为实际奖励发放结果依据。 - 处理成功后返回 HTTP 200 与标准成功应答:
请求体
application/json
业务类型,固定为 PAY_BATCH。
可用选项:
PAY_BATCH 批量订单 ID,对应 batchTransferModel.getBatchId()。
批量订单状态,对应 batchTransferModel.getStatus()。按当前发送链路,示例值为 PAID。
可用选项:
PAID 业务数据 JSON 字符串,值来自 JSON.toJSONString(batchOrderNotify),解析后结构见 batchTransferData。
创建订单的商户 client_id。
data 解析后的奖励分发批量通知内容。

