《图解支付系统设计与实现》电子书简介与目录以实战为导向,深入浅出讲解支付系统的架构设计与实现,涵盖基础概念、核心流程、核
1. 序
在2023年末,中国图书市场上关于支付系统的书,大部分是产品经理或高校老师写的书,普通偏概念讲解。于是我决定从技术的角度写一本支付系统设计与实现的书,有产品概念,有架构设计理论,有核心代码实现,还要容易懂。
时间过得真快,竟然已经写了大半年,超过10万字,200多幅图。
完整版本太大无法直接发布,可关注公众号“隐墨星辰”留言获取。
2. 内容简介
《图解支付系统设计与实现》一书根据我的专栏《图解支付系统设计与实现》系列文章汇总整理并重新修订而成。汇集了我十多年支付系统架构设计的经验总结,以实战为导向,深入浅出讲解支付系统的架构设计与实现,涵盖基础概念、核心流程、核心子系统设计、核心技术专题等。这些知识点以实用为目标,可直接应用到日常研发设计中。
全书共18章,分为入门篇、核心子域设计篇、技术专题篇。入门篇(第1-10章)详细讲述支付系统涉及的基本概念,概要设计,核心流程。核心子域设计篇(第4-10章)深入地剖析支付系统各核心子域的架构设计精华。技术专题篇(第11-18章)介绍了一些支付系统领域内非常实用的最佳实践,这些技术还可以应用到非支付系统设计中。
书中通过采用大量手绘风格的图示来讲解专业领域的概念和设计思路,让大家更容易阅读和理解,达到“一图胜千言”的效果。
期待能够为大家在支付技术和业务的学习及实践中带来帮助。同时欢迎大家和我讨论。
本书仍在持续更新中,部分内容还没有写完。可关注我的公众号“隐墨星辰”随时获得更新信息。
3. 目录参考
序言
关于作者
入门篇
第1章 在线支付系统基本概念
1.1 极简支付流程
1.2 极简清结算流程
1.3 极简本对本收单流程
1.4 极简跨境收单流程
1.5 极简信息流与资金流
1.6 极简跨境收单的协议关系
1.7 极简跨境资金方案
1.8 简明复式记账
第2章 在线支付系统概要设计
2.1 简明产品架构图
2.2 极简系统架构图
2.3 完整系统架构图及各子系统简介
2.4 核心系统依赖图
第3章 核心业务与详细流程说明
3.1 支付:如何从用户账户扣钱到平台账户
3.2 退款:如何从平台账户扣钱到用户账户
3.3 清算:外部机构如何把钱给到平台
3.4 结算:如何把钱从平台结算给商户
3.5 充值:用户如何把钱充值到平台的个人账户
3.6 转账:用户账户之间如何转账
3.7 提现:用户如何把钱从平台账户转出去
3.8 外汇:跨币种支付怎么结算
核心子域设计篇
第4章 收单结算
4.1 收单结算概述
4.2 收单结算产品架构图
4.3 收单平台:打造商户收款的高效之道
4.3.1 收单演进形态
4.3.2 收单在支付系统中的位置
4.3.3 收单产品架构图
4.3.4 收单系统架构图
4.3.5 收单核心流程
4.3.6 收单领域模型设计
4.3.7 收单状态机设计
4.3.8 收单模式与资金流
4.4 结算平台:准确高效给商户结款
4.4.1 结算在支付系统中的位置
4.4.2 结算模式
4.4.3 结算产品架构图
4.4.4 结算系统架构图
4.4.5 结算核心流程
4.4.6 结算领域模型设计
4.4.7 结算状态机设计
4.4.8 结算资金流
4.5 拒付平台:如何应对用户的拒付
4.5.1 拒付基本概念
4.5.2 拒付产品架构
4.5.3 拒付核心流程
4.5.4 拒付领域模型设计
4.5.5 拒付状态机设计
4.5.6 拒付与风控的关系
4.6 小结
第5章 收银支付
5.1 收银台核心:支付系统承上启下的关键应用
5.1.2 收银核心在支付系统中的位置
5.1.3 支付咨询3
5.1.4 支付受理
5.1.5 收银核心系统架构
5.1.6 收银核心领域模型设计
5.1.7 常见支付方式
5.2 支付引擎:资产流动的枢纽
5.2.1 支付引擎在支付系统中的位置
5.2.2 支付引擎系统架构
5.2.3 支付引擎领域模型设计
5.2.4 支付引擎状态机设计
5.3 小结
第6章 渠道网关
6.1 常见渠道类型
6.1.1 支付类渠道
6.1.2 流出渠道
6.1.3 外汇渠道
6.2 渠道网关:不只是对接渠道接口
6.2.1 渠道网关在支付系统中的位置
6.2.2 渠道网关的产品架构
6.2.3 渠道网关的系统架构
6.2.4 渠道网关的领域模型设计
6.2.5 渠道网关的状态机设计
6.2.6 流程编排与流程引擎
6.3 报文网关:一种低代码报文网关的设计思路与核心代码实现
6.3.1 报文网关在支付系统中的位置
6.3.2 报文网关的几种形态
6.3.3 一种低代码报文网关设计思路
6.3.4 低代码报文网关系统架构
6.3.5 低代码报文网关的核心代码实现
6.3.6 低代码报文网关的完整代码
6.4 文件网关:文件交互的底座
6.4.1 文件网关在支付系统中的位置
6.4.2 文件网关的几种形态4
6.4.3 一种低代码文件网关设计思路
6.4.4 低代码文件网关系统架构
6.4.5 低代码文件网关的核心代码实现
6.4.6 文件网关常见问题及应对方案
6.5 小结
第7章 账务系统
7.1 账务有关的一些核心概念
7.2 复式记账基本概念
7.3 账务系统在支付平台中的定位
7.4 信息流与资金流全生命周期
7.4.1 支付与结算交互图极简版
7.4.2 支付记账详细版
7.4.3 商户结算记账详细版
7.5 账务系统核心诉求
7.6 账务系统产品架构图
7.7 账务系统系统架构图
7.8 账务系统整体模型
7.9 账务核心
7.9.1 账务模型
7.9.2 账户分类
7.9.3 记账方向
7.9.4 实时记账与缓冲记账
7.10 会计中心
7.10.1 会计中心模型
7.10.2 会计科目与会计分录
7.10.2 记账方案
7.10.3 会计日与日切
7.11 清结算
7.11.1 主动清算
7.11.2 渠道对账模型
7.11.3 对账差异处理
7.11.3 渠道三层对账体系
7.11.4 内部系统实时与离线对账
7.12 小结
第8章 会员与卡资产
8.1 会员
8.1.1 会员服务在支付系统中的位置
8.1.2 会员服务产品架构
8.1.3 会员服务系统架构
8.1.4 会员服务领域模型设计
8.2 卡资产
8.2.1 卡资产在支付系统中的位置
8.2.4 卡资产领域模型设计
第9章 商户服务
9.1 商户服务在支付系统中的位置
9.2 商户服务产品架构
9.3 商户服务系统架构
9.4 商户服务领域模型设计
第10章 资金产品
10.1 资金产品定义及在支付系统中的位置
10.2 充值
10.3 转账
10.4 提现
技术专题篇
第11章 支付安全
11.1 在线支付面临的主要安全问题
11.2 支付安全核心关注点
11.3 极简支付安全大图
11.4 数据安全:加密与解密技术
11.4.1 什么是加密和解密
11.4.2 对称加密算法
11.4.3 非对称加密算法
11.4.5 数字信封加密算法
11.4.6 加密算法和密钥长度选择
11.4.7 常见加密解密算法推荐
11.4.8 典型应用场景
11.4.9 登录与支付密码的特殊处理
11.4.10 PCI认证
11.4.11 加解密在工程应用中的常见问题
11.4.12 常见加解密算法核心代码
11.5 防篡改与防抵赖:签名与验签技术
11.5.1 什么是签名与验签
11.5.2 支付系统为什么一定要做签名验签
11.5.3 常见数字签名算法及推荐算法
11.5.4 一些与防篡改有关的技术
11.5.4.1 数字摘要
11.5.4.2 HMAC算法
11.5.4.3 数字时间戳
11.5.4.4 双重数字签名
11.5.5 常见签名验签算法核心代码
11.5.6 联调中常见的问题
11.6 身份合法性判断:身份认证技术
11.6.1 什么是身份认证
11.6.2 常见的身份认证方法
11.6.3 数字证书
11.6.4 数字证书颁发机构CA
11.6.5 PKI
11.7 数据传输安全:常见的传输安全协议
11.7.1 SSL
11.7.2 TSL
11.7.3 HTTPS
11.7.4 VPN与专线
11.8 SET协议:过于复杂的设计
11.9 网络流量安全:防火墙与入侵检测
11.10 防欺诈交易:支付风控
11.11 拓展:金融级密钥管理与统一加解密系统设计与实现
11.11.1 必要的术语
11.11.2 密钥管理与统一加解密系统架构
11.11.3 密钥管理与统一加解密系统详细设计
11.11.4 密钥管理常见误区
11.11.5 密钥管理最佳实践
11.11.6 密钥管理平台小结
11.4 小结
第12章 技术风险与资损防控
12.1 识别风险来源
12.2 风险应对措施
12.3 一种滑动时间窗口算法在渠道监控中的应用
12.4 防呆设计在资损防控中的应用
12.5 实时核对与离线核对
12.6 金额处理规范
12.6.1 金额处理场景
12.6.2 金额计算常见误区及严重后果
12.6.3 金额处理原则
12.6.4 制定Money类
12.6.5 Money类实际应用最佳实践
12.6.6 小结
第13章 业务ID生成规则
13.1 什么是业务ID及为什么要有统一的业务ID
13.2 常见业务ID生成规范及应用场景
13.3 支付系统业务ID生成最佳实践
第14章 状态机设计思想在支付系统中的广泛应用
14.1 什么是状态机
14.2 状态机对支付系统的重要性
14.3 状态机设计基本原则与常见误区
14.4 状态机设计最佳实践及核心代码实现
14.5 小结
第15章 渠道开关及渠道路由
15.1 全自动化渠道开关
15.1.1 自动化渠道开关的核心功能
15.1.2 核心模块设计
15.1.3 决策模块核心算法与实现
15.1.4 参数调优
15.1.5 最佳实践指南
15.2 渠道路由
15.2.1 一些背景知识
15.2.2 渠道路由核心作用
15.2.3 渠道路由的设计原则
15.2.4 业界常见的几种路由形态
15.2.5 一种典型的基于规则的渠道路由设计
15.2.6 加入自动化开关的渠道路由
15.2.7 高阶的智能路由
15.3 小结
第16章 支付系统日志设计
16.1 日志设计常见误区
16.2 日志设计最佳实践
16.3 小结
第17章 分布式支付系统的幂等性原理与实践
17.1 什么是幂等及为什么幂等对支付系统如此重要
17.2 幂等解决方案
17.3 小结
第18章 分布式流控
18.1 流控应用场景
18.2 几种方案对比
18.3 固定时间窗口算法
18.3.1 固定时间窗口算法原理
18.3.2 固定时间窗口在支付系统中的应用场景
18.3.3 使用redis实现的核心代码
18.4 滑动时间窗口算法
18.4.1 滑动时间窗口原理
18.4.2 滑动时间窗口在支付系统中的应用场景
18.4.3 使用redis实现的核心代码
18.4.5 注意事项
18.5 漏桶算法
18.5.1 漏桶算法原理
18.5.1 在支付系统下的应用场景
18.5.2 Redis实现漏桶的核心代码
18.6 令牌桶算法
18.6.1 令牌桶算法原理
18.6.2 支付系统应用场景
18.6.3 基于redis实现的令牌桶核心代码实现
18.6.4 令牌桶使用注意事项
18.7 消息中间件
18.7.1 削峰填谷原理
18.7.2 常见的分布式消息中间件介绍
18.7.3 使用注意事项
18.7.4 支付系统应用案例
18.7.5 JAVA版的示例代码
18.8 流量控制与熔断利器Sentinel介绍
18.8.1 流量控制
18.8.2 熔断保护与自动恢复
18.8.3 支付系统应用场景
18.8.4 无法适用的场景
18.9 小结
第19章 一些重要的小点
19.1 Spring事务模板及afterCommit存在的坑
19.2 内部标准返回设计与渠道返回码映射
19.3 多线程在支付系统中的应用案例及常见误区
19.4 退款自动重试与支付自动重试
附录
附录 支付相关必知术语
通用部分
支付方式与通道/渠道
境外卡支付
外汇
资金账务
会员与商服
监控合规
交互
子系统/子应用分类
转载自:https://juejin.cn/post/7409238250042916876