Skip to content

内银系 BST 总览

本页说明

讲什么:三家 BST(银证转账)银行的接入模式、协议差异、限额体系、异常处理全对比 适合谁:需要深入了解 BST 通道细节的产品经理 前置阅读出金方式总览银行能力矩阵预计阅读:6 分钟 负责人:入金产品经理

核心要点:BST(银证转账)是最快的出金通道。三家银行协议差异大:招行/民生用 Socket 双向链路(秒级响应),天星用 REST API 轮询(分钟级响应)。


三家银行总览

维度招行(CMB)民生(CMBC)天星(Airstar)
协议Socket 二进制 (GB18030)Socket XML 文本 (SM2 加密)REST API (JSON/UTF-8)
授权模型银证签约银证签约Mandate 授权(6 状态)
出金发起方银行端 + moomoo 端均可仅银行端可发起moomoo 端 + 银行端均可
结果获取实时推送(Socket 回调)实时推送(Socket 回调)轮询(polling)
入金状态成功 / 失败成功 / 失败NEW / PENDING / SUCCESS / FAILED / REFUNDED
出金状态0(成功) / -5(超时) / -6(拒绝)0(成功) / -5(超时) / -6(拒绝)NEW / PENDING / SUCCESS / FAILED

核心区别一句话:招行和民生是传统 Socket 专线(银行主导),天星是现代 REST API(moomoo 主导)。

各银行渠道接口详情

本页是 BST 协议的总览对比。每家银行的渠道侧接口字段、moomoo 侧适配映射、完整匹配规则等详情,请查阅各银行独立页面:


银证授权(Mandate)

授权模型对比

招行 / 民生天星
术语银证签约Mandate 授权
发起方式用户在银行端完成签约用户在 moomoo 端发起,银行端确认
状态数量2 个(已签约 / 未签约)6 个(完整状态机)
多市场每个市场单独签约一次授权自动映射 3 个市场
核心标识银行卡号mandate_id

天星 Mandate 状态机

自动 3 市场映射:用户完成一次天星 Mandate 授权后,系统自动为 HK(港股)、US(美股)、CN(A 股通)三个市场创建银证绑定关系。用户不需要分别为每个市场单独操作。

mandate_id 是天星的核心标识:不同于招行/民生以银行卡号作为主键,天星以 mandate_id 作为银证关系的唯一标识。银行卡管理、入金、出金的所有操作都通过 mandate_id 串联。


入金流程对比

通用 BST 入金

所有 BST 银行共享同一个入金逻辑框架:

  1. 用户发起入金 → 系统创建入金指令 → 发送到银行 → 银行处理 → 结果回传 → 入账

天星入金特殊性

两种入金来源:

来源source 值说明
用户在 moomoo 端发起1用户在 moomoo App 点击入金
用户在银行端发起2用户在天星银行 App 发起转账到证券账户

银行端发起(source=2)是天星独有的能力——招行/民生的 BST 入金只能从 moomoo 端发起。

轮询机制:

天星不像招行/民生通过 Socket 实时推送结果,而是由 moomoo 系统主动轮询:

Job 名称职责轮询次数说明
AsbBstCreateJob创建入金指令发送入金请求到天星
AsbBstCreateResultJob轮询入金结果最多 60 次 + 慢轮询每次间隔轮询天星 API 查询入金状态
AsbBstDepositJob入金到账处理确认入金成功后执行内部到账逻辑

前 60 次每 5 秒轮询一次;超过 60 次后切换为每 5 分钟轮询一次(慢轮询),持续直到获得终态或人工介入。

REFUNDED 退款状态(天星独有):

天星入金有一个其他 BST 银行没有的状态——REFUNDED。表示入金已成功到账后,银行又发起了退款。

触发场景:

  • 银行侧发现交易异常后主动退款
  • 合规原因触发退款

系统处理:收到 REFUNDED 状态后,需要冲正已入账的资金,并通知用户。这是需要运营关注的异常场景。


出金流程对比

通用 BST 出金

BST 出金遵循冻结-转账-释放三步模式:

为什么先冻结? 因为从发送指令到银行确认之间有时间窗口。如果不冻结,用户可能在这段时间内花掉这笔钱,导致账户出现负余额。冻结保证了出金金额在处理期间不会被其他操作使用。

天星出金特殊性

两种出金模式:

模式说明
moomoo 端发起用户在 moomoo App 点击出金,系统通过 API 发送指令
银行端发起用户在天星银行 App 发起从证券账户转出到银行(天星独有)

轮询机制:

Job 名称职责重试说明
AsbBstTransfer出金转账指令最多 10 次发送出金请求并轮询结果
SyncAsbBstWithdraw银行端出金拉取每分钟 cron拉取银行端发起的出金请求,创建 moomoo 侧出金任务

流程:moomoo 端发起出金 → AsbBstTransfer 轮询最多 10 次 → 仍未完成则标记异常需人工确认。银行端发起出金 → SyncAsbBstWithdraw 每分钟拉取 → 创建出金任务处理。

