异步通知(notifyUrl)
说明
- 调用方向:通知中心 → 商户登记的
notifyUrl(HTTPS POST)。 - 报文分层:加签在 HTTP 请求头;业务数据在 请求体(
Content-Type: application/json)。格式与统一网关商户通知规范一致。 - 验签通过后处理业务,建议返回 HTTP 2xx;通知中心负责失败重试。
请求头
| Header |
说明 |
Baofu-Timestamp |
秒级时间戳 |
Baofu-Nonce |
随机串 |
Baofu-Serial |
证书序列号 |
Request-ID |
链路 ID |
Baofu-Signature-Type |
签名算法,如 RSA、SM2 |
Baofu-Signature |
签名值 |
商户验签(待签串)
- 取 Header 中秒级时间戳、随机串;数字信封若本次通知无则传空串。
- 取 HTTP Body 原始 JSON 字符串(与接收到的完全一致,勿重新格式化)。
- 按 「时间戳 +
\n + 随机串 + \n + 数字信封 + \n + Body + \n」 拼接。 - 按
Baofu-Signature-Type 验签 Baofu-Signature。
绑卡/开户类通知
notifyType |
说明 |
OPEN_ACCOUNT_SUCCESS |
绑卡+开户收敛成功 |
OPEN_ACCOUNT_FAIL |
绑卡+开户收敛失败 |
BIND_CARD_SUCCESS |
绑卡收敛成功 |
BIND_CARD_FAIL |
绑卡收敛失败 |
| 字段 |
类型 |
说明 |
notifyType |
string |
上表取值 |
walletBizNo |
string |
钱包业务号 |
merchantId |
string |
商户号 |
merchantRequestNo |
string |
商户请求流水号 |
bizStatus |
string |
SUCCESS / FAIL |
contractNo |
string |
签约号;SUCCESS 时关注 |
errorCode |
string |
失败错误码;仅 FAIL |
errorMessage |
string |
失败原因;仅 FAIL |
notifyTime |
string |
通知时间,yyyyMMddHHmmss |
cards |
string |
仅 bizStatus=SUCCESS 且存在绑卡明细时返回;JSON 数组字符串,元素含 bankCode、cardNoMask、agreementNo(与 §1.5 cards[] 对齐) |
实际通知中 functionType、origMsgId、businessNo 等字段可能出现;成功时 errorCode / errorMessage 可能为空字符串,可忽略。
功能一收敛成功示例
{
"notifyType": "OPEN_ACCOUNT_SUCCESS",
"walletBizNo": "4001010120250525120000000001",
"merchantId": "M100001",
"merchantRequestNo": "MCH202505250001",
"bizStatus": "SUCCESS",
"contractNo": "C20250525000001",
"notifyTime": "20260525151001",
"cards": "[{\"bankCode\":\"ICBC\",\"cardNoMask\":\"6222********1234\",\"agreementNo\":\"AGR20250525000001\"}]"
}
扣款类通知
notifyType |
说明 |
DEDUCT_SUCCESS |
扣款成功 |
DEDUCT_FAIL |
扣款失败 |
| 字段 |
类型 |
说明 |
notifyType |
string |
上表取值 |
deductOrderNo |
string |
扣款订单号 |
merchantId |
string |
商户号 |
deductRequestNo |
string |
扣款请求号 |
contractNo |
string |
签约号 |
deductStatus |
string |
SUCCESS / FAIL |
amount |
string |
扣款金额(分) |
successAgreementNo |
string |
扣款成功的协议绑定号;仅 SUCCESS |
successAt |
string |
扣款成功时间,yyyyMMddHHmmss;仅 SUCCESS |
errorCode |
string |
失败错误码;仅 FAIL |
errorMessage |
string |
失败原因;仅 FAIL |
notifyTime |
string |
通知时间,yyyyMMddHHmmss |
扣款成功示例
{
"notifyType": "DEDUCT_SUCCESS",
"deductOrderNo": "4101010120250525120000000001",
"merchantId": "M100001",
"deductRequestNo": "DED202505250001",
"contractNo": "C20250525000001",
"deductStatus": "SUCCESS",
"amount": "1990",
"successAgreementNo": "AGR20250525000001",
"successAt": "20260525151001",
"notifyTime": "20260525151001"
}
幂等建议:绑卡类 walletBizNo + notifyType + bizStatus;扣款类 deductOrderNo + notifyType + deductStatus。