電商訂單是如何生成的?它有何奧秘?

15 評論 10995 瀏覽 86 收藏 25 分鐘

交易系統(tǒng)一直是電商的核心模塊,幾乎所有業(yè)務(wù)都圍繞其展開,看似簡單的下單流程,實際涉及的模塊、內(nèi)容也很龐雜。這次就把訂單下單的整體鏈路抽象出來,與大家分享。

說到下單,對于用戶而言就是選擇商品-下單-支付-商品運輸-確認(rèn)收貨這樣簡單的主流程,保證了即使是網(wǎng)購新手也可以很快上手。

但對于電商交易系統(tǒng)來說,訂單的生命周期遠(yuǎn)不止上述流程那般簡單。見下圖,對于電商平臺來說一個訂單的生命周期涉及眾多系統(tǒng),下圖也僅僅是列出了各大系統(tǒng)間的交互流轉(zhuǎn),且僅涉及正向流程,逆向流程會更加復(fù)雜。

01 關(guān)于訂單

1. 什么是訂單

首先來聊一下什么是訂單?

訂單可以簡單理解為買家與賣家簽訂的一份具備法律效應(yīng)的合約。一般情況下,合同的訂立有要約和承諾兩個程序。賣家展示商品及其價值的行為,便屬于要約;購買者確認(rèn)購買商品并提交訂單的行為屬于承諾,訂單提交后,合同即成立并生效。所以大家可以簡單理解為訂單其實就是一份客戶與商家簽訂的合同,具有法律效益。

2. 訂單的生成與流轉(zhuǎn)

參考上文,如果從前端的體驗來看,訂單的生成就是加車后結(jié)算或立即購買,進(jìn)入結(jié)算界面確認(rèn)訂單各項信息無誤,提交后即生成訂單。

但我們從訂單在內(nèi)部系統(tǒng)生成的流程來看,在生成訂單前需要內(nèi)部各大系統(tǒng)進(jìn)行配合與支撐,包括風(fēng)控系統(tǒng)、商品系統(tǒng)、營銷系統(tǒng)、會員系統(tǒng)、庫存系統(tǒng)等。上述系統(tǒng)流程也僅是對交易主流程的梳理,涉及數(shù)據(jù)在各系統(tǒng)中如何交互并沒有列出,可見整個電商交易系統(tǒng)是何其復(fù)雜。

02 風(fēng)控系統(tǒng)——風(fēng)險訂單檢測、攔截

說到風(fēng)控系統(tǒng),最容易聯(lián)想到的是銀行借貸、P2P等金融領(lǐng)域的風(fēng)險控制。無論是金融行業(yè)還是電商行業(yè),風(fēng)控的本質(zhì)都是保證平臺利益不受損失。

電商訂單風(fēng)控主要側(cè)重于兩防——防刷單;防羊毛黨。

1. 防刷單

商家刷單影響平臺流量分配,間接影響商家管理體系的構(gòu)建;商家刷單體系大概歷經(jīng)了兩個時期:野蠻生長,集中刷單;平臺監(jiān)管,精細(xì)化刷單。

電子商務(wù)起步初期,唯銷量論英雄,”培養(yǎng)”了商家們的刷單習(xí)慣,加上平臺監(jiān)管缺失,一個人一臺電腦就能刷上一天,那時候管刷單不叫刷單,叫刷鉆/刷皇冠,主要刷的是店鋪等級。

但“好日子”很快到頭了,隨著平臺的流量分配由店鋪變?yōu)閱纹罚由瞎芾硪?guī)則、風(fēng)控體系不斷完善,商戶們的刷單成本也越來越高,刷單的工作也要交給”專業(yè)”人士來,所謂精細(xì)化刷單就是模擬用戶真實下單場景,騙過系統(tǒng),讓它認(rèn)為就是普通用戶在下單。精細(xì)到怎么搜到商品,需要瀏覽多少個商品,每個頁面停留多長時間,是靜默下單還是咨詢下單都有嚴(yán)格的規(guī)范。

業(yè)內(nèi)早就形成了認(rèn)知:沒有一勞永逸的防刷單策略,最好的方法就是不斷提高刷單的成本。

