電商訂單系統,你該如何設計

2021-02-19 PHP自學中心
一個訂單系統的設計並不簡單,它需要一批又一批的人去維護、去優化,根據公司的業務情況做出改變與兼容。這篇文章主要與大家分析一下電商訂單系統該如何設計。在一個電商所有模塊中,訂單系統作為最為核心的模塊,它決定了整個流程能不能順暢的執行,起著承上啟下的作用。設計訂單系統時需要考慮幾個模塊。只有明確考慮所有模塊,才能保證訂單系統的穩定性和可擴展性。

實際上,界面上顯示的訂單信息由各種訂單欄位組成。完成訂單欄位在某種程度上代表著訂單流程的完整。

訂單欄位包括幾個部分,其中金額信息因為特殊性,單獨來講解,本質上,金額信息也是屬於商品信息的。

商品信息:商品信息屬於訂單系統的上遊端。所有訂單都是從商品演變而來的。從商品到訂單,訂單系統必須收集相關的商品信息,包括商店信息,商品ID,商品規格,商品數量和商品價格。獲得的商品信息將顯示在訂單詳細信息頁面上。形成訂單信息後,倉庫可以方便地進行揀選和打包。

用戶信息:用戶信息包括購買用戶的ID,收貨人,收貨人地址和聯繫信息。某些平臺的用戶成長系統是根據平臺上的用戶活躍度來計算的。例如,京東(JD.com)具有類似的增長指標,例如會員級別和積分卡。此時,除了普通信息欄位外,還需要獲得用戶信息。獲取用戶級別,購買後獲得的積分以及用戶所在等級可以從訂單中扣除的折扣等,然而這些具體操作取決於公司的業務方向。

金額信息:由於金額信息的特殊性,理論上認為金額信息應該屬於商品信息。金額信息的特殊性在於它不代表金額,涉及到商品的金額,折扣金額和付款金額等。折扣金額所涉及的信息更為複雜。例如,具有自營和第三方結算的電子商務平臺將具有商家折扣和跨商店折扣。這些折扣分為不同的類型,例如現金扣減和消費者優惠券扣減,點數獲取,禮品卡扣減或以上各項的組合。如果要很好地涉及此內容,則需要根據公司的當前業務狀況列出支持的優惠類型,然後枚舉各種組合下的優惠類型以確保流程的完整性。

時間信息:記錄各個狀態點下的時間,一是記錄,二也是方便售後驗證與客戶分析。訂單時間是根據訂單狀態改變而改變的。時間信息看起來不重要,其實是訂單系統一個重要的組成部分,具體看以下:
下單未付款:即訂單創建時間、下單時間;待發貨狀態:訂單創建時間、下單時間、支付時間;待收貨狀態:訂單創建時間、下單時間、支付時間、發貨時間;交易完成狀態:訂單創建時間、下單時間、支付時間、發貨時間、完成時間;待退款狀態:退款訂單創建時間、申請退款時間;交易關閉-用戶取消:訂單創建時間、下單時間、用戶取消時間;交易關閉-僅退款:訂單創建時間、下單時間、支付時間、退款申請時間、退款成功時間;交易關閉-退貨退款(包含部分僅退款):訂單創建時間、下單時間、支付時間、交易完成時間、退款申請時間、退款時間。

訂單信息:訂單信息在訂單系統是最為核心,訂單信息最重要的又是訂單的狀態。一個電商系統中,訂單狀態分別有以下幾種狀態:【待付款】、【待發貨】、【待收貨】、【待評價】、【交易完成】、【用戶取消】、【僅退款】、【退貨退款】。而我們一般會將後三種統一放在訂單售後獨立呈現,方便平時商家操作的便捷性。
下面看看流程圖:

2. 訂單流程

訂單流程是指從訂單生成到完成的過程,包括前正向流程和反向流程。  

正向流程就是正常的網購的步驟:訂單生成->付款訂單->賣方發貨->確認收貨->交易成功。

