Skip to content

银行卡与授权

本页说明

讲什么:银行卡生命周期(状态与认证)、数据模型核心字段、币种与账户类型位图、卡-通道能力矩阵、绑卡/解绑规则与系统流程、BST 银证授权模型(招行/民生 vs 天星 Mandate)、eDDA 授权流程与扩展字段、线上开户三合一流程、银行卡 API 概览,以及常见异常场景与排查指南 适合谁:需要了解银行卡管理业务规则的产品经理和运营人员 前置阅读新人导读预计阅读:12 分钟 负责人:入金产品经理


银行卡生命周期

卡状态

状态码名称含义典型场景运营关注点
0待审核卡已添加但尚未生效,不可用于出入金线上开户添加卡,等待首笔入金验证若长时间停留(>24 小时),检查用户是否完成首笔入金
1已生效卡正常可用普通绑卡成功;或在线开户完成首笔入金后生效正常状态,可用于所有出入金操作
2已删除卡已停用/删除,不可恢复用户解绑或运营删除终态。用户需重新绑卡,BST/eDDA 授权同时作废

卡认证

认证是对银行卡持有人身份的验证——与"状态"独立,一张已生效的卡可以是未认证的。

认证码含义触发场景对出入金的影响
0未认证默认状态入金不受影响;首次出金到该卡会被拦截
1认证中已提交凭证,等待审核入金不受影响;出金等待认证完成
2已认证已通过认证无限制

认证来源与触发条件

来源代码触发场景认证方式需用户操作?
香港在线开户入金hk_online用户通过线上开户入金入金成功自动认证否(自动)
首次出金withdraw用户首次向该卡出金需上传银行对账单/转账截图
绑定银证bst完成 BST 签约/Mandate 授权银行侧已验证身份,自动认证否(自动)
绑定 eDDAedda完成 eDDA 授权银行侧已验证身份,自动认证否(自动)
人工验证manual运营在 CRM 手动通过运营审核凭证后标记否(运营操作)

认证流程(首次出金场景)

首次出金到未认证卡是最常见的认证触发场景:

生命周期流转

在线开户的"待审核"卡:通过 CheckSave 接口创建(operation=1 开户中 / operation=0 入金中)。只有完成首笔入金后,系统调用 TakeEffect 将卡从待审核→已生效。

存储位置与数据表

银行卡数据存储在 web_account 数据库,由 bankcard_service/(PHP,端口 20005)管理。

表名存什么关键字段说明
bank_card银行卡主记录id, uid, number, status, verify, account_type一行 = 一张银行卡
bank_card_operation_log操作日志card_id, operation, operator, created_at每次绑卡/解绑/状态变更都有记录,不可删除
bank_card_certificate认证凭证card_id, file_url, status用户上传的银行对账单/转账截图
bank_info预置银行信息id, bank_name, bank_code, swift_code银行名称/代码/SWIFT/Logo 等(只读)
bank_card_asb_bst天星银证扩展card_id, mandate_id, status天星 Mandate 授权信息
bank_card_eddaeDDA 扩展(恒生)card_id, limit_amount, status恒生 eDDA 授权信息
bank_card_hsbc_eddaeDDA 扩展(汇丰)card_id, mandate_identification, status汇丰 eDDA 授权信息

运营排查技巧:出入金问题排查时,先在 bank_card 表确认卡状态(status)和认证(verify),再根据通道类型查对应扩展表。


银行卡数据模型

核心字段

字段业务含义示例运营常用场景
id卡唯一 ID12345CRM 查询银行卡的主键
uid用户 ID(牛牛号)800001234关联到用户
number银行账号012-345-678-901匹配银行流水、核对卡号
bank_id预置银行 ID(0=自定义银行)23bank_id > 0 使用预置信息;= 0 需手动填写
bank_code银行内部代码CMBHK系统内部路由出入金通道
bank_swiftSWIFT 代码(HK 卡必填)CMBCHKHH国际汇款必需
area卡所属地区hk / cn / us / other不同地区有不同的必填字段要求
currency_type币种位图(见下)7决定该卡支持哪些币种的出入金
account_type账户类型位图(见下)2决定该卡支持哪些出入金通道
status卡状态:0/1/210=待审核、1=已生效、2=已删除
verify认证状态:0/1/220=未认证、1=认证中、2=已认证
third_party_flag第三方卡标记00=本人卡、1=第三方卡(出金有额外限制)
address_status地址状态00=正常、1=异常(可能影响出金)

不同地区卡的必填字段