2. 防羊毛黨

羊毛黨薅羊毛的做法直接影響平臺/商家收益,損害正常用戶購物體驗。說到羊毛黨離不開另外一個詞:黑產(chǎn)。單兵作戰(zhàn)的羊毛黨不可怕,可怕的是成體系作戰(zhàn)的黑產(chǎn)團(tuán)隊,他們往往分工明確,主攻電商平臺業(yè)務(wù)(規(guī)則)漏洞和系統(tǒng)BUG,薅上一天夠吃一年。

上述流程圖,在用戶提交下單申請后會經(jīng)過風(fēng)控系統(tǒng)的風(fēng)險檢測,但此時的風(fēng)險檢測較為初級,主要針對確定性事件如用戶黑名單、下單環(huán)境等事件進(jìn)行下單攔截。

因為下單時風(fēng)控系統(tǒng)能夠拿到的字段信息較少,缺乏大量數(shù)據(jù)支撐,難以準(zhǔn)確判斷用戶下單行為,且下單流程屬于高并發(fā)場景,系統(tǒng)反饋需要在毫秒級完成,進(jìn)行復(fù)雜的風(fēng)控檢測嚴(yán)重拖慢系統(tǒng)進(jìn)程,因此更復(fù)雜的風(fēng)控會在用戶下單成功后異步進(jìn)行。

進(jìn)行異步風(fēng)控檢測后,系統(tǒng)會對命中風(fēng)控策略的訂單進(jìn)行關(guān)閉(取消訂單),當(dāng)然風(fēng)控并不只是攔截訂單,在復(fù)雜的場景下還需要有報警機(jī)制,人工介入。

拼多多在19年1月就因為優(yōu)惠券事件被黑產(chǎn)薅了數(shù)千萬羊毛,就是因為缺乏有效的風(fēng)控機(jī)制。

03 商品系統(tǒng)——商品信息的獲取

訂單生成時需要通過商品系統(tǒng)獲取商品基礎(chǔ)信息、數(shù)量、價格。同時部分電商平臺還會記錄交易快照,同樣是需要商品系統(tǒng)支持。

1. 關(guān)于交易快照

什么是訂單商品快照(交易快照)?看字面意思,很容易讓人理解為用戶下單時針對訂單商品詳情的一個快照(截圖),其實嚴(yán)格來講,商品快照是一個靜態(tài)數(shù)據(jù)合集,記錄了用戶下單時的商品信息,包含:商品圖片、標(biāo)題、描述、服務(wù)等要素。

淘寶是國內(nèi)較早啟用交易快照的電商平臺,為了解決商家與用戶交易糾紛時難以追溯用戶下單時的商品情況,淘寶的產(chǎn)品經(jīng)理引入了交易快照的概念,即用戶的每一次下單,都會對下單時的商品信息做一個記錄,快照作為買賣雙方發(fā)生交易的憑證,任何交易糾紛或者投訴都將以快照為準(zhǔn)。

大多數(shù)電商平臺做交易快照的初衷是為了解決交易糾紛,此外,交易快照還運用于法律訴訟場景,法院進(jìn)行相關(guān)訴訟的裁定時,是認(rèn)可交易快照作為證據(jù)的,但需要證明快照就是用戶下單時的商品快照,無法被篡改。

2. 交易快照的記錄

交易快照的記錄:目前主要有兩種記錄方式,如圖:

  • 第一種:用戶每下一單都對訂單商品信息進(jìn)行一次信息記錄,此操作主要由交易系統(tǒng)完成,弊端也很明顯在下單高峰期,會對系統(tǒng)性能產(chǎn)生影響,且數(shù)據(jù)存儲量大。該方案主要適用于低頻交易場景,如大宗商品交易等。
  • 第二種方法:由商品系統(tǒng)(基礎(chǔ)數(shù)據(jù))對每一次商品信息變更做備份,之后根據(jù)用戶下單時間映射商品快照。此方案適用于高頻交易場景,且對高并發(fā)下交易系統(tǒng)性能不會產(chǎn)生太大影響。

04 庫存系統(tǒng)——商品庫存校驗

1. 庫存的定義

