如何设计一个极简支付系统

如何设计一个极简支付系统

第一步

当用户点击"购买"按钮时,会生成一个支付事件 (Payment Event) 并发送到支付服务。

第二步

支付服务 (Payment Service) 将支付事件存储在数据库中。

第三步

单个支付事件可能包含多个支付订单。比如,我们结账时会从多个卖家选择商品。这时,支付服务会拆分支付事件,每个支付订单都会调用一次支付执行服务 (Payment Executor)。

第四步

支付执行服务将支付订单存储在数据库中。

第五步

支付执行服务调用外部的支付服务提供商 (PSP, Payment Service Provider) 完成信用卡支付。

第六步

在支付执行服务成功执行付款之后,支付服务将更新卖家钱包余额。

第七步

钱包服务将更新后的余额信息存储在数据库中。

第八步

在钱包服务成功更新卖家的余额信息后,支付服务将调用分类帐进行更新。

第九步

分类帐服务将新的分类帐信息更新到数据库中。这一步经常采用事件溯源 (Event Sourcing) 的设计范式,将分类账的更新作为一个个事件存储到事件日志中,再用事件去更新账目余额。我们后续会专门讲解事件溯源。

第十步

每天晚上,支付服务提供商或银行向其客户发送结算文件。 结算文件包含银行账户的余额,以及当天发生在该银行账户上的所有交易。

【图解架构设计,关注公众号:ByteByteGo】

相关推荐
极光代码工作室15 天前
基于AI的新闻推荐系统设计
人工智能·机器学习·ai·系统设计
郝学胜-神的一滴16 天前
[系统设计] 新鲜事系统:写扩散与读扩散的实现与对比
java·设计模式·php·软件构建·需求分析·软件设计·系统设计
Linux猿1 个月前
基于单片机的智能路灯控制系统设计 | 附源码
单片机·嵌入式硬件·课程设计·项目·系统设计·基于单片机的智能路灯控制系统
猹叉叉(学习版)1 个月前
【系统分析师_知识点整理】 12.系统设计
笔记·软考·系统设计·系统分析师
极光代码工作室1 个月前
基于AI的学习辅助系统设计
人工智能·机器学习·ai·系统设计
Ulyanov1 个月前
基于ttk的Python现代化GUI开发指南
开发语言·前端·python·tkinter·系统设计
发际线还在1 个月前
互联网大厂Java三轮面试全流程实战问答与解析
java·数据库·分布式·面试·并发·系统设计·大厂
arvin_xiaoting2 个月前
从 0 到 1:搭建自学习 AI Agent 系统的完整工程指南
人工智能·学习·系统设计·ai agent·lancedb·自学习·openclaw
dreambyday2 个月前
短链系统设计
系统设计
Ulyanov3 个月前
高保真单脉冲雷达导引头回波生成:Python建模与实践
开发语言·python·仿真·系统设计·单脉冲雷达