一、无处不在的订单编辑导读:当你在网上购物时,付完款之后就会生成订单,通过订单可以看见商品的物流信息或骑手信息。而这套交易系统是怎样运转的呢?本文作者围绕底层的交易订单展开三方面的分析,希望对你有帮助。
今年过年因为疫情原因没回家,留在北京过。过年期间在北京我几乎没出门买过菜,都是直接在APP里选好想买的蔬菜、然后支付,最后就等着小哥送到家了。不光如此,生活中打车、网购、订外卖等各种场景,再也不用巴巴的忙前忙后,自己在家在几分钟即可一气呵成。别小瞧在页面上用手指手指简单的点点点,对于背后的系统来说可是一大步。
其实当我们将喜欢的商品加入购物车,点击界面上的“提交订单”后,其实你的订单就已经生成了,而且此时在页面上你也可以看到订单号,等到支付成功后,系统就会安排为你准备商品啦。
淘宝下单页:
京东下单页,点击“自己付”或者“帮我付”,即生成了订单。
二、底层的交易订单1. 什么是交易订单
今天我主要聊下用户看不到的、但是一直默默在发力的处于最底层的“交易订单”,在我理解交易和订单其实是两个不同的东西。
交易是什么?是买卖双方对有价物品及服务进行互通有无的行为。而订单则是订单是卖家与卖家交易的线上合同,是交易的凭证。所以我理解对于系统来说,交易是系统提供的能力,而订单是存储表,后文我用订单中心来代替交易和订单,进行整体说明。
2. 交易订单的底层系统交互
其实订单系统是电商非常重要的模块之一,订单系统在整个售卖的链路中,对接了商品、库存、履约等上下游不同的系统,同时对保证数据的准确性、合规性、完整性有着不可言喻的作用。
下面先看一张我画的各个系统时序图,我对各个系统的交互进行简要说明。
- 端:端其实很好理解,就是用户看到的那个下单的入口,PC、APP、h5都是,用户触发了提交订单后,端上就调用订单中心的下单服务进行下单。这个时候你就发现了订单中心的重要性,其实端上更多的是数据和信息的展示,核心的能力都是底层提供的。
- 风控中心:订单下单的时候首先会和风控中心进行交互,这一步主要是为了筛选黑名单用户、或者说监控是否恶意下单。若发现用户下单行为异常,则无法下单成功。
- 商品系统:下单时订单中心会查询商品系统,对用户所购买的sku进行校验,比如是否存在、是否上架、是否可售、可售数量等,若其中任意一项校验不通过,则终止下单,属于下单前的基础校验。下单前的所有基础校验通过后,订单中心会扣除商品系统里该sku的可售数量。
- 库存系统:下单时订单中心会查询库存系统,对用户所购买的sku的库存进行校验,比如当前库存是否大于等于用户购买的库存,若库存不足,则无法下单成功,属于下单前的基础校验。下单前的所有基础校验通过后,订单中心会预占库存系统里该sku的库存,这里要说明的是,后续用户支付成功后,即对预占的库存进行扣减。ps:为什么下单后而非支付后纪要进行库存预占和商品扣减呢,这里主要考虑的是多用户同时下单的并发问题,要保证用户下单后和支付后的信息是一致的。
- 营销中心:下单时订单中心会查询营销中心,这里营销中心包含一些优惠券、促销券、限购策略等,订单中心会对限购数量、券的值、促销信息等进行数据一致性校验,校验无误后即可下单成功,属于下单前的基础校验。
- 支付系统:下单后,用户在端上支付成功后,订单中心会调用支付系统创建支付单。
- 履约系统:支付单创建成功后,订单会调用履约系统创建履约单,创建成功后履约会下发wms进行生产。
这里只说明的是一些基础的电商模块和订单中心的交互,履约系统和wms的交互等不算是交易订单模块的核心链路,这里暂且不表。除此以外不同的商家平台还会涉及订单中心和台账系统、用户权益中心的系统交互等等,这里不多赘述。
3. 订单快照和存储
快照:下单前的所有基础校验通过后,订单中心会存储快照,快照上会记录当时用户下单时所购买商品信息、如商品名称、商品金额、商品数量、商品主图以及促销信息如优惠券、满折满减等主要的信息,因为商品、促销信息促销信息随时都在变,快照主要是用户后续发生争议时的一个凭证。
订单存储:当订单中心扣除了商品数量、预占了库存之后就可以将订单信息落库了
订单主要会存储有这些信息:
- 用户信息:用户账号信息
- 订单基础信息:父单与子单、订单号、订单状态、下单平台、打点信息等
- 收货信息:收件人姓名、收件人手机号、收件地址、邮编
- 商品信息:sku信息、规格、商品数量、价格、商品图片等
- 优惠信息:优惠券、促销活动等
- 支付信息:支付方式、支付单号、应付金额、实付金额、运费等
- 物流信息:物流公司、物流单号、物流状态
- ……
4. 订单拆单
订单拆单从字面上理解就是由一个订单拆成多笔订单,原单即父单、拆后的订单及子单。下面我以拆单的时间、拆单的目的、以及拆单的维度进行说明。
- 拆单的时间点:订单拆单一般是在支付成功后就会进行拆单。
- 拆单的目的:通过对货权和财权进行区分,为了发货和结算方便,同时也为了更好的进行履约。
- 拆单的维度:店铺商家。这个主要是考虑到商品的货权、财权不一致,涉及结算和发货的问题。
仓:不同的发货仓,为了保证履约时效进行拆单。
品类:商品的属性和价值,如虚拟商品和实物、超大物、易碎品单独需要包装等。
发货时间:根据不同的商品特定的发货时间进行拆单。
5. 订单拆价
订单拆价其实核心就是将订单金额分摊至每个sku上,以便为其他系统提供sku维度金额的数据支持。
- 拆价时间点:订单一般会在落库后进行拆价
- 拆价的维度:拆分在每个sku上
- 拆价的要求:总帐要平,分拆后的金额一分不多,一分不少
6. 订单状态机
订单状态机是指不同流程下订单的状态主要分为几种:
- 待付款:用户提交订单,尚未付款
- 待发货:用户付款完成,待商家发货
- 待收货:商家已完成发货,待用户收货
- 已完成:用户或系统确认收货后,订单已完成交易
- 已取消 :未支付订单被取消
7. 取消订单
取消订单分为支付前取消和支付后取消,支付前取消又称作关单,触发关单时要释放库存,更新订单状态。
支付后取消又分为两种,一种是售前取消,一种是售后取消。区别在于取消订单时是否可以取消履约单,若履约单已下发生产,则无法通过售前取消,需要通过售后服务单走售后取消,售后取消这里暂且不表。
三、交易订单与售后其实上述交易订单的核心流程已经大致介绍完了,如果订单发起售后,如退换货等,这些都属于售后的范畴,售后系统都是通过售后服务单进行系统交互的,与正向的交易订单都应该是独立的服务和存储。
四、最后交易订单大致流程每个电商平台都大致相同,但是具体能够为上游提供的服务与能力却不尽相同,交易订单内部包涵的细节和逻辑十分复杂,不是简短的几句话可以囊括全的,这篇文章只是介绍了一些基础的核心流程,希望你能有所帮助!
作者:闫秀儿;公众号:闫秀儿
本文由 @闫秀儿 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自 Unsplash,基于 CC0 协议