一 支付通架构图:
1.1 支付通交易层模块职责:
& 接受对业务系统的订单支付.充值请求
& 账户之间转账
& 接受业务系统的提现请求
& 接受业务系统的退款请求(对上面几种业务)
1.2支付网关职责:
负责和渠道(支付宝,微信,银联)交互,记录流水号,对账
1.3账户系统职责:
& 记录账户信息
& 保障账户变动原子性和事务性.
& 记录账户变动流水
二 主要流程图
1. 充值
2. 转账
2. 提现
三 实体设计
2.1账户系统 实体设计:
帐户表 账户信息.
Account_statement: 1.记录账户变动流水记录. 2.保存法幂等控制
2.2收银台系统实体设计:
交易表: 记录外部输入的外部流水号和内部流水号相关信息
四 亮点功能
1. 转账的额度控制通过变量传递进来.
转账停留在中间环节的,重试逻辑. 单边帐
2. 帐户的变动和流水保存处于同一个事务中.
切记 spring 的事务注解 , 异常必须设置为 throwable
3. 提现:
先扣帐户款再提现.
银行有恶心的退票记录
4. 双边帐
加减账号分别开.
4.1 操作分为加锁和不加锁.
4.1.1 外部企业账户: 加款加锁,减款不加锁.
4.1.2 内部企业账户: 加减款都不加锁. 前面增加一个减款判断. 手动提现.
4.1.3 需要时时查看余额的普通用户需要加锁.
通过分布式扩容来实现扩展性.
5.帐户的高并发变更设计:
高并发帐户不时时扣款.