发起分账
接口说明
商户系统通过该接口对分账订单发起分账。原支付订单须在统一下单(或网关预下单)时声明 allocation=true,资金才会被冻结并可发起分账;否则通道将拒绝分账。
接收方列表在请求中直接传入完整明细(极简模式),分账接收方须提前在通道侧完成绑定(平台管理端「通道商户详情」提供绑定入口),发起时只做金额拆分。
请求地址
POST /unipay/alloc
- 认证:RSA 签名(
@PaymentVerify) - 响应:
DaxResult<AllocResult>
请求参数
基础参数同 统一支付 - 基础参数,业务参数:
| 参数 | 类型 | 必填 | 最大长度 | 描述 |
|---|---|---|---|---|
| bizAllocNo | string | 是 | 100 | 商户分账单号(幂等键,同一应用下唯一) |
| tradeNo | string | 否* | 100 | 原支付资金交易号 |
| bizOrderNo | string | 否* | 100 | 原支付商户业务订单号 |
| title | string | 否 | 100 | 分账标题 |
| description | string | 否 | 500 | 分账描述 |
| receivers | object[] | 是 | — | 接收方列表(至少一个) |
| attach | string | 否 | 500 | 商户扩展参数,回调时原样返回 |
| notifyUrl | string | 否 | 200 | 异步通知地址 |
*
tradeNo与bizOrderNo至少传一个,优先级:tradeNo > bizOrderNo
receivers 接收方元素
| 参数 | 类型 | 必填 | 最大长度 | 描述 |
|---|---|---|---|---|
| receiverType | string | 是 | 32 | 接收方类型(见下方码表) |
| receiverAccount | string | 是 | 128 | 接收方账号 |
| receiverName | string | 否 | 64 | 接收方姓名(部分通道/类型必填,如微信商户号类型须填商户全称) |
| amount | number | 是 | — | 分账金额(元,两位小数,最小 0.01,最大 99999999.99) |
receiverType 码表
对应后端枚举 AllocReceiverTypeEnum(对外统一使用大写类型码):
| 类型 | 说明 |
|---|---|
| MERCHANT_ID | 商户号(微信/抖音) |
| PERSONAL_OPENID | 个人 openid(微信/抖音) |
| PERSONAL_SUB_OPENID | 子商户应用个人 openid(仅微信服务商接收方绑定使用) |
| USER_ID | 支付宝用户 ID(2088 开头) |
| LOGIN_NAME | 支付宝登录账号(手机号/邮箱) |
请求示例
json
{
"mchNo": "M200000001",
"appId": "APP001",
"reqId": "REQ20241201030",
"reqTime": "2024-12-01 12:30:00",
"sign": "Base64签名值",
"bizAllocNo": "ALOC20241201001",
"tradeNo": "T2024120112345700001",
"title": "订单分账",
"receivers": [
{
"receiverType": "USER_ID",
"receiverAccount": "2088xxxxxxxxxxxx",
"receiverName": "张三",
"amount": 30.00
},
{
"receiverType": "USER_ID",
"receiverAccount": "2088yyyyyyyyyyyy",
"amount": 70.00
}
],
"notifyUrl": "https://your-domain.com/notify"
}响应参数
DaxResult<AllocResult>,data 字段结构:
| 参数 | 类型 | 描述 |
|---|---|---|
| allocNo | string | 平台分账单号 |
| bizAllocNo | string | 商户分账单号 |
| status | string | 分账状态(AllocOrderStatusEnum) |
| errorMsg | string | 错误信息(失败时返回) |
分账状态 AllocOrderStatusEnum
| status | 说明 |
|---|---|
| processing | 分账中(已受理,等待通道异步推进) |
| success | 分账成功(全部接收方成功) |
| partial | 部分成功(部分接收方成功,部分失败,单次分账终态) |
| fail | 分账失败(全部接收方失败) |
响应示例
json
{
"code": 0,
"msg": "success",
"data": {
"allocNo": "A2024120112345700001",
"bizAllocNo": "ALOC20241201001",
"status": "processing"
},
"sign": "Base64签名值",
"resTime": "2024-12-01 12:30:00",
"reqId": "REQ20241201030"
}使用建议
- 下单即声明分账:原支付订单须在 统一支付(或 网关预下单)时传
allocation=true,资金冻结后才可发起分账;未声明分账的订单通道会拒绝分账。 - 接收方提前绑定:接收方绑定由调用方提前在通道侧完成(管理端「通道商户详情」提供绑定入口),绑定关系按通道商户区分,同通道商户同类型同账号不可重复绑定;发起分账时接收方须已绑定。
- 金额约束:单接收方分账金额为 0.01 ~ 99999999.99 元(最多两位小数);各接收方金额合计不得超过原订单金额,且须小于原订单剩余可分金额。
- 单次分账即完结:一次发起即完结,无追加分账;
partial(部分成功)为终态,失败接收方需重新发起分账。 - 异步通知:分账终态确定后平台按
notifyUrl通知(事件alloc.success/alloc.fail);也可调用 分账同步 主动拉取通道状态。