电商技术解密之购物车

16 评论 34940 浏览 299 收藏 10 分钟

双十一刚过,京东、天猫又创神迹。今天来跟大家聊一聊购物流程中比较重要的一个环节:购物车。

话说早期的电商是没有购物车这个东西的,印象中应该是从2007年才开始有购物车(哎,又暴露年龄了),早期没有购物车的主要原因主要有2个,一个是那时候电商还没有那么成熟,网购的人还没有现在这么疯狂,购买频率不高,最主要的是大多数人一次只买一个商品。另外一个原因是那时候还没法解决根据卖家拆单后货款怎么分?同一个订单有多个卖家邮费怎么算等类似问题。后面随着整个电商的发展才有了购物车这个东东,现在购物车在整个购物流程中已经是非常重要的一个环节,购物车目前主要有下面几个主要作用。

购物车的主要功能

收藏的功能:

有的人喜欢把购物车当做收藏夹,很多看好的商品直接放到购物车里面。根据用户的这个习惯购物车的几个细节也随之产生变化。

一个是默认全选功能变为记录用户历史勾选商品,早期是默认将购物车里的商品进行全选然后进行提交订单,因为很多用户习惯将购物车作为收藏夹来使用,购物车里面的商品并不一定是一定要购买的,如果每次都是全选的话,用户需要将收藏的商品手动勾选掉,体验比较不友好,所以慢慢演变成购物车会记录用户勾选了哪些商品,在用户下次进入购物车的时候只有上次勾选的商品才会默认被勾选。

另一个是购物车异常区域,因为有些商品可能加入购物车时间比较久,那么过段时间再打开购物车的时候里面的部分商品信息可能会发生变化,尤其是商品下架或者库存为零这种导致用户不能正常下单的时候需要在购物车里面对这部分商品进行提醒,所以也就有了购物车的异常区域。如下图所示。

购物车失效

购物车的降价提醒,因为用户把购物车当做收藏夹来用,那么当用户加入购物的商品有降价的时候,现在主流的购物车也会进行降价的提醒,这需要购物车将当时用户加入商品的价格记录下来,后面用户每次打开购物车的时候对比最新的价格,如果有降价那么在购物车进行提醒,用户加入购物车的商品一般是比较感兴趣的,如果购物车能提示用户此商品已经降价,这样转化率一般会比较高。

购物车降价提醒

促销的功能

购物车另外一个主要的作用是促销,促销分为两大类:单品促销和范围促销。

单品促销一般都是对一个商品进行促销,例如:价格直降,折扣,赠品等,这类促销用户比较好理解,在商详页上就可以清晰明了看到规则,并且用户容易计算是否满足此促销规则。

范围促销比较复杂些,常用的范围促销有:满减,满赠,满返等,这类促销可以在商详上看到规则,但是在商详页用户基本搞不清楚目前购买的商品是否满足此促销,这个时候就需要在购物车对用户进行提醒,主流的购物车基本都有如下功能。

购物车满减结构

如何实现?

下面我们来说说购物车上面的这些功能是如何实现的?

登录状态

设计购物车首先考虑的是,需不需要登录态?

在生成订单的时候,肯定是需要登录态的。但是购物车这个环节,一定需要动态吗?大多数的网站是必须要登录态的。这样在购车环节就可以知道是哪一个用户加入哪一个商品进入的购物车。但是这样的体验并不是很好。如果不需要登录态,这时候会面临一个问题:没有登录态我们就不知道这个商品是哪个用户加入了。这个时候我们就需要一个叫做离线购物车的。他根据设备号来记录哪个商品加入到哪个设备的购物车,在用户加入离线物车之后真正去提交订单的环节再提示用户需要登录态。这是一种比较好的体验。支持离线购物车的话,还会面临一个问题是:离线购物车和在线购车如何合并的问题。在用户登录后我们会去判断用户这个设备下面有没有离线购车的数据。如果有离线购物车的数据,那么我们认为他之前已经离线加入购物车,我们会将离线购物车的数据和在线购物者的数据进行合并。

需要的数据

购物车需要落地哪些数据?