而逆向流程則是各種退款退貨的流程。

(1)正向流程

訂單生成:用戶下單後,系統需要生成訂單,此時需要先獲取下單中涉及的商品信息,然後獲取該商品所涉及到的優惠信息,如果商品不參與優惠信息,則無此環節。

接著獲取該帳戶的會員權益(這裡其實需要注意的是:優惠信息與會員權益是有區別的,就好比商品滿減是優惠信息,新人立減是會員權益,一個是針對商品,另一個是針對帳戶)。

支付訂單:用戶支付完訂單後,需要獲取訂單的支付信息,包括支付流水號、支付時間等。支付完訂單接著就是等商家發貨,但在發貨過程中,往往還有一種情況存在,很正常卻也比較複雜,就是訂單拆單。

訂單拆單分兩種:一種是用戶挑選的商品來自於不同渠道(自營與商家,商家與商家),此時就需要拆分訂單,並分開結算,這裡還涉及父子訂單的說法,這裡不再贅述。

另一種是在SKU層面上拆分訂單:不同倉庫,不同運輸要求的SKU,包裹重量體積限制等因素都需要將訂單拆分。比如:商品A只在甲倉庫有,商品B又只在乙倉庫有,此時會將商品A與商品B拆分成兩個訂單。或者有些企業的做法是將商品A/B調撥到另外一個倉庫統一發貨,也方便了用戶。

訂單拆單看起來簡單,其實裡面涉及到底層的系統支持,如你需要對每一個倉庫的貨品進行相對準確的盤點,且做到實時同步(涉及到倉庫精細化管理),對商品進行準確分類與擺放,對商品信息記錄準確無誤等。

這其中哪一模塊都是一個浩大的工程,PM一般進入一家公司都會在原有(半成品)的基礎上進行優化,大家不妨多思考一下底層業務,只有在底層做好精細化管理,才能支持線上豐富的用戶需求。

商家發貨:商家發貨過程也有一個標準化的流程,上面也有講到,訂單拆分時會涉及到倉庫間調撥,然後倉庫會對商品進行打單、揀貨、包裝、交接快遞配送。這套標準化流程如果優化好,也是一個大工程,這裡不再贅述,建議大家看看庫存與倉庫管理方面的書籍,詳細了解。

確認收貨:商家發貨後,就是等快遞配送了,訂單系統需要接入一些常用快遞企業的接口,方便用戶與商家在站內查詢快遞信息。

交易成功:收到貨後,不是一個服務的結束,相反是一個服務的開始。訂單系統需要在快遞被籤收後提醒用戶對商品做評價,這裡要注意,確認收到貨不代表交易成功,交易成功是指在收到貨X天的狀態,此時訂單不在售後的支持時間範圍內。到此,一個訂單的正向流程就算走完了。

(2)逆向流程

一個電商的基本逆向流程如上圖所示,訂單的逆向流程複雜就在於它幾乎允許在正向流程的任何環節出現。有人會問:用戶未收到貨為什麼還能退款?

其實我們換位思考,也很容易理解。假想你是用戶,買了一雙鞋子,付了款發了貨,正在美滋滋的等待收快遞,然後剛好路過一家鞋店看到剛買的同款鞋子大促銷,於是你就拿起手機點擊退款,買下了這雙促銷的鞋子。

這種場景其實是很普通也很正常的用戶日常,所以我們的訂單系統就必須得支持用戶各種豐富的場景需求,也十分考驗PM的業務滲透能力,好在電商的先行者淘寶已經做了很多基礎建設和用戶教育,我們直接可以拿來套用,不過還是要根據各個公司的業務情況進行修改。

取消訂單:用戶提交訂單時,在跳轉至支付前直接退出,此時用戶原則上屬於取消訂單,因為還未付款,則比較簡單,只需要將原本提交訂單時扣減的庫存補回即可。

支付失敗:用戶進行支付時退出,或者取消支付,我們將其列為支付失敗狀態,此時處理同上,將扣減的庫存補回可銷售庫存即可。

