写这篇文章的理由是 上周和一个优秀的同行的简短交流
他问我“如果待付款订单的商品没有库存了 怎么办?”
我当时的回答是“待付款订单的话 会有个继续付款按键吧,点击的时候做验证 确保订单所有商品sku大于1就对了,如果没有库存就提示用户 没有库存 可以触发到货提醒 操作”
然后 周日的时候隐约觉得我的答案没对。于是请教了 以前的leader 后台PM林先生。林先生带了我1年半时间,其智慧和卓见算是我见过的数一数二的人物。
是的 正如我觉得没对一样,我的答案错了。其实 待付款 是会锁库存的。甚至京东早期还做过 加入购物车就锁sku库存,一定时间后如果无后续操作 自动清楚锁库存 并且状态切换。
反思了自己没有仔细思考就说出了欠妥的答案,也在深夜带着问题继续思考。
然后调研了 京东 易迅 2家具被代表性的网站,发现了很多知识。
首先从购物车说起。
我的流程如下:
【京东】打开京东-登录-查看购物车-勾选了几个库存为0 无法销售的商品-点击 “去结算”-成功进入确认订单流程,并且 “提交订单”按键是亮的-点击 提交订单- 报错 返回购物车
【易迅】打开易迅-登录-查看购物车-勾选了库存为0 无法销售的商品- 点击“去结算”,咦 怎么按键是灰色的 ,旁边还写了 对不起,暂时无法结算。
是的,聪明的你 已经看出来区别了。其实这里应该做前台验证的(js)。另外购物车 还应该考虑到 所有商品当前价格 如果和加入购物车的时候发生变化,应该有提示(参考淘宝)。
接下来 思考下 锁库存问题。
翻了翻知乎,请教林先生:发现了下面3点
1 京东 曾经做过加入购物车 就锁库存,然后一定时间没操作后 清空购物车。
(是的 只是曾经做过,这样的设计师完全参考线下购物车做的。那么问题就在:“超市里面 买东西和付款 往往是 一条线时间节奏的,但是 线上是可能周一加点 周二几点 周五有钱了以前买的情况的”)
2 目前主流电商做法是这样的: 待付款 状态是需要锁库存。 然后 比如一周没有付款 就自动 取消订单。所以这也解释了 我之前回答错误的东西。其实 待付款 压根就没有 库存没有的情况好么~
也就是说 在 确认订单流程,只要提交成功 就肯定是 有库存的。京东就没提交成功 给我返回了购物车,易迅的话 直接在购物车就给我验证了。
3 其实更好的做法是为商品设置库存状态,有些商品即使sku库存小于0了 也可以进入备货期 晚几天发货。那么这样的商品 即使没货了 也是允许售卖的。叫做预售。
这样的商品 库存即使为0 ,也可以进入待付款状态,付款成功后 优先发有货的其他商品。对了在里面还设计了 母订单 付款成功后 拆分 子订单的 条件之一。这里不做过多叙述。
那么 没有备货器的商品怎么办,我就是 看中了 一个 限量版本的烤箱。 在我购物车里面。 等我准备买的时候,没货了 而且没法补货。 那么 我还能下单或者购物车结算么?
也许对这类做验证,报错 无法提交是个 简单的办法。
或许 更极点的做法 当用户提交的时候。。这部分订单会进入一个 待挽回订单。客服自动跟进 询问是否愿意 替换 替换的烤箱 然后尽可能地让用户买其他的烤箱。
今天就写到这里了,好困