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

一、背景简介

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

二、订单业务

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

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

三、订单流程

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

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

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

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

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

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

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

四、系统监控和自动任务

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

1. 系统监控

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

2. 自动任务

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

参考资料

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

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

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

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

前端项目

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

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

相关推荐
NiNg_1_23415 分钟前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
Chrikk2 小时前
Go-性能调优实战案例
开发语言·后端·golang
幼儿园老大*2 小时前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
canyuemanyue2 小时前
go语言连续监控事件并回调处理
开发语言·后端·golang
杜杜的man2 小时前
【go从零单排】go语言中的指针
开发语言·后端·golang
customer083 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
Yaml44 小时前
智能化健身房管理:Spring Boot与Vue的创新解决方案
前端·spring boot·后端·mysql·vue·健身房管理
小码编匠5 小时前
一款 C# 编写的神经网络计算图框架
后端·神经网络·c#