切换主题
分账异步通知
转账异步通知
当请求同步返回 PROCESSING,或商户需要确认最终结果时,平台会向已配置的异步通知地址推送结果通知。收到通知后,应先按签名规则校验 sign,再解析 bizData,并基于 outBatchNo、batchNo、orderNo 做幂等处理。最终到账以结算状态为主
json
{
"bizData": "{\"batchNo\":\"BH<DEMO_ID>\",\"extParam\":\"12\",\"note\":\"处理中\",\"orderList\":\"[{\\\"amount\\\":1000,\\\"body\\\":\\\"测试\\\",\\\"feeType\\\":\\\"ACCOUNT\\\",\\\"mchFee\\\":30,\\\"note\\\":\\\"00\\\",\\\"orderNo\\\":\\\"AP<DEMO_ID>\\\",\\\"outOrderNo\\\":\\\"Item<DEMO_ID>\\\",\\\"payeeAcctNo\\\":\\\"VA<DEMO_ID>\\\",\\\"payerAcctNo\\\":\\\"VA<DEMO_ID>\\\",\\\"realAmount\\\":1000,\\\"state\\\":\\\"SUCCESS\\\"}]\",\"outBatchNo\":\"BT2605270EMPW82CBC93\",\"state\":\"SUCCESS\"}",
"code": "000000",
"msg": "请求成功",
"sign": "<SIGNATURE>",
"signType": "MD5",
"timestamp": "<DEMO_ID>"
}| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 公共状态码 | code | 是 | String | 000000 | 通知投递成功状态码,000000 表示本次通知报文有效 |
| 公共描述 | msg | 是 | String | 请求成功 | 公共返回描述 |
| 时间戳 | timestamp | 是 | String | <DEMO_ID> | 通知发送时间,格式 yyyyMMddHHmmss |
| 签名值 | sign | 是 | String | <SIGNATURE> | 按签名规则对通知报文验签 |
| 签名类型 | signType | 是 | String | MD5 | 当前示例为 MD5 |
| 业务报文 | bizData | 是 | String | 见示例 | JSON 字符串,验签通过后再解析 |
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 平台批次号 | batchNo | 是 | String | BH<DEMO_ID> | 平台生成的分账批次号 |
| 外部批次号 | outBatchNo | 是 | String | BT2605270EMPW82CBC93 | 商户侧传入的外部批次号 |
| 批次状态 | state | 是 | String | SUCCESS | 批次最终或当前状态,建议结合查询接口统一判定 INIT:初始化 PROCESSING:处理中SUCCESS:成功PART_SUCCESS:部分成功CLOSE:关闭 FAIL:失败 |
| 商户扩展参数 | extParam | 否 | String | 12 | 请求时透传的扩展参数,原样返回 |
| 描述 | note | 否 | String | 处理中 | 批次处理描述或失败原因 |
| 订单明细 | orderList | 是 | String | 见示例 | 子订单明细列表,JSON 字符串 |
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 平台订单号 | orderNo | 是 | String | AP<DEMO_ID> | 平台生成的子订单号 |
| 外部订单号 | outOrderNo | 是 | String | Item<DEMO_ID> | 商户侧子订单号 |
| 订单标题 | body | 是 | String | 测试 | 子订单标题 |
| 金额 | amount | 是 | Long | 1000 | 分账金额,单位分 |
| 实际入账金额 | realAmount | 是 | Long | 1000 | 实际分账成功金额,单位分 |
| 手续费 | mchFee | 否 | Long | 30 | 手续费金额,单位分 |
| 手续费扣费方式 | feeType | 否 | String | ACCOUNT | ORDER 为订单内扣,ACCOUNT 为外扣 |
| 付款方账号 | payerAcctNo | 是 | String | VA<DEMO_ID> | 付款方虚拟账户 |
| 收款方账号 | - | - | - | - | - |
| 子订单状态 | state | 是 | String | SUCCESS | 批次最终或当前状态,建议结合查询接口统一判定 子订单状态 INIT:初始化 PROCESSING:处理中SUCCESS:成功 CLOSE:关闭 FAIL:失败 |
| 结算状态 | settleState | 是 | String | INIT | 结算状态 INIT:初始化PROCESSING:处理中SUCCESS:成功 CLOSE:关闭 FAIL:失败 当前状态表示资金是否到账,如果失败则表示资金没到账 针对结算失败的订单可以根据结算失败内容调用订单重新结算接口发起重新发起结算 |
| 结算备注 | settleRemark | 否 | String | 对方行账户状态异常[SPS] | 结算备注 |
| 子订单描述 | note | 否 | String | 00 | 子订单结果描述或结果码,具体以平台返回为准 |
验签通过前,不要直接信任或入库 bizData 内容。
以 outBatchNo + outOrderNo 或 batchNo + orderNo 作为幂等键,避免重复处理通知。
若通知中的批次状态为 PROCESSING,建议继续等待后续通知,或调用“分账结果查询”接口确认最终状态。
若批次或子订单状态为 SUCCESS / PART_SUCCESS / FAIL 等终态,应按终态更新本地业务单据。
note、msg 适合用于排障记录,但最终业务判断应优先使用 state、batchNo、orderNo 等结构化字段。
