电商订单系统架构设计:如何构建高效、稳定的订单处理模型

2024-12-26
来源:网络整理

订单系统作为业务子系统,在电商、零售、餐饮、教育、医疗SaaS系统中非常常见。

只要平台上有交易活动,就没有办法逃脱订单系统,因为最终需要创建订单并付款才能完成交易。

由于订单系统使用频率较高,且不同业务的订单设计思路类似,我们可以将其抽象为底层系统,建立一套订单设计模型,以便快速应用到各种业务系统中。

订单系统架构

1号

以电商为例:

订单作为电子商务最复杂的核心系统(或模块),是建立在其他系统模块之上的。

包括但不限于产品、优惠券、会员、营销活动、地址信息、积分、运费、购物车、支付、发货、收货等模块都与订单密切相关。任何模块的更改都可能影响订单。毫不夸张地说,订单是交易平台的核心子系统。

订单中包含的信息:

电商订单系统架构:

因此,订单管理最重要的是覆盖全面、扩展性强。

订单系统模块拆分

2号

订单主要分为两部分:订单创建和订单管理。

1. 订单创建:

订单创建可以由C端用户和B端用户发起,并在订单系统中生成。

在订单提交页面点击“提交订单”按钮,页面会显示订单创建节点。将创建订单。

当然,表面上看,点击“提交订单”会触发订单创建,但在幕后,创建过程会调用上面提到的各个模块,涉及到很多逻辑判断。

提交订单页面原型:

以下是订单生成的验证信息:

即在“提交订单”的那一刻,会进行多项信息逻辑判断。

送货信息:送货方式和送货地址。

需确定送货方式、地址是否已填写; (如果是外卖)送货地址是否超出送货范围;

商品

需要判断产品是否上架;产品是否售完;产品的库存是否少于订单中的产品数量; (如有赠品)需判断赠品是否缺货;

货运

选择收获地址后,运费将根据后台运费模板自动计算,并显示在【提交订单】页面;提交订单时,您需要验证运费信息是否发生变化;

促销活动

有必要确定当前适用于该用户和该订单产品的所有促销活动。促销活动一般分为两个层面:平台层面和门店层面。

支付订单管理在哪里_订单支付流程图_订单支付系统

平台层面:平台内产品的促销活动;店铺层面:店铺内产品的促销活动。

当然,此类活动一般都会有一些限制,比如

只有达到一定等级的会员才能参加。只有某些类别或指定产品可以参加。若同时满足参加多项活动的条件,您只能参加优先级最高的活动;

等等,具体取决于促销活动的数量和复杂程度。

会员折扣

提交订单时,您需要确定会员等级及相应优惠权益是否发生变化,可用积分数量是否发生变化。

优惠券

需判断优惠券是否已核销;是否已过期;是否在适用期限内;是否使用过等

提交订单后,订单即被创建。此时下单模块也会发起指令,要求其他模块进行相应配合:

订单中的产品库存需要在产品模块中冻结。订单中使用的优惠券需要在优惠券模块中更改状态。订单中使用的促销权限需注明已使用该权限。订单中扣除的积分应在等中从用户积分中扣除

当然,对于外卖来说,还需要在提交订单时判断店铺是否处于休息时间,店铺是否启用了这种配送方式,以及订单价格是否满足最低配送价格。如果有变化,会给用户相应的提示。 。

2. 订单管理

订单创建后,进入订单管理阶段。

C面页面:

B端订单管理页面:

订单轮换流程:

关于订单状态

从用户(买家)的角度来看,电商平台订单流转的中间状态一般包括以下六大状态:

1)待付款:用户提交订单后、付款前,处于待付款状态,商户也处于待付款状态。

2)待发货:用户完成支付后,订单状态变为待发货,商户端也更新为“待发货”状态。

3)待收货:当商家后台确认发货时,订单状态在买家端会显示“等待收货”,在卖家端会显示“已发货”。两侧的显示会有差异。