關(guān)于庫存的定義,百科上給出的解釋是:“倉庫中實際儲存的貨物”。但這里我特別提到了虛擬庫存,為了與實際倉庫庫存做區(qū)分。

目前商家在電商平臺維護(hù)的庫存都叫虛擬庫存,虛擬庫存可以簡單理解為不存在的庫存,它并不跟實際倉庫庫存關(guān)聯(lián),可以認(rèn)為虛擬庫存就是商家指定的平臺的一個渠道可售庫存。如果商家有一批商品正在生產(chǎn)中、采購中、運輸中或正在入庫,亦或者商家覺得能承擔(dān)住超賣的風(fēng)險,有辦法從其他地方調(diào)貨,設(shè)置虛擬庫存時就可能大于實際倉庫庫存。

2. 庫存預(yù)占與庫存校驗

說到庫存預(yù)占,在電商發(fā)展過程中有個很經(jīng)典的問題:是下單減庫存還是支付減庫存?

現(xiàn)在想一想,應(yīng)該在什么時候減庫存?

線下實體商超是怎樣的?

這里不考慮實體商超倉庫庫存的情況,只考慮貨架庫存。什么時候減庫存呢?或者說什么時候這個庫存會被用戶占據(jù)呢,應(yīng)該是在用戶從貨架拿走商品,放入購物車的時候。

那么線上購物流程也按照加入購物車即減庫存呢?顯然是不行的,線上購物車的”加車”操作幾乎是0成本,決定它更像是作為一個商品收藏池或備忘錄,用戶把備選的商品放入購物車后再進(jìn)行二次選品,加車商品數(shù)遠(yuǎn)大于用戶實際購買數(shù),故在購物車即扣減庫存效率是低下的。

如果是在下單的時候扣減庫存呢?

相當(dāng)于用戶下單,系統(tǒng)已經(jīng)把相應(yīng)庫存分配給此用戶,用戶支付成功后即可發(fā)貨,這是正常的流程。但會出現(xiàn)下單不支付惡意預(yù)占庫存的情況,導(dǎo)致商家商品未能及時售出,銷售受損。

如果更進(jìn)一步,支付成功時再扣減庫存呢?

此方法一定程度提高了惡意下單的門檻。但問題也產(chǎn)生了,當(dāng)商品供不應(yīng)求,出現(xiàn)大量用戶搶購的情況,此時大部分用戶都能下單成功,但在支付環(huán)節(jié)僅有少部分用戶可完成支付,對于未成功支付的用戶來說,體驗太差。

上述兩種有效方案,無論是下單減庫存還是支付成功減庫存,都不是完美的解決方案。那么應(yīng)該選擇哪一種呢?蘇杰在《淘寶十年產(chǎn)品事》中回憶當(dāng)時淘寶的產(chǎn)品經(jīng)理也是糾結(jié)于選擇哪種方案,最后折中,提供兩種方案,商家自行選擇。

在我看來,對于平臺型電商,下單減庫存優(yōu)于支付成功減庫存。

  • 從體驗角度上看:用戶(購物)體驗是平臺型電商的核心競爭力。下單減庫存影響商家銷售,支付減庫存影響用戶體驗,所以從購物體驗角度做取舍,下單減庫存對用戶較為友好。
  • 從系統(tǒng)層面上看,支付減庫存是要比下單減庫存復(fù)雜的。支付減庫存涉及 訂單系統(tǒng)-庫存系統(tǒng)-支付系統(tǒng)的交互,而下單減庫存僅由訂單系統(tǒng)-庫存系統(tǒng)完成即可。支付減庫存在高并發(fā)的場景下容易出現(xiàn)超賣現(xiàn)象。

  • 下單減庫存存在的問題:惡意下單不支付??梢酝ㄟ^系統(tǒng)規(guī)則來解決:如單用戶限購,超時未支付自動取消訂單(庫存返還)

05 訂單系統(tǒng)——訂單信息記錄

1. 訂單拆單

1)為什么要進(jìn)行訂單拆單?

核心有兩點:便于結(jié)算;便于發(fā)貨。

