電商技術解密之購物車

16 評論 34775 瀏覽 298 收藏 10 分鐘

雙十一剛過,京東、天貓又創神跡。今天來跟大家聊一聊購物流程中比較重要的一個環節:購物車。

話說早期的電商是沒有購物車這個東西的,印象中應該是從2007年才開始有購物車(哎,又暴露年齡了),早期沒有購物車的主要原因主要有2個,一個是那時候電商還沒有那么成熟,網購的人還沒有現在這么瘋狂,購買頻率不高,最主要的是大多數人一次只買一個商品。另外一個原因是那時候還沒法解決根據賣家拆單后貨款怎么分?同一個訂單有多個賣家郵費怎么算等類似問題。后面隨著整個電商的發展才有了購物車這個東東,現在購物車在整個購物流程中已經是非常重要的一個環節,購物車目前主要有下面幾個主要作用。

購物車的主要功能

收藏的功能:

有的人喜歡把購物車當做收藏夾,很多看好的商品直接放到購物車里面。根據用戶的這個習慣購物車的幾個細節也隨之產生變化。

一個是默認全選功能變為記錄用戶歷史勾選商品,早期是默認將購物車里的商品進行全選然后進行提交訂單,因為很多用戶習慣將購物車作為收藏夾來使用,購物車里面的商品并不一定是一定要購買的,如果每次都是全選的話,用戶需要將收藏的商品手動勾選掉,體驗比較不友好,所以慢慢演變成購物車會記錄用戶勾選了哪些商品,在用戶下次進入購物車的時候只有上次勾選的商品才會默認被勾選。

另一個是購物車異常區域,因為有些商品可能加入購物車時間比較久,那么過段時間再打開購物車的時候里面的部分商品信息可能會發生變化,尤其是商品下架或者庫存為零這種導致用戶不能正常下單的時候需要在購物車里面對這部分商品進行提醒,所以也就有了購物車的異常區域。如下圖所示。

購物車失效

購物車的降價提醒,因為用戶把購物車當做收藏夾來用,那么當用戶加入購物的商品有降價的時候,現在主流的購物車也會進行降價的提醒,這需要購物車將當時用戶加入商品的價格記錄下來,后面用戶每次打開購物車的時候對比最新的價格,如果有降價那么在購物車進行提醒,用戶加入購物車的商品一般是比較感興趣的,如果購物車能提示用戶此商品已經降價,這樣轉化率一般會比較高。

購物車降價提醒

促銷的功能

購物車另外一個主要的作用是促銷,促銷分為兩大類:單品促銷和范圍促銷。

單品促銷一般都是對一個商品進行促銷,例如:價格直降,折扣,贈品等,這類促銷用戶比較好理解,在商詳頁上就可以清晰明了看到規則,并且用戶容易計算是否滿足此促銷規則。

范圍促銷比較復雜些,常用的范圍促銷有:滿減,滿贈,滿返等,這類促銷可以在商詳上看到規則,但是在商詳頁用戶基本搞不清楚目前購買的商品是否滿足此促銷,這個時候就需要在購物車對用戶進行提醒,主流的購物車基本都有如下功能。

購物車滿減結構

如何實現?

下面我們來說說購物車上面的這些功能是如何實現的?

登錄狀態

設計購物車首先考慮的是,需不需要登錄態?

在生成訂單的時候,肯定是需要登錄態的。但是購物車這個環節,一定需要動態嗎?大多數的網站是必須要登錄態的。這樣在購車環節就可以知道是哪一個用戶加入哪一個商品進入的購物車。但是這樣的體驗并不是很好。如果不需要登錄態,這時候會面臨一個問題:沒有登錄態我們就不知道這個商品是哪個用戶加入了。這個時候我們就需要一個叫做離線購物車的。他根據設備號來記錄哪個商品加入到哪個設備的購物車,在用戶加入離線物車之后真正去提交訂單的環節再提示用戶需要登錄態。這是一種比較好的體驗。支持離線購物車的話,還會面臨一個問題是:離線購物車和在線購車如何合并的問題。在用戶登錄后我們會去判斷用戶這個設備下面有沒有離線購車的數據。如果有離線購物車的數據,那么我們認為他之前已經離線加入購物車,我們會將離線購物車的數據和在線購物者的數據進行合并。

需要的數據

購物車需要落地哪些數據?