如果买家收到货后一直不点击确认,那么一般平台都会有一个周期(淘宝是14天)。 14天后系统将自动确认收货并更改交易成功。

4)退款:共有两种情况会导致订单转为“退款”状态。

如果处于“等待发货”状态,即商家发货后,买家进行退款操作,订单状态将直接转为退款;如果处于“等待发货”状态,则买家取消订单/如果卖家执行全额退款,则进入退款状态。买家确认收到货并申请退款后,将进入“退款进行中”状态。一般电商平台支持确认收货后7天内无理由退货。

5) 交易完成:有两种情况会导致订单变为“交易成功”

是用户确认收到商品;是买家申请部分退款。退款流程完成并确认收到剩余商品后,订单将更改为“交易成功”。

6)交易关闭:“交易关闭”分为三种情况。

“交易成功”后发起全额退款,交易完成后退款流程变更为“交易关闭”;买家在“待付款”/订单已过期时取消订单);购买时“待发货”的商家申请退款,商家确认后,订单更改为“交易已关闭”。

关于订单中的折扣分配

为什么我们应该考虑折扣共享?如果下单时使用了一定的折扣,当订单部分退款时,我们当然不能直接将产品原价退给买家,这会给卖家造成很大的损失。

因此,当生成订单时,将计算使用促销的产品的折扣分配。

例子

订单支付流程图_订单支付系统_支付订单管理在哪里

让我们举一个最简单的例子。买家以100元购买了A产品,以200元购买了B产品。提交订单时,他参加了购物满100元50折的促销活动,所以他最终支付了250元。

如果买家收到货后感觉A不满意,申请退款,卖家同意并完成退款流程后,应退还给A多少钱?

A的退款金额=100*250/(100+200)=83.33元(保留2位小数)

他不能收到100块钱,因为如果他收到100块钱,就相当于用150块钱买了B,这是漏洞。

我们来看一个更复杂的案例:这个案例涉及到平台跨店促销、店铺促销、优惠券。

例子

买家以100元购买了1件产品A(A店),以200元购买了1件产品B(A店),以300元购买了1件产品C(B店)。

提交订单时,他参与了A店购物满200元立减50的促销活动1,也参与了平台购物满200元立减100的促销活动2。此外,他还使用了一张150元的平台代金券。

然后根据优先级,A+B的产品先享受A店的活动1,变成(100+200-50)=250元,然后A+B+C继续参加平台的活动2则变为(250+300-100)=450元,最后使用平台代金券后支付(450-150)=300元,即最终付款为300元。

即按照活动1>活动2>优惠券的优先级参与。

假设退款时优惠券无法退款,那么在生成订单时,我们计算一下每层折扣分配后A、B、C的可退款金额:

第一级:活动1分配后

产品A=100-50/(100+200)*100=83.33元

产品B=200-50/(100+200)*200=166.67元

产品C=300元

第二级:活动2分配后

产品A=83.33-100/550*83.33=68.18元

产品B=166.67-100/550*166.67=136.37元

产品C=300-100/550*300=245.46元

注:83.33+166.67+300=550元

第三层:分配券后

产品A=68.18-150/450*68.18=45.45元

产品B=136.37-150/450*136.37=90.91元

产品C=245.46-150/450*245.46=163.64元

注:68.18+136.37+245.46=450元

因此,将三级折扣从高到低分配后,A最终实际可退金额为45.45元,B为90.91元,C为163.64元。

2.关于拆分订单

在电商平台中,只要有购物车功能,买家就会跨店购买商品。

例如,有一个订单,从A商店购买一件商品A,从B商店购买一件商品B。对于买家来说,他只是下了订单;但对于平台来说,需要将A的订单信息推送到A存储,将B的订单信息推送到B存储,这就需要对买家的订单进行拆分。

另外,对于提交给A店铺的订单,如果订单中包含多个产品A、B、C,还可能涉及到拆分发货单,比如A和B一起发货,C单独发货。

作者:郑海华,深耕B端业务多年,熟悉电商、医疗等业务,拥有多个从0到1的大型产品孵化经验。

分享