前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常见分布式应用系统设计图解(十五):支付系统

常见分布式应用系统设计图解(十五):支付系统

作者头像
四火
发布2022-09-28 20:41:17
6150
发布2022-09-28 20:41:17
举报
文章被收录于专栏:四火的唠叨四火的唠叨

支付(Payment)系统可以很复杂,比如可以和银行打交道,和信用卡系统打交道。如果我们考虑用户在一家电商买东西,在结账的时候,借助电商支持的支付系统(Payment Service Provider)来完成支付行为。

支付系统需要结合商家(包含卖家和买家)一起来看。最典型的一种需求是,卖家在电商网站挂了东西卖,买家挑选了货物,结账并支付,电商依赖于支付系统来完成支付,并通知买家支付成功。

  • 图中用两条虚线分隔出了 3 列,最左边是用户,中间是电商系统(比如 Amazon),右边是 Payment Service Provider(PSP,比如 PayPal)。支付操作需要保证幂等性,从而在重试的过程中保证不会被重复扣钱。
  • 有的电商自己会存储用户具体的支付信息,比如信用卡信息和银行账号信息,但是这样的数据管理成本由于安全需求的原因非常高,因此也有很多电商省掉这个麻烦,选择让 PSP 来管理。图中就是对于这种情况的示意。
  • 图中用户在 checkout page 结账页面,store 向 PSP 发送一个 registration 请求,得到一个 token,这个 token 就可以后续用来查询支付信息。再根据这个 token 生成一个跳转到 PSP 网页的 URL,于是这个 URL 重定向用户的请求到了 PSP 的支付页面。一并带过去的,除了 token,还可能会有一个回调 URL,用以支付成功以后跳转回 store 的成功页。
  • 用户填上信用卡信息并提交,PSP 会生成一个待支付的事件放到 Payment Queue 中。
  • Payment Worker 会异步地和信用卡公司通信并完成支付行为,更新账本 Ledger 系统,并放入一个通知事件到 Notification Queue 中。对于反复投递不成功的消息,放入 Dead Letter Queue 作备案处理。
  • 这个 queue 会有不同的消费者,其中一个是 Webhook Worker,将成功的消息告知 store(或者是通知支付页处理完成的消息,用户就被重定向到 store 的订单支付完成页面)。这之后如果 store 需要知道具体的支付信息,可以使用之前的 token,发起主动查询。
  • 定期还可能会有对账(Reconciliation)和生成 statement 等异步任务,图中没有列出。例如,store 往往需要定期执行对账任务,调用 PSP API 来检查支付和账户数据的一致性。

这是《常见分布式系统设计图解》系列文章中的一篇,如果你感兴趣,请参阅汇总(目录)寻找你其它感兴趣的内容。

文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》

×Scan to share with WeChat

你可能也喜欢看:

  1. 常见分布式应用系统设计图解(十):电商秒杀系统
  2. 常见分布式应用系统设计图解(一):即时消息系统
  3. 常见分布式应用系统设计图解(八):文件同步分享系统
  4. 常见分布式应用系统设计图解(十四):日志系统
  5. 常见分布式应用系统设计图解(九):协同编辑系统
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
ICP备案
在中华人民共和国境内从事互联网信息服务的网站或APP主办者,应当依法履行备案手续。腾讯云为您提供高效便捷的 ICP 备案服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档