主要是圍繞上述兩點核心進(jìn)行,常見拆單規(guī)則有:

  • 按商家拆單;不同商家間需要拆單
  • 按倉庫拆單;不同倉庫間需要拆單
  • 按商品重量、體積拆單;快遞公司對包裹最大體積/重量有要求
  • 按商品價值拆單;貴重、易損商品單獨拆分等
  • 按發(fā)貨方式拆單;如實物商品與虛擬商品混合下單,發(fā)貨方式不同
  • 按配送時效拆單;如正常商品與預(yù)售商品混合下單,發(fā)貨時效不同

具體拆單規(guī)則根據(jù)不同平臺不同業(yè)務(wù)場景而異,按照便于結(jié)算、便于發(fā)貨兩大方向去做訂單拆分便能滿足大部分業(yè)務(wù)需求。

2)什么時候拆單

先來看下京東、淘寶分別在什么時候進(jìn)行拆單

  • 京東:用戶訂單支付成功后進(jìn)行拆單
  • 淘寶:用戶提交訂單,支付前即對訂單進(jìn)行拆單

那么什么時候拆單有何講究?因為業(yè)務(wù)形態(tài)不同,淘寶以商家為主,京東以自營為主。故淘寶拆單邏輯較為簡單,按商家拆單即可滿足絕大部分拆單訴求;而京東因涉及自營倉+商家,除了商家間的拆單,還涉及倉間/倉內(nèi)拆單,拆單邏輯更為復(fù)雜,將拆單邏輯后置到支付成功后,能夠減少無效拆單(未支付訂單不拆單),提升高并發(fā)時系統(tǒng)性能。

所以在什么時候進(jìn)行訂單拆分,遵循兩大原則:

  1. 占用資源最小原則(特別要考慮高并發(fā)場景);
  2. 訂單推送前需要完成拆單(推送至商家/倉庫前都需要完成拆單)

2. 訂單優(yōu)惠計算與優(yōu)惠分?jǐn)?/h3>

早期的淘寶,商品就一個價格,即售賣價,對于商家、用戶來說都足夠簡單,所見即所得。但這種平衡很快被一個功能打破——購物車。購物車的上線標(biāo)志著淘寶進(jìn)入營銷時代,后來我們熟知的滿減、滿折、滿贈、M元N件等促銷玩法都要仰仗購物車。那么訂單優(yōu)惠是怎么計算的呢?

1)遞進(jìn)式門檻計算

既然促銷活動有了,有促銷就會有優(yōu)惠,這些優(yōu)惠怎么算呢,讓我們記住這個詞【遞進(jìn)式門檻計算】,就是它,讓很多用戶抓狂。

提問:購買兩件商品A和B,A單品優(yōu)惠價100元;B單品優(yōu)惠價200元,參加店鋪促銷滿300減50,店鋪優(yōu)惠券滿280減40;同時還參加跨店鋪滿減,每滿290減50。問:在遞進(jìn)式門檻計算規(guī)則下,到手價是多少?

按照【遞進(jìn)式門檻計算】最終到手是:250,這就是一頓操作猛如虎,一看優(yōu)惠兩塊五。

遞進(jìn)式優(yōu)惠計算核心規(guī)則即:根據(jù)上一層級優(yōu)惠扣減后的金額來判斷是否滿足下一層級的優(yōu)惠門檻。所以在【遞進(jìn)式門檻計算】時期,經(jīng)常出現(xiàn)用戶看到某一商品參加了多種活動、領(lǐng)取了各種優(yōu)惠券,最終結(jié)算時僅可以使用一種優(yōu)惠而大罵商家、平臺虛假營銷的情況。

2)平行式門檻計算

前文我們提到:購物體驗是平臺型電商的核心競爭力,在此背景下,淘寶、京東于18年、19年相繼用【平行式門檻計算】替代【遞進(jìn)式門檻計算】。

采用平行式門檻計算規(guī)則后,優(yōu)惠計算清晰明了,以前要糾結(jié)各級優(yōu)惠的觸發(fā)門檻,現(xiàn)在湊單只需要盯著各類優(yōu)惠里門檻最高那個就行,如圖:

此規(guī)則的上線對于平臺用戶、商家來說無疑是利好的,用戶能夠一目了然感知優(yōu)惠力度,商家也能清楚掌握讓利程度。