付款後退款:用戶支付成功後,商家還未發貨,支持用戶申請退款,此時如果倉庫與客服是分離的,則需要先檢查倉庫是否已經發貨,若已發貨則應與客戶溝通是否可以收到貨後再進行退款,如果倉庫還未發貨,則可直接同意用戶退款。或者企業接入菜鳥物流,實行截件功能,不過這種操作還不成熟,成本會比較大,不適合中小創業型公司。

缺貨退款:用戶支付成功後,商家發貨時發現倉庫缺貨(如果提交訂單扣減庫存,則會減少缺貨情況,為什麼是減少而不是避免?因為倉庫管理商品時沒辦法做到100%精準,所以信息有時候會不準確,導致線上的可銷售庫存顯示有庫存而倉庫已經售空的狀態),則需要與用戶協商是否退款。

這個流程訂單系統可以做到流程化、自動化,連接消息中心和倉庫管理系統去實現,難點在於消息的實時性。我就遇到過在淘寶買過一件上衣,一天過去了,商家跟我說沒貨了,我當時殺人的心都有了。

待收貨退款:這個問題目前還沒有特別完美的解決方法,商家發了貨之後,用戶還未收到貨,此時貨在路上。大體上分為兩種做法:一種是用戶收到貨後重新寄回;另一種是用戶直接拒收包裹,包裹直接退回原地址。

退貨退款:用戶收到貨後,想要申請售後,則此時需要提供讓用戶輸入售後原因,包括上傳憑證的功能,如果與商家協商無果,還需要增加平臺客服的入口,方便用戶進行申訴。而協商結果/申訴成功後直接觸發自動退款機制,退款後觸發消息通知,同時觸發交易關閉狀態,整個售後過程才算結束。

關注本公眾號:PHP自學中心,回復相應的關鍵詞,領取以下視頻教程

0 全流程開發 TP6.0實戰高並發電商服務系統

連結:https://docs.qq.com/doc/DV2J5WWpoRnlYYXhB

1 產品經理高清實戰

公眾號裡回覆:07212019

2 設計模式實例剖析與深入解讀

公眾號裡回覆:20190714

 

3 Git&GitHub視頻教程

公眾號裡回覆:gitnnnx

 

4 尚矽谷Redis

公眾號裡回覆:0713ksy1

5 SQL 注入及如何防止

公眾號裡回覆:20190712

 

以上是本文的全部內容,希望對大家的學習有幫助,也希望大家多多支持 php自學中心 

