处理电子商务购物车项目


Handle eCommerce Cart Items

我正在构建一个电子商务系统,我正在考虑处理添加到用户购物车中的商品的最佳方式。

例如,假设我即将购买我刚刚添加到购物车中的产品,自动地,如果该产品有10件商品,那么只有9件可用,但由于某种原因,我现在不想要它,只是关闭了浏览器,我该如何取消该请求?

我的意思是,既然没有确认付款,我该如何将9种可用产品再次变成10种?

我想也许可以使用会话来做到这一点,例如,当你将一个项目添加到购物车中时,你将有5分钟的时间来确认,否则它将再次可用,但只有当用户不断浏览网站时,它才能工作,我可以验证这一点——但如果他刚刚关闭了,你知道吗?

有什么帮助吗?

您的,Diogo

您在用户结账后更新库存计数,而不是在用户将其添加到购物车时更新。如果在一周内或你选择的其他时间没有付款,就把它放回库存。

另外,你检查每个请求,或者当他到达购物车页面时,如果所有商品仍然可用,也许有人在这期间购买了它,并通知用户。

但如果你坚持在添加到购物车时更新库存,那么你必须将购物车内容保存在数据库中,并通过更新上次请求的时间戳来跟踪用户活动。您执行一个cronjob,每隔x分钟检查一次非活动用户,并将项目放回库存。您可以在页面上添加一些自动ajax请求,这样,若用户并没有关闭浏览器,而是想保持活跃。

简短的回答:让每个人都试着把你买断,直到有人成功地付钱给你,这时其他人都被告知库存不足。

长话短说:假设有两个人在争夺全部10个项目。假设您没有AJAX。两者都参见10。两人都把10件东西放进了篮子。两人都输入了自己的信用卡信息,然后点击提交到order.php。在order.php中,第一件事就是获取一个互斥对象。检查库存。如果有足够的存货,请刷卡。如果成功充电,则减少库存并释放互斥锁,然后返回成功。如果库存太少或卡失败,释放互斥锁并返回错误。

您在信用卡交易完成后扣除股票。大多数人不会为他们放在购物车里的东西完成购买。

另一点是,人们可以把东西放进购物车里,但在很长一段时间内都不买。因此,在结账阶段,除了确认现有库存外,您还将确认价格,以防价格发生变化。

相关的问题是,一个客户试图订购的数量超过了手头的库存。他们在购物车里放了5个,而你只有3个。通过检查库存,你可以给他们一个礼貌的信息。

您应该在"购物车"中存储的只是产品id和数量。任何时候,只要有东西添加到购物车中,或者更新了数量,并且在结账阶段-,您就可以确认库存并获得所有购物车项目的价格

这也是为了防止有人能够破解你的购物车,改变价格并给自己折扣。最起码的是——当客户点击购买按钮时,不要发送产品价格。只发送产品id和可选的数量,然后根据从产品表中获得的信息进行定价和总额。