交通銀行 BANKCOMM
本頁說明
講什麼:交通銀行渠道側接口規範 + moomoo 側適配邏輯 適合誰:PM 了解對接細節 / 開發定位代碼 / 運營理解銀行特性 前置閱讀:銀行能力矩陣預計閱讀:4 分鐘 負責人:出入金產品團隊
核心要點:交通銀行為常規入金通道,採用標準 API 流水採集模式。
能力總覽
| 能力 | 支持情況 | 協議/通道 | 核心服務 |
|---|---|---|---|
| 入金流水採集 | ✅ | API 定時拉取 | BankFlow 標準消息 |
| 入金匹配 | ✅ | 子賬戶 + BOCO 跨境標準 | BankcommMatch.php |
| 自動入賬 | ❌ | — | — |
| 出金 | ❌ | — | — |
| eDDA/eDDI | ❌ | — | — |
| 銀證 BST | ❌ | — | — |
交通銀行是一個純入金渠道——通過 API 採集流水後,使用子賬戶 + BOCO 跨境標準進行匹配推薦,但不支持自動入賬和出金。所有匹配結果需要運營人工確認後才能完成入賬。
核心參數速查
| 參數 | 值 | 說明 |
|---|---|---|
| IMPORT_BANK_ID | 21 | 系統內銀行標識 (BANKCOMM) |
| TransType | 203 | 入金交易類型 |
| 匹配引擎 | BankcommMatch | 子賬戶 + BOCO 跨境標準 |
| 自動入賬 | ❌ 不支持 | 僅輔助匹配推薦 |
| 出金 | ❌ 不支持 | — |
入金:API 流水採集
採集方式
交通銀行通過 API 定時推送 方式向 moomoo 提供流水數據。與中銀的 B2E 主動拉取不同,交行側定時將新增流水通過 API 推送至 moomoo,系統接收後轉換為標準的 BankFlow 消息格式。
數據流
流水字段映射
| 渠道側字段 | moomoo 側字段 | 說明 |
|---|---|---|
| 流水賬號 | sub_account_no | 子賬戶號,用於匹配 |
| 交易金額 | amount | 入金金額 |
| 交易幣種 | currency | HKD/USD |
| 交易日期 | tx_date | 交易發生日期 |
| 交易序號 | tx_seq | 唯一標識,用於去重 |
| 付款人信息 | payer_info | 匯款人名稱和賬號 |
去重機制
系統基於 sub_account_no + tx_seq + currency + tx_date 組合唯一鍵進行去重,避免 API 重複推送導致的流水重複入庫。
匹配規則:BankcommMatch
什麼是 BOCO 跨境標準
BOCO 是 Bank of China Overseas(中銀海外)跨境標準 的簡稱。雖然名稱來源於中銀體系,但這套標準已被複用於所有涉及跨境入金的匹配場景,包括交通銀行。
BOCO 標準的核心特點:
- 更寬的日期窗口:跨境匯款在途時間不可控,需要更大的日期容差
- 更大的金額容差:中轉行可能扣取手續費,實際到賬金額與匯款金額不一致
- 適應跨境不確定性:整體設計目標是降低因跨境匯款延遲和費用導致的匹配失敗率
匹配維度
BankcommMatch 使用 三維匹配:子賬戶驗證 + 金額容差 + 日期窗口。
1. 子賬戶驗證
| 維度 | 規則 | 說明 |
|---|---|---|
| 子賬戶 | 流水賬號必須在用戶歷史子賬戶列表中 | 通過 SubAccountSDK 查詢 |
交通銀行的入金流水通過子賬戶號關聯到用戶。系統會維護每個用戶的歷史子賬戶列表,匹配時先驗證流水中的賬號是否屬於某個用戶的子賬戶,只有通過子賬戶驗證的流水才會進入金額和日期匹配。
SubAccountSDK 調用邏輯
SubAccountSDK::getSubAccountList($user_id)
→ 返回用戶綁定的所有交行子賬戶號列表
→ 檢查 bank_flow.sub_account_no IN 列表2. 金額容差(BOCO 跨境標準)
| 幣種 | 容差範圍 | 說明 |
|---|---|---|
| HKD | CRM - 300 ≤ 流水 ≤ CRM | 允許中轉行扣費最多 300 HKD |
| USD | CRM - 45 ≤ 流水 ≤ CRM | 允許中轉行扣費最多 45 USD |
CRM 指用戶提交的入金申請金額(CRM = Customer Request Money)。
為什麼容差這麼大? 交通銀行的入金場景主要是跨境匯款。跨境匯款會經過一個或多個中轉行,每個中轉行都可能扣取手續費。這些費用在匯款發起時無法預知,所以需要較大的金額容差來覆蓋這種不確定性:
- HKD 300 的容差可以覆蓋 1-2 個中轉行各扣 100-150 HKD 的場景
- USD 45 的容差對應 HKD 300 的大致匯率換算
與本地轉賬容差的對比
本地銀行(如中銀 FPS 到賬)的 HKD 容差通常只有 -20,因為本地轉賬沒有中轉行扣費。交行的 -300 是所有跨境銀行中較為典型的數值。
3. 日期窗口(BOCO 窗口)
| 維度 | 範圍 | 說明 |
|---|---|---|
| 日期窗口 | 申請日期 -7 ~ +4 天 | 所有銀行中最寬的日期窗口 |
為什麼是 -7 ~ +4 天?
這是所有銀行中最寬的日期窗口,原因有三:
- 跨境匯款在途時間長:資金從內地交行匯到香港可能需要 2-5 個工作日,遇到節假日可能更長
- 用戶提前提交申請:部分用戶在匯款前就提交了入金申請,所以需要向前看 7 天
- 銀行處理延遲:銀行側可能因為合規審查等原因延遲到賬,所以需要向後看 4 天
與其他銀行日期窗口對比
| 銀行 | 日期窗口 | 場景 |
|---|---|---|
| 交通銀行 | -7 ~ +4 天 | 跨境匯款(最寬) |
| 中銀 BOCHK | ±15 天 | 本地+跨境(絕對值最大,但對稱) |
| 渣打 SCB | -3 ~ +2 天 | 本地轉賬(標準窗口) |
匹配流程
為什麼不支持自動入賬
交通銀行不支持自動入賬,原因是:
- 跨境匯款複雜度高:中轉行扣費金額不確定,匹配置信度不如本地轉賬
- 子賬戶信息有限:僅憑子賬戶號和金額,無法像 BST 那樣做到 100% 確定性匹配
- 風控要求:跨境入金涉及反洗錢合規,需要運營人工確認匯款來源
因此,BankcommMatch 的匹配結果僅作為推薦呈現給運營,由運營人工確認後完成入賬。
雙方功能對應矩陣
| 功能 | 渠道側(交通銀行) | moomoo 側 | 字段映射 | 說明 |
|---|---|---|---|---|
| 流水採集 | API 定時推送 | BankFlow 標準消息 | 直接映射 | 交行推送,moomoo 接收 |
| 子賬戶管理 | 提供子賬戶信息 | SubAccountSDK | sub_account_no | 匹配前置條件 |
| 匹配 | — | BankcommMatch.php | 子賬戶+BOCO標準 | 三維匹配 |
| 自動入賬 | — | ❌ 不支持 | — | 僅人工確認 |
| 出金 | — | ❌ 不支持 | — | — |
| 對賬 | 提供對賬文件 | 人工對賬 | — | 無自動化對賬 |
異常場景處理
常見異常
| 異常場景 | 表現 | 處理方式 |
|---|---|---|
| API 推送延遲 | 流水遲到,用戶投訴入金慢 | 等待下一次推送;緊急情況聯繫交行 |
| 子賬戶不在列表 | 流水無法匹配到任何用戶 | 檢查用戶是否已綁定該子賬戶,必要時手動添加 |
| 金額差異超過容差 | 中轉行扣費異常高 | 運營手動核實後人工入賬 |
| 重複流水 | 同一筆流水被多次推送 | 系統自動去重,無需處理 |
| 日期超出窗口 | 匯款在途超過 7 天 | 運營手動匹配,必要時擴大窗口查詢 |
異常升級路徑
發現異常 → 運營自查(子賬戶/金額/日期)
→ 開發介入(BankcommMatch 日誌)
→ 銀行協查(聯繫交行對接人)運營操作指南
日常操作
| 操作 | 頻率 | 說明 |
|---|---|---|
| 查看匹配推薦列表 | 每天 | 確認或拒絕 BankcommMatch 的推薦結果 |
| 檢查未匹配流水 | 每天 | 排查是否有用戶反饋入金未到賬 |
| 子賬戶維護 | 按需 | 用戶新增或變更子賬戶時更新 |
入金審核要點
運營確認交行入金匹配時,需要關注以下幾點:
- 核實子賬戶歸屬:確認流水中的子賬戶號確實屬於該用戶
- 核實金額合理性:扣費金額是否在正常範圍內(HKD 通常 50-200)
- 核實匯款人信息:匯款人名稱是否與用戶本人一致(反洗錢要求)
- 關注大額入金:單筆超過一定金額的入金需額外審核
定時任務
| 任務 | 頻率 | 說明 |
|---|---|---|
| 流水採集 | API 推送觸發 | 接收交行推送的流水數據 |
| match:bankcomm | 定時執行 | 執行 BankcommMatch 匹配 |
| 子賬戶同步 | 每天 | 同步用戶最新的子賬戶信息 |
需求變更指引
如果需要修改交通銀行相關的業務規則,以下是具體的改動位置:
| 變更需求 | 改動位置 | 說明 |
|---|---|---|
| 修改金額容差 | BankcommMatch.php → BOCO 容差參數 | 調整 HKD/USD 的容差閾值 |
| 修改日期窗口 | BankcommMatch.php → daySimilarBoco() | 調整 -7~+4 天的範圍 |
| 啟用自動入賬 | BankcommMatch.php → 添加 depositInstance 返回 | 需評估風控影響 |
| 修改子賬戶邏輯 | BankcommMatch.php → SubAccountSDK | 調整子賬戶查詢和驗證邏輯 |
| 新增支持幣種 | BankcommMatch.php → BOCO 容差表 | 添加新幣種的容差配置 |
| 調整匹配頻率 | deposit/doc/crontab.sh → match:bankcomm | 調整 cron 間隔 |
| 修改推送接收邏輯 | 流水接收服務 → BankFlow 轉換邏輯 | 適配交行 API 變更 |
啟用自動入賬需謹慎
如果業務要求啟用自動入賬,需要:
- 評估跨境匹配的誤匹配風險
- 可能需要增加姓名匹配維度
- 需要與風控團隊協商確認
- 建議先在小流量範圍內灰度驗證
與其他跨境銀行的對比
| 維度 | 交通銀行 | 廣發銀行 (CGB) | 中銀 (BOCHK) 跨境 |
|---|---|---|---|
| 入金方式 | API 推送 | FPS 流水採集 | B2E API 拉取 |
| 匹配標準 | BOCO 跨境 | 本地標準 | 本地+跨境雙標準 |
| HKD 金額容差 | -300 | -20 | -420(跨境)/ -20(本地) |
| 日期窗口 | -7 ~ +4 天 | -3 ~ +2 天 | ±15 天 |
| 自動入賬 | ❌ | ✅ | ✅ |
| 出金 | ❌ | ❌ | ✅(FTS/FPS) |
代碼位置速查
| 模組 | 路徑 | 說明 |
|---|---|---|
| 匹配引擎 | deposit/src/app/Business/Match/BankcommMatch.php | 核心匹配邏輯 |
| BOCO 容差 | BankcommMatch.php → BOCO 容差參數 | 金額容差配置 |
| BOCO 日期 | BankcommMatch.php → daySimilarBoco() | 日期窗口邏輯 |
| 子賬戶查詢 | SubAccountSDK | 用戶子賬戶列表查詢 |
| 定時任務 | deposit/doc/crontab.sh | match:bankcomm 調度 |
監控與告警
| 告警項 | 觸發條件 | 嚴重度 | 處理步驟 |
|---|---|---|---|
| API 連接超時 | 交行 API 無響應 | 🟡 中 | 檢查網路,確認交行側服務狀態 |
| BOCO 日期偏移 | 流水日期與交行系統日期不一致 | 🟡 中 | 確認 BOCO 日期轉換規則,檢查時區 |
| 流水採集重複 | 同一筆流水被重複採集 | 🟡 中 | 檢查去重邏輯,確認流水唯一標識 |
API 接口字段詳情
流水查詢請求
| 字段 | 類型 | 必填 | 描述 |
|---|---|---|---|
acct_no | string | ✅ | 交行賬號 |
start_date | string | ✅ | 查詢起始日期。BOCO 格式 |
end_date | string | ✅ | 查詢結束日期。BOCO 格式 |
currency | string | ❌ | 幣種過濾 |
流水響應字段
| 字段 | 類型 | 描述 |
|---|---|---|
txn_date | string | 交易日期(BOCO 格式,需轉換) |
txn_amount | decimal | 交易金額 |
balance | decimal | 交易後餘額 |
txn_type | string | 交易類型代碼 |
counterparty | string | 對手方信息 |
narrative | string | 交易摘要 |
與建銀/星展的 BOCO 對比
交行、建銀、星展三家銀行都使用類似的 API 流水採集模式,但實現細節有差異:
| 維度 | 交通銀行 | 建銀 CCB | 星展 DBS |
|---|---|---|---|
| 接口協議 | REST API (JSON) | REST API (JSON) | SubAccountSDK |
| 日期格式 | BOCO 標準 | BOCO 標準 | ISO 8601 |
| 姓名匹配 | 不要求 | 精確匹配 | 不要求 |
| 金額容差 (HKD) | -20 | -20 | -350(自動) |
| 日期窗口 | -3~+2 天 | -3~+4 天 | -3~+2 天 |
| 子賬戶 | 不支持 | 不支持 | ✅ 支持 |
| 多幣種 | HKD / USD / CNH | HKD / USD | HKD / USD |
| 出金能力 | ❌ 僅入金 | ❌ 僅入金 | ❌ 僅入金 |
三家的共同特點
這三家銀行目前都只接入了入金流水採集,不支持出金。用戶如需出金,需使用其他銀行通道(如 BST、網銀、FPS 等)。
讀完之後
| 我想... | 去看 |
|---|---|
| 看交行在各銀行中的位置 | 銀行能力矩陣 |
| 了解匹配引擎的完整邏輯 | 匹配與自動入賬 |
| 了解 BOCO 標準在其他銀行的應用 | 中銀 BOCHK |
| 查 TransType 和 Bank ID 對照 | 入金規則速查 |
| 了解其他不支持出金的銀行 | 建銀 CCB、工銀 ICBC |