💳 支付系统架构
📖 业务背景
中国现代化支付系统(CNAPS)由中国人民银行主导建设,二代支付系统整合了大额实时支付(HVPS)、小额批量支付(BEPS)和网上支付跨行清算系统(IBPS/超级网银)。此外,银联和网联分别在银行卡清算和第三方支付清算领域承担关键角色。行内支付系统是银行内部账户间的转账通道。各类渠道在运营时间、清算方式、到账时效、金额限制等方面差异显著,是功能测试和性能测试的重点领域。
🏗️ 支付渠道全景
HVPS — 大额实时支付系统
逐笔实时发送、实时清算、实时到账。工作日 8:30-17:00 运行,无金额上限(部分场景≥5万元起点)。主要服务于大额对公支付、金融市场交易、国库资金划拨等对时效性和安全性要求极高的场景。
核心流程:发起行→支付报文→HVPS→实时清算→接收行→实时入账
BEPS — 小额批量支付系统
批量打包、净额清算、定时轧差。7×24小时运行,单笔限额通常≤100万元(部分≤5万元)。适用于代发工资、批量扣款、公用事业缴费等高频小额交易场景。
核心流程:发起行→打包批次→支付队列→净额轧差→定时清算→批量入账
IBPS — 网上支付跨行清算系统(超级网银)
支持网上银行、手机银行、第三方支付的实时跨行转账。7×24小时连续运行,单笔限额≤5万元。具备账户查询、跨行归集等增值功能。
核心流程:网银发起→IBPS网关→跨行路由→实时转发→目标行确认→实时入账
银联 & 网联清算体系
银联(CUPS):负责银行卡跨行交易的转接清算,覆盖ATM取款、POS消费、无卡支付等场景。采用批次清算+日终轧差模式。
网联(NUCC):为非银行支付机构(支付宝、微信支付等)提供网络支付跨行清算服务,实现"断直连"。采用实时清算+逐笔转发。
行内支付系统
同一银行内部账户间的资金划转,不经过央行清算系统。包括行内转账、内部户调拨、柜面通存通兑等。通常实时到账,无金额限制,但需要校验账户状态、余额和授权。
💡 贷记与借记差异
贷记(Credit)指资金从银行流出(如客户转账付出),借记(Debit)指资金流入银行(如客户存款入账)。测试时需区分:贷记交易扣减付款账户余额,借记交易增加收款账户余额;两者的账户方向、会计分录、手续费计算逻辑相反,需分别验证。
🧪 功能测试要点
1. 金额限制
| 测试场景 | 验证点 | 预期结果 |
|---|---|---|
| 单笔金额超限 | BEPS单笔超过100万、IBPS超过5万 | 拒绝交易,返回超限错误码 |
| 日累计金额超限 | 同一账户当日累计支付超过日限额 | 当日后续交易被拦截 |
| 月累计金额超限 | 月度累计转账超过月度限额 | 超限后交易拒绝,次月重置 |
| 零金额交易 | 发起0元支付 | 系统拒绝,返回金额无效 |
| 负金额交易 | 发起负数金额支付 | 系统拒绝,参数校验失败 |
| 边界金额 | 恰好等于限额上限/下限 | 边界值正常通过 |
| 大额授权 | 超过授权阈值的交易需二次审批 | 审批通过后方可发送 |
2. 超时处理
| 测试场景 | 验证点 | 预期结果 |
|---|---|---|
| 支付请求超时 | 向央行系统发送报文后无响应 | 超时后触发查询/冲正机制 |
| 渠道连接超时 | 与HVPS/BEPS/IBPS连接中断 | 自动切换备用线路,告警通知 |
| 对端响应超时 | 接收行长时间不返回确认 | 超时后自动查询交易状态 |
| 交易幂等性 | 同一笔支付在超时后重发 | 不会重复扣款/重复入账 |
| 异步回调超时 | 支付结果异步通知超时未到达 | 触发主动轮询查询机制 |
| 队列超时 | 消息队列中报文滞留超过TTL | 报文过期丢弃,记录异常日志 |
3. 状态流转
| 状态 | 含义 | 触发条件 | 可流转至 |
|---|---|---|---|
INIT | 初始/待受理 | 客户发起支付 | ACCEPTED / REJECTED |
ACCEPTED | 已受理 | 系统校验通过 | PROCESSING / CANCELLED |
PROCESSING | 处理中 | 已发送至央行/渠道 | SENT / FAILED / TIMEOUT |
SENT | 已发送 | 渠道已接收并处理 | SETTLED / RETURNED |
SETTLED | 已清算/已到账 | 资金到账确认 | 终态 |
FAILED | 失败 | 交易处理异常 | 终态(可冲正) |
TIMEOUT | 超时未知 | 超时未确认 | SENT / FAILED(查询后) |
REJECTED | 已拒绝 | 校验/风控拒绝 | 终态 |
CANCELLED | 已撤销 | 客户主动撤销 | 终态(不可逆) |
⚠️ 状态流转测试重点
重点验证非法状态跳转(如 CANCELLED→SETTLED)、并发状态下状态竞争、以及超时后查询更新状态的一致性。还需验证渠道返回状态与行内状态的对账一致性。
4. 异常场景
- 扣款成功但渠道未发出:付款账户已扣款但因系统异常未发送至央行,需验证自动冲正/补偿机制
- 渠道已清算但入账失败:收款行接收到清算信息但因账户状态异常入账失败,需验证挂账处理和人工干预流程
- 重复报文:网络重传导致同一笔支付发送两次,需验证幂等控制和重复交易拦截
- 报文格式错误:发送格式不符的ISO 20022报文,需验证校验拒绝和错误码返回
- 日切窗口交易:日切时刻提交的交易,需验证交易归属日期的正确性
- 断网恢复:渠道断网后恢复,积压报文的重发和顺序保证
- 大并发下状态不一致:高并发时多个线程同时更新同一笔交易状态
5. 贷记/借记差异
| 对比维度 | 贷记交易(Credit) | 借记交易(Debit) |
|---|---|---|
| 资金方向 | 本行资金流出 | 本行资金流入 |
| 账户影响 | 付款账户余额减少 | 收款账户余额增加 |
| 会计分录 | 借:客户存款 / 贷:清算往来 | 借:清算往来 / 贷:客户存款 |
| 手续费 | 从付款方收取 | 通常不收取或从收款方收取 |
| 测试重点 | 余额不足处理、透支控制 | 入账校验、反洗钱筛查 |
| 冲正逻辑 | 反向贷记(退款) | 反向借记(扣回) |
⚡ 性能测试要点
1. 各渠道TPS参考
| 支付渠道 | 典型TPS | 峰值TPS | 测试方法 |
|---|---|---|---|
| HVPS(大额实时) | 100-200 | 500+ | 逐笔压测,关注延迟分布 |
| BEPS(小额批量) | 500-1000 | 3000+ | 批量压测,关注打包效率 |
| IBPS(超级网银) | 300-500 | 1500+ | 混合场景压测,关注网关吞吐 |
| 银联CUPS | 2000+ | 10000+ | 多通道并发,关注清算批处理 |
| 网联NUCC | 5000+ | 30000+ | 高并发长连接,关注连接池 |
| 行内支付 | 1000+ | 5000+ | 全链路压测,关注核心系统 |
2. 大额实时延迟要求
⏱️ 延迟SLA要求
大额实时支付(HVPS)端到端延迟需控制在2秒以内(从客户提交到对方行入账)。延迟分布需满足 P99 ≤ 2s、P95 ≤ 1s。超过5秒视为异常交易,需触发告警和自动查询。
- 端到端链路分析:分解为网关延迟、核心记账延迟、渠道通信延迟、对端响应延迟四段,逐段压测定位瓶颈
- P99延迟监控:重点采集P50/P90/P95/P99延迟分布,异常波动需实时告警
- 长尾优化:分析P99以上慢交易的原因(GC停顿、锁竞争、网络抖动)
- 同城/异地延迟:同城灾备切换场景下延迟变化,异地双活场景下的同步延迟
3. 小额批量打包
- 打包策略验证:按时间窗口(如每5分钟)、按笔数(如满100笔)、按金额(如满500万元)触发打包
- 批次文件生成:大批量交易明细文件(如10万笔)的生成耗时和文件完整性
- 净额轧差计算:多场次轧差计算的正确性和计算耗时(需在秒级完成)
- 场次管理:BEPS每天多个清算场次(如00:30、11:00、15:30等),各场次切换的衔接验证
- 断点续传:批量处理中断后从断点恢复,不丢数据不重复
4. 网关并发
- 连接池容量:支付网关连接池大小与并发数的匹配,连接泄漏检测
- 队列深度:高并发下报文队列最大堆积深度,队列满后的拒绝策略
- 线程池调优:核心线程数、最大线程数、队列容量的黄金配比
- 限流降级:超过网关承载上限时的限流策略(令牌桶/漏桶),降级后最小可用保障
- 超时重试策略:指数退避重试、最大重试次数、熔断器配置
- SSL/TLS开销:加密通信对吞吐量的影响,会话复用优化