地区area必填字段可选字段典型银行
香港hkbank_swift, bank_namebank_address汇丰、恒生、中银、招行(HK)、民生
大陆cnopening_address(开户行地址)bank_province, bank_city招商、工商、建设
美国usrouting_numberbank_addressBank of America, Chase
其他otherbank_namebank_swift, bank_address新加坡、英国等海外银行

币种位图(currency_type)

系统用位图表示一张卡支持哪些币种——每个 bit 代表一种货币:

Bit币种说明
01HKD(港币)港股交易、港币出入金
12USD(美元)美股交易、美元出入金
24CNH(离岸人民币)A 股通交易、人民币出入金

组合示例

currency_type二进制支持币种常见于
1001仅 HKD港币单币种卡
3011HKD + USD双币种卡
7111HKD + USD + CNH最常见——大部分香港银行卡

运营技巧:如果用户反馈"某个币种无法入金/出金",先检查银行卡的 currency_type 是否包含对应币种位。例如 currency_type = 3 不支持 CNH 出入金。

账户类型位图(account_type)

同样用位图表示卡支持哪些转账能力:

Bit类型含义如何获得
01Regular普通银行卡,支持网银/FPS 等手动转账方式绑卡时自动赋予
12BST已绑定银证通道(招行/民生/天星)完成银证签约后系统自动加上
24eDDA已授权 eDDA 代扣(恒生/汇丰)完成 eDDA 授权后系统自动加上

组合示例

account_type二进制含义可用通道
1001仅普通网银入金、网银/FPS 出金
3011普通 + BST上述 + BST 入金/出金
5101普通 + eDDA上述 + eDDA 代扣入金
7111全能力所有出入金通道

账户类型是自动设置的

account_type 不是用户选择的——它由绑卡/授权流程自动设置。用户完成银证签约后,卡的 account_type 自动加上 BST 位(|= 2);完成 eDDA 授权后自动加上 eDDA 位(|= 4)。解绑时相应位会被清除(&= ~2&= ~4)。

运营快速判断(不需要做位运算):

  • 含 BST 位的值:2、3、6、7 → 可使用银证通道
  • 含 eDDA 位的值:4、5、6、7 → 可使用 eDDA 代扣
  • 仅 Regular(无 BST):1、5 → 没有银证通道
  • 仅 Regular(无 eDDA):1、2、3 → 没有 eDDA 代扣

运营排查:用户反馈"看不到 BST/eDDA 入金选项"时,检查 account_type 的值是否在上述列表中。

转账方式(methods)

每张卡携带一个转账方式列表,标明可用的出入金渠道:

method 值类型含义对应银行对应 account_type 位
normal普通普通转账(网银/FPS/ATM 等)所有银行bit 0 (Regular)
bst_cmbhkBST招行银证招商银行(香港)bit 1 (BST)
bst_cmbchkBST民生银证民生银行bit 1 (BST)
bst_asbBST天星银证天星银行bit 1 (BST)
edda_haseeDDA恒生 eDDA 代扣恒生银行bit 2 (eDDA)
edda_hsbceDDA汇丰 eDDA 代扣汇丰银行bit 2 (eDDA)

卡-通道能力矩阵

银行卡的 account_type 决定了哪些出入金通道可用:

账户类型网银入金BST 入金eDDA 入金BST 出金网银出金FPS 出金
Regular (1)
BST (2)
eDDA (4)
BST + eDDA (6)

通道过滤逻辑

用户可以绑定多张不同类型的卡。发起出入金时,系统根据选中卡的 account_typemethods 列表过滤可用的入金方式或出金通道。

App 端显示规则

  • 用户选了一张 Regular 卡 → App 只显示"网银入金",不显示 BST/eDDA 选项
  • 用户选了一张 BST 卡 → App 显示"网银入金"和"银证入金"两个选项
  • 用户选了一张 eDDA 卡 → App 显示"网银入金"和"eDDA 代扣入金"两个选项

出金端显示规则同理:根据卡的 account_type 决定显示哪些出金通道按钮。


绑卡 / 解绑规则

绑卡规则

