V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
emeab
V2EX  ›  问与答

商城订单在支付后才扣库存是正确的做法吗

  •  
  •   emeab · 2019-08-10 01:24:31 +08:00 · 5281 次点击
    这是一个创建于 1692 天前的主题,其中的信息可能已经有所发展或是发生改变。

    新去的一家公司. 今天和同事说这个话题 他说他一直是商城订单在支付后才扣库存. 不做延迟任务. 查订单时候把 15 分钟未支付的订单关闭了. 这样的做法好吗?

    19 条回复    2019-08-10 15:38:43 +08:00
    airyland
        1
    airyland  
       2019-08-10 01:31:21 +08:00 via iPhone
    非拼团订单要先锁库存,超时关闭订单时释放。不锁库存等多个用户同时下单,并发时扣库存就有坑了,然后还要给用户退款。感觉就是产品不行技术也不行,感觉可能要出超卖事故。
    wunonglin
        2
    wunonglin  
       2019-08-10 01:36:25 +08:00
    1、创建订单,状态标记未支付,锁定库存
    2、支付完成后,标记订单状态完成,并减去库存
    or
    2、支付超时,订单标记关闭,并释放库存
    limuyan44
        3
    limuyan44  
       2019-08-10 02:16:24 +08:00   ❤️ 1
    下单了,支付了,然后告诉我库存没了,这种商家应该见一个拉黑一个。所以,从一个普通人角度,合适吗?
    emeab
        4
    emeab  
    OP
       2019-08-10 02:19:43 +08:00
    @airyland 我一直这样做..但是他说这样做太麻烦. 还拍着胸口对着我说 都是怎么做的...
    emeab
        5
    emeab  
    OP
       2019-08-10 02:23:17 +08:00
    @airyland 之前用的是 beanstalkd 做的队列
    emeab
        6
    emeab  
    OP
       2019-08-10 02:25:59 +08:00
    @limuyan44 他的意思是 支付之前 检查库存 如果够了才扣
    illl
        7
    illl  
       2019-08-10 02:37:46 +08:00 via iPhone
    支付后扣库存会有小问题,有些限购一件的东西可以先锁单,多锁几单后再支付就破解了限购了
    gam2046
        8
    gam2046  
       2019-08-10 03:17:25 +08:00   ❤️ 3
    从比较科学的流程上来说,产生订单时,即锁定库存,支付成功后减库存。订单取消、超时后取消锁定库存。

    但是,如果你不是项目负责人,项目经理之类的角色,请遵循现行做法,同事们都是这么做,除非你想把他们的活抢过来都自己做。

    工作不是一个讲求真理的地方,好或不好,对或不对,因时因地因人,都不一样。
    hadesy
        9
    hadesy  
       2019-08-10 03:51:22 +08:00
    拍下减库存,存在恶拍风险;
    付款减库存,存在超卖风险。
    watzds
        10
    watzds  
       2019-08-10 06:24:39 +08:00 via Android
    如果是没什么大并发,库存又比较多的,没啥大问题吧
    一个小网站搞这么复杂干嘛
    westoy
        11
    westoy  
       2019-08-10 07:20:08 +08:00
    也就京东是下单锁库存吧

    天猫超市和苏宁都是这种搞法, 下单锁一定时间库存, 超时间释放, 已下订单超过时间无库存付不了款

    看电商平台调货能力了, 没什么对错的
    yibin001
        12
    yibin001  
       2019-08-10 07:33:58 +08:00
    商品总量 10000
    实际库存 加到购物车就-1,此时变成 9999
    支付成功 实际库存 9999
    超时不支付 时间库存+1,变回 10000
    zhuzhibin
        13
    zhuzhibin  
       2019-08-10 09:46:10 +08:00 via iPhone
    预扣->锁一波->支付成功->释放
    xwbz2018
        14
    xwbz2018  
       2019-08-10 10:49:13 +08:00
    所以后台一般有几种锁定库存方式选择:

    1. 加入购物车时
    2. 进入结算页面
    3. 结算完毕(支付成功)

    要做的事情就是在这些操作时,修改购物车项或者订单项里的是否已分配库存标识并减去商品库存。超时释放库存是一定要有的。还要结合一些活动做一些调整什么的。
    NerverLibis
        15
    NerverLibis  
       2019-08-10 12:51:28 +08:00 via iPhone
    @airyland 网易就是不锁 同时支付 其余退款 单件商品 10 元-200 万元
    airyland
        16
    airyland  
       2019-08-10 13:11:08 +08:00
    @NerverLibis 需要拣货确认的场景可以理解这样的形式,比如线上菜市场之类的,用户也好理解,也有给用户如何履约的选项或者说明。线上商品使用这种形式不会导致因为一个商品退款发生优惠券门槛满足不了,运费逻辑需要重新计算这些问题么,下了一个单一会又被退款导致用户不爽么?
    emeab
        17
    emeab  
    OP
       2019-08-10 15:32:49 +08:00
    @gam2046 这个是我负责的 他和我是同期进来的..
    gamexg
        18
    gamexg  
       2019-08-10 15:36:23 +08:00
    @yibin001 #12 我习惯把购物车当收藏夹用,进购物车就扣减库存对商家有些不友好。
    botian
        19
    botian  
       2019-08-10 15:38:43 +08:00 via Android
    肯定下单未支付的时候就要锁库存了,不然并发要死
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4924 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:52 · PVG 17:52 · LAX 02:52 · JFK 05:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.