招行 / 民生出金

招行和民生通过 Socket 连接发送出金指令:

  1. 出金服务调用银证服务(cmb_stock_trans / ms_stock_bank_transaction
  2. 加密请求数据
  3. 通过 Socket 发送到银行的 exit_server
  4. 银行处理后通过同一条双向链路实时返回结果
  5. 结果码:0(成功)/ -5(超时,自动切换备用 exit_server 重试)/ -6(银行拒绝)

三层限额体系

BST 通道对单笔金额、累计金额、每日金额分层控制。详细说明见 出金规则手册 § 三层限额

天星限额详情

维度HKDUSD
单笔上限(max)300 万50 万
累计报警(alarm)4,000 万1,000 万
每日熔断(stop)1,500 万300 万

线上开户最低入金:HKD 1 万 / USD 1,500 / CNH 1 万

三层如何协作

  • 第一层(单笔):超过 300 万 HKD 的单笔出入金直接拒绝
  • 第二层(累计报警):累计达到 4,000 万 HKD 时触发告警通知运营,但交易不中断
  • 第三层(每日熔断):当日累计达到 1,500 万 HKD 时自动关闭当日自动出入金,后续需人工处理

招行 / 民生限额

招行/民生限额说明

招行和民生的限额由银行侧系统控制(非 moomoo 配置),具体数值需向银行确认。已知其具备单笔上限和每日限额机制,超限时银行侧直接拒绝并返回回调码 -6。如遇超限问题,参考出金排障 § BST 回调异常


线上开户(天星独有)

天星支持三合一线上开户流程——新客户可以在一个连贯的流程中完成:

  1. 开立证券账户:完成 KYC 身份验证
  2. Mandate 授权:授权天星银行进行银证转账
  3. 首笔入金:完成首笔入金到证券账户

这个流程的价值在于新客获取——降低了新用户从注册到可交易的门槛。传统流程需要用户在多个系统间切换(开户 → 去银行签约 → 回来入金),三合一流程在 moomoo App 内一站式完成。

线上开户的入金限制:首笔入金有最低金额要求(HKD 1 万 / USD 1,500 / CNH 1 万),高于普通入金的最低限额,目的是确保新客户有足够资金进行交易。

仅天星支持

招行和民生的银证签约需要用户在银行端完成,不支持在 moomoo 端完成三合一流程。


定时任务

天星任务清单

Job 名称职责频率重试依赖
AsbBstCreateJob创建银证入金指令触发式用户入金请求
AsbBstCreateResultJob轮询入金结果定时60 次后转慢轮询AsbBstCreateJob
AsbBstDepositJob入金到账处理触发式AsbBstCreateResultJob 返回 SUCCESS
AsbBstTransfer出金转账 + 轮询结果触发式最多 10 次审批通过
SyncAsbBstWithdraw银行端出金拉取每分钟 cron银行端发起出金
AsbBstCreateFromBankJob银行端入金处理触发式银行端发起入金
AsbBstCreateRetryJob入金创建重试触发式AsbBstCreateJob 失败

任务链路

入金:AsbBstCreateJob(moomoo 端)/ AsbBstCreateFromBankJob(银行端)→ AsbBstCreateResultJob(60 次快轮询 + 慢轮询)→ AsbBstDepositJob(到账)

出金:moomoo 端:AsbBstTransfer(轮询 10 次)→ 超时需人工确认 | 银行端:SyncAsbBstWithdraw(每分钟拉取)→ 创建出金任务

招行 / 民生任务

服务名银行职责
cmb_stock_trans招行银证转账服务,Socket 二进制通信
ms_stock_bank_transaction民生银证转账服务,Socket XML 文本通信

招行/民生采用实时双向 Socket,不需要轮询任务——银行处理完成后通过同一连接直接推送结果。

完整定时任务列表 → 定时任务与监控


异常场景手册

授权异常(5 类)

#异常症状原因处理
1授权超时Mandate 停在 PendingAuthorise 状态银行处理延迟或通信中断等待 + 人工查询银行侧状态
2授权失败Mandate 变为 RejectAuthorise用户信息校验不通过 / 银行侧风控排查失败原因,引导用户重新发起
3授权解除Mandate 变为 Revoked用户发起解除授权确认用户意图,必要时重新授权
4部分市场授权失败3 个市场中部分绑定成功某个市场的银证配置异常检查失败市场的配置,手动补充绑定
5银行端解除未同步银行侧已解除但 moomoo 仍显示 Authorised同步延迟或回调丢失手动同步 Mandate 状态

入金异常(7 类)

#异常症状原因处理
1指令创建失败AsbBstCreateJob 报错参数异常 / Mandate 非 Authorised检查 Mandate 状态和请求参数
2轮询超时60 次轮询后仍为 PENDING银行处理异常人工查询银行侧状态
3入金失败状态变为 FAILED银行拒绝(余额不足/限额等)查看银行返回的错误码
4入金退款状态变为 REFUNDED银行发起退款冲正已入账资金,通知用户
5银行端入金未同步source=2 入金 moomoo 未收到回调丢失手动查询天星 API 补录
6金额不一致到账金额与请求金额不符银行侧扣费或汇率差异核对银行侧交易明细
7重复入金同一笔入金创建了多条记录去重机制失效检查 procedure_id/request_id/bank_ref_id

出金异常(5 类)

#异常症状原因处理
1出金指令失败AsbBstTransfer 报错参数异常 / 银行拒绝检查错误码,释放冻结资金
2轮询超时10 次轮询后仍 PENDING银行处理异常人工查询银行侧状态
3冻结未释放出金失败但资金仍冻结释放流程异常手动释放冻结
4银行端出金未同步用户从银行端发起出金但 moomoo 未扣款回调丢失手动查询天星 API,执行扣款
5部分出金银行只转了部分金额银行侧限额或余额不足核对金额差异,处理剩余部分

监控告警

天星 13 项告警

#告警项触发条件严重度处理方式
1授权创建超时Mandate 在 PendingAuthorise 超过阈值检查天星 API 连通性
2授权失败率突增单位时间内 RejectAuthorise 数量超限排查银行侧异常
3入金创建失败AsbBstCreateJob 连续失败检查请求参数和 API 状态
4入金轮询超时AsbBstCreateResultJob 进入慢轮询仍无终态人工查询银行侧状态
5入金退款收到 REFUNDED 状态立即冲正,通知用户
6出金轮询超时AsbBstTransfer 10 次用尽人工确认银行侧状态
7银行端出金拉取异常SyncAsbBstWithdraw cron 报错严重检查天星 API 连通性
8冻结未释放出金失败但冻结未回滚严重手动释放冻结
9每日熔断触发当日累计金额达到 stop 阈值运营确认后决定是否恢复
10累计报警触发累计金额达到 alarm 阈值运营关注,评估风险
11重复交易检测procedure_id/request_id 重复检查去重逻辑
12API 连通性异常天星 API 响应超时或错误率升高严重联系天星银行技术支持
13银行端发起量异常source=2 交易量突增排查是否为正常业务波动

错误码

错误码体系

天星错误码按操作类型划分前缀,而非按业务领域:

错误码前缀操作类型说明
14060xxxx创建授权富途发起 Mandate 创建时的错误
14061xxxx取消授权富途发起取消 Mandate 的错误
14062xxxx查询授权富途查询 Mandate 状态的错误
14063xxxx富途发起转账富途发起入金/出金转账的错误
14064xxxx查询转账富途查询转账状态的错误
14067xxxx银行发起转账银行端发起转账时 moomoo 侧校验错误
14072xxxx通知转账结果银行通知转账结果时的错误
14073xxxx通知授权结果银行通知授权结果时的错误

招行/民生的错误码

招行和民生通过 Socket 回调返回结果码(0/-5/-6),没有独立的错误码系列。详细的回调处理逻辑见 出金数据字典 § 银行回调结果码


BST 通道对比

天星 vs 招行/民生

对比维度天星(Airstar)招行 / 民生
协议REST API(HTTP + JSON)Socket 二进制协议
编码UTF-8GB18030
发起方moomoo + 银行双向招行双向 / 民生仅银行端
授权模型Mandate(6 状态)银证签约(2 状态)
多市场映射一次授权 → 3 市场自动映射每市场单独签约
核心标识mandate_id银行卡号
结果获取轮询(polling)实时推送(Socket 回调)
入金状态NEW/PENDING/SUCCESS/FAILED/REFUNDED成功/失败
出金状态NEW/PENDING/SUCCESS/FAILED0(成功)/-5(超时)/-6(拒绝)
入金轮询60 次快轮询 + 慢轮询无需轮询
出金轮询10 次无需轮询
退款机制支持 REFUNDED 状态
线上开户支持三合一不支持
错误码按操作类型划分(14060~14073 系列)0 / -5 / -6

BST vs 其他出金通道

对比维度BST 银证网银(汇丰/恒生)FPS传统通道
自动化全自动(唯一)半自动半自动人工
到账速度秒~分钟分钟~小时分钟级小时~天
协议复杂度高(Socket/API)低(企业网银)中(FPS API)低(网银/电汇)
运营介入仅异常时Confirm 步骤Confirm 步骤全程介入
适用银行招行/民生/天星汇丰/恒生中银/渣打/广发所有银行
限额控制三层限额体系银行侧限额FPS 系统限额各银行不同

读完之后

我想...去看
深入了解招行的 Socket 二进制协议招商银行 CMB
深入了解民生的 XML 文本协议民生银行 MS
深入了解天星的 REST API + RSA-OAEP天星银行 Airstar
看 BST 在出金体系中的角色出金方式总览
看自动出金的 6 个条件和三层限额出金规则手册
查 Mandate 状态码和天星错误码统一错误码中心
看 BST 任务的运行频率和告警定时任务与监控
看其他银行的接入方式银行能力矩阵
这个页面有帮助吗?

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