php,商城库存,订单支付成功后扣库存?
php商城网站,我是下单后,支付成功了在扣库存;
应该场景,商城商品比较特殊;一些产品只有一件库存
出个问题场景,
商品一,只有一件;
用户一跟用户二,同时操作商品一下单;
用户一,购买商品一,生成订单,选择支付宝扫码支付,直接扫码支付了,成功后,回调扣了库存;商品库存为 0
用户二,购买商品一,生成订单,在选支付宝扫码支付时后,没支付;等了半分钟,在扫码支付,成功后,回调扣了库存 商品库存为 -1
那么,因为第三方支付二维码,是下单时请求时生了;怎么在扫第三方支付二维码时在判断,商品库存;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
优化业务逻辑,改进如下:
当订单生成的时候,立即扣除库存
订单超过24小时,未付款,自动取消订单,恢复库存。
没有库存的时候,不能生成订单。
特殊业务特殊处理,下单扣库存,3~5分钟后未支付就取消订单恢复库存。
多次下单却不支付的用户,进行限制购买的处理。
首先订单的生成和支付一瓣是属于两个业务逻辑。比较通行的做法是订单生成时以transaction进行数据库更新,扣除库存等。这个可以确保一件商品不会同时被两个人买的问题。支付成功后对订单状态更新,进入后续流程。未支付的订单进行超时处理,给库存一个补足
可以在订单生成之前 在购物车阶段就扣库存 后台定时任务检测订单状态 如果超过XX分钟未支付 恢复库存
我觉得高票说的没错。题主的思绪有些问题
只有一件商品两个人同时下了订单,excause me?怎么会有这种情况出现?这又不是拍卖会难道谁出的价钱高、谁出手速度快就卖给谁吗?
下订单
我们就当做预定
,既然是预定,你可以给用户说明一个预定后-购买时间
,10-30min
不等,因为我们家这件商品只有一件库存,你不若不购买就给别人了,这个情况一定要让用户知道。不然,我订了一件商品,我5分钟后去支付,这之间别人下订单买走了,我去支付的时候你告诉我这个商品没了?这样对网站信誉度好吗正常逻辑楼上的回答者已经说了,这里就不说了。商城的购物规则差不多都是一样的。
你这逻辑就有问题啊, 按照你这逻辑这问题是没办法避免的, 应该是下单的时候就减库存,或者冻结库存啊, 不用等到支付成功啊。
来源ECSHOP:https://share.notestore.cn/e1...
首先指出你的问题,为何库存会变成-1?我想你应该在数据库字段存取了个“库存数”字段,但根据数据库设计原则,凡是能计算出的值,都不应该另建个字段存储
言归正传,这个问题理论上是没办法解决的,甚至淘宝也有这个问题,所以下面的方法只能说避免这个问题的发生,我之前是这样做的,下单时先判断库存是否大于10件,如果大于十件,则正常下单,小于10件就锁定库存。