规则说明违反时表现
HK 卡必须有 SWIFT香港银行卡绑卡时 bank_swift 为必填("其他银行"除外)绑卡接口返回参数校验错误
大陆卡必须有开户地址area = cnopening_address 为必填同上
美国卡必须有 routing numberarea = usrouting_number 为必填同上
卡号唯一性同一 uid + number 组合不可重复绑定提示"该卡已绑定"
预置银行优先bank_id > 0 时使用预置银行信息(名称/代码/SWIFT);bank_id = 0 需手动填写自定义银行需用户自行确认信息准确性
在线开户卡通过 CheckSave 创建,status = 0(待审核),首笔入金成功后 → status = 1待审核期间不可用于出入金
已删除卡可重新绑定同一 uid + number,若旧卡 status=2,可创建新的绑卡记录新卡是全新记录(新 id),旧卡的 BST/eDDA 授权不会继承

绑卡系统流程

解绑规则

场景操作步骤前置条件运营注意
普通卡解绑status = 2无进行中的出入金确认无待处理的 Procedure
BST 卡解绑① 取消银证签约(CancelBst)→ ② account_type &= ~2 → ③ 设 status = 2招行/民生需银行端解除签约;天星需取消 MandateBST 签约作废后,银证通道不可用。需先完成未结出金
eDDA 卡解绑① 取消 eDDA 授权 → ② account_type &= ~4 → ③ 设 status = 2恒生/汇丰 eDDA 授权需先失效eDDA 代扣通道不可用
BST + eDDA 卡解绑按以上两步分别取消,再删卡两种授权都需先失效全部通道授权作废

解绑不可逆

status = 2 是终态——被删除的卡无法恢复,用户需要重新绑卡。BST/eDDA 解绑意味着对应的银证签约或代扣授权也同时作废。

用户常见问题:"我不小心解绑了银行卡怎么办?"——只能重新绑卡。如果是 BST 卡,还需要重新走银证签约流程。如果是 eDDA 卡,需要重新完成 eDDA 授权。

运营注意:解绑前必须检查该卡是否有进行中的出入金 Procedure。有进行中的出金(特别是 pending(transfer_manual) 状态)时不要解绑——等出金完成后再处理。


BST 银证授权与银行卡

在 BST 银证通道中,银行卡管理和银证授权(Mandate)紧密绑定——用户不能只绑卡不授权,也不能只授权不绑卡。

授权模型差异

维度招行 / 民生天星
核心标识银行卡号mandate_id
绑定流程银行端完成银证签约 → 通知 moomoomoomoo 端发起 Mandate 授权 → 银行确认
签约发起方只能银行端发起moomoo 可主动发起
解绑影响解除签约 = 不可使用 BST取消 Mandate = 不可使用 BST
多市场每个市场需单独签约一次授权自动映射 3 个市场(HK/US/HKCC)
通信方式SM2 Socket 双向链路(实时推送)REST API(需轮询结果)
授权状态2 种(开通/未开通)6 种(含 WAITING、FAIL、CANCEL)
自动认证签约成功 → 卡自动认证(verify=2)授权成功 → 卡自动认证(verify=2)

招行/民生银证签约流程

招行和民生的银证签约由银行端发起,moomoo 被动接收:

招行 vs 民生的差异

维度招行民生
服务名cmb_stock_transms_stock_bank_transaction
市场粒度每个市场单独签约(HK/US/HKCC 分别操作)每个市场单独签约
出金收款人中文名英文名(payee_name 必须英文)
流水号字段bank_tx_seqOrgRefNo
异常恢复sync_bst_data_helper 补偿自动重连 + 重拉

天星 Mandate 详解

天星以 mandate_id 而非银行卡号作为银证关系的核心标识。意味着:

  • 入金:通过 mandate_id 关联到对应的银行卡和用户
  • 出金:通过 mandate_id 确认授权有效后才能发送出金指令
  • 查询:所有银证相关的状态查询都以 mandate_id 为主键

3 市场自动映射:用户完成一次 Mandate 授权后,系统自动为 HK(港股)、US(美股)、HKCC(港股通)三个市场创建银证绑定。用户在 moomoo 做港股、美股、A 股交易时,入金出金都走同一个银证通道。

天星授权流程(用户视角)

步骤用户操作用户感知预计耗时
1在 moomoo 选择天星银行入金显示天星银证入金选项
2点击"授权签约"跳转到天星银行授权页面
3在天星页面确认授权输入银行密码/验证码1-2 分钟
4授权完成,返回 moomoo显示"授权成功"秒级
5可以开始入金/出金BST 通道可用

天星授权流程(系统视角)

天星银证卡扩展字段(BankCardAsbBst)
字段含义运营场景
account_name客户姓名核对持卡人身份
account_number客户银行账号核对银行账号
mandate_id银证授权 ID核心标识——查询银证状态、排查问题的主键
status授权状态(见下表)判断 BST 通道是否可用
reject_code授权失败拒绝码排查授权失败原因
created_at授权创建时间确认授权时间线
updated_at最后更新时间确认状态变更时间

