汇丰业务线基本常识
开发人员需要懂的银行业务基础
为什么要了解业务?
作为一个从互联网转入银行的Java/React开发者,你会发现:
- 业务复杂度更高:金融业务逻辑复杂,规则繁多
- 术语满天飞:同事聊天全是缩写,不懂会很困惑
- 合规要求严格:每个业务都有监管要求
这篇文档帮你快速建立银行业务的基础认知。
汇丰业务架构一览
汇丰银行 (HSBC)
├── 零售银行及财富管理 (RBWM)
│ ├── 个人存款
│ ├── 个人贷款
│ ├── 信用卡
│ └── 财富管理
├── 工商金融业务 (CMB)
│ ├── 企业贷款
│ ├── 现金管理
│ └── 贸易金融
├── 环球银行及资本市场 (GB&M)
│ ├── 投资银行
│ ├── 金融市场
│ └── 资产管理
└── 其他业务
├── 保险
└── 私人银行一、零售银行(个人业务)
1.1 账户体系
| 账户类型 | 说明 | 特点 |
|---|---|---|
| 活期账户 | 随时存取 | 利率低,无期限 |
| 定期账户 | 固定期限存款 | 利率较高,提前支取有罚息 |
| 储蓄账户 | 存款为主 | 只能存钱、消费受限 |
开发要点:
- 账户状态:正常、冻结、注销
- 账户余额:可用余额 vs 账面余额
- 利息计算:按日计息、按季结息
1.2 交易类型
| 交易类型 | 说明 | 示例 |
|---|---|---|
| 存款 | 钱存入账户 | 现金存入、转账汇入 |
| 取款 | 钱取出账户 | 现金取出、转账汇出 |
| 转账 | 账户间资金转移 | 行内转账、跨行汇款 |
| 消费 | 商户pos/网上消费 | 购物、缴费 |
| 还款 | 信用卡还款 | 自动还款、主动还款 |
开发要点:
- 交易状态:pending(处理中)/success(成功)/failed(失败)
- 交易限额:单笔限额、日累计限额
- 交易时间:工作日 vs 非工作日、大额和小额通道
1.3 信用卡
核心概念:
| 术语 | 含义 |
|---|---|
| 信用额度 | 银行给你的最高可透支额度 |
| 可用额度 | 当前可用的额度 = 信用额度 - 已用额度 |
| 账单日 | 每月生成账单的日子 |
| 还款日 | 必须还款的最后日期 |
| 免息期 | 消费后到还款日的时间(通常50天左右) |
| 最低还款额 | 必须还的最低金额 |
| 分期 | 将欠款分成多期还 |
开发要点:
- 积分计算规则
- 手续费(取现手续费、分期手续费)
- 欺诈检测(异常消费模式)
二、财富管理
2.1 产品类型
| 产品 | 风险等级 | 说明 |
|---|---|---|
| 存款 | 低 | 保本保息 |
| 理财产品 | 中低 | 不保本,收益浮动 |
| 基金 | 中-高 | 证券投资基金 |
| 保险 | 低-中 | 保障+投资 |
| 债券 | 中 | 固定收益证券 |
| 股票 | 高 | 高风险高收益 |
2.2 KYC(了解你的客户)
这是银行最核心的合规要求之一:
java
// KYC 信息
CustomerKYC.builder()
.customerId("C123456")
.name("张三")
.idCard("310***********1234") // 身份证
.nationality("中国")
.riskLevel("MEDIUM") // 风险等级
.kycStatus("APPROVED") // KYC状态
.kycDate(LocalDateTime.now())
.build();开发要点:
- 客户风险评级:高/中/低
- 产品适配:只能卖给风险等级匹配的客户
- 销售双录:录音录像留痕
三、对公业务(企业银行)
3.1 企业账户
与个人账户的区别:
| 维度 | 个人账户 | 企业账户 |
|---|---|---|
| 开户材料 | 身份证 | 营业执照等 |
| 操作人员 | 本人 | 多个授权人 |
| 监管要求 | 相对简单 | 反洗钱更严格 |
| 交易金额 | 通常较小 | 金额大 |
3.2 现金管理
银行帮助企业管理现金:
- 收款:代收、扫码收款
- 付款:代发工资、对外付款
- 资金归集:子公司资金自动归集到母公司
- 现金池:多个账户统一调度
3.3 贸易金融
| 产品 | 说明 |
|---|---|
| 信用证 | 银行信用担保的支付工具 |
| 保函 | 银行担保履行某义务 |
| 票据 | 银行承兑汇票、商业承兑汇票 |
| 福费廷 | 出口信用证融资 |
四、支付清算
4.1 支付系统
中国主要支付系统:
| 系统 | 简称 | 特点 |
|---|---|---|
| 大额实时支付系统 | HVPS | 实时到账,限额无限 |
| 小额批量支付系统 | BEPS | 批量处理,7×24小时 |
| 网上支付跨行清算系统 | IBPS | 互联网支付 |
| 同城清算系统 | - | 同城结算 |
4.2 清算流程
A银行转账100元给B银行
1. A银行扣减A账户100元
2. A银行发送清算指令给央行
3. 央行清算所处理
4. B银行增加B账户100元
5. 通知B账户收款开发要点:
- 清算状态:清算中、已清算、失败
- 对账:每日与央行/清算所对账
- 差错处理:长款、短款处理
五、风险控制
5.1 核心风险类型
| 风险类型 | 说明 |
|---|---|
| 信用风险 | 借款人违约不还钱 |
| 市场风险 | 市场波动造成损失 |
| 操作风险 | 内部流程/系统出问题 |
| 合规风险 | 违反监管规定 |
| 欺诈风险 | 被骗、被盗用身份 |
5.2 反欺诈
常见欺诈类型:
java
// 欺诈检测规则示例
public class FraudDetectionRule {
// 规则1:短时间内多笔大额转出
public boolean isSuspiciousPattern1(List<Transaction> transactions) {
BigDecimal total = transactions.stream()
.filter(t -> t.getAmount().compareTo(new BigDecimal("10000")) > 0)
.filter(t -> t.getTime().isAfter(LocalDateTime.now().minusHours(1)))
.map(Transaction::getAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);
return total.compareTo(new BigDecimal("50000")) > 0;
}
// 规则2:非常住城市登录
public boolean isSuspiciousPattern2(String loginCity, String residentCity) {
return !loginCity.equals(residentCity);
}
// 规则3:新设备登录即转账
public boolean isSuspiciousPattern3(boolean newDevice, BigDecimal amount) {
return newDevice && amount.compareTo(new BigDecimal("5000")) > 0;
}
}5.3 反洗钱 (AML)
核心要求:
- 客户身份识别:实名制
- 交易监控:大额交易、可疑交易报告
- 名单筛查:制裁名单、恐怖分子名单
java
// 名单筛查
public class SanctionsScreening {
public boolean isSanctioned(String name, String country) {
// 检查是否在制裁名单中
return sanctionsList.contains(name)
|| sanctionsList.contains(country);
}
}六、核心账务概念
6.1 记账规则
复式记账法:
有借必有贷,借贷必相等
例子:客户存款1000元
资产(+1000) 负债(+1000)
借:库存现金 贷:客户存款6.2 账户余额
| 余额类型 | 说明 |
|---|---|
| 账面余额 | 理论上的余额 |
| 可用余额 | 可以使用的余额(考虑冻结金额) |
| 冻结金额 | 被冻结不可用的金额 |
java
// 可用余额计算
public BigDecimal calculateAvailableBalance(Account account) {
return account.getBalance()
.subtract(account.getFrozenAmount())
.subtract(account.getPendingAmount());
}6.3 利息计算
java
// 简单利息计算
public BigDecimal calculateInterest(BigDecimal principal,
BigDecimal rate,
int days) {
// 日利息 = 本金 × 年利率 ÷ 360 × 天数
return principal.multiply(rate)
.divide(new BigDecimal("360"))
.multiply(new BigDecimal(days));
}七、常见业务术语速查
7.1 交易相关
| 术语 | 全称 | 含义 |
|---|---|---|
| T+0 | T+0 | 当日结算 |
| T+1 | T+1 | 次日结算 |
| T+2 | T+2 | 两个工作日后 |
| RTGS | Real-Time Gross Settlement | 实时全额清算 |
| ACH | Automated Clearing House | 自动清算中心 |
7.2 卡组织
| 组织 | 说明 |
|---|---|
| 银联 | 中国银行卡联合组织 |
| VISA | 国际卡组织 |
| MasterCard | 国际卡组织 |
| AMEX | 美国运通 |
7.3 外汇相关
| 术语 | 含义 |
|---|---|
| 即期汇率 | 立即交割的汇率 |
| 远期汇率 | 未来交割的汇率 |
| 结汇 | 把外币换成人民币 |
| 售汇 | 买外汇 |
| 跨境汇款 | 国际汇款(SWIFT) |
八、开发中的常见业务问题
8.1 幂等性
金融交易必须保证幂等:
java
// 订单支付幂等处理
@Transaction
public PaymentResult processPayment(PaymentRequest request) {
// 1. 检查是否已处理(通过唯一请求ID)
if (paymentRepository.existsByRequestId(request.getRequestId())) {
return paymentRepository.findByRequestId(request.getRequestId())
.map(PaymentResult::from)
.orElseThrow();
}
// 2. 执行支付
Payment payment = doPayment(request);
// 3. 保存结果(使用唯一索引防重)
paymentRepository.save(payment);
return PaymentResult.success(payment);
}8.2 并发控制
账户操作必须考虑并发:
java
// 扣款时的并发控制
@Lock(LockModeType.PESSIMISTIC_WRITE)
@Query("SELECT a FROM Account a WHERE a.id = :id")
Optional<Account> findByIdForUpdate(String id);
public void deduct(Account account, BigDecimal amount) {
// 先锁定账户再扣款,防止超付
Account lockedAccount = accountRepository.findByIdForUpdate(account.getId())
.orElseThrow();
if (lockedAccount.getAvailableBalance().compareTo(amount) < 0) {
throw new InsufficientFundsException();
}
lockedAccount.setBalance(lockedAccount.getBalance().subtract(amount));
accountRepository.save(lockedAccount);
}8.3 对账
日终对账流程:
1. 银行与央行对账(清算数据)
2. 银行与银联对账(卡交易)
3. 核心系统与各业务系统对账
4. 账务与会计系统对账业务线详细文档
想深入了解某个业务线的技术细节?请查看:
九、总结
作为汇丰的开发人员,你需要理解:
- 业务是核心:技术服务于业务,要主动了解业务
- 合规是底线:任何业务都有合规要求
- 风险意识:每一行代码都要考虑风险
- 术语积累:银行业术语很多,多听多问
建议:入职后多和BA、业务同事聊天,不懂就问,这 是最快了解业务的方式
持续补充中...如果你有新的业务问题或发现,欢迎添加!