PHP在线购物商店

3
我正在开发一个在线购物商店,但我不知道如何最好地确保在客户付款和结账期间产品可用。
例如,我有2件商品XX,我将其中1件加入购物车,那么应该在什么时候在我的数据库中预留这个商品?当客户单击结账并生成PayPal链接时吗?如果客户没有支付,我该如何重新使该商品可用?如果客户等待太长时间再支付呢?
我正在寻找有关此过程的一些答案。
更新:我目前在生成PayPal链接时才会将商品添加到已预订的商品列表中,并将其添加到已预订商品的数据库中。以下是我的问题:如何在Paypal中设置超时,使链接只在X分钟内有效?如果时间超过X分钟,如何从数据库中删除该商品?使用cron作业和PHP文件?我遇到的问题是有人预订了商品但从未支付,导致该商品永远保留或者他人因等待时间过长而购买它。
更新2:真正的商品是本地SQL服务器数据库,商店与基于Web的mysql服务器配合使用,因此我必须同步两个数据库,因为我无法修改SQL服务器数据库,只能在最终确定订单时在那里添加订单。

3
这是你的设计工作的一部分。没有"正确答案"。但我看到有些网站会为你保留一个物品半个小时,让你有充足的时间结账并将其归还到商店库存(自动取消订单)。其他网站会在你结账时进行最后的可用性检查,如果你太慢了则道歉。选择适合你的方式! - Niet the Dark Absol
这是一个复杂的问题,没有绝对的答案。在考虑技术问题之前,您必须做出选择:何时应该预留物品,客户可以支付多长时间,如果不得不在付款前告诉客户该物品已不再可用,是否会有问题等等... - Gwenc37
1
有些地方允许负库存出现,然后告诉用户由于高需求会有运输延迟,并给他们取消订单的选项。如果这种情况很少发生,那么这可能是一个可以接受的解决方案。 - Michael Butler
1个回答

1
根据您希望系统如何工作,有多种实现方法。一种方法是创建一个购物车表,保存所有客户购物车的信息。此外,您可以为每个购物车分配超时时间。当客户将商品添加到购物车中时,不应直接在数据库中减少商品的可用性。相反,网页上显示的可用性应该是从商品可用性和所有购物车中该商品的数量计算得出的。

您可以使用会话(session)或在购物车表中定义超时时间。 - An Cong Tran
如果您为购物车定义了超时时间,您就不必担心清理购物车的问题。如果您想计算某个商品的可用性,您可以在产品表中获取该商品的可用性,并减去购物车中未过期(即未超时)的预订商品数量。您可以手动清理购物车表,也可以通过定期作业来完成。 - An Cong Tran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接