电商平台的订单拆单流程

1 文章概述
消费者在购物时,电商平台会生成订单。订单相当于是购物者和电商平台签订的合同,后续电商平台会进行履约。

消费者一般只关心买什么东西、付多少钱、货什么时候送达,对底层订单逻辑并不关心,对订单拆单这个概念也比较陌生,本文我们探讨一次基本订单拆单流程。

需要说明真实拆单场景非常复杂,不同公司拆单策略也不同,本文只是讲解一个简单实例,复杂场景需要根据策略具体分析。本文使用的是测试数据仅供演示。

2 相关概念
2.1 父子订单
为什么要有父子订单?父子订单分别解决了什么问题,这是本章节需要回答的问题。简而言之,父订单存在的意义是记录一次下单行为,如果有平台级满减赠活动,需要用父订单金额计算优惠。子订单是最核心概念,资金、物流、售后全部与子订单强关联。

2.2 订单、发货单、仓库出库单
父子订单是销售层概念,发货单是调度层概念,仓库出库单(包裹)是仓库层概念。这三者不要混为一谈。

常见拆单场景是:在销售层父订单根据店铺不同拆分出多个子订单。子订单下推到调度层后,根据仓库位置、重量、体积、品类、价值不同,拆分出多个发货单。发货单下推到仓库后,仓库根据实际情况拆分为多个包裹,即仓库出库单。

3 一次拆单流程
3.1 购物车
小明在电商平台购物车增加六件商品:

商家S1(平台自营)
A商品:冰箱 1个 100元
B商品:纸巾 1包 20元
C商品:书本 1本 20元
D商品:饼干 1盒 20元
商家S2(第三方商家)
E商品:充电器 1个 20元
F商品:显示器 1个 20元

3.2 父订单
父订单是为了记录一次下单行为,所以即使小明在不同商家购买商品,也记录在同一个父订单。此时产生了父订单order_1,金额200元。

3.3 第一次拆单(销售层)
小明在购物车选择上述商品点击结算按钮,发生一次拆单:

拆单次数:第一次
拆单维度:销售层
解决问题:财务独立
S1和S2是两个不同商家,在财务上完全独立,所以不能作为同一个子订单,需要拆成两个子订单:

orderId_1-1:对应商家S1
orderId_1-2:对应商家S2

3.4 第二次拆单(调度层)
小明点击提交订单按钮发生第二次拆单:从节省物流成本考虑,商家希望将同一个用户同一次购买的所有商品,放在同一个包裹。但是由于商品体积、数量、存储条件不同,仓库位置不同,不可以放在同一个包裹,所以需要拆单。

拆单次数:第二次
拆单维度:调度层
解决问题:同一笔子订单商品能否放在一个包裹
对于S1自营商家:

体积因素:冰箱体积远大于其它商品,所以独立成发货单
仓库位置:纸巾在上海仓库,书本和饼干在杭州仓库,纸巾独立成单,书本和饼干属于同一个发货单
对于S2第三方商家,E和F商品分别由不同供应商供货,因为不同供应商各自发货,所以E和F各自独立成单。需要注意在财务维度电商平台还是与S2商家结算。

order_1_1
delivery_order_id_1-1:A
delivery_order_id_1-2:B
delivery_order_id_1-3:C D
order_1_2
delivery_order_id_2-1:E充电器
delivery_order_id_2-2:F显示器

3.5 第三次拆单(仓库层)
如果在调度层规则足够完善情况下,一般不需要仓库层拆单,一笔发货单即对应一个仓库出库单(包裹)。但是也有可能出现意外情况,例如仓库工作人员在打包时发现一个包裹装不下,那么会拆成多个仓库出库单。

3.6 优惠策略
对于用户而言,优惠策略体现在销售层,所以优惠明细记录在子订单。现在小明在下单时使用以下优惠策略:

平台优惠1
商品AF参与跨店满100元减10元活动
平台优惠2
所有商品参与跨店满180件10元活动
店铺优惠
商品BCD参与A店满50元减9元活动
用户权益
注册时赠送10个积分抵扣5元
优惠金额按照商品价格比例分摊:

A冰箱
平台优惠1:(100/120) x 10 = 8.33
平台优惠2:(100/200) x 10 = 5
用户权益:(100/200) x 5 = 2.5
B纸巾
平台优惠2:(20/200) x 10 = 1
店铺优惠:(20/60) x 9 = 3
用户权益:(20/200) x 5 = 0.5
C书本
平台优惠2:(20/200) x 10 = 1
店铺优惠:(20/60) x 9 = 3
用户权益:(20/200) x 5 = 0.5
D饼干
平台优惠2:(20/200) x 10 = 1
店铺优惠:(20/60) x 9 = 3
用户权益:(20/200) x 5 = 0.5
E充电器
平台优惠2:(20/200) x 10 = 1
用户权益:(20/200) x 5 = 0.5
F显示器:
平台优惠2:(20/200) x 10 = 1
平台优惠:(20/120) x 10 = 1.67
用户权益:(20/200) x 5 = 0.5

3.7 订单支付
在支付时小明不小心退出支付页,如果点开订单列表再完成支付时会看到两笔子订单,付款时需要支付两次:

orderId_1_1:84.17 + 15.5 x 3 = 130.67
orderId_1_2:18.5 + 16.83 = 35.33

4 子订单表设计
父订单有多个子订单,子订单非常重要,后续订单履约与售后按照子订单维度流转,子订单至少需要承载如下信息:

父订单Id
子订单Id
skuId
购买数量
sku单价
分摊后平台优惠金额
分摊后店铺优惠金额
分摊后用户权益抵扣金额
实付金额
供应商
订单状态
售后状态
发货单号

5 文章总结
第一本文引出订单拆单这个概念,第二本文通过一次购物流程讲解了拆单发生原因和时机,优惠策略计算,第三本分析子订单表如何设计。

需要说明真实拆单场景非常复杂,不同公司拆单策略也不同,本文只是讲解一个简单实例,复杂场景需要根据策略具体分析,总体上可以从销售层、调度层、仓库层三个维度思考。

思路

如何设计一个完整的订单流程

2025-8-18 17:03:34

思路

浅谈单用户订单系统的架构与设计

2025-8-18 22:30:03

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索