Skip to content

天星銀行 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 APIairstar_service (Go)
線上開戶✅三合一流程(開戶+授權+首筆入金)airstar_service (Go)
eDDA 授權❌——
eDDI 代扣❌——
FPS❌——

天星銀行是 moomoo 接入的唯一虛擬銀行 BST 通道——與招行/民生的傳統二進制專線不同,天星採用現代 REST API 架構,支持 moomoo 端主動發起所有操作,且是唯一全面支持 CNH 的 BST 銀行。


核心標識 ​

標識值說明
IMPORT_BANK_ID55系統內銀行唯一編號
TransType304 (ASB_BST)天星銀證轉賬專用類型
AUTO_SETTING_ID3自動出金配置 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/applymoomoo → 銀行創建 eDDA 授權(Mandate)
QueryAuth/authorization/statusmoomoo → 銀行查詢授權狀態
CancelAuth/authorization/cancelmoomoo → 銀行取消授權
NotifyAuthResult/authorization/resultmoomoo → 銀行通知授權審批結果

入金類接口(2 個) ​

API 名稱Endpoint方向用途
CreateTransfer(direction=deposit)/transfer/initmoomoo → 銀行發起入金請求
QueryTransfer(direction=deposit)/transfer/statusmoomoo → 銀行查詢入金狀態(輪詢用)

統一 Transfer 接口

天星 API 使用統一的 Transfer 接口,通過 transfer_direction 字段區分入金(deposit)和出金(withdraw),而非獨立的入金/出金端點。

出金/退款類接口(2 個) ​

API 名稱Endpoint方向用途
CreateWithdrawRefund/transfer/withdraw/reversalmoomoo → 銀行創建出金退款
QueryRefund/transfer/withdraw/reversal/statusmoomoo → 銀行查詢退款狀態

賬戶類接口(2 個) ​

API 名稱Endpoint方向用途
QuerySecAccount/account/infomoomoo → 銀行查詢證券賬戶信息(餘額等)
NotifyDepositApproval/transfer/approvalmoomoo → 銀行通知入金審批結果
所有接口均由 moomoo 主動調用

與民生銀行(銀行主動推送數據給 moomoo)不同,天星的銀行側接口全部由 moomoo 端主動發起調用。這意味著 moomoo 側擁有完全的流程控制權,但也需要承擔輪詢、超時處理等額外邏輯。


核心接口字段詳情 ​

CreateAuthReq — 創建授權請求 ​

用戶在 moomoo App 端發起 Mandate 授權時的請求參數:

字段類型必填描述
request_idstring(16-50)✅唯一請求 ID。冪等性保證,不可重複
ciduint64✅客戶 ID。moomoo UID
bank_card_numberstring(12)✅銀行卡號。天星銀行卡固定 12 位
id_card_typestring✅證件類型。取值 "HKID" 或 "CNID"
id_card_numberstring(1-35)✅證件號碼。身份證/回鄉證號
en_namestring(1-127)✅英文姓名。與銀行預留姓名一致
phone_numberstring✅手機號。格式 "+86-1XXX" 或 "+852-XXX"

銀行卡號固定 12 位

天星銀行卡號統一為 12 位數字。與傳統銀行的 16~19 位卡號不同,開發時需注意長度校驗規則。

CreateAuthRsp — 授權響應 ​

字段類型描述
codeuint32200 = 成功,其他 = 失敗
totaluint32關聯的 UID 總數
securities_client_nosarray[uint64]UID 列表

注意響應方向

注意:此處 CreateAuthRsp 為銀行發起授權時 moomoo 側的響應字段,非 moomoo 發起授權後的返回。moomoo 主動創建授權的響應為空(無額外字段)。

CreateDepositReq — 發起入金請求 ​

字段類型必填描述
request_idstring(16-50)✅請求 ID。冪等性保證
ciduint64✅客戶 ID。moomoo UID
market_iduint32✅市場 ID。取值 1=HK, 2=US
account_iduint32✅賬戶 ID。證券賬戶 ID
currencystring✅幣種。取值 HKD / USD / CNH
amountstring✅金額。字符串格式,如 "50000.00"
bank_card_numberstring(12)✅銀行卡號。12 位天星卡號
en_namestring(1-127)✅英文姓名。與 Mandate 授權時一致