但這里面存在一個大坑,即平臺在切換優(yōu)惠計算規(guī)則時歷史產(chǎn)生的促銷活動、優(yōu)惠券怎么辦?不處理,商家就要大出血,如圖。

淘寶、京東面對此坑時也是毅然在上線前將平臺所有滿減、滿折、滿贈等促銷活動及優(yōu)惠券作廢。

3. 訂單狀態(tài)的定義

我們常見的訂單狀態(tài),如下:待付款-待發(fā)貨-已發(fā)貨-已完成-已評價 (已評價狀態(tài)有時也不作為主狀態(tài)存在)

已關(guān)閉、異常

作為電商行業(yè)從業(yè)者需要經(jīng)常跟訂單打交道,每個人都能隨口說出訂單狀態(tài)包含哪些,甚至連會網(wǎng)購的大媽都能說出個123。訂單狀態(tài)算是一套很成熟的體系,對于缺少電商行業(yè)經(jīng)驗的產(chǎn)品來說,在定義訂單狀態(tài)時直接照搬這一套,大概率都不會出錯。

但在這里我還是想聊一下對于訂單狀態(tài)的思考:

首先,說一下狀態(tài),這個詞對于產(chǎn)品經(jīng)理來說一定不陌生,日常工作中各種單據(jù)、邏輯判斷都會用到。什么是狀態(tài)?我的理解:事物處于某個穩(wěn)定的情態(tài),在無外力的影響下會一直處于一個穩(wěn)定態(tài),這個穩(wěn)定態(tài)就可以稱為狀態(tài)。

那么反過來說,在外力的作用下狀態(tài)是可以改變的,這里就衍生出來產(chǎn)品設(shè)計中的一個法則叫“一動一態(tài)”即兩狀態(tài)間有任何數(shù)量級的操作都可以抽象為一個動作,一動一態(tài)的好處主要體現(xiàn)在:降低用戶認(rèn)知成本;便于制定、處理各種狀態(tài)值

回到訂單狀態(tài),如圖,用戶下單后的一系列操作其實是由三個維度的狀態(tài)(支付狀態(tài)、物流 狀態(tài)、評價狀態(tài))構(gòu)成,但多維度狀態(tài)的存在容易引起認(rèn)知混亂,為解決這一問題,我們傾向于創(chuàng)建一個全局維度的狀態(tài)——訂單狀態(tài)

但如上圖中所示,構(gòu)建后的全局維度涉及訂單下單-配送-簽收評價全流程,涉及:待支付、待發(fā)貨、待攬件、運輸中、派件中、已簽收、已評價,狀態(tài)值依然龐雜。想

一下,我們創(chuàng)建全局維度狀態(tài)要解決的就是降低使用者(商家、消費者)認(rèn)知成本,知道在什么步驟需要執(zhí)行什么操作,所以我們歸納下上述訂單狀態(tài)流轉(zhuǎn)時進(jìn)行相關(guān)操作的執(zhí)行角色:

  • 消費者:支付、簽收、評價
  • 商家:發(fā)貨
  • 物流公司:攬件、走件、派件

我們會發(fā)現(xiàn),需要消費者、商家操作的僅有:支付、發(fā)貨、簽收、評價。在定義一動一態(tài)法則時我們講到:任何數(shù)量級操作都可以抽象為一個操作,為了降低使用者(商家、消費者)認(rèn)知成本,我們可以把[發(fā)貨、攬件、走件、派件] 這一流程抽象為一個操作——發(fā)貨。這樣一來就明了了

4. 訂單號的設(shè)計

訂單號的設(shè)計是一門藝術(shù),能夠參與訂單號規(guī)則設(shè)計是一件令人興奮的事情,這種機(jī)會通常只在電商項目從0到1的時候有。那么訂單號的設(shè)計應(yīng)遵循哪些原則呢?

1)唯一性

訂單號作為訂單表的主鍵,需要確保唯一性。

2)易讀性

這里易讀性主要體現(xiàn)在系統(tǒng)易讀性和溝通易讀性。

