出金
奖励分发通知
奖励分发批量转账订单状态变更时,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 示例应与成功场景保持一致。
消息结构
消息结构示例
data 字段说明
data 解析后为一个对象,字段如下:
batchItemList 子项字段
代码实现对应关系
根据代码,通知体由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 解析后的奖励分发批量通知内容。

