Skip to content

中銀 BOCHK Push 模式 Direct 模式

本頁說明

講什麼:中銀香港的 B2E 入金採集、FTS/FPS 出金匯款、匹配規則、定時任務的完整業務規則,以及渠道側接口字段詳情與 moomoo 側適配映射 適合誰:需要深入了解中銀對接細節的產品經理 前置閱讀銀行能力矩陣預計閱讀:12 分鐘 負責人:入金產品經理

核心要點:中銀是最大的入金來源銀行,通過 B2E 批量文件採集流水——文件拉取頻率和解析邏輯直接決定中銀用戶的入金等待時間。


能力總覽

能力支持情況協議/通道核心服務
入金流水採集B2E (Bank-to-Enterprise) XML APIbochk_flow_go (Go)
出金匯款FTS 文件通道 (S14/S16)bochk_fts_mgr (Python)
出金 FPSFPS(經中銀 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 個幣種的收款賬戶,每筆用戶轉賬都會進入對應幣種的賬戶:

幣種賬戶號配置鍵
HKD01267600088450HKCUR
USD01267608014549USCUR
CNY01267606013676CNCUR
JPY01287521127472JPCUR
SGD01287526723084SGCUR
配置位置

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 部分攜帶認證和路由信息:

字段類型必填描述
PackageIdstring(17)包ID,自動生成的 17 位數字,每次請求唯一。如 "12345678901234567"
CBSAcctNostringCBS 賬號(企業主賬號)。如 "01227468128899"
UserIdstring用戶ID。如 "FUTU1"
Passwordstring密碼(加密傳輸)
ECertNamestring數字證書名稱。如 "FUTU1"
ECertPwdstring數字證書密碼(加密傳輸)

認證安全

Password 和 ECertPwd 在傳輸前經過加密處理,證書文件存儲在伺服器的受保護目錄中。不要在日誌中打印這兩個字段的明文值。

公共響應頭

所有 B2E 接口的響應都包含以下頭部字段,用於判斷請求是否成功:

字段類型描述示例
TxStatusstring交易狀態,"S" = 成功,"F" = 失敗"S"
ErrorCodestring錯誤碼(成功時為空)"E11071"
ErrorDescstring錯誤描述(成功時為空)"No Record Found"
TxRefNostring銀行交易參考號"BOCHK20260429001"
TxDatestring交易日期(YYYYMMDD)"20260429"
TxTimestring交易時間(HHMMSS)"100530"

接口 1:TodayActivity(當日交易查詢)

調度時間:~06:00(每日首次拉取當天實時交易)

用途:查詢指定賬號當天發生的所有交易記錄。這是最早獲取當天流水的接口,用於盡快匹配入金申請。

請求參數(TodayActivityREQ)

字段類型必填描述
AcctNostring銀行賬號(即收款賬戶號)。如 "01267600088450"
請求 XML 示例
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>

響應字段(每條交易記錄)

字段類型描述示例
SeqNostring當天交易序號,6 位左補零。格式 NN(數字序號)"000001"
Curstring幣種代碼。格式 3 字符 ISO 4217"HKD" / "USD"
Timestring交易時間(24 小時制)。格式 HH:mm:ss"10:05:30"
TxRefNostring交易參考號(全局唯一)。格式 16 字符"1234567890123456"
Amountstring交易金額(保留 2 位小數)。格式 decimal(16,2)"100000.00"
Particularsstring交易描述/摘要,用於識別交易類型。≤200 字符"E-BANKING TRANSFER"
TxDetailstring交易類型標識。≤50 字符"Transfer"
PayerOrPayeeNamestring付款方/收款方姓名。≤140 字符"CHAN TAI MAN"
PayerOrPayeeAcctNostring付款方/收款方賬號。≤34 字符"01287500123456"

字段特別說明

  • SeqNo:同一天內遞增,但跨天會重置。去重時必須結合日期使用。
  • TxRefNo:16 字符的全局唯一交易參考號,是匹配和去重的核心字段。
  • Particulars:這是最關鍵的業務字段——系統通過它的前綴來識別 FPS、網銀、CHATS 等交易類型。
  • PayerOrPayeeName:用於姓名匹配,入金時為付款方姓名。注意大小寫可能不一致。

接口 2:AcctStatement(賬戶結單查詢)

調度時間:~07:00(查詢前一個工作日的完整對賬單)

用途:作為 TodayActivity 的補充,拉取前一天的完整結單。寫入數據庫時帶 is_addendum 標記,與當天實時數據做去重合併。

請求參數(AcctStatementREQ)

字段類型必填描述
AcctNostring銀行賬號。如 "01267600088450"
Curstring幣種(HKD/USD/CNY/JPY/SGD)。如 "HKD"
Datestring查詢日期(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)

字段類型必填描述
AcctNostring銀行賬號。如 "01267600088450"
BicCodestringBIC 代碼(篩選特定銀行)。如 "BKCHHKHH"
Regionstring地區代碼
StartDatestring起始日期(YYYYMMDD)。如 "20260428"
EndDatestring結束日期(YYYYMMDD)。如 "20260429"
TransFlagstring交易方向篩選:C = 貸方(入賬),D = 借方(出賬)。如 "C"
TransCurstring篩選特定幣種。如 "HKD"
MinAmtstring最小金額篩選。如 "1000.00"
MaxAmtstring最大金額篩選。如 "999999.99"
可選參數用法
  • TransFlag:入金採集時通常設為 "C"(僅拉貸方/入賬),減少無關數據。如果需要對賬,則不傳此參數以獲取全部。
  • MinAmt / MaxAmt:用於大額交易監控場景,常規採集不使用。
  • BicCode:用於篩選特定來源銀行的交易,常規採集不使用。

響應字段(每條交易記錄)

字段類型描述示例
TransTypestring交易類型標識"Transfer"
TransRefstring唯一交易參考號。格式 16 字符"1234567890123456"
Particularstring交易描述/摘要。≤200 字符"FPS Transfer"
Curstring幣種。格式 3 字符"HKD"
Amtstring交易金額。格式 decimal(16,2)"50000.00"
TransFlagstringC = 貸方(入賬),D = 借方(出賬)。格式 1 字符"C"
PayerOrPayeeNamestring付款方/收款方姓名。≤140 字符"CHAN TAI MAN"
PayerOrPayeeAcctNostring付款方/收款方賬號。≤34 字符"01287500123456"
TransDatestring交易日期時間(含時區)。格式 YYYY/MM/DD HH:mm GMT+08:00"2026/04/29 10:05 GMT+08:00"
ValueDatestring起息日。格式 YYYY/MM/DD"2026/04/29"
AcctNostring本方賬號"01267600088450"
LedBalstring分類賬餘額(交易後)。格式 decimal(16,2)"5000000.00"
AvalBalstring可用餘額(交易後)。格式 decimal(16,2)"4800000.00"
GPIFlagstringSWIFT GPI 指示符(跨境匯款時有值)"Y"
GPIIdstringSWIFT GPI 追蹤 ID"d2fca123-..."
ChequeNostring支票號碼(支票交易時有值)"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 字段數據庫字段說明
SeqNoseq_no交易序號
Currencycurrency幣種
Amountamount金額
BOCDateboc_date交易日期 (YYYYMMDD)
BOCTimeboc_time交易時間
TxRefNotx_ref_no交易參考號
Particularsparticulars交易摘要(用於識別交易類型)
PayerOrPayeeNamepayer_or_payee_name付款人/收款人名稱
PayerOrPayeeAcctNopayer_or_payee_acct_no付款人/收款人賬號

moomoo 側適配

B2E 接口返回的原始字段不能直接用於匹配引擎——需要經過 Flow Converter 標準化後寫入 boc_bank_flow 表。以下是完整的字段映射和轉換邏輯。

流水標準化映射

B2E 原始字段BankFlow 標準字段轉換邏輯說明
TxRefNotransaction_id"BOC_" + YYYYMMDD + "_" + TxRefNo加前綴防止跨銀行 ID 衝突
Amountcredit直接映射 decimal(16,2)入金流水取貸方金額
Curccy直接映射(HKD/USD/CNY/JPY/SGD)ISO 4217 三字符代碼
TimetimeHH:mm:ssHHMMSS(去除冒號)統一為 6 位數字格式
Particularsremarks直接映射保留原始描述,用於交易類型識別
PayerOrPayeeNameen_name直接映射付款方英文姓名
PayerOrPayeeAcctNocustomer_account直接映射付款方銀行賬號
TxDetailtype交易類型標識用於分類統計
BOCDateboc_dateYYYYMMDD → DATE交易日期
AcctNoacct_no直接映射收款方賬號(moomoo 的賬號)
SeqNoseq_no直接映射交易序號

transaction_id 生成規則

transaction_id = "BOC_" + boc_date + "_" + tx_ref_no

例如:TxRefNo 為 1234567890123456,日期為 20260429,則生成: BOC_20260429_1234567890123456

這個 ID 是全局唯一的,也是去重和匹配的核心標識。

交易類型自動識別

系統通過流水的 particulars(交易摘要) 字段自動識別交易類型,不同類型的匹配規則和手續費容差不同:

Particulars 關鍵詞識別為可自動入賬手續費特徵
FPS TransferFPS 轉數快無手續費,精確匹配。最常見的入金方式
E-BANKING TRANSFER網銀轉賬無手續費,精確匹配。中銀網銀到賬
CHATS TransferCHATS 同城清算可能有手續費,本地容差。即時支付結算
REMIT IN跨境匯款中轉行扣費,跨境容差。海外匯入,容差最大
CBS TRANSFERCBS 內部轉賬❌ 僅匹配特殊處理。中銀體系內轉賬,需人工審核
ATM TransferATM 轉賬無法驗證來源,僅記錄
Cheque Clearing支票入賬支票有退票風險,需人工確認
Interest利息收入非入金流水,自動忽略
對應代碼

deposit/src/app/Business/Match/BocMatch.phpNewMatchRule() 方法,根據 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/CNYUSDJPY/SGD
預期到賬T+1 - T+2T+1 - T+3T+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 文件格式

文件類型方向內容
S14moomoo → 中銀出金指令(收款人信息、金額、幣種)
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_directionC=貸記(入賬) / D=借記(出賬)
ledger_balance交易後餘額
account對手方賬號
name對手方名稱
settlement_method結算方式
fee銀行手續費
abstract交易摘要

Relay 層

bochk_relay 是 B2E 請求的中繼層(SRPC 服務),提供 5 個 RPC 接口:

RPC 方法超時用途
InternalTrans60s內部轉賬指令
QueryInternalTrans30s查詢轉賬狀態
QueryAcctBalance30s查詢賬戶餘額
QueryTodayActivity50s查詢當天活動
QueryAcctStatement50s查詢賬戶對賬單

S14/S16 一致性校驗

系統會對比 S14(指令)和 S16(結果)的關鍵字段,確保數據一致:

監控指標含義
1946146S14/S16 流水不匹配(需要關注)
1946147S16 比 S14 信息更完整(正常)
1946148S14 和 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.phplocalTransferSimilarAmount / isDifAreaSimilarAmount調整金額容差閾值
新增交易類型識別BocMatch.phpNewMatchRule()添加新的 particulars 正則規則
修改匹配日期窗口BocMatch.phpdaySimilar調整天數參數
修改 FPS 出金限額BOCFPS.phpmake_able_where修改金額閾值
調整 FPS 排除銀行BOCFPS.phpmake_able_where修改 bank_id 排除列表
修改 B2E 拉取頻率bochk_flow_go/conf/conf.toml → cron 表達式調整定時任務
修改匹配頻率deposit/doc/crontab.shmatch:boc調整 cron 間隔
FTS 超時/重試bochk_relay 各 RPC 方法的 timeout 參數調整超時時間
新增 FTS 監控指標bochk_fts_mgrcus_fmonitor.py添加新的監控 ID
修改流水標準化映射bochk_flow_go → Flow Converter 模組調整 B2E → BankFlow 字段映射
修改入金超時閾值匹配引擎配置調整各轉賬方式的超時時間

常見客訴 Top 3

#用戶反饋原因客服話術
1"FPS 入金沒到"particulars 無法識別入金方式,流水標記為未識別"您的轉賬正在處理中,我們會盡快完成匹配入賬"
2"跨境匯入扣了手續費"中間行/匯入行扣除手續費屬正常"跨境匯款可能產生銀行手續費,實際到賬金額以銀行扣費後為準"
3"入金等了好幾天"中銀日期窗口 ±15 天,匹配週期較長"中銀入金匹配週期較長,請耐心等待,如超過 3 個工作日請聯繫客服"

讀完之後

我想...去看
看中銀在各銀行中的位置銀行能力矩陣
了解匹配引擎的完整邏輯匹配與自動入賬
看出金通道的執行細節通道執行手冊
查 B2E 錯誤碼和 FTS 狀態碼統一錯誤碼中心
查 TransType 和 Bank ID 對照入金規則速查
這個頁面有幫助嗎?

内部业务文档 · 仅限 moomoo 团队使用