要求訂單號不宜過長且盡量為純數(shù)字,不宜出現(xiàn)字母、符號、數(shù)字混用的情況,否者對于系統(tǒng)存儲、查詢性能、以及與用戶的溝通成本來說都是一種負(fù)擔(dān)。

3)安全性

非特殊情況盡量不要在訂單號中帶入平臺運營特征信息,如訂單數(shù)量,避免泄露運營數(shù)據(jù)。除非故意要讓競對知道你的運營數(shù)據(jù)。

瑞幸咖啡較早之前門店訂單量就是逐一增加,后續(xù)也加入了隨機(jī)因子,就是擔(dān)心外界通過訂單編號獲得店鋪每天成交量。

4)擴(kuò)展性

訂單號設(shè)計需要考慮擴(kuò)展性,如隨著平臺業(yè)務(wù)發(fā)展,訂單量激增訂單號不夠用的情況

5)語義性

訂單編號規(guī)則中加入帶有語義的特征信息,能在一定程度上提升平臺人員處理訂單的效率與便捷性。

常見的特性信息有:訂單生成時間(年月日)、下單渠道、支付渠道、業(yè)務(wù)類型等,但訂單編號中不宜攜帶過多特征信息,否則會出現(xiàn)不法分子通過描述訂單信息博取用戶信任進(jìn)行實施詐騙。

說到語義性,細(xì)心的同學(xué)會發(fā)現(xiàn),自己淘寶訂單號后6位都是一樣的。訂單號后6位其實就是用戶id后6位。那么淘寶訂單編號中用了用戶id后6位是否代表了語義性?答案是否定的,因為只用后6位id并不能準(zhǔn)確定位到某一個用戶。

那么淘寶訂單編號后6位用戶id后6位的目的是什么?

翻遍了百度、知乎,沒有找到答案。

我是偶然間翻到一份淘寶技術(shù)演變PPT,看到訂單表分庫的邏輯時才恍然大悟。

一般的平臺型電商,訂單量大,為保證查詢檢索速度,都會采用分庫的形式,將巨量的訂單信息分庫存儲,一般情況下訂單系統(tǒng)同時維護(hù)了一個訂單號和userid的關(guān)聯(lián)關(guān)系,先根據(jù)訂單號查到userid,再根據(jù)userid確定分表進(jìn)而查詢得到內(nèi)容。而淘寶在訂單號上下功夫,通過訂單號后6位直接鎖定庫表,大大提升高并發(fā)下的系統(tǒng)查詢性能。

從這個策略我們也可以看到淘寶用戶訂單庫是按照用戶id后6位存儲的,例如:XXXX452154格式的用戶訂單都是儲存在一個分庫中。

 

本文由 @阿鐵 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自 Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 深入淺出,好文章

    回復(fù)
  2. 期待支付系統(tǒng)流程的文章

    來自江西 回復(fù)
    1. 下一篇文章應(yīng)該會聊一聊電商直播

      來自北京 回復(fù)
    2. 你的下一篇文章出來沒,非常期待

      來自江蘇 回復(fù)
    3. 近期入職新公司,比較忙。近兩周會先分享一篇評分模型相關(guān)的

      來自北京 回復(fù)
  3. 干貨文章,一直做筆記看完

    來自內(nèi)蒙古 回復(fù)
  4. 贊,相加作者微信好友

    來自北京 回復(fù)
    1. atie250

      回復(fù)
  5. 咱,相加作者微信好友

    來自北京 回復(fù)
  6. 非常好的文章,期待再出新品(淘寶為每個用戶都分了一個分庫?)

    來自四川 回復(fù)
    1. 一批用戶一個庫,如用戶id一共有10位,后id六位相同的用戶訂單都在一個分庫里

      回復(fù)
    2. 一批用戶一個庫,如:userid一共有10位,id后六位相同的用戶訂單都在一個分庫里

      來自北京 回復(fù)
    3. 我的理解是為每個尾號相同的用戶分了一個庫

      來自內(nèi)蒙古 回復(fù)
  7. 這才是論壇需要的好文章

    來自浙江 回復(fù)
  8. 作者感謝你哦 ? ,最近在看訂單相關(guān)的

    來自廣東 回復(fù)