深色模式
交通银行 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 |
这个页面有帮助吗?