中銀 BOCHK Push 模式 Direct 模式
本頁說明
講什麼:中銀香港的 B2E 入金採集、FTS/FPS 出金匯款、匹配規則、定時任務的完整業務規則,以及渠道側接口字段詳情與 moomoo 側適配映射 適合誰:需要深入了解中銀對接細節的產品經理 前置閱讀:銀行能力矩陣預計閱讀:12 分鐘 負責人:入金產品經理
核心要點:中銀是最大的入金來源銀行,通過 B2E 批量文件採集流水——文件拉取頻率和解析邏輯直接決定中銀用戶的入金等待時間。
能力總覽
| 能力 | 支持情況 | 協議/通道 | 核心服務 |
|---|---|---|---|
| 入金流水採集 | ✅ | B2E (Bank-to-Enterprise) XML API | bochk_flow_go (Go) |
| 出金匯款 | ✅ | FTS 文件通道 (S14/S16) | bochk_fts_mgr (Python) |
| 出金 FPS | ✅ | FPS(經中銀 FPS 通道) | boc_fps method |
| 出金同行轉賬 | ✅ | FTS 同行 | boc method |
| 出金跨境電匯 | ✅ | 電匯 | tele_transfer method |
| eDDA/eDDI | ❌ | — | — |
| 銀證 BST | ❌ | — | — |
中銀是入金流水最大的來源銀行——大部分香港用戶通過中銀轉賬入金,系統通過 B2E API 自動採集流水並匹配到入金申請。
渠道接口概覽
| 維度 | 說明 |
|---|---|
| 協議類型 | HTTP/HTTPS + XML(B2E 銀企直聯) |
| 認證方式 | 數字證書 + UserId/Password + ECertName/ECertPwd 三重認證 |
| 數據格式 | XML(UTF-8 編碼),請求/響應均以 BOCHKE2B 為根節點 |
| 採集模式 | 主動拉取(每日 3 次定時 + 每 2 小時 Flow Converter 轉換) |
| 證書輪換 | 900 天週期,需提前 30 天更新 |
| 連接超時 | 30 秒 |
| 限流策略 | 銀行側限流返回 RJ0002,不觸發故障轉移 |
| 去重機制 | acct_no + seq_no + currency + boc_date 唯一鍵,UPSERT 操作 |
與其他銀行對比
中銀是唯一使用 XML 協議的銀行——匯豐/恒生走 SFTP 文件,渣打走 HTTPS JSON,廣發走 FPS 通知推送。B2E XML 的特點是結構固定、字段明確,但調試時需注意 XML 命名空間和編碼問題。
入金:B2E 流水採集
什麼是 B2E
B2E(Bank-to-Enterprise)是中銀向企業客戶提供的標準 API 接口。moomoo 通過 B2E 接口查詢公司收款賬戶的交易流水,然後與用戶的入金申請做匹配。
收款賬戶
moomoo 在中銀開了 5 個幣種的收款賬戶,每筆用戶轉賬都會進入對應幣種的賬戶:
| 幣種 | 賬戶號 | 配置鍵 |
|---|---|---|
| HKD | 01267600088450 | HKCUR |
| USD | 01267608014549 | USCUR |
| CNY | 01267606013676 | CNCUR |
| JPY | 01287521127472 | JPCUR |
| SGD | 01287526723084 | SGCUR |
配置位置
bochk_flow_go/conf/conf.toml → [conf.futu_account.account_numbers]
B2E 三種查詢接口
系統通過三種 B2E 接口分時段採集流水,確保不漏單:
| 接口 | 定時 | 查什麼 | 寫入表 |
|---|---|---|---|
| TodayActivity | 每天 06:00 | 當天實時交易 | acct_trd_record |
| AcctStatement | 每天 07:00 | 前一天完整對賬單 | acct_trd_record(is_addendum 標記) |
| AcctActivity | 每天 08:00 | 詳細賬務活動(含餘額) | boc_transaction_record |
此外,每 2 小時運行一次 Flow Converter,將原始記錄轉換為統一的 boc_bank_flow 格式供匹配引擎使用。
數據流
B2E 協議要點
- 傳輸方式:HTTP POST,XML 請求/響應體
- 認證:Token 認證(
Ecert Name: FUTU1),Token 900 天輪換週期 - 超時:30 秒
- 去重:基於
acct_no + seq_no + currency + boc_date唯一鍵,UPSERT 操作 - 錯誤處理:
E11071/GE11012:無數據(正常,非失敗)RJ0002:請求頻率限制(不觸發切換)- 其他錯誤:記錄日誌,下次重試
渠道側接口詳情
以下是三種 B2E 接口的完整請求/響應字段定義。所有接口共享同一套認證頭(Head),接口間的差異在請求體和響應字段上。
公共請求頭(BOCHKE2B > Head)
每個 B2E 請求的 XML 根節點為 BOCHKE2B,其中 Head 部分攜帶認證和路由信息:
| 字段 | 類型 | 必填 | 描述 |
|---|---|---|---|
| PackageId | string(17) | ✅ | 包ID,自動生成的 17 位數字,每次請求唯一。如 "12345678901234567" |
| CBSAcctNo | string | ✅ | CBS 賬號(企業主賬號)。如 "01227468128899" |
| UserId | string | ✅ | 用戶ID。如 "FUTU1" |
| Password | string | ✅ | 密碼(加密傳輸) |
| ECertName | string | ✅ | 數字證書名稱。如 "FUTU1" |
| ECertPwd | string | ✅ | 數字證書密碼(加密傳輸) |
認證安全
Password 和 ECertPwd 在傳輸前經過加密處理,證書文件存儲在伺服器的受保護目錄中。不要在日誌中打印這兩個字段的明文值。
公共響應頭
所有 B2E 接口的響應都包含以下頭部字段,用於判斷請求是否成功:
| 字段 | 類型 | 描述 | 示例 |
|---|---|---|---|
| TxStatus | string | 交易狀態,"S" = 成功,"F" = 失敗 | "S" |
| ErrorCode | string | 錯誤碼(成功時為空) | "E11071" |
| ErrorDesc | string | 錯誤描述(成功時為空) | "No Record Found" |
| TxRefNo | string | 銀行交易參考號 | "BOCHK20260429001" |
| TxDate | string | 交易日期(YYYYMMDD) | "20260429" |
| TxTime | string | 交易時間(HHMMSS) | "100530" |
接口 1:TodayActivity(當日交易查詢)
調度時間:~06:00(每日首次拉取當天實時交易)
用途:查詢指定賬號當天發生的所有交易記錄。這是最早獲取當天流水的接口,用於盡快匹配入金申請。
請求參數(TodayActivityREQ)
| 字段 | 類型 | 必填 | 描述 |
|---|---|---|---|
| AcctNo | string | ✅ | 銀行賬號(即收款賬戶號)。如 "01267600088450" |
請求 XML 示例
<BOCHKE2B>
<Head>
<PackageId>12345678901234567</PackageId>
<CBSAcctNo>01227468128899</CBSAcctNo>
<UserId>FUTU1</UserId>
<Password>***</Password>
<ECertName>FUTU1</ECertName>
<ECertPwd>***</ECertPwd>
</Head>
<TodayActivityREQ>
<AcctNo>01267600088450</AcctNo>
</TodayActivityREQ>
</BOCHKE2B>響應字段(每條交易記錄)
| 字段 | 類型 | 描述 | 示例 |
|---|---|---|---|
| SeqNo | string | 當天交易序號,6 位左補零。格式 NN(數字序號) | "000001" |
| Cur | string | 幣種代碼。格式 3 字符 ISO 4217 | "HKD" / "USD" |
| Time | string | 交易時間(24 小時制)。格式 HH:mm:ss | "10:05:30" |
| TxRefNo | string | 交易參考號(全局唯一)。格式 16 字符 | "1234567890123456" |
| Amount | string | 交易金額(保留 2 位小數)。格式 decimal(16,2) | "100000.00" |
| Particulars | string | 交易描述/摘要,用於識別交易類型。≤200 字符 | "E-BANKING TRANSFER" |
| TxDetail | string | 交易類型標識。≤50 字符 | "Transfer" |
| PayerOrPayeeName | string | 付款方/收款方姓名。≤140 字符 | "CHAN TAI MAN" |
| PayerOrPayeeAcctNo | string | 付款方/收款方賬號。≤34 字符 | "01287500123456" |
字段特別說明
- SeqNo:同一天內遞增,但跨天會重置。去重時必須結合日期使用。
- TxRefNo:16 字符的全局唯一交易參考號,是匹配和去重的核心字段。
- Particulars:這是最關鍵的業務字段——系統通過它的前綴來識別 FPS、網銀、CHATS 等交易類型。
- PayerOrPayeeName:用於姓名匹配,入金時為付款方姓名。注意大小寫可能不一致。
接口 2:AcctStatement(賬戶結單查詢)
調度時間:~07:00(查詢前一個工作日的完整對賬單)
用途:作為 TodayActivity 的補充,拉取前一天的完整結單。寫入數據庫時帶 is_addendum 標記,與當天實時數據做去重合併。
請求參數(AcctStatementREQ)
| 字段 | 類型 | 必填 | 描述 |
|---|---|---|---|
| AcctNo | string | ✅ | 銀行賬號。如 "01267600088450" |
| Cur | string | ✅ | 幣種(HKD/USD/CNY/JPY/SGD)。如 "HKD" |
| Date | string | ✅ | 查詢日期(YYYYMMDD),通常為前一工作日。如 "20260428" |
響應字段:與 TodayActivity 結構相同(SeqNo、Cur、Time、TxRefNo、Amount、Particulars、TxDetail、PayerOrPayeeName、PayerOrPayeeAcctNo)。
注意事項
AcctStatement 需要為 每個幣種單獨發起請求。系統會遍歷 5 個收款賬戶的幣種,分別請求 HKD、USD、CNY、JPY、SGD 的對賬單。如果某幣種無交易,接口返回 E11071,這是正常的。
接口 3:AcctActivity(賬戶動賬明細查詢)
調度時間:~08:00(支持日期範圍查詢,獲取最詳細的賬務活動)
用途:這是字段最豐富的接口,除了交易明細外還包含餘額信息、GPI 追蹤等。寫入 boc_transaction_record 表,為對賬和審計提供詳細數據。
請求參數(AcctActivityREQ)
| 字段 | 類型 | 必填 | 描述 |
|---|---|---|---|
| AcctNo | string | ✅ | 銀行賬號。如 "01267600088450" |
| BicCode | string | ❌ | BIC 代碼(篩選特定銀行)。如 "BKCHHKHH" |
| Region | string | ❌ | 地區代碼 |
| StartDate | string | ✅ | 起始日期(YYYYMMDD)。如 "20260428" |
| EndDate | string | ✅ | 結束日期(YYYYMMDD)。如 "20260429" |
| TransFlag | string | ❌ | 交易方向篩選:C = 貸方(入賬),D = 借方(出賬)。如 "C" |
| TransCur | string | ❌ | 篩選特定幣種。如 "HKD" |
| MinAmt | string | ❌ | 最小金額篩選。如 "1000.00" |
| MaxAmt | string | ❌ | 最大金額篩選。如 "999999.99" |
可選參數用法
- TransFlag:入金採集時通常設為
"C"(僅拉貸方/入賬),減少無關數據。如果需要對賬,則不傳此參數以獲取全部。 - MinAmt / MaxAmt:用於大額交易監控場景,常規採集不使用。
- BicCode:用於篩選特定來源銀行的交易,常規採集不使用。
響應字段(每條交易記錄)
| 字段 | 類型 | 描述 | 示例 |
|---|---|---|---|
| TransType | string | 交易類型標識 | "Transfer" |
| TransRef | string | 唯一交易參考號。格式 16 字符 | "1234567890123456" |
| Particular | string | 交易描述/摘要。≤200 字符 | "FPS Transfer" |
| Cur | string | 幣種。格式 3 字符 | "HKD" |
| Amt | string | 交易金額。格式 decimal(16,2) | "50000.00" |
| TransFlag | string | C = 貸方(入賬),D = 借方(出賬)。格式 1 字符 | "C" |
| PayerOrPayeeName | string | 付款方/收款方姓名。≤140 字符 | "CHAN TAI MAN" |
| PayerOrPayeeAcctNo | string | 付款方/收款方賬號。≤34 字符 | "01287500123456" |
| TransDate | string | 交易日期時間(含時區)。格式 YYYY/MM/DD HH:mm GMT+08:00 | "2026/04/29 10:05 GMT+08:00" |
| ValueDate | string | 起息日。格式 YYYY/MM/DD | "2026/04/29" |
| AcctNo | string | 本方賬號 | "01267600088450" |
| LedBal | string | 分類賬餘額(交易後)。格式 decimal(16,2) | "5000000.00" |
| AvalBal | string | 可用餘額(交易後)。格式 decimal(16,2) | "4800000.00" |
| GPIFlag | string | SWIFT GPI 指示符(跨境匯款時有值) | "Y" |
| GPIId | string | SWIFT GPI 追蹤 ID | "d2fca123-..." |
| ChequeNo | string | 支票號碼(支票交易時有值) | "CHQ001234" |
AcctActivity 獨有字段
相比 TodayActivity 和 AcctStatement,AcctActivity 多出以下關鍵字段:
- LedBal / AvalBal:餘額信息,用於對賬和餘額監控
- GPIFlag / GPIId:SWIFT GPI 追蹤,用於跨境匯款的全流程追蹤
- ChequeNo:支票號碼,支票入金場景需要
- ValueDate:起息日,可能與交易日期不同(跨境匯款常見)
- TransFlag:明確標記借貸方向,TodayActivity 需要通過金額正負判斷
B2E 錯誤碼速查
| 錯誤碼 | 含義 | 處理策略 |
|---|---|---|
E11071 | 無數據(No Record Found) | 正常,不重試——該時段無交易 |
GE11012 | 備選無數據標記 | 與 E11071 等效,不重試 |
RJ0002 | 請求頻率限制(Rate Limit) | 等待後重試,不觸發故障轉移 |
E99999 | 通用系統錯誤 | 指數退避重試(間隔 30s → 60s → 120s) |
E10001 | 認證失敗 | 檢查證書/密碼是否過期 |
E10002 | 賬號無權限 | 聯繫銀行確認 B2E 權限 |
關於 RJ0002
RJ0002 是銀行側限流響應,不應觸發故障轉移到備用通道。正確做法是等待 30 秒後重試。如果連續出現 RJ0002,需檢查是否有多個實例同時在拉取。
B2E XML 字段映射
| XML 字段 | 數據庫字段 | 說明 |
|---|---|---|
| SeqNo | seq_no | 交易序號 |
| Currency | currency | 幣種 |
| Amount | amount | 金額 |
| BOCDate | boc_date | 交易日期 (YYYYMMDD) |
| BOCTime | boc_time | 交易時間 |
| TxRefNo | tx_ref_no | 交易參考號 |
| Particulars | particulars | 交易摘要(用於識別交易類型) |
| PayerOrPayeeName | payer_or_payee_name | 付款人/收款人名稱 |
| PayerOrPayeeAcctNo | payer_or_payee_acct_no | 付款人/收款人賬號 |
moomoo 側適配
B2E 接口返回的原始字段不能直接用於匹配引擎——需要經過 Flow Converter 標準化後寫入 boc_bank_flow 表。以下是完整的字段映射和轉換邏輯。
流水標準化映射
| B2E 原始字段 | BankFlow 標準字段 | 轉換邏輯 | 說明 |
|---|---|---|---|
| TxRefNo | transaction_id | "BOC_" + YYYYMMDD + "_" + TxRefNo | 加前綴防止跨銀行 ID 衝突 |
| Amount | credit | 直接映射 decimal(16,2) | 入金流水取貸方金額 |
| Cur | ccy | 直接映射(HKD/USD/CNY/JPY/SGD) | ISO 4217 三字符代碼 |
| Time | time | HH:mm:ss → HHMMSS(去除冒號) | 統一為 6 位數字格式 |
| Particulars | remarks | 直接映射 | 保留原始描述,用於交易類型識別 |
| PayerOrPayeeName | en_name | 直接映射 | 付款方英文姓名 |
| PayerOrPayeeAcctNo | customer_account | 直接映射 | 付款方銀行賬號 |
| TxDetail | type | 交易類型標識 | 用於分類統計 |
| BOCDate | boc_date | YYYYMMDD → DATE | 交易日期 |
| AcctNo | acct_no | 直接映射 | 收款方賬號(moomoo 的賬號) |
| SeqNo | seq_no | 直接映射 | 交易序號 |
transaction_id 生成規則
transaction_id = "BOC_" + boc_date + "_" + tx_ref_no
例如:TxRefNo 為 1234567890123456,日期為 20260429,則生成: BOC_20260429_1234567890123456
這個 ID 是全局唯一的,也是去重和匹配的核心標識。
交易類型自動識別
系統通過流水的 particulars(交易摘要) 字段自動識別交易類型,不同類型的匹配規則和手續費容差不同:
| Particulars 關鍵詞 | 識別為 | 可自動入賬 | 手續費特徵 |
|---|---|---|---|
FPS Transfer | FPS 轉數快 | ✅ | 無手續費,精確匹配。最常見的入金方式 |
E-BANKING TRANSFER | 網銀轉賬 | ✅ | 無手續費,精確匹配。中銀網銀到賬 |
CHATS Transfer | CHATS 同城清算 | ✅ | 可能有手續費,本地容差。即時支付結算 |
REMIT IN | 跨境匯款 | ✅ | 中轉行扣費,跨境容差。海外匯入,容差最大 |
CBS TRANSFER | CBS 內部轉賬 | ❌ 僅匹配 | 特殊處理。中銀體系內轉賬,需人工審核 |
ATM Transfer | ATM 轉賬 | ❌ | 無法驗證來源,僅記錄 |
Cheque Clearing | 支票入賬 | ❌ | 支票有退票風險,需人工確認 |
Interest | 利息收入 | ❌ | 非入金流水,自動忽略 |
對應代碼
deposit/src/app/Business/Match/BocMatch.php → NewMatchRule() 方法,根據 remarks 字段的正則匹配分發到不同規則。
匹配規則詳解(BocMatch)
FPS 轉數快規則
| 維度 | 規則 |
|---|---|
| 識別條件 | particulars 以 "FPS" 開頭 |
| 金額匹配 | 精確匹配(流水金額 = CRM 申請金額) |
| 姓名匹配 | 精確匹配 → 自動入賬;相似匹配 → 人工確認 |
| 日期窗口 | 申請日期 ± 15 天 |
| 自動入賬 | ✅ 金額精確 + 姓名精確時自動入賬 |
| 卡號校驗 | BOC 卡號必須為 14 位 |
網銀轉賬規則
| 維度 | 規則 |
|---|---|
| 識別條件 | particulars 以 "E-BANKING TRANSFER" 開頭 |
| 金額匹配 | 精確匹配(無手續費扣除) |
| 姓名匹配 | 精確匹配 → 自動入賬;相似匹配 → 人工確認 |
| 日期窗口 | 申請日期 ± 15 天 |
| 自動入賬 | ✅ 金額精確 + 姓名精確時自動入賬 |
| 特殊處理 | 網銀轉賬通常附帶完整的付款人信息,匹配成功率高 |
CHATS 同城清算規則
| 維度 | 規則 |
|---|---|
| 識別條件 | particulars 以 "CHATS" 開頭 |
| HKD/CNH/JPY 金額容差 | CRM - 20 ≤ 流水 ≤ CRM |
| USD/SGD 金額容差 | CRM - 3 ≤ 流水 ≤ CRM |
| 姓名匹配 | 精確匹配 → 自動入賬;相似匹配 → 人工確認 |
| 日期窗口 | 申請日期 ± 15 天 |
| 自動入賬 | ✅ 容差內 + 姓名精確時自動入賬 |
跨境匯入規則(REMIT IN)
| 維度 | 規則 |
|---|---|
| 識別條件 | particulars 以 "REMIT IN" 開頭 |
| HKD/CNH/JPY 金額容差 | CRM - 420 ≤ 流水 ≤ CRM |
| USD/SGD 金額容差 | CRM - 60 ≤ 流水 ≤ CRM |
| 姓名匹配 | 精確匹配 → 自動入賬;相似匹配 → 人工確認 |
| 日期窗口 | 申請日期 ± 15 天 |
| 自動入賬 | ✅ 容差內 + 姓名精確時自動入賬 |
| 特殊說明 | 跨境匯款經過中轉行會扣除 20-400 港幣手續費,所以容差設為 -420 |
CBS / ATM 規則
| 類型 | 識別條件 | 自動入賬 | 原因 |
|---|---|---|---|
| CBS 內部轉賬 | particulars 以 "CBS TRANSFER" 開頭 | ❌ 僅匹配 | 可能涉及集團內部資金調撥,需區分客戶入金和運營轉賬 |
| ATM 轉賬 | particulars 以 "ATM" 開頭 | ❌ | 缺少付款人信息,無法可靠驗證來源 |
為什麼跨境容差大得多? 跨境匯款經過中轉行,中轉行可能扣除 20-400 港幣手續費,跨境容差設為 -420,遠大於本地的 -20。
為什麼日期窗口是 ±15 天? 中銀是最大的入金來源,部分用戶轉賬後很久才提交入金申請(或反過來),15 天窗口覆蓋絕大多數延遲場景。
大額在線入金門檻
對於通過銀行卡綁定(bind_card, notice_type)觸發的在線入金,還有金額下限限制:
- HKD/CNH/JPY:流水金額 ≥ 10,000
- USD/SGD:流水金額 ≥ 1,500
入金超時配置
不同轉賬方式、不同銀行類型、不同幣種下的預期到賬時間和超時閾值:
FPS 轉數快
| 維度 | 時間 |
|---|---|
| 預期到賬 | 即時(通常 1-5 分鐘) |
| 系統超時 | 30 分鐘 |
| 超時處理 | 標記待人工核實 |
| 適用幣種 | HKD、CNY |
網銀轉賬(中銀同行)
| 維度 | 時間 |
|---|---|
| 預期到賬 | 即時 - 2 小時(取決於銀行處理時間) |
| 系統超時 | 4 小時 |
| 超時處理 | 標記待人工核實 |
| 適用幣種 | HKD、USD、CNY、JPY、SGD |
CHATS 同城清算
| 維度 | 時間 |
|---|---|
| 預期到賬 | 同日(工作日 09:00-17:30 處理) |
| 系統超時 | T+1 工作日 |
| 超時處理 | 標記待人工核實 |
| 適用幣種 | HKD |
| 注意事項 | 非工作時間提交的 CHATS 會在下一工作日處理 |
跨境匯入(REMIT IN)
| 維度 | HKD/CNY | USD | JPY/SGD |
|---|---|---|---|
| 預期到賬 | T+1 - T+2 | T+1 - T+3 | T+2 - T+5 |
| 系統超時 | T+3 工作日 | T+5 工作日 | T+7 工作日 |
| 超時處理 | 標記待人工核實 | 標記待人工核實 | 標記待人工核實 |
| 注意事項 | 中轉行處理時間不確定 | 涉及 SWIFT 清算 | 小眾幣種清算鏈路更長 |
定時任務
| 任務 | 頻率 | 說明 |
|---|---|---|
| B2E TodayActivity | 每天 06:00 | 拉取當天流水 |
| B2E AcctStatement | 每天 07:00 | 拉取前日對賬單 |
| B2E AcctActivity | 每天 08:00 | 拉取詳細賬務 |
| Flow Converter | 每 2 小時 | 將原始記錄轉為 boc_bank_flow |
| match:boc | 每 3 分鐘 | 執行 BOC 流水匹配 |
出金:FTS 文件通道
什麼是 FTS
FTS(Fund Transfer Service)是中銀的批量匯款文件通道。moomoo 將出金指令以 S14 格式上傳到中銀 SFTP 伺服器,中銀處理後生成 S16 結果文件供下載。
數據流
S14/S16 文件格式
| 文件類型 | 方向 | 內容 |
|---|---|---|
| S14 | moomoo → 中銀 | 出金指令(收款人信息、金額、幣種) |
| S16 | 中銀 → moomoo | 處理結果(含交易狀態、實際金額、餘額) |
S16 文件為定寬格式(每條記錄 1024+ 字符),支持多編碼(UTF-8、Big5HKSCS、GBK)。
S16 文件關鍵字段
| 字段 | 說明 |
|---|---|
| seq_no | 交易序號(16位,唯一標識) |
| futu_account | 富途監管賬號(14位) |
| t_date | 交易日期 (YYYYMMDD) |
| v_date | 起息日 (YYYYMMDD) |
| ccy | 幣種 (HKD/USD/CNY...) |
| amount | 交易金額 |
| borrowing_direction | C=貸記(入賬) / D=借記(出賬) |
| ledger_balance | 交易後餘額 |
| account | 對手方賬號 |
| name | 對手方名稱 |
| settlement_method | 結算方式 |
| fee | 銀行手續費 |
| abstract | 交易摘要 |
Relay 層
bochk_relay 是 B2E 請求的中繼層(SRPC 服務),提供 5 個 RPC 接口:
| RPC 方法 | 超時 | 用途 |
|---|---|---|
| InternalTrans | 60s | 內部轉賬指令 |
| QueryInternalTrans | 30s | 查詢轉賬狀態 |
| QueryAcctBalance | 30s | 查詢賬戶餘額 |
| QueryTodayActivity | 50s | 查詢當天活動 |
| QueryAcctStatement | 50s | 查詢賬戶對賬單 |
S14/S16 一致性校驗
系統會對比 S14(指令)和 S16(結果)的關鍵字段,確保數據一致:
| 監控指標 | 含義 |
|---|---|
| 1946146 | S14/S16 流水不匹配(需要關注) |
| 1946147 | S16 比 S14 信息更完整(正常) |
| 1946148 | S14 和 S16 完全一致 |
出金:BOC FPS
除了 FTS 文件通道,中銀還支持通過 FPS(轉數快) 通道出金,方法碼為 boc_fps。
適用條件
| 條件 | 要求 |
|---|---|
| 收款銀行所在地 | 香港 |
| 幣種 | HKD 或 CNY |
| 金額上限 | < 100 萬 |
| 銀行卡狀態 | 已驗證 (checked=1) |
| 排除的收款銀行 | 工銀(10)、恒生(8)、中銀(9)、匯豐(11) |
為什麼排除這些銀行? 這些銀行有自己的專屬出金通道(如恒生走 hase 網銀,匯豐走 hsbc 網銀),走 FPS 反而可能更慢或有限額限制。
出金:同行轉賬與跨境電匯
| 通道 | 方法碼 | 適用場景 |
|---|---|---|
| 中銀同行提款 | boc | 收款方也是中銀賬戶 |
| 中銀跨境電匯 | tele_transfer | 跨境匯款到境外銀行 |
需求變更指引
如果需要修改中銀相關的業務規則,以下是具體的改動位置:
| 變更需求 | 改動位置 | 說明 |
|---|---|---|
| 新增收款幣種 | bochk_flow_go/conf/conf.toml | 添加新幣種賬戶映射 |
| 修改入金匹配容差 | BocMatch.php → localTransferSimilarAmount / isDifAreaSimilarAmount | 調整金額容差閾值 |
| 新增交易類型識別 | BocMatch.php → NewMatchRule() | 添加新的 particulars 正則規則 |
| 修改匹配日期窗口 | BocMatch.php → daySimilar | 調整天數參數 |
| 修改 FPS 出金限額 | BOCFPS.php → make_able_where | 修改金額閾值 |
| 調整 FPS 排除銀行 | BOCFPS.php → make_able_where | 修改 bank_id 排除列表 |
| 修改 B2E 拉取頻率 | bochk_flow_go/conf/conf.toml → cron 表達式 | 調整定時任務 |
| 修改匹配頻率 | deposit/doc/crontab.sh → match:boc | 調整 cron 間隔 |
| FTS 超時/重試 | bochk_relay 各 RPC 方法的 timeout 參數 | 調整超時時間 |
| 新增 FTS 監控指標 | bochk_fts_mgr → cus_fmonitor.py | 添加新的監控 ID |
| 修改流水標準化映射 | bochk_flow_go → Flow Converter 模組 | 調整 B2E → BankFlow 字段映射 |
| 修改入金超時閾值 | 匹配引擎配置 | 調整各轉賬方式的超時時間 |
常見客訴 Top 3
| # | 用戶反饋 | 原因 | 客服話術 |
|---|---|---|---|
| 1 | "FPS 入金沒到" | particulars 無法識別入金方式,流水標記為未識別 | "您的轉賬正在處理中,我們會盡快完成匹配入賬" |
| 2 | "跨境匯入扣了手續費" | 中間行/匯入行扣除手續費屬正常 | "跨境匯款可能產生銀行手續費,實際到賬金額以銀行扣費後為準" |
| 3 | "入金等了好幾天" | 中銀日期窗口 ±15 天,匹配週期較長 | "中銀入金匹配週期較長,請耐心等待,如超過 3 個工作日請聯繫客服" |
讀完之後
| 我想... | 去看 |
|---|---|
| 看中銀在各銀行中的位置 | 銀行能力矩陣 |
| 了解匹配引擎的完整邏輯 | 匹配與自動入賬 |
| 看出金通道的執行細節 | 通道執行手冊 |
| 查 B2E 錯誤碼和 FTS 狀態碼 | 統一錯誤碼中心 |
| 查 TransType 和 Bank ID 對照 | 入金規則速查 |