跳转到主要内容
WEBHOOK
withdrawNotify
{
  "main_order": {
    "batch_id": "831618381568",
    "merchant_id": 17329983,
    "status": "SUCCESS",
    "client_id": "igasgasdbub",
    "pay_back_status": "NO",
    "channel_id": ""
  },
  "suborders": [
    {
      "merchant_id": 130559,
      "channel_id": "",
      "suborder_id": "30969031299072",
      "chain": "TRX",
      "address": "QBTW9qTMQBTW9qnoeMMmUxaAWEqVDDUgUw",
      "currency": "USDT",
      "amount": 2362.1,
      "fee": 1,
      "tx_id": "aaa33e642d6fb6e3272ae3c21c60f1248d1cd7ccdc000458308d690699",
      "memo": "",
      "status": "DONE",
      "merchant_withdraw_id": "1839295815",
      "fee_type": 1,
      "batch_withdraw_id": "",
      "desc": "",
      "reconciliation_status": 0,
      "is_placed": 1,
      "finish_time": 1748581414000,
      "sub_amount": 2363.1,
      "done_amount": 2362.1
    }
  ]
}
{
  "returnCode": "SUCCESS",
  "returnMessage": ""
}

概述

本页说明 webhook withdrawNotify。完整的参数、响应结构与示例由上方关联的 OpenAPI 或 webhook 定义渲染。 批量提现/出款订单状态变更时,GatePay 向商户配置的 callback URL 发送通知(对应 bizType=WITHDRAW 专用报文, data 字段)。

说明

  • 建议以 batch_id + merchant_withdraw_id 作为幂等键。
  • 验签、重试与成功应答见 通知概览;签名见 安全与签名
  • 长时间未收到回调时可调用 提现查询 补偿。

触发情形

  • 批量提现/出款订单状态发生改变时(例如全部成功、全部失败或部分成功),GatePay 向商户注册时配置的 callback URL 发送通知
  • 若通知投递失败,重试规则见 通知概览
适用范围:提现/出款批次及子订单状态变更,对应通用回调体系中的 bizType=WITHDRAW。接入说明见 出金

bizType 说明

通知概览bizType 枚举中,提现类通知的取值为 WITHDRAW,表示提现/出款状态变更。 与支付、退款等使用 bizTypebizIdbizStatusclient_iddata 标准封装的回调不同,WITHDRAW 回调采用专用报文结构:请求体直接包含 main_order(批次主单)与 suborders(子订单数组),批次状态体现在 main_order.status 字段中。

bizStatus 枚举值