用户的购车数据一定是会落到数据库里的。购物车里面会展示商品信息、促销信息、库存信息。这些信息都需要落地在购物车的数据库里面吗?其实购物车的数据库只需要落地用户和商品的关系就可以了。其他的信息不需要落地到购物车的数据库也不能够落地到购物车的数据库里。因为其他的信息都是会随着时间的变化而产生变化的。比如说商品的价格,在用户加入购物车的时候价格可能是十块钱。但是过了一段时间可能进行了降价,变成了八块钱。如果把商品的价格落地到购物车数据库的话,那么用户再次打开购物车的时候他是看不到商品的最新的价格信息。所以类似价格信息促销信息库存信息这些都是需要实时调用相应的系统。

需要的交互

需要跟哪些外部系统进行交互?

刚刚提到了购物车的数据库里面只落地了用户和商品的关系。那么用户看到的购物车里其他的数据都是在用户打开购物车的时候实时去调用外部系统获取的。那么购车需要与哪些外部系统进行交互呢?下面列举几个主要的交互系统。

商品:从商品系统主要是获取商品的一些基本信息。有商品的主题、商品的文描、商品的上下架状态、以及商品上的一些特殊属性的标志与标记位。有一些体验比较好的电商平台会将购物车中商品已经下架的商品置灰掉提示用户此商品目前不能进行购买。

库存:从库存系统主要是获取商品目前库存数量情况以及是从哪个仓库出货,后面拆单的时候会用到这个信息。购物车系统会进行判断目前商品的库存是否满足用户购买的数量?如果库存已经卖光会将商品制成灰色提示用户商品已经没有库存。

促销:促销是购物车中比较重要的部分,也是最复杂的部分。购物车会将目前用户选中的商品列表传给促销系统。促销系统经过一系列复杂的运算会告诉购车目前这些商品命中了哪些促销?因为一个购物车里面的商品可能有不同商家的,这里还要按照商家的纬度再进行一轮计算。算出每个商家纬度下面有哪些促销?可以说,这里是整个购物车中最复杂的一个环节。各个平台购物车做得好坏的区别主要就体现在这里。

以上只是介绍了购车的一些主要逻辑。 实际的购物车要这个更复杂一些。

 

本文由 @Nicole 原创发布于人人都是产品经理。未经许可,禁止转载。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 有个问题想咨询下,购物车如何去判断库存是够足够,用户进入购物车后去调取库存数据吗?如果是这样的话在库存数量较少的情况下,短时间内多个用户同时去打开购物车,会不会出现库存足够和不足 互相切换的情况

    来自江苏 回复
  2. 好文,讲解的简单明晰;
    购物车落地数据不存储价格等信息的情况下,怎么做降价提醒呢?

    来自陕西 回复
    1. 商品管理记录了商品价格变化的情况,只需将当前的价格跟跟添加到购物车时间的价格作比较就行了,降价了就提示,涨价了啥也不做就行了

      来自湖北 回复
  3. 【在用户下次进入购物车的时候只有上次勾选的商品才会默认被勾选】京东的这个勾选功能,对我来说不是很好用,因为当作比较的商品的时候,很多商品加入进来只是为了比较,不是为了购买,因此每次购买的是还要去点掉。

    来自浙江 回复
  4. 好文 😈

    来自福建 回复
  5. 让我对购物车有了全面的认识,非常感谢!

    来自广东 回复
  6. 好文 ,电商新人学习了

    来自湖北 回复
  7. :mrgreen:

    来自广东 回复
  8. 好文 😈

    来自广东 回复
  9. 对于电商产品,感觉要求用户登录虽然有损用户体验,但是却能更好的支持电商核心交易功能,感觉还是值得的,离线根据设备号合并数据听起来靠谱,但多了这个步骤后,是不是会造成一些损耗(感觉设备号坑比较多。。)

    来自浙江 回复
    1. 多了离线购物车势必会增加复杂度,设备号只是识别一个设备的主键,实际上还要加上IP等其他维度算出一个唯一的识别码。

      来自江苏 回复
    2. 有点要应用hash算法的感觉。:)

      来自重庆 回复
  10. 京东的离线购物车也是时常会出现合并不成功的情况,这种体验反而是一种伤害了,辛苦挑了半天,一登录就没有了

    来自广东 回复
    1. 是的,要么就别做,要做就做到位,不然还不如不做。

      来自江苏 回复
    2. 离线购物车登录合并有时候对用户来说可能有些突兀和迷惑,在没登录的时候有可能是随意添加的商品,登录后直接合并之前在线的购物车数据,会不会导致用户不知道哪些是要买哪些不想买的了?

      来自广东 回复
    3. 厉害

      回复