天星銀行 Airstar Pull 模式
本頁說明
講什麼:天星銀行 BST 渠道側 REST API 規範 + moomoo 側適配邏輯 適合誰:PM 了解對接細節 / 開發定位代碼 / 運營理解銀行特性 前置閱讀:內銀系 BST 總覽、銀行能力矩陣預計閱讀:10 分鐘 負責人:出入金產品團隊
核心要點:天星是唯一使用 REST API(非 Socket)的 BST 銀行,輪詢模式決定了響應時間為分鐘級而非秒級,但對接複雜度低於招行/民生。
能力總覽
| 能力 | 支持情況 | 協議/通道 | 核心服務 |
|---|---|---|---|
| BST 銀證入金 | ✅ | REST API(RSA-OAEP 加密) | airstar_service (Go) |
| BST 銀證出金 | ✅ | auto_bs 銀證自動出金 | airstar_service (Go) |
| Mandate 授權 | ✅ | REST API | airstar_service (Go) |
| 線上開戶 | ✅ | 三合一流程(開戶+授權+首筆入金) | airstar_service (Go) |
| eDDA 授權 | ❌ | — | — |
| eDDI 代扣 | ❌ | — | — |
| FPS | ❌ | — | — |
天星銀行是 moomoo 接入的唯一虛擬銀行 BST 通道——與招行/民生的傳統二進制專線不同,天星採用現代 REST API 架構,支持 moomoo 端主動發起所有操作,且是唯一全面支持 CNH 的 BST 銀行。
核心標識
| 標識 | 值 | 說明 |
|---|---|---|
| IMPORT_BANK_ID | 55 | 系統內銀行唯一編號 |
| TransType | 304 (ASB_BST) | 天星銀證轉賬專用類型 |
| AUTO_SETTING_ID | 3 | 自動出金配置 ID |
| 服務名 | airstar_service | 核心銀證服務 |
| Proto 文件 | airstar_service/proto/airstar_service.proto | 接口定義 |
| 代碼語言 | Go | 與招行/民生的 Python 不同 |
渠道接口概覽
| 維度 | 說明 |
|---|---|
| 協議類型 | HTTP REST API |
| 加密方式 | RSA-OAEP(SHA1, 200字節分塊, Base64 編碼) |
| 數據格式 | JSON(加密後: {"messageBody": "base64..."} ) |
| 通信模式 | HTTP 請求-響應 + 輪詢(polling) |
| 編碼 | UTF-8 |
| 認證方式 | RSA 密鑰對(非證書) |
為什麼天星用 REST 而非 Socket?
天星是香港持牌虛擬銀行(2019 年獲牌),技術架構全面雲原生。傳統銀行(招行/民生)因歷史原因使用 Socket 專線通信,天星則直接提供標準 REST API——對開發更友好,但需要 moomoo 側自行實現輪詢機制來獲取異步結果。
渠道側接口詳情 — 11 個銀行側 REST API + 14 個內部 RPC 方法
天星提供 11 個銀行側 REST API + 14 個內部 RPC 方法,覆蓋授權、入金、出金全生命週期:
授權類接口(4 個)
| API 名稱 | Endpoint | 方向 | 用途 |
|---|---|---|---|
| CreateAuth | /authorization/apply | moomoo → 銀行 | 創建 eDDA 授權(Mandate) |
| QueryAuth | /authorization/status | moomoo → 銀行 | 查詢授權狀態 |
| CancelAuth | /authorization/cancel | moomoo → 銀行 | 取消授權 |
| NotifyAuthResult | /authorization/result | moomoo → 銀行 | 通知授權審批結果 |
入金類接口(2 個)
| API 名稱 | Endpoint | 方向 | 用途 |
|---|---|---|---|
| CreateTransfer(direction=deposit) | /transfer/init | moomoo → 銀行 | 發起入金請求 |
| QueryTransfer(direction=deposit) | /transfer/status | moomoo → 銀行 | 查詢入金狀態(輪詢用) |
統一 Transfer 接口
天星 API 使用統一的 Transfer 接口,通過 transfer_direction 字段區分入金(deposit)和出金(withdraw),而非獨立的入金/出金端點。
出金/退款類接口(2 個)
| API 名稱 | Endpoint | 方向 | 用途 |
|---|---|---|---|
| CreateWithdrawRefund | /transfer/withdraw/reversal | moomoo → 銀行 | 創建出金退款 |
| QueryRefund | /transfer/withdraw/reversal/status | moomoo → 銀行 | 查詢退款狀態 |
賬戶類接口(2 個)
| API 名稱 | Endpoint | 方向 | 用途 |
|---|---|---|---|
| QuerySecAccount | /account/info | moomoo → 銀行 | 查詢證券賬戶信息(餘額等) |
| NotifyDepositApproval | /transfer/approval | moomoo → 銀行 | 通知入金審批結果 |
所有接口均由 moomoo 主動調用
與民生銀行(銀行主動推送數據給 moomoo)不同,天星的銀行側接口全部由 moomoo 端主動發起調用。這意味著 moomoo 側擁有完全的流程控制權,但也需要承擔輪詢、超時處理等額外邏輯。
核心接口字段詳情
CreateAuthReq — 創建授權請求
用戶在 moomoo App 端發起 Mandate 授權時的請求參數:
| 字段 | 類型 | 必填 | 描述 |
|---|---|---|---|
| request_id | string(16-50) | ✅ | 唯一請求 ID。冪等性保證,不可重複 |
| cid | uint64 | ✅ | 客戶 ID。moomoo UID |
| bank_card_number | string(12) | ✅ | 銀行卡號。天星銀行卡固定 12 位 |
| id_card_type | string | ✅ | 證件類型。取值 "HKID" 或 "CNID" |
| id_card_number | string(1-35) | ✅ | 證件號碼。身份證/回鄉證號 |
| en_name | string(1-127) | ✅ | 英文姓名。與銀行預留姓名一致 |
| phone_number | string | ✅ | 手機號。格式 "+86-1XXX" 或 "+852-XXX" |
銀行卡號固定 12 位
天星銀行卡號統一為 12 位數字。與傳統銀行的 16~19 位卡號不同,開發時需注意長度校驗規則。
CreateAuthRsp — 授權響應
| 字段 | 類型 | 描述 |
|---|---|---|
| code | uint32 | 200 = 成功,其他 = 失敗 |
| total | uint32 | 關聯的 UID 總數 |
| securities_client_nos | array[uint64] | UID 列表 |
注意響應方向
注意:此處 CreateAuthRsp 為銀行發起授權時 moomoo 側的響應字段,非 moomoo 發起授權後的返回。moomoo 主動創建授權的響應為空(無額外字段)。
CreateDepositReq — 發起入金請求
| 字段 | 類型 | 必填 | 描述 |
|---|---|---|---|
| request_id | string(16-50) | ✅ | 請求 ID。冪等性保證 |
| cid | uint64 | ✅ | 客戶 ID。moomoo UID |
| market_id | uint32 | ✅ | 市場 ID。取值 1=HK, 2=US |
| account_id | uint32 | ✅ | 賬戶 ID。證券賬戶 ID |
| currency | string | ✅ | 幣種。取值 HKD / USD / CNH |
| amount | string | ✅ | 金額。字符串格式,如 "50000.00" |
| bank_card_number | string(12) | ✅ | 銀行卡號。12 位天星卡號 |
| en_name | string(1-127) | ✅ | 英文姓名。與 Mandate 授權時一致 |
QueryDepositRsp — 入金查詢響應
輪詢入金狀態時返回的完整信息:
| 字段 | 類型 | 描述 |
|---|---|---|
| deposit_id | uint64 | 入金任務 ID(系統內唯一) |
| request_id | string | 請求 ID(與 CreateDepositReq 對應) |
| cid | uint64 | 客戶 ID |
| currency | string | 幣種 |
| amount | string | 金額 |
| bank_card_number | string | 銀行卡號 |
| en_name | string | 客戶姓名 |
| ref_id | string | moomoo 側參考號 |
| bank_ref_id | string | 銀行側參考號(對賬關鍵) |
| status | string | 入金狀態(見下表) |
| fail_code | string | 失敗代碼(僅失敗時有值) |
| fail_reason | string | 失敗原因描述 |
| source | string | 來源:1=moomoo 端,2=銀行端 |
入金狀態值
| 狀態 | 含義 | 說明 | 是否終態 |
|---|---|---|---|
| new | 新建 | 剛發起入金請求 | ❌ |
| pending | 處理中 | 銀行正在處理 | ❌ |
| success | 成功 | 入金完成,資金已到賬 | ✅ |
| failed | 失敗 | 銀行拒絕(餘額不足/限額等) | ✅ |
| refunded | 已退款 | 天星獨有——入金成功後銀行退回 | ✅ |
QuerySecuritiesAccountRsp — 證券賬戶查詢響應
查詢用戶在天星授權下的完整證券賬戶信息:
| 字段 | 類型 | 描述 |
|---|---|---|
| code | uint32 | 200 = 成功 |
| status | string | 授權狀態(Mandate 狀態) |
| deposit | object | 入金限制信息 |
| withdraw | object | 出金限制信息 |
| securities_accounts | array | 證券賬戶列表 |
| bankcard_info | object | 銀行卡信息 |
SecuritiesAccount — 證券賬戶詳情
| 字段 | 類型 | 描述 |
|---|---|---|
| market_id | uint32 | 市場 ID(1=HK, 2=US) |
| account_number | string | 證券賬號(16 位) |
| capital_infos | array[CapitalInfo] | 各幣種資金信息 |
| account_name_en | string | 英文賬戶名 |
| account_name_cn | string | 中文賬戶名(簡體) |
| account_name_hk | string | 繁體賬戶名 |
CapitalInfo — 資金信息
| 字段 | 類型 | 描述 | 單位 |
|---|---|---|---|
| currency | string | 幣種 | HKD/USD/CNH |
| cash_withdrawal_amount | uint64 | 可提取現金 | 分(需除以 100) |
| max_withdrawal_amount | uint64 | 最大可提取金額 | 分(需除以 100) |
金額單位為"分"
CapitalInfo 中的金額字段單位是分(cents),不是元。例如 cash_withdrawal_amount = 5000000 表示 50,000.00 元。開發和運營在使用時需注意單位轉換,避免金額錯誤。
與招行/民生的關鍵差異
| 維度 | 招行/民生 | 天星 |
|---|---|---|
| 協議 | SM2 加密 Socket / Protobuf | REST API + RSA-OAEP |
| 通信模式 | Socket 雙向鏈路(銀行推送) | HTTP 請求-響應 + 輪詢 |
| CNH 支持 | 受限 / 完全不支持 | 全面支持 HKD + USD + CNH |
| 處理時段 | 08:40 ~ 15:59 | 08:30 ~ 15:59(提前 10 分鐘) |
| 入金結果獲取 | Socket 實時推送 | 最多 60 次輪詢 |
| 出金結果獲取 | Socket 實時推送 | 最多 10 次輪詢 + 2h 兜底同步 |
| 退款機制 | 無 | 有 REFUNDED 狀態(需沖正) |
| 授權模型 | 銀證簽約(2 狀態) | Mandate 授權(6 狀態) |
| 線上開戶 | 不支持 | 支持三合一流程 |
| 發起方 | 僅 moomoo / 僅銀行(視接口) | moomoo + 銀行雙向 |
| 代碼語言 | Python | Go |
| 接口數量 | 9 個 RPC | 11 個銀行側 REST API + 14 個內部 RPC 方法 |
| 數據格式 | 二進制 / Protobuf | JSON |
一句話總結:招行/民生是銀行主導的專線通信(推送模式),天星是 moomoo 主導的 API 調用(輪詢模式)。
RSA-OAEP 加密方案
加密參數
| 參數 | 值 | 說明 |
|---|---|---|
| 算法 | RSA-OAEP | 非對稱加密 + OAEP 填充 |
| 哈希函數 | SHA1 | OAEP 填充使用 SHA1 |
| 分塊大小 | 200 字節/塊 | 明文超過 200 字節需分塊加密 |
| 編碼方式 | Base64 | 加密後 Base64 編碼 |
加密流程
請求/響應格式
加密後的請求體:
{
"messageBody": "dGhpcyBpcyBhIGJhc2U2NCBlbmNvZGVkIGVuY3J5cHRlZCBtZXNzYWdl..."
}解密流程(收到響應後):
- 從
messageBody取出 Base64 字符串 - Base64 解碼得到密文
- 按塊 RSA-OAEP 解密
- 拼接明文 → 解析 JSON
與民生 SM2 的安全性對比
| 維度 | 民生 SM2 | 天星 RSA-OAEP |
|---|---|---|
| 算法類型 | 國密橢圓曲線 | RSA 非對稱 |
| 密鑰長度 | 256 位 | 2048+ 位 |
| 合規要求 | 中國境內銀行必須 | 國際通用 |
| 分塊處理 | 不需要 | 200 字節/塊 |
| 性能 | 更快 | 較慢(大密鑰) |
| 天星作為香港虛擬銀行,不受中國國密算法合規要求約束,因此使用國際通用的 RSA 方案。 |
輪詢策略
天星不支持 Socket 推送,所有異步操作結果都通過**輪詢(polling)**獲取。這是天星接入中最需要關注的技術細節。
入金輪詢
| Job 名稱 | 職責 | 輪詢上限 | 後續動作 |
|---|---|---|---|
| AsbBstCreateJob | 發送入金請求到天星 | — | 創建成功後進入輪詢 |
| AsbBstCreateResultJob | 輪詢入金結果 | 最多 60 次 | 成功→入賬 / 失敗→通知 / 超時→人工 |
| AsbBstDepositJob | 確認成功後執行入賬 | — | 創建入金流水、更新餘額 |
出金輪詢
| Job 名稱 | 職責 | 輪詢上限 | 後續動作 |
|---|---|---|---|
| AsbBstTransfer | 出金指令 + 結果輪詢 | 最多 10 次 | 成功/失敗→處理 / 超時→兜底 |
| SyncAsbBstWithdraw | 超時後的兜底同步 | 2 小時窗口 | 窗口內有結果→處理 / 超時→人工 |
輪詢超時 ≠ 交易失敗
輪詢超時只意味著 moomoo 側未在預期時間內獲得銀行側結果。交易可能仍在銀行側處理中。運營遇到此類情況需主動聯繫天星確認交易狀態,切勿直接判定為失敗。
限額體系
三層限額配置
天星採用與招行/民生相同的三層限額體系,但具體數值不同:
| 幣種 | 單筆上限(max) | 累計報警(alarm) | 每日熔斷(stop) |
|---|---|---|---|
| HKD | 3,000,000 | 40,000,000 | 15,000,000 |
| USD | 500,000 | 10,000,000 | 3,000,000 |
| CNH | 0(無限制) | 0(不報警) | 0(不熔斷) |
CNH 無限額
天星的 CNH 限額全部設為 0,表示不設限制。這與 CNH 作為天星獨家優勢的產品定位一致——鼓勵人民幣出入金。但實際操作中仍受銀行側自有限額約束。
熔斷機制
熔斷觸發條件:當日累計金額 - 出金金額 < stop_amount
| 熔斷階段 | 系統動作 |
|---|---|
| 觸發 | 自動關閉當日該幣種的自動出金 |
| 告警 | 飛書消息通知運營團隊 |
| 恢復 | 運營確認風險可控後手動恢復,或次日自動重置 |
線上開戶最低入金
| 幣種 | 最低入金 | 說明 |
|---|---|---|
| HKD | 10,000 | 確保新客有足夠交易資金 |
| USD | 1,500 | — |
| CNH | 10,000 | — |
普通入金無最低金額要求,此限額僅針對線上開戶三合一流程的首筆入金。
REFUNDED 退款狀態(天星獨有)
REFUNDED 是天星區別於所有其他 BST 銀行的獨特狀態——入金成功到賬後銀行又發起退款。
REFUNDED vs FAILED 對比
| 維度 | FAILED(失敗) | REFUNDED(退款) |
|---|---|---|
| 含義 | 銀行拒絕入金請求 | 入金已成功到賬後銀行退回 |
| 資金 | 從未到達證券賬戶 | 已到賬後被退回 |
| 餘額影響 | 無(從未增加) | 已增加後需扣回 |
| 沖正操作 | 不需要 | 必須執行(自動沖正) |
| 用戶體驗 | 入金失敗提示 | 入金成功後又收到退款通知 |
| 普遍性 | 所有銀行都有 | 僅天星 |
沖正流程
REFUNDED 觸發場景
| 場景 | 說明 |
|---|---|
| 銀行反欺詐 | 入金後銀行風控系統檢測到異常交易 |
| 合規要求 | 監管部門要求退回特定交易 |
| 用戶投訴 | 用戶在銀行端投訴未授權交易 |
| 系統錯誤 | 銀行側重複入賬後修正 |
沖正時餘額不足
如果用戶在入金成功後已將資金用於交易(買入股票等),沖正時可能出現餘額不足無法全額扣回的情況。此時需要運營人工介入處理——這是 REFUNDED 狀態最複雜的異常場景。
安全檢查(天星獨有)
天星銀行在授權和入金流程中加入了風險等級評估,這是傳統 BST 銀行沒有的機制:
風險等級處理
| 風險等級 | 等級值 | 系統動作 | 說明 |
|---|---|---|---|
| Level 0-2 | APPROVE | 正常通過 | 低風險交易,自動放行 |
| Level 3 | MANUAL | 轉人工審核 | 中風險,需運營人工審核後決定 |
| Level 4 | REJECT | 直接拒絕 | 高風險,自動拒絕交易 |
| VERIFY | — | 需要額外驗證 | 要求用戶完成額外身份驗證 |
風險等級來源
風險等級由天星銀行側返回,moomoo 側據此決定處理方式。銀行側的風控模型考慮以下因素:
- 交易金額是否異常
- 交易頻率是否異常
- 客戶歷史行為
- 設備/IP 風險
- 反洗錢(AML)規則
與 moomoo 側風控的協作
雙重風控意味著:一筆交易可能通過了 moomoo 側的風控(不在黑名單、不超限額),但被天星側的風控攔截(Level 3/4)。運營在排查入金/出金失敗時需同時檢查兩側的風控日誌。
入金流程
兩種入金來源
| 來源 | source 值 | 說明 |
|---|---|---|
| moomoo 端發起 | 1 | 用戶在 moomoo App 點擊入金 |
| 銀行端發起 | 2 | 用戶在天星銀行 App 發起轉賬到證券賬戶 |
銀行端發起(source=2)是天星獨有——招行/民生的 BST 入金只能從 moomoo 端發起。
完整入金流程
入金時段
| 時段 | 時間範圍 | 說明 |
|---|---|---|
| 正常交易時段 | 08:30 ~ 15:59 | 比招行/民生提前 10 分鐘開始 |
| 非交易時段 | 16:00 ~ 次日 08:29 | 不接受新請求 |
出金流程
完整出金流程
auto_bs 自動出金條件
天星出金走 auto_bs 自動出金通道,AUTO_SETTING_ID = 3:
| 條件 | 說明 |
|---|---|
| Mandate 狀態 = OPEN | 授權關係有效 |
| 賬戶狀態正常 | 非凍結、非銷戶 |
| 不在出金黑名單 | 黑名單檢查通過 |
| 單筆不超限 | HKD ≤ 300萬 / USD ≤ 50萬 |
| 每日不熔斷 | 當日累計未觸發 stop 閾值 |
| 交易時段內 | 08:30 ~ 15:59 |
| 風險等級 ≤ Level 2 | 天星側風控通過 |
不滿足任一條件則轉人工審批。注意第 7 條(風險等級)是天星獨有的自動出金前置條件。
線上開戶(天星獨有)
天星支持三合一線上開戶——新客戶在 moomoo App 內一站式完成:
三合一 vs 傳統流程
| 步驟 | 傳統流程(招行/民生) | 三合一(天星) |
|---|---|---|
| 開戶 | moomoo App 完成 | moomoo App 完成 |
| 簽約 | 去銀行櫃台/網銀簽約 | moomoo App 內完成 Mandate |
| 入金 | 返回 moomoo App 入金 | 緊接著完成首筆入金 |
| 總耗時 | 1~3 天(含銀行簽約) | 數分鐘 |
首筆入金限額
| 幣種 | 最低入金 | 普通入金最低 | 倍數 |
|---|---|---|---|
| HKD | 10,000 | 無要求 | — |
| USD | 1,500 | 無要求 | — |
| CNH | 10,000 | 無要求 | — |
首筆入金設置較高最低限額的目的是確保新客戶有足夠資金進行交易,避免"註冊但不交易"的無效用戶。
異常場景手冊
授權異常(5 類)
| # | 異常 | 症狀 | 原因 | 處理 |
|---|---|---|---|---|
| 1 | 授權停在 PROCESSING | Mandate 長時間無狀態變更 | 銀行處理延遲 | 查詢 QueryAuth 確認狀態 |
| 2 | 授權 FAIL | CreateAuth 返回失敗 | 姓名/證件不匹配 | 核實用戶信息,引導重試 |
| 3 | 授權 CANCEL | 用戶在銀行端取消 | 用戶主動操作 | 確認用戶意圖 |
| 4 | 部分市場映射失敗 | 3 市場中部分綁定異常 | 市場配置問題 | 手動補充綁定關係 |
| 5 | CancelAuth 失敗 | 取消授權請求被拒絕 | Mandate 非 OPEN 狀態 | 檢查當前狀態後重試 |
入金異常(7 類)
| # | 異常 | 症狀 | 原因 | 處理 |
|---|---|---|---|---|
| 1 | 入金創建失敗 | CreateDeposit 返回錯誤 | 參數異常/Mandate 非 OPEN | 檢查參數和 Mandate 狀態 |
| 2 | 輪詢 60 次超時 | status 始終為 pending | 銀行處理異常 | 人工聯繫天星確認 |
| 3 | 入金失敗 | status=failed | 銀行拒絕 | 查看 fail_code/fail_reason |
| 4 | 入金退款 | status=refunded | 銀行發起退款 | 執行沖正,通知用戶 |
| 5 | 沖正餘額不足 | REFUNDED 後扣回失敗 | 用戶已消費入金資金 | 運營人工介入處理 |
| 6 | 銀行端入金未同步 | source=2 但 moomoo 未收到 | API 調用丟失 | 手動查詢天星 API 補錄 |
| 7 | 重複入金 | 同一筆創建多條記錄 | request_id 去重失敗 | 通過 request_id/bank_ref_id 排查 |
出金異常(5 類)
| # | 異常 | 症狀 | 原因 | 處理 |
|---|---|---|---|---|
| 1 | 出金指令失敗 | AsbBstTransfer 報錯 | 參數異常/銀行拒絕 | 檢查錯誤碼,釋放凍結 |
| 2 | 10 次輪詢超時 | AsbBstTransfer 用盡 | 銀行處理慢 | 進入 SyncAsbBstWithdraw |
| 3 | 2h 兜底超時 | SyncAsbBstWithdraw 窗口結束 | 銀行處理異常 | 人工聯繫天星確認 |
| 4 | 凍結未釋放 | 出金失敗但資金仍凍結 | 釋放流程異常 | 手動釋放凍結資金 |
| 5 | 銀行端出金未同步 | 用戶從天星 App 發起出金 | 回調丟失 | 手動查詢 API 執行扣款 |
常見客訴 Top 3
| # | 用戶反饋 | 原因 | 客服話術 |
|---|---|---|---|
| 1 | "餘額不足無法入金" | 140630005 銀行餘額不夠 | "請確認天星銀行賬戶餘額充足後重試" |
| 2 | "授權一直處理中" | Mandate 停在 PendingAuthorise | "銀行正在審核您的授權申請,通常 1-2 個工作日內完成" |
| 3 | "入金成功後資金被退回" | REFUNDED 狀態 | "銀行因合規原因退回了本次入金,請聯繫客服了解詳情" |
監控與告警
天星 13 項關鍵告警
| # | 告警項 | 觸發條件 | 嚴重度 | 處理方式 |
|---|---|---|---|---|
| 1 | 授權創建超時 | Mandate 在 PROCESSING 超過閾值 | 高 | 檢查天星 API 連通性 |
| 2 | 授權失敗率突增 | 單位時間內 FAIL 數量超限 | 高 | 排查銀行側異常 |
| 3 | 入金創建失敗 | AsbBstCreateJob 連續失敗 | 高 | 檢查請求參數和 API 狀態 |
| 4 | 入金輪詢超時 | 60 次輪詢用盡 | 高 | 人工聯繫天星確認 |
| 5 | 入金退款(REFUNDED) | 收到 REFUNDED 狀態 | 嚴重 | 立即沖正,通知用戶和運營 |
| 6 | 出金輪詢超時 | 10 次輪詢用盡 | 高 | 進入 SyncAsbBstWithdraw |
| 7 | 出金兜底超時 | 2h 窗口結束仍 pending | 嚴重 | 人工確認銀行側狀態 |
| 8 | 凍結未釋放 | 出金失敗但凍結未回滾 | 嚴重 | 手動釋放凍結 |
| 9 | 每日熔斷觸發 | 當日累計達到 stop 閾值 | 中 | 運營確認後決定是否恢復 |
| 10 | 累計報警觸發 | 累計達到 alarm 閾值 | 中 | 運營關注,評估風險 |
| 11 | 重複交易檢測 | request_id 重複 | 高 | 檢查去重邏輯 |
| 12 | API 連通性異常 | 天星 API 響應超時或錯誤率升高 | 嚴重 | 聯繫天星銀行技術支持 |
| 13 | 銀行端發起量異常 | source=2 交易量突增 | 中 | 排查是否為正常業務波動 |
代碼位置與服務部署
| 維度 | 說明 |
|---|---|
| 服務名 | airstar_service |
| 代碼語言 | Go |
| Proto 文件 | airstar_service/proto/airstar_service.proto |
| 依賴 | RSA 加密庫、HTTP 客戶端、JSON 序列化 |
關鍵代碼模組
| 模組 | 職責 |
|---|---|
airstar_service/api/ | 11 個銀行側 REST API 的請求/響應處理 |
airstar_service/crypto/ | RSA-OAEP 加解密(200 字節分塊) |
airstar_service/job/ | 輪詢 Job(CreateResult/Transfer/Sync) |
airstar_service/mandate/ | Mandate 授權狀態機 |
airstar_service/deposit/ | 入金邏輯(含 REFUNDED 沖正) |
airstar_service/withdraw/ | 出金邏輯(含熔斷檢查) |
airstar_service/proto/ | Protobuf 接口定義 |
airstar_service/config/ | 銀行連接配置、RSA 密鑰、限額參數 |
需求變更指引
| 變更需求 | 改動位置 | 說明 |
|---|---|---|
| 修改限額 | SQL seed + config | HKD/USD/CNH 三層限額 |
| 修改輪詢次數 | job/ 中的輪詢邏輯 | 調整 60 次/10 次上限 |
| 修改處理時段 | 時段校驗邏輯 | 當前 08:30 開始 |
| 新增支持幣種 | CreateDepositReq + 限額配置 | 需天星側同步支持 |
| 修改 RSA 密鑰 | config/ + crypto/ | 需與天星協調密鑰輪換 |
| 調整風險等級策略 | 安全檢查處理邏輯 | Level 3 改為自動拒絕等 |
| 修改沖正邏輯 | deposit/ REFUNDED 處理 | 調整沖正失敗的兜底策略 |
| 修改自動出金條件 | auto_bs 配置 + AUTO_SETTING_ID=3 | 參考 出金規則手冊 |
| 新增 API 接口 | 天星提供新 API 文檔 → 實現對應 handler | 需天星側先發佈接口 |
| 調整告警閾值 | 監控配置 | 根據業務量調整靈敏度 |
讀完之後
| 我想... | 去看 |
|---|---|
| 看三家 BST 銀行的整體對比 | 內銀系 BST 總覽 |
| 了解民生的 Protobuf/SRPC 方案 | 民生銀行 MS |
| 看出金自動審批條件和三層限額 | 出金規則手冊 |
| 查天星錯誤碼(140630xxx / 140670xxx) | 統一錯誤碼中心 |
| 看 BST 任務的運行頻率和告警 | 定時任務與監控 |
| 看所有銀行的能力對比 | 銀行能力矩陣 |
| 了解 SBA 資金編排的凍結-釋放機制 | SBA 服務架構 |