终态通知的业务语义与下列 bizStatus 一致;批次处理进度另见 main_order.status(含 INITPROCESSING 等中间态)。
说明
WITHDRAW_SUCCESS批次全部成功,所有子订单均为终态(对应 main_order.status=SUCCESS
WITHDRAW_PARTIAL批次部分成功,部分子订单成功、部分失败(对应 main_order.status=PARTIAL
WITHDRAW_FAIL批次全部失败(对应 main_order.status=FAIL

消息结构

字段名类型说明
main_orderobject批次主单信息,见下表
subordersarray子订单列表,见下表

消息结构示例

{
  "main_order": {
    "batch_id": "831618381568",
    "merchant_id": 17329983,
    "status": "SUCCESS",
    "client_id": "igasgasdbub",
    "pay_back_status": "NO",
    "channel_id": ""
  },
  "suborders": [
    {
      "suborder_id": "30969031299072",
      "status": "DONE",
      "merchant_withdraw_id": "1839295815",
      "currency": "USDT",
      "amount": 2362.1
    }
  ]
}

批次状态(main_order.status

是否终态说明
INIT批次已创建,正在进行初始校验
PROCESSING批次处理中,资金正在转移
PARTIAL部分子订单成功,部分失败
FAIL整个批次失败
SUCCESS整个批次成功,所有子订单均已完成
回调顺序通常如下INITPROCESSING → 终态(SUCCESS / PARTIAL / FAIL)。

main_order 字段说明

字段名类型说明
batch_idstring批次 ID
merchant_idint64商户 ID
statusstring批次状态,见上表
client_idstring创建批次时使用的 client_id
pay_back_statusstring回退状态
channel_idstring客户名称 / 渠道标识

suborders 子项字段

字段名类型说明
suborder_idstring子订单 ID
merchant_idint64商户 ID
channel_idstring客户名称 / 渠道标识
chainstring区块链网络
from_addressstring出款方链上地址
addressstring收款地址
currencystring币种
amountnumber转账金额
feenumber手续费
tx_idstring交易哈希
memostring备注
statusstring子订单状态:DONE(成功)或 FAIL(失败)
merchant_withdraw_idstring商户提现 ID,建议作为幂等键
fee_typeint手续费类型:0 内扣,1 外扣
batch_withdraw_idstring批量提现 ID
descstring描述
reconciliation_statusint对账状态
is_placedint是否已提交:0 未提交,1 已提交
finish_timeint64完成时间(毫秒)
sub_amountnumber子订单总金额
done_amountnumber实际完成金额

回调示例

批量提现全部成功(main_order.status=SUCCESS

{
  "main_order": {
    "batch_id": "1526052914503263472",
    "merchant_id": 48177363,
    "status": "SUCCESS",
    "client_id": "DlaHYwkeGDjSGRVr",
    "pay_back_status": "NO",
    "channel_id": ""
  },
  "suborders": [
    {
      "fee": "0.0499",
      "desc": "",
      "chain": "BASEEVM",
      "tx_id": "0x2546829d95b7614acebde9dcc92d5b880ae82fa9791c2f80faa7ca668fc5cd3b",
      "amount": "0.1",
      "status": "DONE",
      "address": "0x524287c1e5a312a12c76380a3227611d3cb20ddf",
      "currency": "USDC",
      "fee_type": 0,
      "channel_id": "",
      "sub_amount": "0.1",
      "done_amount": "0.0501",
      "finish_time": 1780037579000,
      "merchant_id": 48177363,
      "suborder_id": "79553574716833917",
      "from_address": "0x0D0707963952f2fBA59dD06f2b425ace40b492Fe",
      "batch_withdraw_id": "1526052914503263472",
      "merchant_withdraw_id": "1526052914503263472",
      "reconciliation_status": 0
    }
  ]
}

部分成功(main_order.status=PARTIAL

{
  "main_order": {
    "batch_id": "1526052914503263472",
    "merchant_id": 48177363,
    "status": "PARTIAL",
    "client_id": "DlaHYwkeGDjSGRVr",
    "pay_back_status": "NO",
    "channel_id": ""
  },
  "suborders": [
    {
      "fee": "0.0499",
      "desc": "",
      "chain": "BASEEVM",
      "tx_id": "0x2546829d95b7614acebde9dcc92d5b880ae82fa9791c2f80faa7ca668fc5cd3b",
      "amount": "0.1",
      "status": "DONE",
      "address": "0x524287c1e5a312a12c76380a3227611d3cb20ddf",
      "currency": "USDC",
      "fee_type": 0,
      "channel_id": "",
      "sub_amount": "0.1",
      "done_amount": "0.0501",
      "finish_time": 1780037579000,
      "merchant_id": 48177363,
      "suborder_id": "79553574716833917",
      "from_address": "0x0D0707963952f2fBA59dD06f2b425ace40b492Fe",
      "batch_withdraw_id": "1526052914503263472",
      "merchant_withdraw_id": "1526052914503263472",
      "reconciliation_status": 0
    },
    {
      "fee": "0.0499",
      "desc": "",
      "chain": "BASEEVM",
      "tx_id": "",
      "amount": "0.1",
      "status": "FAIL",
      "address": "0x524287c1e5a312a12c76380a3227611d3cb20ddf",
      "currency": "USDC",
      "fee_type": 0,
      "channel_id": "",
      "sub_amount": "0.1",
      "done_amount": "0.0501",
      "finish_time": 1780037579000,
      "merchant_id": 48177363,
      "suborder_id": "79553574716833918",
      "from_address": "0x0D0707963952f2fBA59dD06f2b425ace40b492Fe",
      "batch_withdraw_id": "1526052914503263472",
      "merchant_withdraw_id": "1526052914503263473",
      "reconciliation_status": 0
    }
  ]
}

全部失败(main_order.status=FAIL

{
  "main_order": {
    "batch_id": "1526052914503263472",
    "merchant_id": 48177363,
    "status": "FAIL",
    "client_id": "DlaHYwkeGDjSGRVr",
    "pay_back_status": "NO",
    "channel_id": ""
  },
  "suborders": [
    {
      "fee": "0.0499",
      "desc": "",
      "chain": "BASEEVM",
      "tx_id": "",
      "amount": "0.1",
      "status": "FAIL",
      "address": "0x524287c1e5a312a12c76380a3227611d3cb20ddf",
      "currency": "USDC",
      "fee_type": 0,
      "channel_id": "",
      "sub_amount": "0.1",
      "done_amount": "0.0501",
      "finish_time": 1780037579000,
      "merchant_id": 48177363,
      "suborder_id": "79553574716833917",
      "from_address": "0x0D0707963952f2fBA59dD06f2b425ace40b492Fe",
      "batch_withdraw_id": "1526052914503263472",
      "merchant_withdraw_id": "1526052914503263472",
      "reconciliation_status": 0
    }
  ]
}

请求体

application/json

GatePay 在批量提现订单状态变化时向商户回调的数据结构,包含主订单对象和子订单数组。

main_order
object
必填

回调通知中的主提现单信息。

suborders
object[]
必填

子订单回调详情数组。

响应

200 - application/json

返回 HTTP 200 表示商户已成功接收通知。

商户接收通知后的响应体。

returnCode
string
必填

返回状态码,SUCCESS 表示成功。

returnMessage
string | null

返回说明,成功时可为空。