用戶的購車數據一定是會落到數據庫里的。購物車里面會展示商品信息、促銷信息、庫存信息。這些信息都需要落地在購物車的數據庫里面嗎?其實購物車的數據庫只需要落地用戶和商品的關系就可以了。其他的信息不需要落地到購物車的數據庫也不能夠落地到購物車的數據庫里。因為其他的信息都是會隨著時間的變化而產生變化的。比如說商品的價格,在用戶加入購物車的時候價格可能是十塊錢。但是過了一段時間可能進行了降價,變成了八塊錢。如果把商品的價格落地到購物車數據庫的話,那么用戶再次打開購物車的時候他是看不到商品的最新的價格信息。所以類似價格信息促銷信息庫存信息這些都是需要實時調用相應的系統。

需要的交互

需要跟哪些外部系統進行交互?

剛剛提到了購物車的數據庫里面只落地了用戶和商品的關系。那么用戶看到的購物車里其他的數據都是在用戶打開購物車的時候實時去調用外部系統獲取的。那么購車需要與哪些外部系統進行交互呢?下面列舉幾個主要的交互系統。

商品:從商品系統主要是獲取商品的一些基本信息。有商品的主題、商品的文描、商品的上下架狀態、以及商品上的一些特殊屬性的標志與標記位。有一些體驗比較好的電商平臺會將購物車中商品已經下架的商品置灰掉提示用戶此商品目前不能進行購買。

庫存:從庫存系統主要是獲取商品目前庫存數量情況以及是從哪個倉庫出貨,后面拆單的時候會用到這個信息。購物車系統會進行判斷目前商品的庫存是否滿足用戶購買的數量?如果庫存已經賣光會將商品制成灰色提示用戶商品已經沒有庫存。

促銷:促銷是購物車中比較重要的部分,也是最復雜的部分。購物車會將目前用戶選中的商品列表傳給促銷系統。促銷系統經過一系列復雜的運算會告訴購車目前這些商品命中了哪些促銷?因為一個購物車里面的商品可能有不同商家的,這里還要按照商家的緯度再進行一輪計算。算出每個商家緯度下面有哪些促銷?可以說,這里是整個購物車中最復雜的一個環節。各個平臺購物車做得好壞的區別主要就體現在這里。

以上只是介紹了購車的一些主要邏輯。 實際的購物車要這個更復雜一些。

 

本文由 @Nicole 原創發布于人人都是產品經理。未經許可,禁止轉載。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 有個問題想咨詢下,購物車如何去判斷庫存是夠足夠,用戶進入購物車后去調取庫存數據嗎?如果是這樣的話在庫存數量較少的情況下,短時間內多個用戶同時去打開購物車,會不會出現庫存足夠和不足 互相切換的情況

    來自江蘇 回復
  2. 好文,講解的簡單明晰;
    購物車落地數據不存儲價格等信息的情況下,怎么做降價提醒呢?

    來自陜西 回復
    1. 商品管理記錄了商品價格變化的情況,只需將當前的價格跟跟添加到購物車時間的價格作比較就行了,降價了就提示,漲價了啥也不做就行了

      來自湖北 回復
  3. 【在用戶下次進入購物車的時候只有上次勾選的商品才會默認被勾選】京東的這個勾選功能,對我來說不是很好用,因為當作比較的商品的時候,很多商品加入進來只是為了比較,不是為了購買,因此每次購買的是還要去點掉。

    來自浙江 回復
  4. 好文 ??

    來自福建 回復
  5. 讓我對購物車有了全面的認識,非常感謝!

    來自廣東 回復
  6. 好文 ,電商新人學習了

    來自湖北 回復
  7. :mrgreen:

    來自廣東 回復
  8. 好文 ??

    來自廣東 回復
  9. 對于電商產品,感覺要求用戶登錄雖然有損用戶體驗,但是卻能更好的支持電商核心交易功能,感覺還是值得的,離線根據設備號合并數據聽起來靠譜,但多了這個步驟后,是不是會造成一些損耗(感覺設備號坑比較多。。)

    來自浙江 回復
    1. 多了離線購物車勢必會增加復雜度,設備號只是識別一個設備的主鍵,實際上還要加上IP等其他維度算出一個唯一的識別碼。

      來自江蘇 回復
    2. 有點要應用hash算法的感覺。:)

      來自重慶 回復
  10. 京東的離線購物車也是時常會出現合并不成功的情況,這種體驗反而是一種傷害了,辛苦挑了半天,一登錄就沒有了

    來自廣東 回復
    1. 是的,要么就別做,要做就做到位,不然還不如不做。

      來自江蘇 回復
    2. 離線購物車登錄合并有時候對用戶來說可能有些突兀和迷惑,在沒登錄的時候有可能是隨意添加的商品,登錄后直接合并之前在線的購物車數據,會不會導致用戶不知道哪些是要買哪些不想買的了?

      來自廣東 回復
    3. 厲害

      回復