代付(出款)
受控代付:平台先冻结你的可用余额,再进入审批/出款流程;大额或命中风控的订单转人工审批。最终结果以回调/查询为准。
下单 POST /payout/create
请求业务参数(另带 公共参数):
| 字段 | 必填 | 说明 |
|---|---|---|
mch_order_no | 是 | 商户订单号,商户内唯一 |
product_code | 是 | 代付产品标识 |
amount | 是 | 金额(该币种最小单位) |
currency | 是 | 币种(平台为你开通的;未开通返回 1001) |
payee_name | 是 | 收款人姓名 |
payee_account | 是 | 收款账号 |
bank_code | 是 | 银行/钱包编码,按币种、须与 currency 匹配,见 银行代码。不在码表 → 2006;该币种暂无可承接通道 → 1001 |
attach | 否 | 透传数据(字符串) |
请求示例:
json
{
"merchant_no": "M100001",
"app_id": "app_10001",
"key_version": 1,
"timestamp": 1769990400,
"nonce": "c3d4e5f6a1b2c3d4",
"sign_type": "RSA2",
"mch_order_no": "PO20260601001",
"product_code": "PAYOUT",
"amount": 500000,
"currency": "PHP",
"payee_name": "Juan Dela Cruz",
"payee_account": "09171234567",
"bank_code": "PH_GXI",
"sign": "BASE64_SIGNATURE"
}响应 data 字段:
| 字段 | 说明 |
|---|---|
platform_order_no / mch_order_no | 订单号 |
amount / fee / currency | 金额 / 手续费 / 币种(最小单位) |
status | APPROVED(已通过,进入出款)或 FROZEN(转人工审批) |
review_required | 是否需人工审批(true 时 status=FROZEN) |
响应示例:
json
{
"code": "0",
"msg": "OK",
"data": {
"platform_order_no": "P20260601123456efgh",
"mch_order_no": "PO20260601001",
"amount": 500000,
"fee": 6000,
"currency": "PHP",
"status": "APPROVED",
"review_required": false
}
}查询 POST /payout/query
请求业务参数(另带 公共参数):
| 字段 | 必填 | 说明 |
|---|---|---|
mch_order_no | 二选一 | 商户订单号 |
platform_order_no | 二选一 | 平台订单号(建议只传一个) |
请求示例:
json
{
"merchant_no": "M100001",
"app_id": "app_10001",
"key_version": 1,
"timestamp": 1769990800,
"nonce": "d4e5f6a1b2c3d4e5",
"sign_type": "RSA2",
"platform_order_no": "P20260601123456efgh",
"sign": "BASE64_SIGNATURE"
}响应 data 字段:
| 字段 | 说明 |
|---|---|
platform_order_no / mch_order_no | 订单号 |
amount / fee / currency | 金额 / 手续费 / 币种(最小单位) |
status | 订单状态,见 订单状态 |
finished_at | 终态时间(Unix 秒;终态时返回) |
reversed_at | 冲正时间(Unix 秒;订单被冲正时返回) |
fail_reason | 失败原因(失败时返回) |
响应示例:
json
{
"code": "0",
"msg": "OK",
"data": {
"platform_order_no": "P20260601123456efgh",
"mch_order_no": "PO20260601001",
"amount": 500000,
"fee": 6000,
"currency": "PHP",
"status": "SUCCESS",
"finished_at": 1769991200
}
}异步回调通知
代付订单到达终态时,平台 POST 通知到你配置的代付回调地址。验签与应答规则同 代收回调(平台私钥签名、按 key_version 选平台公钥、先验签后处理、回 success、递增重试)。
通知字段:
| 字段 | 说明 |
|---|---|
platform_order_no / mch_order_no | 订单号 |
amount / fee / currency | 金额 / 手续费 / 币种(最小单位) |
status | 终态:SUCCESS / FAILED / REJECTED,见 订单状态 |
fail_reason | 失败原因(失败/拒绝时返回) |
key_version | 平台回调密钥版本 |
timestamp / nonce / sign_type / sign | 平台签名公共参数 |
通知报文示例(成功):
json
{
"platform_order_no": "P20260601123456efgh",
"mch_order_no": "PO20260601001",
"amount": 500000,
"fee": 6000,
"currency": "PHP",
"status": "SUCCESS",
"key_version": 1,
"timestamp": 1769991205,
"nonce": "e5f6a1b2c3d4e5f6",
"sign_type": "RSA2",
"sign": "PLATFORM_SIGN_BASE64"
}通知报文示例(失败):
json
{
"platform_order_no": "P20260601123456efgh",
"mch_order_no": "PO20260601001",
"amount": 500000,
"fee": 6000,
"currency": "PHP",
"status": "FAILED",
"fail_reason": "UPSTREAM_REJECTED",
"key_version": 1,
"timestamp": 1769991205,
"nonce": "e5f6a1b2c3d4e5f6",
"sign_type": "RSA2",
"sign": "PLATFORM_SIGN_BASE64"
}应答(验签通过且处理成功后,HTTP 200,响应体恰为):
text
success查询与通知的差别
通知体为终态快照(不含 finished_at/attach);需要终态时间或透传数据时请调用 查询接口。
冲正通知(payout.reversed)
代付订单到达终态 SUCCESS 之后,仍可能因上游退票/资金回拨被平台冲正。冲正时平台向同一个代付回调地址追加一条通知,验签与应答规则与上文一致。
- 识别:冲正通知带
event="payout.reversed",不带status字段;普通终态通知带status、不带event。请仅按event字段路由处理。 - 订单状态不变:仍为
SUCCESS;查询接口 以reversed_at体现。你应将该笔出款在自己系统里标记为已冲正并做资金处理。 - 幂等:同一订单的冲正通知至多一条(投递重试除外)。去重键 =
platform_order_no+ 通知类型——不要只按订单号去重,否则冲正通知会被当成已处理的终态通知而忽略。
通知字段:
| 字段 | 说明 |
|---|---|
event | 固定 payout.reversed |
reversed_at | 冲正时间(Unix 秒) |
platform_order_no / mch_order_no | 订单号 |
amount / fee | 原单金额 / 原单手续费(最小单位) |
currency | 币种 |
reversal_amount | 本次冲正金额(最小单位) |
fee_refund | 退回手续费(最小单位) |
key_version / timestamp / nonce / sign_type / sign | 平台签名公共参数 |
通知报文示例(冲正):
json
{
"event": "payout.reversed",
"reversed_at": 1770099205,
"platform_order_no": "P20260601123456efgh",
"mch_order_no": "PO20260601001",
"amount": 500000,
"fee": 6000,
"currency": "PHP",
"reversal_amount": 500000,
"fee_refund": 6000,
"key_version": 1,
"timestamp": 1770099210,
"nonce": "a1b2c3d4e5f6a1b2",
"sign_type": "RSA2",
"sign": "PLATFORM_SIGN_BASE64"
}应答规则同上:验签通过且处理成功后返回 HTTP 200 + 纯文本 success。