电商入门(2):购物车功能要点和背后逻辑
本文主要分为四个部分:简单说一下购物车、购物车与后台的密切关系、购物车中商品的分组和排序、关于购物车你至少应该知道些什么。
1.先简单说一下购物车
对前台电商产品经理来说,设计一个好的购物车,整个网站的灵魂基本上就有了,“设计购物车”可绝对不是说设计购物车的外观表现形式,而是它背后的东西——购物车的逻辑。
前台购物车主要与后台商品中心、库存中心、营销中心发生关系,你品味一下这三个问题:加车的商品是什么?加车的商品还有么?加车的商品有优惠么?
关于购物车的作用,大家可以类比一下线下商场的购物车,这种类比方法我已经在上一篇中提到过了。提一下购物车最直观的几个作用:
存储用户精挑细选的商品、方便多个商品组合起来做促销;如果你看得长远一点就会发现,购物车甚至能帮助自营平台节省物流成本,把同类型商品提前归集,统一派分到同一仓库。
思考一个问题:假设A书和B书在同一个仓库,如果没有购物车,A书和B书只能分两次结算,是不是意味着会生成两个订单?分配到仓库后,仓库管理员有这个能力合单?(当然,也不是完全做不到~)
在设计前台购物车的时候有两个重要的关乎用户体验的点:购物车中商品的分组和排序,即在购物车中,哪些商品需要归为一类?商品在购物车中怎么排列?
大家需要注意一点,购物车中的计算、商品数量调整、促销活动修改、优惠券领取,甚至是商品选中等等操作,都是后台逻辑,前台只是获取服务器端的数据加以展示而已。
2.举个例子说明购物车与后台的密切关系
举个例子:比如商品数量调整,需要从服务器端check该商品是否有对应数量的库存,对应两种情况:库存充足和不足。实时check商品库存能缓解‘结算按钮’的计算压力,同时能让用户购物更流畅。
怎么理解呢?其实在处理前台商品数量增减功能时,如何判断库存的问题上,有两种处理方式:一种是实时check商品库存,一种是非实时check商品库存。
说一下后者,第二种方式是在商品加车的那一瞬间(或者刷新购物车页面)服务器端就已经告诉前台某某商品购物车最大可加车数量是多少了。
再举个具体的例子对比2种方式的区别,希望能帮助大家深入理解:假设A商品库存为2,用户甲将A加入购物车,并在购物车中调整A的数量,最多能调整到2;这时用户乙也将A加入购物车,并且结算了一件A。此时,我们知道现在A的实际库存只有1件了。
实时check库存:用户甲购物车只能将A数量调整为1;
非实时check库存:用户甲购物车仍然能将A的数量调整为2,然而只有当用户甲点击“去结算按钮”时,才会再去check一遍库存,这时候前台告诉用户,A商品已经不足了,您需要返回购物车调整(或者直接在弹层提示上调整A的数量)。
这就是我之前说的实时check商品库存能缓解“结算按钮”的计算压力,同时能让用户购物更流畅。所以,对于前台产品来说,你的购物车基本上没有多少与你有关系的东西。
不过,你可以从用户体验上约定一些规则,比如check库存的实现方式,如果技术说有难度会造成服务器压力,那你该怎么办呢?只能尝试说服对方,或者退而求其次在‘结算按钮’附近优化弹层提示,尽量让用户体验更流畅,这就是一个好的前台产品了,绝对不是按钮多大、怎么摆放的问题了。
这么来看,对于一个前台产品,购物车的核心就落在了购物车中商品的分组和排序逻辑上。
所以,接下来的重点内容就是:
- ①如何制定相关规则,让购物车中的商品有序,让用户体验更好。
- ②关于购物车你至少还要知道些什么?
3.购物车中商品的分组和排序
说这个分组和排序问题之前,如果大家对这个概念还不太理解,建议先去淘宝或者京东这样的电商平台看看它们的购物车,特别是产品新人。
再说一说分组和排序大概是要解决一个什么问题,可以看一看下图:
从上图的结构可以看出来,购物车中的商品是按照活动A和B以及未参加活动三个组来展示的,由此也可以看出层级关系为:(店铺 >>)活动 >> 商品(注:别忘了店铺是最大一级)。
基本上每个电商平台都有店铺的概念,也就是允许第三方商家来平台开店,丰富平台商品类目、sku。在这种情况下,购物车中的商品按照店铺分组无可厚非了,但是今天为了让模型更简单一点,假设平台只有一个店铺(或者是纯自营平台),这是大前提。所以,接下来要说的就只涉及到参与同一个活动的商品分到一组这种分组的形式(建议再回头看看上图)。
然后是关于排序,我们知道给任何一组数据排序都需要给定排序规则,不然就是随机紊乱呈现的。对于购物车中的商品,能作为排序依据的无疑是它的加车时间,每个商品加入购物车都会记录一个加车时间。
接下来需要解决三个问题:
- ①还原商品排序和分组的逻辑判断与过程;
- ②新加车商品D,该放在哪儿?
- ③如果修改某个商品参加的活动,购物车该如何变动?(第三点是最能体现用户体验的问题。)
假设有如下表所示5个商品,该表记录了它们的商品名、加车时间以及参加哪个活动5条记录。另外,需要补充一句是:一般新加车的商品,排在购物车最上方,不然有可能导致用户打开购物车看不到自己刚加车的商品。
先解决第一个问题:还原商品排序和分组的逻辑判断与过程;
购物车的分组与排序是结构化的,程序员的思路也是结构化的,所以大家在考虑产品逻辑的时候,也要有结构化的思维(为了和猿友好相处),一个商品加入购物车首先第一步是判断(它是哪家店铺的?),它是哪个活动底下的?它的加车时间是什么?(从大到小的逻辑顺序)有了这个过程之后,这个商品的位置自然也确定了,如下表所示:
你可以看到商品B1加车比商品A2晚,但是却排在了商品A2之后,这是什么原因呢?
这里需要将排序问题分为三类:组与组之间排序、组内排序、组与非组(单个商品)之间排序。
- 先说第一类,有一个规则是组内最晚加车的商品为该组的加车时间,以组的加车时间为依据进行组与组之间排序。
- 再说第二类,按照组内后加车商品在上规则排序。
- 最后说第三类,组的加车时间与单个商品加车时间,后加车者在上规则排序,类似于第二类情况。
下面再解决第二个问题:新加车商品D(12:00加车),该放在哪儿?
如果D没有参加任何活动,很明显按照第三类规则,需要将D置于购物车第一位,这里不用表来展示了;但是如果D参加了活动B,那么当用户进入购物车页,他将看到什么呢?如下图所示。
注意,由于商品D参加了活动B,导致商品B1和B2都跟着往上移动了。
最后再来说最重要的一个问题:如果修改某个商品参加的活动,购物车该如何变动?
说这点之前,先说为什么它很重要,第2个有关排序的问题发生场景其实不在购物车页,而是用户在进入购物车场景前,就已经发生了,用户进入购物车看到的是一个静态的页面;但是第三个问题,发生场景就在购物车中,正所谓是牵一发而动全身,试想一下,用户只是调整了一下购物车中商品所参加的活动,购物车排序大动,导致用户找不到刚调整过的商品,这种体验可想而知。
还需要说到另外一点是,这也是前文制定这样一个排序和分组规则的原因,当然也是为了解决问题3,提升用户体验。
假设商品C参加了活动A或B(一开始只是用户故意选择不参加任何活动),那么当用户将商品C修改为参加活动A或B后,它的位置将如何变动?这里我就不再提供表格,大家去思考一下,实在不明白可以在文后提问我。
补充说明一点,为什么会有不参加活动的选项?
大家思考一下这个问题:假设平台满30包邮,不满则出6元邮费,现在商品E(单价=30元)参加了满30减5的活动,用户购买一件E,问,该用户应该参加活动么?为什么? (这个问题有一个前提是,平台计算是否满包邮的条件是以优惠后应付金额为准)
本文最重要的一部分算是讲完了,之后该讲一点其他细枝末节的东西了,关于购物车你还应该知道些什么?
4.关于购物车你至少应该知道些什么?
我觉得关于购物车你还应该知道的应该在下面这张脑图里了,第一是购物车中的商品从哪儿来到哪儿去,第二是购物车至少需要具备那几个功能点(我这里说的是骨架),至于其他锦上添花的功能,读者可以留言分享给大家。
另外在设计购物车的时候,还有一个影响体验的细节——购物车合并问题,当一个用户在未登录状态加车,在他下次登陆账户时,应该将未登录状态已加车商品并入已登录账户购物车中。这里也有一个前提是:默认未登录状态也可以加购物车。
本篇到这里算是结束了,很多东西感觉没有说透,可能需要读者自己去深入研究,如果有什么心得体会,也欢迎大家一起交流。
相关阅读
作者:QJQ,微信公众号:倔牛的人生
本文由 @QJQ 原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自pixabay,基于CC0协议
时时查询怎么查?查询周期多久?是一某一个商品时时查询?还是勾选的商品都时时查询?这种逻辑是不是有问题?
实时查询应该会有一个规则的吧,我觉得这个问题需要产品和技术一起去评估,需要考虑实际情况
你好,请问,关于check商品库存处理方式这一段,“说一下后者”后面的文字应该解释的是实时check商品库存吧?
顺便请教一下,如果是实时check,用户A将商品C加入购物车之后又去找其它商品了,这时用户B过来结算了一件商品C,当用户A再进入购物车的时候,商品C的数量如何处理呢?是后台自动刷新数量并显示当前数量吗?是否需要给出提醒呢?
抱歉,产品小白
加入购物车后就要占库存总量的缓存
后面的文字解释的是 非 实时check商品库存,仔细读,我开始也以为作者写错了
有没有发现购物的时候,增加商品数量没有提示只是1变成了2,2变3如是这样,但是减少商品的时候就要二次确认,是否减少商品数量
总结得很棒,受益匪浅
京东貌似是在提交订单时提示用户库存不足,而且提示用户是否移除,用户移除后订单继续提交,用户被打断一次,但是整体流程还是相对顺畅的;我觉得在提交订单时再次校验库存比在结算时校验对订单提交成功率来说更好一点,毕竟越早打断用户越容易终止。
你的意思越早打断那不就是在提交订单的时候吗?和前面成功率高的结论相反了
商品C修改为参加活动A或B后,它的位置将如何变动?
一年过去了啊,我想了一下,以加入购物车的时间为准,不管在购物车中怎么修改,不记录修改时间。
为什么购物车加减要实时?意义在哪?求教
文章里其实提到了,你可以再返回去看看京东和淘宝对比的例子:操作流程上不连贯(或者说是,非一气呵成的生成购物清单)
可是如果用户A加车50件,迟迟不下单,会影响到实际库存,B用户就没有办法购买了。我的做法还是认为等用户A下单成功了再减少库存为好。
这也是我疑惑的点,希望求大神解答
我之前 的疑问消失了,作者的意思如下,你可以再看一遍他的原文哦
举例子说明吧
A产品有100个库存
我把1个加入购物车,我朋友把2个加入他自己的购物车,实际库存是不变的,还是100个,显示给他人的库存还是有100个
当你提交订单之后,库存才会变成99个。
然后我朋友的购物车里看到库存的数量会变成99个,而不是之前的100个。
当一个用户在未登录状态加车,在他下次登陆账户时,应该将未登录状态已加车商品并入已登录账户购物车中。这里也有一个前提是:默认未登录状态也可以加购物车。
这个未登录状态下加车,是不是说:比如一个用户A未登录,她选了一些商品加车了,之后另外一个用户来用这个手机登录了账户B,那么A加车的商品就加到了账户B下了。是这样吗?
如果是这样的话,未登录状态加车的商品绑定的是PC或APP吗?
我个人觉得,这个未登录状态加车的功能应该仅限于手机端吧?
没有局限于哪个端,至于实现方式我只能提供一个参考:pc端一般存在浏览器缓存,平台每次会去检查浏览器缓存是否有加车记录,手机端一般是存在本地专属文件夹里,检查原理和pc端一致。
感觉有风险
这是普遍的实现方式,至于风险,就算被人知道未登陆前添加的购物车商品又有什么关系呢?
我看了下淘宝和京东在这个细节上的做法:淘宝是加车前需要登录才能加车;京东是像你说的一样,用户登录后自动把登录前加车的商品加到购物车
两种方式我觉得各有利弊,但是我个人还是比较倾向淘宝的做法
所谓的风险就是你说的“被人知道未登陆前添加的购物车商品又有什么关系呢” 这个关系我觉得还是有的 比如我加了一些个人隐私的东西 然后被其他人扫描登录了 就会看到我加车的商品
这里是有很多机制可以防范你说的问题的,更多的你需要考虑的是为什么淘宝和京东的模式不一样?(你可以从淘宝小店和京东自营的区别去考虑)
你的意思是因为数据的原因吗?
淘宝要求加车前登录是因为可以给入驻在淘宝平台上的店铺一定的用户数据;京东自营是因为本身就是平台,进入平台就开始产生数据,是这个原因吗?
另外 你说的那些防范机制方便告知一下吗?谢谢~
有个问题,未登录加车也需要扣减库存吗,我觉得不需要吧,跟登录加车应该是2个逻辑
我认为活动和优惠券两个信息可以合并为一个信息栏,系统自动计算出最优解(即最优惠)展示出来。
这显然对用户是很友好的,但是背后涉及到的后台逻辑,可没那么简单哈~你可以想这样一个问题看看能不能轻松解决【你的问题比我这个问题难度高几何倍数】:假设A商品参加了甲乙丙三个活动,当用户加车A时,你如何制定一个规则,自动给用户选择参加(甲乙丙)中的某个活动?另外想两个问题:用户领了优惠券,就一定要花出去么?对平台来说用户使用了优惠券是利好么?【所以建议设计成手动使用优惠券】
嗯嗯,仔细思考确实存在问题,手动会更好一些。
1.自动使用优惠券客户甚至没有感觉到平台购物的优越性
2.手动使用优惠券利用了价格歧视原理,能区分出对价格敏感的客户,可以进行精准运营。