相關焦點

  • 一個電商供應鏈系統的DDD實戰
    本文是 Keep 利用 DDD 改造電商供應鏈系統的一次精彩實戰,InfoQ 架構頭條獨家分享,以供大家參考交流。 文章作者:武清明,目前他在 Keep 負責商業化業務中臺研發和規劃工作,擅長電商業務系統架構設計,採用 DDD 合理簡單化設計複雜電商系統,提升系統功能模塊的復用性和擴展性。今天的主角是供應鏈系統,又被稱為進銷存系統。
  • 跨境電商ERP系統是什麼?為什麼需要電商ERP系統?
    跨境電商ERP的作用1 電子商務訂單處理功能也就是說,跨境電商ERP從平臺上處理相應的訂單,合理排序訂單,分配倉庫,接納物流,添加相應的禮品ERP含義,甚至合併訂單。例如,跨境電商ERP可以根據商店設置的API接口批量拉單。
  • 案例實戰:每日上億請求量的電商系統,如何優化JVM年輕代垃圾回收參數?
    大促高峰期訂單系統的內存使用模型估算內存到底該如何分配?新生代垃圾回收優化之一:Survivor空間夠不夠新生代對象躲過多少次垃圾回收後進入老年代?多大的對象直接進入老年代?別忘了指定垃圾回收器今日思考題1、案例背景引入按照慣例,我們接下來會用案例驅動來帶著大家分析到底該如何在特定場景下,預估系統的內存使用模型。然後合理優化新生代、老年代、Eden和Survivor各個區域的內存大小。接著再儘量優化參數避免新生代的對象進入老年代,儘量讓對象留在新生代裡被回收掉。
  • 淺談跨境電商ERP系統是什麼?有哪些優勢?跨境賣家收藏
    那這些賣家該怎麼辦呢?跨境電商ERP系統的主要功能包括產品採集、產品管理、訂單管理、分類管理、物流管理、報表管理以及上傳亞馬遜店鋪的一鍵式翻譯等,亞馬遜賣家可以藉助跨境電商ERP系統更好的運營和管理自己的店鋪。
  • 如何設計一個權限系統
    這就引入了 "角色(Role)" 概念,一個角色可以與多個用戶關聯,管理員只需要把該角色賦予用戶,那麼用戶就有了該角色下的所有權限,這樣設計既提升了效率,也有很大的拓展性。舉個例子,某電商後臺管理系統,有拼團活動管理角色,我們可以設置一個拼團用戶組,該組可以包括研發部的後臺開發人員,運營部的運營人員,採購部的人員等等。每個公司都會涉及到到組織和職位,下面就重點介紹這兩個。1.5.1 組織
  • 非常有價值的電商系統,包括前臺商城和後臺管理系統!
    概述mall項目致力於打造一個完整的電商系統,採用現階段流行技術實現。
  • OMS智能訂單管理系統
    OMS系統應用於實現訂單接收、訂單拆分與合併、運送和倉儲計劃制訂、任務分配、成本結算、事件與異常管理及訂單可視化等。與WMS系統、TMS系統、FMS系統、CDS系統等執行系統緊密結合,能夠大幅提升供應鏈執行過程的執行效率,有效降低成本,並幫助實現供應鏈執行的持續優化。什麼是OMS訂單管理系統?
  • 智能照明系統,該如何設計?
    通常家居智能照明系統的電路布線方案及安裝都是由專業廠家來完成的,專業的事要由專業的人來做。設計師們要做的是了解產品,知道如何讓產品為自己的設計更好的服務,畢竟智能系統只是輔助手段。接下來,來看看家居智能照明系統是如何設計應用的吧!
  • 女朋友都能看懂的「系統設計指北」
    一、系統設計是什麼?一說到系統設計,可能大家腦子裡就冒出了高並發、微服務、負載均衡、分布式、集群、CAP、一致性哈希、.這樣高大上詞語。我覺得系統設計就是如何把資源最優化配置,簡單來說就是你需要設計計算、存儲各個模塊,並且是在一定的限制條件下。
  • 手把手教你做系統權限設計,看完不要說還不會
    這就引入了 "角色(Role)" 概念,一個角色可以與多個用戶關聯,管理員只需要把該角色賦予用戶,那麼用戶就有了該角色下的所有權限,這樣設計既提升了效率,也有很大的拓展性。舉個例子,某電商後臺管理系統,有拼團活動管理角色,我們可以設置一個拼團用戶組,該組可以包括研發部的後臺開發人員,運營部的運營人員,採購部的人員等等。每個公司都會涉及到到組織和職位,下面就重點介紹這兩個。1.5.1 組織
  • 面試官:你給我畫一下秒殺系統的架構圖!
    博主畢業4年了,最近秋招開始了,每次回想起自己的秋招,都感覺到當時自己特別的可惜(菜是原罪),自己當時簡歷上面的項目,只有一個 農資電商平臺,當時的秒殺系統還沒有那麼普及(簡歷人均秒殺系統)。 第一次微眾面試當年自己的八股文背的其實還可以,但是自己的項目就只是一個單機系統,分布式?微服務?
  • 暗訪:電商平臺中的地下黑工坊暴改無人機,究竟是如何操作?
    這家黑網店通常會給顧客承諾,「無需誇張消費,你的無人機就能媲美——軍方戰機,飛躍近10公裡的超遠視距」。這一切究竟是怎樣辦到的呢?一起來看看吧!  最近有網友「曬」出他新改裝的御無人機飛躍「深港」兩地的視頻。視頻中試飛者(也是改裝機持有人)雙手汗溼地在信號近滿格的情況下,讓其飛機飛出了驚人的7.4公裡。
  • 你還不會用網格系統?我來教你!
    網格系統就與田字格原理一樣的,事先我們在PS畫板中制定好網格輔助線,在做設計的過程中就以此為參考線,將文字和圖片沿著網格對齊,使版面變得整齊,讓畫面中充滿規範秩序感,不至於顯得凌亂。秩序是美感的重要前提。
  • 自營生鮮電商快遞箱,採用乾冰為冷凍劑方案
    關於乾冰冷藏快遞的問題群裡也討論了幾次,群友給出了各自的實戰經驗和數據,甚至還有群友組織全國幾個主要城市相互發乾冰冷藏的快遞箱,來驗證如何更合理、有效的使用乾冰做生鮮電商的保鮮冷藏冷凍劑。結果是沒有一個完善的結果。還是總有人會提出這個問題。還是那句話:不是痛點不夠痛,而是難點太難。
  • 《設計系統》 第二章,逐步設計你的設計系統
    ~譯文:去開始著手設計一個設計系統往往會讓人感到畏懼,有太多事情需要考慮——設計風格,怎樣模塊化和可適配化地進行設計,它將如何被其他團隊使用,以及如何向公司的決策者推動這個想法。到底要從哪一方面開始著手設計呢?要解決大問題,可以將它分解成若干小問題。在進入設計流程之前,首先需要考慮好參加設計系統的成員以及團隊的協作方式。一旦找到合適的人組建團隊,你就可以開始思考系統的設計語言了,包含顏色排版,間距等等。視覺設計語言將會是UI樣式庫的基礎——一系列能被快速組裝並形成界面的組件。現在我來分享下,如何開始一步一步設計你的設計系統吧。
  • 如何設計無焦系統
    這篇文章介紹了如何在OpticStudio中對無焦系統 (Afocal System) 進行優化和設計。其中重點討論了什麼是無焦系統,如何在角度單位下分析無焦系統,如何處理柱面無焦系統以及如何處理具有多個聚焦和無焦空間的系統。
  • 跨境電商:順豐「出海」再揚帆
    在短短的半年時間內,天貓集運、SFBuy、俄羅斯小包、歐洲小包、順豐海淘等一系列產品和服務創新在令人目不暇給的同時,也使順豐在原本的嚴肅、專業的面孔之外,平添了幾分活躍與跳脫的氣質。抓住機遇順勢而上國際電商服務事業部成立於2014年7月1日,這意味著順豐正式發力跨境電商綜合物流服務領域。
  • 給你一個億的keys,Redis如何統計?
    聚合統計聚合統計指的是多個元素聚合的結果,比如統計多個集合的交集、併集、差集在你需要對多個集合做聚合統計的時候,Set集合是個不錯的選擇,除了其中無重複的數據外,Redis還提供了對應的API交集在上述的例子中交友系統中統計雙方的共同好友正是聚合統計中的交集
  • 使用Axure設計中,大型的後臺系統原型總結
    上篇在產品原型設計中,經常會涉及到後臺系統原型的設計,如何設計出更規範標準的後臺系統原型,是很多產品同行們都會遇到的一個問題。
  • 騰訊雲11·11:千億訂單背後的安全「暗戰」
    回顧近年來的電商大促,最具特色的便是搶購、秒殺活動了,而這也使得 Web 訪問量可能瞬間陡增十倍甚至是數十倍,對接入層、邏輯層的按需、實時、快速平行擴展能力提出了較高的要求,如選用傳統的硬體設備搭建集群,會遇到成本高昂,運維繁瑣等問題。對於這些問題,可以採用負載均衡配合雲監控、彈性伸縮(Auto Scaling)、消息隊列、分布式緩存、分布式資料庫等服務來解決。