Mandate 状态码

状态码含义能否出入金运营关注点
0未授权(CLOSE)初始状态或已取消。用户需重新发起授权
1授权中(PROCESSING)等待银行确认,通常秒级~分钟级完成。若超过 5 分钟仍在 PROCESSING → 检查 airstar_service 日志
2已授权(OPEN)正常状态,BST 通道可用
3等待中(WAITING)在线开户专用——等待首笔入金。入金成功后自动 → OPEN(2)
4授权失败(FAIL)检查 reject_code 了解失败原因。常见:银行侧风控拦截、用户信息不匹配
5授权取消(CANCEL)用户或运营主动取消。用户可重新发起授权

只有 status=2(OPEN)才可出入金——这是运营排查"BST 无法使用"的第一步。

详细的 Mandate 状态机 → 内银系 BST 总览 § 银证授权


eDDA 授权与银行卡

入金视角的 eDDA 授权说明(授权如何开启代扣入金通道)→ 银行卡绑定与入金授权 § eDDA

eDDA 授权流程

恒生和汇丰的 eDDA 授权流程类似但有细微差异:

eDDA 卡扩展字段

恒生和汇丰的 eDDA 授权信息绑定在银行卡上:

字段含义恒生汇丰运营场景
limit_amount单笔/周期额度上限用户反馈"代扣失败"时检查是否超限
limit_periodicity额度周期Y=年 / H=半年 / Q=季度 / M=月 / P=每笔
expiry_date有效期9999999=长期有效;检查是否过期
status启用状态0=失效 / 2=启用0=失效 / 1=授权中 / 2=启用status=2 才可代扣
mandate_identification银行侧唯一标识与汇丰核对时使用

恒生 vs 汇丰 eDDA 差异

维度恒生汇丰
服务名sba_hase_eddisba_hsbc_eddi
授权确认同步返回(秒级)异步 SFTP 报表(T+0~T+1)
状态值0/2 两种0/1/2 三种(多一个"授权中")
报表下载不需要hsbc_edda_report 服务定时拉取
额度修改需重新授权需重新授权

eDDA 只用于入金

eDDA/eDDI 是代扣通道,只能用于入金(从用户银行账户扣款到证券账户)。出金不走 eDDA——恒生/汇丰的出金走企业网银通道(hase / hsbc),由运营在银行网银完成人工转账。


银行卡 API 概览

银行卡服务对外暴露的核心接口——对应 CRM 和 App 中的操作:

面向 App 的接口

接口触发场景效果说明
AddBankCard用户在 App 添加银行卡创建 bank_card 记录,status=1含参数校验(SWIFT/地址/唯一性)
GetBankCardList用户查看银行卡列表返回 status≠2 的所有卡含 methods 列表,供前端显示可用通道
DeleteBankCard用户解绑银行卡status → 2(已删除)会先检查无进行中的出入金
CheckSave在线开户流程添加卡创建 bank_card 记录,status=0(待审核)operation=1 开户中 / operation=0 入金中
TakeEffect在线开户首笔入金成功status 0→1(待审核→已生效)由入金服务自动调用

面向 CRM 的接口

接口运营操作效果使用场景
GetBankCardInfo查看银行卡详情返回卡全部字段 + 扩展信息排查时获取完整卡信息
UpdateBankCard修改银行卡信息更新指定字段修正错误的 SWIFT/地址等
ManualVerify手动通过认证verify → 2运营审核凭证后标记认证
UpdateThirdPartyFlag修改第三方卡标记third_party_flag 更新误标记时修正
BatchTakeEffect批量生效待审核卡多张卡 status 0→1在线开户批量处理

银行卡异常场景

