本文档为开放平台余额分账模块的业务接入指引,涵盖 B2B 转账、提现、余额查询等功能。
接口路径前缀:/v1/openpay/account。
转账和提现接口为 异步 处理:提交后通过查询接口获取处理结果,也可配置异步回调通知。
| 功能 | 说明 | 接口编号 |
|---|---|---|
| B2B 转账 | 商户钱包余额之间的转账 | 4.4.1.1 |
| 转账查询 | 查询转账订单状态和结果 | 4.4.1.2 |
| 余额查询 | 查询商户钱包账户余额 | 4.4.2.1 |
| 提现 | 商户钱包余额提现至银行卡 | 4.4.3.1 |
| 提现查询 | 查询提现订单状态和结果 | 4.4.3.2 |
| 查询提现银行卡 | 查询已绑定的提现银行卡列表 | 4.4.3.3 |
前置条件:使用余额分账功能前,商户需已完成入网并开通余额分账功能(分账模式 splitMode=2)。
OpenApiRequest<T> 包装:{
"reqBody": {
// 业务请求参数
}
}OpenApiResponse<T> 包装:{
"code": "SUCCESS",
"msg": "成功",
"data": {
// 业务响应数据
}
}@SaCheckApiKey)。| 当前商户类型 | merchantNo 是否必填 | 说明 |
|---|---|---|
| 普通商户(NORMAL) | 否 | 系统从登录上下文自动获取,调用方无需传入 |
| 品牌商户(BRAND) | 是 | 传入目标下属商户号,系统校验归属关系 |
| 服务商商户(PROXY) | 是 | 传入目标下属商户号,系统校验归属关系 |
归属关系校验:目标商户的 merchantPno必须等于当前登录商户号,否则拒绝请求。
即:品牌/服务商商户只能代操作其下属商户的业务。
bizFlowNo(商户请求流水号)进行幂等控制:notifyUrl,订单状态变更时系统会异步回调通知。注意:本接口为同步接口,应答中 status 为 SUCCESS 表示转账已成功,FAIL 表示失败。
| 接口编号 | 接口路径 | 方法名 | 说明 |
|---|---|---|---|
| 4.4.1.1 | POST /v1/openpay/account/transfer | transfer | B2B 转账 |
| 4.4.1.2 | POST /v1/openpay/account/transfer/query | transferQuery | 转账查询 |
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| merchantNo | String | 条件必填 | 商户号。普通商户无需传入;品牌/服务商商户必填(目标下属商户号) |
| bizFlowNo | String | 是 | 商户请求流水号,2天内唯一 |
| fromMerchantNo | String | 是 | 付款方商户号 |
| toMerchantNo | String | 是 | 收款方商户号 |
| orderAmount | Long | 是 | 转账金额(分),必须大于 0 |
| usage | String | 否 | 转账用途 |
| notifyUrl | String | 否 | 异步通知地址,订单状态变更时回调 |
| 字段 | 类型 | 说明 |
|---|---|---|
| bizFlowNo | String | 商户请求流水号 |
| orderNo | String | 收呗订单号 |
| status | String | 平台状态,见枚举表 |
| orderAmount | Long | 转账金额(分),仅成功时返回 |
| fee | Long | 手续费(分) |
| trxTime | String | 交易时间,格式 yyyy-MM-dd HH:mm:ss |
| accountTime | String | 入账时间,格式 yyyy-MM-dd HH:mm:ss |
| failReason | String | 失败原因,仅 status=FAIL 时返回 |
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| merchantNo | String | 条件必填 | 商户号。普通商户无需传入;品牌/服务商商户必填(目标下属商户号) |
| bizFlowNo | String | 二选一 | 商户请求流水号 |
| orderNo | String | 二选一 | 收呗订单号 |
| 字段 | 类型 | 说明 |
|---|---|---|
| bizFlowNo | String | 商户请求流水号 |
| orderNo | String | 收呗订单号 |
| status | String | 平台状态,见枚举表 |
| orderAmount | Long | 订单金额(分) |
| fee | Long | 手续费(分) |
| trxTime | String | 交易时间 |
| accountTime | String | 入账时间 |
| fromMerchantNo | String | 付款方商户号 |
| toMerchantNo | String | 收款方商户号 |
| failReason | String | 失败原因,仅失败时返回 |
| 接口编号 | 接口路径 | 方法名 | 说明 |
|---|---|---|---|
| 4.4.2.1 | POST /v1/openpay/account/balance/query | queryBalance | 余额查询 |
| 字段 | 类型 | 说明 |
|---|---|---|
| balance | Long | 余额(分) |
| accountStatus | String | 账户状态,见账户状态枚举表 |
notifyUrl,订单状态变更时系统会异步回调通知。注意:本接口为异步接口,应答仅代表提现请求已提交至通道,最终结果请通过查询接口确认。
| 接口编号 | 接口路径 | 方法名 | 说明 |
|---|---|---|---|
| 4.4.3.1 | POST /v1/openpay/account/withdraw | withdraw | 提现 |
| 4.4.3.2 | POST /v1/openpay/account/withdraw/query | withdrawQuery | 提现查询 |
| 4.4.3.3 | POST /v1/openpay/account/withdraw/cards | withdrawCards | 查询提现银行卡 |
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| merchantNo | String | 条件必填 | 商户号。普通商户无需传入;品牌/服务商商户必填(目标下属商户号) |
| bizFlowNo | String | 是 | 商户请求流水号,2天内唯一 |
| orderAmount | Long | 是 | 提现金额(分),必须大于 0 |
| bankAccountNo | String | 否 | 提现银行卡号,未传时取商户结算账户卡号 |
| remark | String | 否 | 备注 |
| notifyUrl | String | 否 | 异步通知地址,订单状态变更时回调 |
| 字段 | 类型 | 说明 |
|---|---|---|
| bizFlowNo | String | 商户请求流水号 |
| orderNo | String | 收呗订单号 |
| status | String | 平台状态,见枚举表 |
| trxTime | String | 交易时间,格式 yyyy-MM-dd HH:mm:ss |
| accountTime | String | 入账时间,格式 yyyy-MM-dd HH:mm:ss |
| failReason | String | 失败原因,仅 status=FAIL 时返回 |
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| merchantNo | String | 条件必填 | 商户号。普通商户无需传入;品牌/服务商商户必填(目标下属商户号) |
| bizFlowNo | String | 二选一 | 商户请求流水号 |
| orderNo | String | 二选一 | 收呗订单号 |
| 字段 | 类型 | 说明 |
|---|---|---|
| bizFlowNo | String | 商户请求流水号 |
| orderNo | String | 收呗订单号 |
| status | String | 平台状态,见枚举表 |
| orderAmount | Long | 订单金额(分) |
| fee | Long | 手续费(分) |
| trxTime | String | 交易时间 |
| accountTime | String | 入账时间 |
| isReversed | Boolean | 是否有退返标记 |
| failReason | String | 失败原因,仅失败时返回 |
notifyUrl 发起 POST 回调通知。回调采用统一请求体(OpenApiRequest)+ RSA 签名格式,与开放平台 API 请求格式一致。| 场景 | 触发条件 |
|---|---|
| 同步返回 | 提交接口同步返回终态(SUCCESS/FAIL)时立即推送 |
| 主动查询 | 查询接口检测到状态从非终态 → 终态时推送 |
| 异步回调 | 通道异步回调到达时推送 |
success 视为推送成功。reqBody 中:{
"requestId": "请求ID(用于问题追踪)",
"timestamp": "时间戳(毫秒)",
"nonce": "随机字符串(16-36位)",
"sign": "RSA签名值",
"reqBody": { ... }
}| 字段 | 类型 | 必返回 | 说明 |
|---|---|---|---|
| bizFlowNo | String | 是 | 商户请求流水号 |
| channelOrderNo | String | 是 | 通道订单号 |
| bizOrderNo | String | 是 | 业务订单号 |
| merchantNo | String | 是 | 商户号 |
| orderAmount | Long | 是 | 转账金额(分) |
| fee | Long | 是 | 手续费(分) |
| orderStatus | Integer | 是 | 状态码:0=处理中,1=成功,2=失败 |
| status | String | 是 | PROCESSING / SUCCESS / FAIL |
| bizType | String | 是 | 固定值 transfer |
| payerMerchantNo | String | 否 | 付款方商户号 |
| payerMerchantName | String | 否 | 付款方商户名称 |
| payeeMerchantNo | String | 否 | 收款方商户号 |
| payeeMerchantName | String | 否 | 收款方商户名称 |
| trxTime | String | 否 | 交易时间,仅成功时返回 |
| accountTime | String | 否 | 入账时间,仅成功时返回 |
| failReason | String | 否 | 失败原因,仅失败时返回 |
| 字段 | 类型 | 必返回 | 说明 |
|---|---|---|---|
| bizFlowNo | String | 是 | 商户请求流水号 |
| channelOrderNo | String | 是 | 通道订单号 |
| bizOrderNo | String | 是 | 业务订单号 |
| merchantNo | String | 是 | 商户号 |
| orderAmount | Long | 是 | 提现金额(分) |
| fee | Long | 是 | 手续费(分) |
| orderStatus | Integer | 是 | 状态码:0=处理中,1=成功,2=失败 |
| status | String | 是 | PROCESSING / SUCCESS / FAIL |
| bizType | String | 是 | 固定值 withdraw |
| trxTime | String | 否 | 交易时间,仅成功时返回 |
| accountTime | String | 否 | 入账时间,仅成功时返回 |
| failReason | String | 否 | 失败原因,仅失败时返回 |
{
"requestId": "cb-20260820-001",
"timestamp": "1755676200000",
"nonce": "a1b2c3d4e5f6g7h8",
"sign": "MIIEvgIBADANBgkqhkiG9w0BAQEFA...",
"reqBody": {
"bizFlowNo": "TF20260820001",
"channelOrderNo": "YE20260820123456789",
"bizOrderNo": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"merchantNo": "M100001",
"orderAmount": 100000,
"fee": 10,
"orderStatus": 1,
"status": "SUCCESS",
"bizType": "transfer",
"payerMerchantNo": "M100001",
"payerMerchantName": "付款方公司",
"payeeMerchantNo": "M100002",
"payeeMerchantName": "收款方公司",
"trxTime": "2026-08-20 14:30:00",
"accountTime": "2026-08-20 14:30:05"
}
}sign 字段key1=value1&key2=value2&...(空值不参与签名,嵌套对象需平铺)