電商解密:如何設(shè)計(jì)購(gòu)物車(chē)
編輯導(dǎo)語(yǔ):對(duì)于電商來(lái)說(shuō),購(gòu)物車(chē)的設(shè)計(jì)可謂是重中之重。有贈(zèng)品時(shí)該如何根據(jù)庫(kù)存信息對(duì)購(gòu)物車(chē)進(jìn)行設(shè)置?不同區(qū)域的不同郵費(fèi)該如何設(shè)置?有活動(dòng)時(shí)優(yōu)惠券以及滿(mǎn)減又該如何設(shè)置?接下來(lái),本文作者就為我們揭示了購(gòu)物車(chē)背后的那些邏輯。
在電商的核心交易流程中,購(gòu)物車(chē)是一其中非常重要的一環(huán),也是其中最復(fù)雜的一個(gè)環(huán)節(jié)。
一、電商流程業(yè)務(wù)領(lǐng)域
電商流程中業(yè)務(wù)領(lǐng)域劃分成兩部分:
1. 底層支撐的模塊
比如庫(kù)存系統(tǒng)、會(huì)員系統(tǒng)。
這些模塊的特點(diǎn)是:所處理的業(yè)務(wù)流程相對(duì)單一、閉環(huán),不需要太多依賴(lài)外部系統(tǒng)既可以完成領(lǐng)域內(nèi)的邏輯。
如:會(huì)員系統(tǒng)最重要的流程就是注冊(cè)、登錄、校驗(yàn)登錄態(tài),這幾個(gè)流程基本只依賴(lài)會(huì)員系統(tǒng)自身,沒(méi)有對(duì)外部系統(tǒng)產(chǎn)生強(qiáng)依賴(lài),強(qiáng)耦合。
2. 上層流程串流程的模塊
比較復(fù)雜的是串業(yè)務(wù)流程的系統(tǒng),這部分系統(tǒng)業(yè)務(wù)邏輯會(huì)相對(duì)更復(fù)雜些,比如商詳或者購(gòu)物車(chē)。
因?yàn)樯滔榛蛘哔?gòu)物車(chē)所展示給用戶(hù)看到的東西需要串聯(lián)非常多的業(yè)務(wù)模塊,將其中的信息進(jìn)行封裝組合展示給用戶(hù),這里的業(yè)務(wù)邏輯非常復(fù)雜,系統(tǒng)內(nèi)部的交互非常多。
我們以京東的購(gòu)物車(chē)為例,簡(jiǎn)單的剖析一下京東的購(gòu)物車(chē)大體背后的業(yè)務(wù)邏輯,實(shí)現(xiàn)方式。
購(gòu)物車(chē)中所展示的東西,無(wú)非就是加入購(gòu)物車(chē)中的商品以及一些促銷(xiāo)信息。那么第一個(gè)問(wèn)題是,這些購(gòu)物車(chē)中的商品、促銷(xiāo)信息是靜態(tài)的還是動(dòng)態(tài)獲取的?
所謂靜態(tài)就是指用戶(hù)在將商品加入購(gòu)物車(chē)的時(shí)候,在購(gòu)物車(chē)中存儲(chǔ)加入購(gòu)物車(chē)的商品所需要展示的各種信息,例如上面展示的商品的主圖文描、促銷(xiāo)等等。
動(dòng)態(tài)獲取就是在查看購(gòu)車(chē)的時(shí)候,再去實(shí)時(shí)調(diào)用相應(yīng)的系統(tǒng)獲取最新的信息。
答案是:購(gòu)物車(chē)的數(shù)據(jù)只會(huì)存儲(chǔ)必要的商品信息,其他的信息完全是動(dòng)態(tài)獲取的。因?yàn)樵诩尤胭?gòu)物車(chē)的時(shí)候如果是靜態(tài)存儲(chǔ)的,那么在下一次查看購(gòu)物車(chē)的時(shí)候,所展示的信息可能就不是最準(zhǔn)確的。
這中間可能商品信息會(huì)發(fā)生變化,比如商品被下架了、商品的主圖被調(diào)整了、或者主題被修改了、商品的促銷(xiāo)信息也可能會(huì)發(fā)生變化;在加入購(gòu)物車(chē)的時(shí)候可能會(huì)命中一個(gè)促銷(xiāo),但是過(guò)了一段時(shí)間之后,這個(gè)促銷(xiāo)可能結(jié)束了。
所以比較精準(zhǔn)的做法是在展示購(gòu)物車(chē)的時(shí)候,再去實(shí)時(shí)拉取一次商品的詳細(xì)信息以及當(dāng)前的最新促銷(xiāo)信息。
但是購(gòu)物車(chē)中還是會(huì)存儲(chǔ)一部分?jǐn)?shù)據(jù),主要存儲(chǔ)哪些數(shù)據(jù)呢?
主要如下圖所示:
二、查看購(gòu)物車(chē)背后到底有哪些邏輯
首先是校驗(yàn)會(huì)員的登錄態(tài)。
上面購(gòu)物車(chē)存儲(chǔ)的結(jié)構(gòu)中,我們看到購(gòu)物車(chē)的存儲(chǔ)是以用戶(hù)維度進(jìn)行數(shù)據(jù)存儲(chǔ)的,所以要展示購(gòu)物車(chē)的時(shí)候,首先要拿到用戶(hù)的ID。
所以這里第一步就會(huì)校驗(yàn)登陸態(tài)——因?yàn)橹挥杏脩?hù)登錄后才能識(shí)別當(dāng)前的用戶(hù)具體是誰(shuí),才可以從購(gòu)物車(chē)的存儲(chǔ)中獲取響應(yīng)的數(shù)據(jù);然后,購(gòu)物車(chē)會(huì)根據(jù)取到的商品ID列表,實(shí)時(shí)調(diào)用商品系統(tǒng)并獲取最新的商品信息,最終組裝后進(jìn)行展示。
1. 獲取庫(kù)存信息
庫(kù)存情況由于變更比較頻繁,所以每次查看購(gòu)物車(chē)的時(shí)候也需要實(shí)時(shí)的去查看當(dāng)前商品的庫(kù)存情況。
如果購(gòu)物車(chē)中的商品沒(méi)有庫(kù)存,那么就要進(jìn)行提示。如下圖所示,在購(gòu)物車(chē)中將此商品置灰,提示此商品“無(wú)貨”。
庫(kù)存這里還有一個(gè)比較特殊的邏輯,就是贈(zèng)品的邏輯。
贈(zèng)品分為兩種情況:
- 滿(mǎn)多少元送一個(gè)贈(zèng)品,簡(jiǎn)稱(chēng)“滿(mǎn)贈(zèng)”;
- 買(mǎi)一個(gè)東西送一個(gè)贈(zèng)品,簡(jiǎn)稱(chēng)“買(mǎi)贈(zèng)”。
兩種都是贈(zèng)品,但是對(duì)于庫(kù)存的邏輯處理完全不一樣。
這兩種情況都會(huì)要求主商品跟贈(zèng)品必須要在同一個(gè)倉(cāng),不然就會(huì)出現(xiàn)主品從一個(gè)倉(cāng)發(fā)貨,贈(zèng)品從另外一個(gè)倉(cāng)發(fā)貨,要承擔(dān)兩份運(yùn)費(fèi)的成本。
本來(lái)就是贈(zèng)送一個(gè)贈(zèng)品,如果還需要額外承擔(dān)運(yùn)費(fèi)的話(huà),那么肯定不劃算。所以在校驗(yàn)庫(kù)存的時(shí)候,一定會(huì)校驗(yàn)主品跟贈(zèng)品是否都在同一個(gè)倉(cāng)有貨。
當(dāng)贈(zèng)品跟主品不在同一個(gè)倉(cāng)或者贈(zèng)品沒(méi)貨的時(shí)候,對(duì)于滿(mǎn)贈(zèng)這種場(chǎng)景,如果贈(zèng)品沒(méi)有庫(kù)存,那么還是可以正常下單的。
因?yàn)闈M(mǎn)贈(zèng)這種促銷(xiāo)類(lèi)型會(huì)給用戶(hù)進(jìn)行提示“贈(zèng)品數(shù)量有限,先到先得”,所以贈(zèng)品沒(méi)貨的時(shí)候也是可以正常下單的,用戶(hù)也是能接受的。
但是買(mǎi)贈(zèng)這種場(chǎng)景,如果贈(zèng)品沒(méi)有貨,那么會(huì)提示用戶(hù)贈(zèng)品無(wú)貨,不可以下單。因?yàn)檫@種場(chǎng)景用戶(hù)會(huì)認(rèn)為贈(zèng)品是主品的一部分,沒(méi)有贈(zèng)品也就不會(huì)去買(mǎi)這個(gè)主品了。
獲取完庫(kù)存之后,下一步會(huì)計(jì)算購(gòu)物車(chē)中商品促銷(xiāo)的情況,這也是整個(gè)購(gòu)物車(chē)中邏輯最復(fù)雜的一部分。促銷(xiāo)本身就比較復(fù)雜,因?yàn)闀?huì)存在多種促銷(xiāo)類(lèi)型,如果某個(gè)商品同時(shí)命中多個(gè)促銷(xiāo)怎么辦?
如果商家設(shè)置了非常多的促銷(xiāo),每一次都需要拿購(gòu)物車(chē)中的商品去遍歷計(jì)算每個(gè)商品命中哪個(gè)促銷(xiāo)規(guī)則,整個(gè)計(jì)算過(guò)程也非常耗時(shí)。
所以購(gòu)物車(chē)會(huì)將商品列表傳給促銷(xiāo)系統(tǒng),促銷(xiāo)系統(tǒng)根據(jù)購(gòu)物車(chē)中傳遞過(guò)來(lái)的商品去計(jì)算,這些商品會(huì)命中哪些促銷(xiāo),然后將這些商品按照命中的促銷(xiāo)進(jìn)行分門(mén)別類(lèi)返回給購(gòu)物車(chē)。
比如:一個(gè)購(gòu)物車(chē)中一個(gè)商家下有若干個(gè)商品,其中兩個(gè)命中了a促銷(xiāo),另外兩個(gè)命中了b促銷(xiāo),還有三個(gè)沒(méi)有命中促銷(xiāo)。
那么要按照結(jié)構(gòu)返回給購(gòu)物車(chē),購(gòu)物車(chē)再展示給到用戶(hù),這樣用戶(hù)看的會(huì)比較清晰些。
2. 運(yùn)費(fèi)計(jì)算邏輯
在購(gòu)物車(chē)中除了展示基本的商品信息,還有很多額外的功能,比如計(jì)算運(yùn)費(fèi)。
上圖中會(huì)顯示這一個(gè)商品包郵免運(yùn)費(fèi),那么運(yùn)費(fèi)是如何計(jì)算出來(lái)的呢?
其實(shí)在商家后臺(tái)有一個(gè)叫做運(yùn)費(fèi)模板的東西,商家會(huì)設(shè)置運(yùn)費(fèi)的策略,主要分為兩種規(guī)則:
- 根據(jù)單個(gè)商品去設(shè)置運(yùn)費(fèi)的規(guī)則;
- 根據(jù)訂單維度去設(shè)置模板。
單品維度指的是某一個(gè)商家的某個(gè)商品在某些地址需要收多少錢(qián)運(yùn)費(fèi),這種的應(yīng)用場(chǎng)景是當(dāng)商家發(fā)現(xiàn)有些商品發(fā)到偏遠(yuǎn)地區(qū)比較貴的時(shí)候,會(huì)設(shè)置這樣一個(gè)單品模板。
比如某個(gè)商品發(fā)到新疆、西藏、甘肅比較貴,那么就可以設(shè)置這個(gè)商品在這三個(gè)省收運(yùn)費(fèi)15元;反之只要收貨地址不是這三個(gè)省的,那么這個(gè)商品就不收運(yùn)費(fèi)。
另外一種是訂單維度的模板,也就是按照訂單維度來(lái)計(jì)算,整個(gè)訂單收多少運(yùn)費(fèi)。
舉個(gè)例子:比如我們經(jīng)常見(jiàn)的江浙滬包郵,那么這個(gè)模板應(yīng)該如何設(shè)計(jì)呢?
首先是選好一個(gè)商家,然后選好江浙滬的地址。在這些地址設(shè)置一個(gè)規(guī)則訂單,不滿(mǎn)0元運(yùn)費(fèi)0元,江浙滬之外需要收10元的運(yùn)費(fèi),再設(shè)置一下除了江浙滬之外的省份。
訂單不滿(mǎn)100元收取10元運(yùn)費(fèi)。這樣就達(dá)到了江浙滬包郵、江浙滬之外的地區(qū)需要有門(mén)檻,達(dá)到100元不收運(yùn)費(fèi),但是不足100元需要收10元運(yùn)費(fèi)。
3. 價(jià)格促銷(xiāo)邏輯
購(gòu)物車(chē)中每一個(gè)商家頭部有一個(gè)領(lǐng)券的標(biāo)識(shí),來(lái)標(biāo)識(shí)這個(gè)商家目前可以有優(yōu)惠券可以領(lǐng)。
這個(gè)領(lǐng)券設(shè)計(jì)的目的是為了讓用戶(hù)能夠在最關(guān)鍵的環(huán)節(jié)知道有券可以用,從而提升購(gòu)物車(chē)的轉(zhuǎn)化率。那么這個(gè)功能是如何做到的呢?
在購(gòu)物車(chē)中會(huì)將商品按照商家的維度分成不同的塊,每一個(gè)塊代表一個(gè)商家,商家里面的商品如果有促銷(xiāo)信息,按照塊的維度再去展示促銷(xiāo)的信息。
領(lǐng)券的計(jì)算單位是商家的維度,在購(gòu)物車(chē)中首先將商品根據(jù)不同的商家計(jì)算好分塊之后,每一個(gè)塊都代表一個(gè)商家,購(gòu)物車(chē)會(huì)去計(jì)算當(dāng)前商家下面以及當(dāng)前商家購(gòu)物車(chē)中的商品是否有可以領(lǐng)用的優(yōu)惠券。
如果這個(gè)商家制了10個(gè)批次的優(yōu)惠券,其中2個(gè)批次的券可以使用當(dāng)前購(gòu)物車(chē)的商品,并且用戶(hù)還沒(méi)有領(lǐng)券,那么就會(huì)在這個(gè)地方進(jìn)行提示,告訴用戶(hù)有可以領(lǐng)用的券。
購(gòu)物車(chē)中還有一個(gè)叫做預(yù)估到手價(jià)。
之前購(gòu)物車(chē)中只展示了哪些商品可以命中哪些促銷(xiāo),但每一個(gè)單品最終成交價(jià)格需要用戶(hù)自己去算。由于促銷(xiāo)疊加起來(lái)比較復(fù)雜,有些用戶(hù)自己算不清楚。所以這個(gè)預(yù)估到手價(jià)就是系統(tǒng)根據(jù)當(dāng)前疊加促銷(xiāo)、券之后算出來(lái)的最終成交價(jià)格。
這個(gè)功能省去了用戶(hù)自己去計(jì)算的過(guò)程,并且很直觀明了的展示出來(lái)了,最終的成交價(jià)對(duì)用戶(hù)提升轉(zhuǎn)化也有很大的幫助。
那么這個(gè)預(yù)估到手價(jià)是如何實(shí)現(xiàn)的呢?
首先會(huì)先去計(jì)算購(gòu)物車(chē)中商品的價(jià)格,有沒(méi)有單品維度的價(jià)格促銷(xiāo)。
比如:價(jià)格直降或者秒殺、拼團(tuán)之類(lèi)的價(jià)格優(yōu)惠。也就是上圖顯示的“119”,這個(gè)是價(jià)格維度的計(jì)算。在計(jì)算好單品價(jià)格維度之后,會(huì)再去計(jì)算一下當(dāng)前商品是否有命中訂單維度的促銷(xiāo),比如滿(mǎn)減或者折扣。
這時(shí)會(huì)在單品價(jià)格基礎(chǔ)上減去命中促銷(xiāo)價(jià)格,算出一個(gè)優(yōu)惠價(jià)。然后在這個(gè)價(jià)格基礎(chǔ)上再去命中一次優(yōu)惠券的邏輯,看用戶(hù)手中有哪些券可以使用。最終再去減去優(yōu)惠券可以使用的價(jià)格,就是用戶(hù)實(shí)際成交的價(jià)格,也就是預(yù)估到手價(jià)。
這里舉一個(gè)例子:一個(gè)商品原價(jià)100塊,做了一個(gè)價(jià)格直降的活動(dòng),拼團(tuán)或者秒殺,價(jià)格降到90;然后這個(gè)商品還享受了一個(gè)滿(mǎn)減的優(yōu)惠,滿(mǎn)80減20,這個(gè)時(shí)候這個(gè)單品的價(jià)格就變成了90-20=70。
如果這個(gè)用戶(hù)的賬戶(hù)中,還有一張可以用于這個(gè)商品的現(xiàn)金10元券,那么這個(gè)商品最終到手的價(jià)格就是70元,再減去10元的優(yōu)惠券等于60元。
通過(guò)上面幾個(gè)過(guò)程,系統(tǒng)就可以幫你算出來(lái)每一個(gè)商品在當(dāng)前情況下的一個(gè)預(yù)估到手的價(jià)格。
三、總結(jié)
購(gòu)物車(chē)是整個(gè)電商交易流程中比較復(fù)雜的一個(gè)環(huán)節(jié),需要串聯(lián)會(huì)員、商品、庫(kù)存、促銷(xiāo)、優(yōu)惠券等大部分邏輯進(jìn)行最終的購(gòu)物車(chē)的呈現(xiàn)。
為了保證購(gòu)物車(chē)展示給用戶(hù)信息的準(zhǔn)確性,購(gòu)物車(chē)只存了最基本的一些信息,絕大部分的信息都是在用戶(hù)查看購(gòu)物車(chē)那一剎那實(shí)時(shí)計(jì)算出來(lái)的。
#專(zhuān)欄作家#
DearNicole,人人都是產(chǎn)品經(jīng)理專(zhuān)欄作家,前京東產(chǎn)品經(jīng)理、研發(fā)經(jīng)理,主攻電商的方方面面。公眾號(hào):中臺(tái)碎碎念
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自 Pexels ,基于 CC0 協(xié)議
您好,想請(qǐng)教一下滿(mǎn)贈(zèng)活動(dòng)若購(gòu)物車(chē)內(nèi)預(yù)估實(shí)付價(jià)格顯示已滿(mǎn)獲贈(zèng)門(mén)檻,但收銀臺(tái)實(shí)付價(jià)格卻低于門(mén)檻這種情況該怎么處理呢?感覺(jué)購(gòu)物車(chē)的贈(zèng)品提示會(huì)誤導(dǎo)到用戶(hù)。