QueryDepositRsp — 入金查詢響應 ​

輪詢入金狀態時返回的完整信息:

字段類型描述
deposit_iduint64入金任務 ID(系統內唯一)
request_idstring請求 ID(與 CreateDepositReq 對應)
ciduint64客戶 ID
currencystring幣種
amountstring金額
bank_card_numberstring銀行卡號
en_namestring客戶姓名
ref_idstringmoomoo 側參考號
bank_ref_idstring銀行側參考號(對賬關鍵)
statusstring入金狀態(見下表)
fail_codestring失敗代碼(僅失敗時有值)
fail_reasonstring失敗原因描述
sourcestring來源:1=moomoo 端,2=銀行端

入金狀態值 ​

狀態含義說明是否終態
new新建剛發起入金請求❌
pending處理中銀行正在處理❌
success成功入金完成,資金已到賬✅
failed失敗銀行拒絕(餘額不足/限額等)✅
refunded已退款天星獨有——入金成功後銀行退回✅

QuerySecuritiesAccountRsp — 證券賬戶查詢響應 ​

查詢用戶在天星授權下的完整證券賬戶信息:

字段類型描述
codeuint32200 = 成功
statusstring授權狀態(Mandate 狀態)
depositobject入金限制信息
withdrawobject出金限制信息
securities_accountsarray證券賬戶列表
bankcard_infoobject銀行卡信息

SecuritiesAccount — 證券賬戶詳情 ​

字段類型描述
market_iduint32市場 ID(1=HK, 2=US)
account_numberstring證券賬號(16 位)
capital_infosarray[CapitalInfo]各幣種資金信息
account_name_enstring英文賬戶名
account_name_cnstring中文賬戶名(簡體)
account_name_hkstring繁體賬戶名

CapitalInfo — 資金信息 ​

字段類型描述單位
currencystring幣種HKD/USD/CNH
cash_withdrawal_amountuint64可提取現金分(需除以 100)
max_withdrawal_amountuint64最大可提取金額分(需除以 100)

金額單位為"分"

CapitalInfo 中的金額字段單位是分(cents),不是元。例如 cash_withdrawal_amount = 5000000 表示 50,000.00 元。開發和運營在使用時需注意單位轉換,避免金額錯誤。


與招行/民生的關鍵差異 ​

維度招行/民生天星
協議SM2 加密 Socket / ProtobufREST API + RSA-OAEP
通信模式Socket 雙向鏈路(銀行推送)HTTP 請求-響應 + 輪詢
CNH 支持受限 / 完全不支持全面支持 HKD + USD + CNH
處理時段08:40 ~ 15:5908:30 ~ 15:59(提前 10 分鐘)
入金結果獲取Socket 實時推送最多 60 次輪詢
出金結果獲取Socket 實時推送最多 10 次輪詢 + 2h 兜底同步
退款機制無有 REFUNDED 狀態(需沖正)
授權模型銀證簽約(2 狀態)Mandate 授權(6 狀態)
線上開戶不支持支持三合一流程
發起方僅 moomoo / 僅銀行(視接口)moomoo + 銀行雙向
代碼語言PythonGo
接口數量9 個 RPC11 個銀行側 REST API + 14 個內部 RPC 方法
數據格式二進制 / ProtobufJSON

一句話總結:招行/民生是銀行主導的專線通信(推送模式),天星是 moomoo 主導的 API 調用(輪詢模式)。


RSA-OAEP 加密方案 ​

加密參數 ​

參數值說明
算法RSA-OAEP非對稱加密 + OAEP 填充
哈希函數SHA1OAEP 填充使用 SHA1
分塊大小200 字節/塊明文超過 200 字節需分塊加密
編碼方式Base64加密後 Base64 編碼

加密流程 ​

請求/響應格式 ​

加密後的請求體:

json
{
  "messageBody": "dGhpcyBpcyBhIGJhc2U2NCBlbmNvZGVkIGVuY3J5cHRlZCBtZXNzYWdl..."
}

解密流程(收到響應後):

  1. 從 messageBody 取出 Base64 字符串
  2. Base64 解碼得到密文
  3. 按塊 RSA-OAEP 解密
  4. 拼接明文 → 解析 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)
HKD3,000,00040,000,00015,000,000
USD500,00010,000,0003,000,000
CNH0(無限制)0(不報警)0(不熔斷)

CNH 無限額

天星的 CNH 限額全部設為 0,表示不設限制。這與 CNH 作為天星獨家優勢的產品定位一致——鼓勵人民幣出入金。但實際操作中仍受銀行側自有限額約束。

熔斷機制 ​

熔斷觸發條件:當日累計金額 - 出金金額 < stop_amount

熔斷階段系統動作
觸發自動關閉當日該幣種的自動出金
告警飛書消息通知運營團隊
恢復運營確認風險可控後手動恢復,或次日自動重置

線上開戶最低入金 ​

幣種最低入金說明
HKD10,000確保新客有足夠交易資金
USD1,500—
CNH10,000—

普通入金無最低金額要求,此限額僅針對線上開戶三合一流程的首筆入金。


REFUNDED 退款狀態(天星獨有) ​

REFUNDED 是天星區別於所有其他 BST 銀行的獨特狀態——入金成功到賬後銀行又發起退款。

REFUNDED vs FAILED 對比 ​

維度FAILED(失敗)REFUNDED(退款)
含義銀行拒絕入金請求入金已成功到賬後銀行退回
資金從未到達證券賬戶已到賬後被退回
餘額影響無(從未增加)已增加後需扣回
沖正操作不需要必須執行(自動沖正)
用戶體驗入金失敗提示入金成功後又收到退款通知
普遍性所有銀行都有僅天星

沖正流程 ​

REFUNDED 觸發場景 ​

場景說明
銀行反欺詐入金後銀行風控系統檢測到異常交易
合規要求監管部門要求退回特定交易
用戶投訴用戶在銀行端投訴未授權交易
系統錯誤銀行側重複入賬後修正

沖正時餘額不足

如果用戶在入金成功後已將資金用於交易(買入股票等),沖正時可能出現餘額不足無法全額扣回的情況。此時需要運營人工介入處理——這是 REFUNDED 狀態最複雜的異常場景。


安全檢查(天星獨有) ​

天星銀行在授權和入金流程中加入了風險等級評估,這是傳統 BST 銀行沒有的機制:

風險等級處理 ​

風險等級等級值系統動作說明
Level 0-2APPROVE正常通過低風險交易,自動放行
Level 3MANUAL轉人工審核中風險,需運營人工審核後決定
Level 4REJECT直接拒絕高風險,自動拒絕交易
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 天(含銀行簽約)數分鐘

首筆入金限額 ​

幣種最低入金普通入金最低倍數
HKD10,000無要求—
USD1,500無要求—
CNH10,000無要求—

首筆入金設置較高最低限額的目的是確保新客戶有足夠資金進行交易,避免"註冊但不交易"的無效用戶。


異常場景手冊 ​

授權異常(5 類) ​

#異常症狀原因處理
1授權停在 PROCESSINGMandate 長時間無狀態變更銀行處理延遲查詢 QueryAuth 確認狀態
2授權 FAILCreateAuth 返回失敗姓名/證件不匹配核實用戶信息,引導重試
3授權 CANCEL用戶在銀行端取消用戶主動操作確認用戶意圖
4部分市場映射失敗3 市場中部分綁定異常市場配置問題手動補充綁定關係
5CancelAuth 失敗取消授權請求被拒絕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 報錯參數異常/銀行拒絕檢查錯誤碼,釋放凍結
210 次輪詢超時AsbBstTransfer 用盡銀行處理慢進入 SyncAsbBstWithdraw
32h 兜底超時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 重複高檢查去重邏輯
12API 連通性異常天星 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 + configHKD/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 服務架構
這個頁面有幫助嗎?

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