夏有木工作室夏有木工作室夏有木工作室
  • 首页
  • 博客
  • 关于我们
  • 联系我们
夏有木工作室夏有木工作室夏有木工作室
全部文章/
架构设计

支付概念模型设计

EricEric
2024/05/12
·2 分钟阅读 (604 字)·

解构支付系统的核心概念模型,涵盖支付渠道、支付网关、支付单状态机、超时关单与幂等性设计。

目录

  • 支付场景
  • 退款场景
  • 概念模型设计
  • 写在最后
  • 架构设计推荐阅读

梳理一个复杂的支付和退款场景,使用概念模型快速了解大致需要涉及哪些模型以及这些模型之间的关系,并通过这些模型梳理出设计要点。

支付场景

支付方式:现金、在线支付、优惠折扣、皆有。 支付渠道:PC Web、小程序、APP等。 支付平台:企业一体化支付平台、微信支付、阿里支付等

- 支付:用户选择一个订单发起支付
- 再支付:用户订单支付失败或者超时支付后,再次发起支付
- 合并支付:用户可以选择多个订单(甚至可以是不同类型的订单)合并一起后发起支付
- 混合支付:一部分金额选择现金、一部分金额在线支付等

退款场景

- 全额退款:一次性全额退款
- 部分退款:用户可输入小于支付金额的数值,这样可以发起多笔部分退款

概念模型设计

image-20240511210253870

设计要点:

  1. 1个订单因支付方式多种等原因,可以发起多笔支付,所以1个订单可以有1个或多个支付明细
  2. 多个支付明细(订单维度)可以合并成一个支付单进行统一支付
  3. 支付单用于发起支付操作
  4. 1个订单可以选择不同的支付方式、录入不同的金额来发起多次退款申请,退款申请通过后生成一个退款单
  5. 退款单用于发起退款操作
  6. 多个支付渠道可同时发起支付,很容易出现同一个订单被多个渠道同时进行支付的情况,需要考虑加上分布式锁的机制避免出现同一个订单出现支付多次的情况
  7. 支付平台的支付回调加上系统定时器主动查询支付结果,保障用户支付状态的实时显示
  8. 多渠道、高并发非常容易造成数据不一致的情况,如:用户已经支付了,但是订单状态为待支付等,避免出现订单已支付,还能更新成待支付的操作,做好状态设计以及流转控制。

写在最后

也许大部分的支付场景并没有这么复杂,这里提供一个思路供大家参考。概念模型可以帮助我们快速理解支付的整体设计,接下来还需根据业务的实际情况,进行具体属性的完善以及逻辑实现。

架构设计推荐阅读

如果你对企业 4A 架构、权限系统、支付结算与复杂业务建模感兴趣,推荐阅读:

  • 企业 4A 架构:业务、应用、数据、技术的完美融合
  • 权限概念模型设计
  • 支付概念模型设计
  • 结算概念模型设计

👉 查阅更多企业级系统设计与工程实战,欢迎访问 架构设计专栏完整目录。

下一篇

应用架构最佳实践:Alibaba COLA 4.0

更多文章

使用 Sa-Token 平替 Spring Security,告别繁琐的认证与鉴权

使用 Sa-Token 平替 Spring Security,告别繁琐的认证与鉴权

对比传统 Spring Security 的复杂繁重,分享使用轻量 Sa-Token 框架实现无痛多端鉴权、单点登录与路由拦截的最佳实践。

EricEric
2025/01/15
为什么写不好 DDD 代码?

为什么写不好 DDD 代码?

深度剖析为什么大部分团队写不好 DDD,从建模思维、业务边界侵蚀到防腐层设计,解析领域驱动的核心痛点与破局解法。

EricEric
2025/01/14
良好的异常处理设计:系统稳定性的基础保障

良好的异常处理设计:系统稳定性的基础保障

探讨企业级后端的全局异常体系设计,规范业务错误码、状态流转异常捕获与微服务防御性兜底保障。

EricEric
2024/11/27
夏有木工作室夏有木工作室夏有木工作室

专业软件开发技术伙伴,帮助客户快速构建出高质量的软件产品。

GitHubGitHubEmail
Built with夏有木工作室夏有木工作室夏有木

川公网安备51012202002478号|蜀ICP备2025156031号-1

产品
  • 夏有木进销存
工具
  • 夏有木微信公众号排版
资源
  • 博客
  • 更新日志
公司
  • 关于我们
  • 联系我们
法律
  • Cookie政策
  • 隐私政策
  • 服务条款
© 2026 夏有木工作室 All Rights Reserved.