根据作者10余年支付行业架构设计与实现的经验,围绕如何设计在线支付系统进行讲解。内容主要包括:专业术语解读、支付系统概述、产品和系统架构、核心业务逻辑、各核心子系统的设计,以及一些专项技术课题。 将以实战经验为主线介绍这些内容,希望能给读者带来一些启发。
主要面向学生、编程新手、想提升架构设计能力的编程老手、或对支付领域好奇的专业人士。 希望通过图解示例和通俗易懂的方式,从支付领域的基本概念开始,逐步深入讲解支付系统的核心流程和技术实现。目标是让复杂的支付技术变得简单易懂。 文章中的部分设计思路和方法论同样适用于其他领域,如状态机设计、分布式环境下的流量控制、如何去分析并理解业务的本质等。
在阅读过程中发现任何不准确或需要改进的地方,欢迎通过留言、私信等方式反馈,我将及时更新内容,避免误导后续读者。
最后,期待能够为大家在支付技术和业务的学习及实践中带来帮助。
欢迎转载。
Github:https://github.com/yinmo-sc/Decoding-Payment-System-Book
公众号:隐墨星辰。
有个小群不定时解答一些问题或知识点,有兴趣的同学可先加微信(yinmo_sc)后进入,添加微信请备注:加支付系统设计与实现讨论群。
@月朦胧 提出的“状态机领域模型同时被两个线程操作怎么避免状态幂等问题”
@赵晓军528 @康文彬 指出了状态机文章中有关键代码缺失
@用户4725518259032 指出了需要缺失hashCode()的问题。
很多其他网友也给了很多有益反馈,无法一一感谢。
内容和顺序可能在写作过程中可能会有些调整。
● 《百图解码支付系统设计与实现》专栏大纲(持续更新)
● 支付行业黑话:支付相关必知术语一网打尽(完成)
● 跟着图走,学支付:在线支付系统设计的图解教程(完成)
● 支付:如何从用户账户扣钱到平台账户
● 退款:如何从平台账户扣钱到用户账户
● 清算:外部机构如何把钱给到平台
● 结算:如何把钱从平台结算给商户
● 充值:用户如何把钱充值到平台的个人账户
● 转账:用户账户之间如何转账
● 提现:用户如何把钱从平台账户转出去
● 外汇:跨币种支付怎么结算
【收单结算】
● 图解收单平台:打造商户收款的高效之道(完成)
● 图解结算平台:准确高效给商户结款(完成)
● 图解拒付平台:如何应对用户的拒付(完成)
【收银支付】
● 图解收银台:支付系统承上启下的关键应用(完成)
● 图解支付引擎:资产流动的枢纽(完成)
【商户网关】
【渠道网关】
● 图解支付渠道网关(一):不只是对接渠道的接口(完成)
● 图解支付渠道网关(二):模型、状态机与流程编排(完成)
● 图解支付报文网关:一种低代码报文网关的设计思路与核心代码实现(完成)
● 图解文件网关:文件交互的底座(完成)
【商服中心】
【会员中心】
【账务中心】
【会计中心】
【对账平台】
【计收费平台】
【风控平台】
【额度中心】
【产品中心】
【密钥中心】
● 图解金融级密钥管理系统:构建支付系统的安全基石(完成)
【卡中心】
【业务ID生成规则】
● 交易流水号的艺术:掌握支付系统的业务ID生成指南(完成)
【支付安全】
● 揭密支付安全:为什么你的交易无法被篡改(完成)
● 金融密语:揭秘支付系统的加解密艺术(完成)
【状态机设计】
● 支付系统的心脏:简洁而精妙的状态机设计与核心代码实现(完成)
【幂等设计】
● 避免重复扣款:分布式支付系统的幂等性原理与实践(完成)
【日志规范设计】
● 支付系统日志设计完全指南:构建高效监控和问题排查体系的关键基石(完成)
【流控】
● 精确掌控并发:固定时间窗口算法在分布式环境下并发流量控制的设计与实现(完成)
● 精确掌控并发:滑动时间窗口算法在分布式环境下并发流量控制的设计与实现(完成)
● 精确掌控并发:漏桶算法在分布式环境下并发流量控制的设计与实现(完成)
● 精确掌控并发:令牌桶算法在分布式环境下并发流量控制的设计与实现(完成)
● 削峰填谷:分布式消息中间件在分布式环境下并发流量控制的应用(完成)
● 流量控制与熔断利器:Sentinel介绍(完成)
● 分布式环境下流控技术汇总(完成)
【分库分表】
【多活】
【资损防控】
● 一种行之有效的防错策略:在支付系统中实施防呆设计的实践(完成)
【监控核对告警】
【重复支付与重复退款】
【支付失败重试与退款失败重试】
【渠道路由】
【渠道开关】
【多线程与线程池】
【设计模式应用】