订单业务和系统设计(一)

一、背景简介

订单其实很常见,在电商购物、外卖点餐、手机话费充值等生活场景中,都能见到它的影子。那么,一笔订单的交易过程是什么样子的呢?文章尝试从订单业务架构和产品功能流程,描述对订单的理解。

二、订单业务

用户、平台和商户是订单业务的核心参与者,订单流程的搭建就是围绕三方的交易场景展开的。

  • 用户:在应用端选择商品、下单支付、查看订单。
  • 平台:实现订单交易链路,提供支付能力和对账清算能力;
  • 商户:提供商品信息和交付能力。

三、订单流程

订单流程有三个核心阶段:创建、支付、交付。

  • 订单创建:用户选择商品并下单,完成订单创建。
  • 订单支付:对接各种支付渠道,完成订单支付。
  • 订单交付:支付成功后,通知商户交付商品。商品交付成功即订单完成。

1.订单支付流程(正向交易)

在理想状态下,订单流程从用户下单开始,支付成功之后,商户交付商品,即订单结束。流程如下:

2.订单退款流程(逆向交易)

订单涉及下单、支付、交付等诸多环节,一旦某个环节失败了,都可能导致订单回滚。所以要全面地考虑各种退款场景,并且提供相应地解决方案。

  • 主动取消:用户取消订单,发起退款;商户交付失败,发起退回。
  • 超时情况:用户支付超时;商家交付超时。
  • 异常情况:平台、支付渠道、商户等系统的程序异常或业务异常,导致支付失败或交付失败;

四、系统监控和自动任务

订单流程复杂,且涉及资金交易,对系统稳定性要求极高。主要依赖于系统监控和自动任务,提高订单的成功率,降低人工干预的风险和成本。

1. 系统监控

监控订单流程的异常情况,及时通知系统人员,做主动修复或重试处理。例如,接口请求失败频率超出阈值时,一般是网络或系统问题,及时通知系统人员排查;支付失败或交付失败时,短信告警;对账或清算失败时,通知及时处理,否则可能影响日终。

2. 自动任务

订单流程是异步的,自然依赖于任务调度,对超时场景做自动修复或重试处理。例如,支付超时会持续锁定库存,需要及时关单处理;交付超时会影响用户体验,需要及时通知商户处理或退回;请求超时,需要重试处理,提高成功率。

参考资料

有赞保险业务的分析与架构设计

浅谈电商核心「订单」业务如何设计

交易日均千万订单的存储架构设计与实践

海外都在用哪些支付方式?

前端项目

后端项目 订单超时怎么处理?我们用这种方案

腾讯财付通会计核算系统原理与架构

相关推荐
9号达人2 分钟前
认证方案的设计与思考
java·后端·面试
BingoGo2 分钟前
PHP 组件未来:Livewire 4 正式发布,性能更快,功能更完整
后端·php
William_cl4 分钟前
拆解ASP.NET MVC 视图模型:为 View 量身定制的 “数据小票“
后端·asp.net·mvc
辜月十4 分钟前
设置 Root 账号 并能够 SSH进行链接
后端
QZQ541885 分钟前
当数据多到放不下内存时,算子的外部执行机制
后端
R.lin10 分钟前
Java支付对接策略模式详细设计
java·架构·策略模式
没有bug.的程序员11 分钟前
Spring Boot 常见性能与配置优化
java·spring boot·后端·spring·动态代理
骇客野人1 小时前
Spring Boot项目快速稳健架构指南
spring boot·后端·架构
..过云雨1 小时前
11.【Linux系统编程】文件系统详解——从磁盘硬件到文件系统
linux·c++·后端·缓存
IT_陈寒1 小时前
震惊!我用JavaScript实现了Excel的这5个核心功能,同事直呼内行!
前端·人工智能·后端