#场景表现可能原因排查步骤运营处理
1BST 无法使用用户反馈银证入金/出金不可用Mandate 不是 OPEN 状态① 查 bank_card_asb_bst.status 是否为 2(OPEN) ② 查 account_type 是否为 2/3/6/7(含 BST 位)不是 OPEN → 引导重新授权
2eDDA 代扣失败入金时提示代扣失败eDDA 未启用或额度超限① 查 eDDA status 是否为 2 ② 查 limit_amount 是否超限 ③ 查 expiry_date 是否过期未启用 → 重新授权;超限 → 等待额度重置或提高额度
3绑卡后通道未出现用户绑卡后 App 不显示 BST/eDDA 选项account_type 未正确设置① 查 account_type 值:BST 需为 2/3/6/7,eDDA 需为 4/5/6/7 ② 查 methods 列表account_type 缺失 → 检查授权流程是否完成
4在线开户卡无法使用待审核卡不可出入金首笔入金未完成① 查 status 是否为 0 ② 查首笔入金是否成功 ③ 查 TakeEffect 是否执行入金已成功但卡未生效 → 手动 BatchTakeEffect
5认证失败影响出金首次出金到未认证卡被拦截卡未认证(verify=0)① 查 verify 字段 ② 查是否有待审核的凭证引导用户上传银行对账单;或运营 ManualVerify
6第三方卡限制third_party_flag=1 的卡出金受限系统判定为非本人卡① 查 third_party_flag ② 确认是否确实是第三方卡误标记 → UpdateThirdPartyFlag 修正
7SWIFT 缺失导致出金失败出金时银行报错HK 卡绑卡时未填 SWIFT(历史数据)① 查 bank_swift 是否为空运营 UpdateBankCard 补充 SWIFT
8币种不支持用户选择的币种无法入金/出金currency_type 不含对应币种① 查 currency_type 位图引导用户绑定支持该币种的银行卡

线上开户

线上开户的入金视角(含用户旅程和异常处理)→ 银行卡绑定与入金授权 § 天星线上开户三合一

天星三合一流程

天星银行支持线上开户——新客户可以在 moomoo App 内一站式完成从零到可交易的全流程:

步骤动作说明涉及系统操作数据变更
1开立证券账户完成 KYC 身份验证账户系统创建交易账户
2Mandate 授权授权天星进行银证转账CreateAuth → 银行确认BankCardAsbBst.status = 3(WAITING)
bank_card.status = 0(待审核)
3首笔入金完成首笔入金到证券账户入金成功 → TakeEffectbank_card.status 0→1(已生效)
BankCardAsbBst.status 3→2(OPEN)

价值:传统流程需要用户在多个系统间切换(moomoo 开户 → 去银行柜台或网银签约 → 回 moomoo 入金),三合一流程把这三步压缩到一个连贯的 App 内流程中,大幅降低新客流失率。

线上开户 vs 常规开通

维度线上开户(新用户)常规开通(已有天星账户)
前提条件无需天星银行账户必须已有天星银行账户
操作位置全程在 moomoo App 内moomoo App 发起,可能需银行端确认
流程开户 → 签约 → 首次入金,三步合一签约 → 入金,两步
银行卡初始状态status = 0(待审核)status = 1(已生效)
Mandate 初始状态status = 3(WAITING)status = 2(OPEN)
最低入金有要求(见下表)无最低限制
获客价值高——降低新客入门门槛中——仅对已有天星客户

首笔入金限制

线上开户的首笔入金有最低金额要求,高于普通入金:

币种线上开户最低入金普通入金最低不满足时表现
HKD10,000无限制App 提示"首次入金需 ≥ 10,000 HKD"
USD1,500无限制App 提示"首次入金需 ≥ 1,500 USD"
CNH10,000无限制App 提示"首次入金需 ≥ 10,000 CNH"

目的是确保新客户有足够资金进行交易,避免"只开户不交易"的无效转化。

线上开户用户旅程

线上开户异常处理

#异常场景卡在哪一步数据状态运营处理
1开户成功但授权失败Mandate 授权bank_card.status=0, BankCardAsbBst.status=4(FAIL)引导用户重新发起授权(不需要重新开户)
2授权成功但入金失败首笔入金bank_card.status=0, BankCardAsbBst.status=3(WAITING)引导用户重新发起入金(满足最低金额)
3入金成功但卡未生效TakeEffectbank_card.status=0(应为 1)手动 BatchTakeEffect 或检查 TakeEffect 接口
4长时间停在待审核用户未完成入金bank_card.status=0, BankCardAsbBst.status=3联系用户提醒完成首笔入金

仅天星支持

招行和民生不支持线上开户三合一流程——银证签约需要用户在银行端完成。线上开户是天星 BST 独有的获客功能,特别适合配合营销活动推广(如"入金送免佣")。

完整限额 → 出金规则手册 § 三层限额体系


读完之后

我想...去看
了解入金视角的绑卡与授权银行卡绑定与入金授权
了解 BST Mandate 状态机内银系 BST 总览
了解 SBA 编排模型SBA 资金编排
看整体架构和数据流系统架构与数据流
查银行卡相关错误码统一错误码中心
这个页面有帮助吗?

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