Php 如何防止两位顾客购买一件商品

Php 如何防止两位顾客购买一件商品,php,paypal,Php,Paypal,我正在使用paypal IPN+PDT在我的网站上销售一些东西。我总是在付款前检查库存中有多少物品。客户下单后,他将被重定向到paypal进行付款。付款完成后,我正在更新关于销售物品的数据库,直到现在我还没有问题,因为我销售的物品是无限的。我不确定如果我有10件物品要出售,我该怎么办,例如在这种情况下: 还有最后一件要卖。客户下了订单,他打算在paypal上付款,但他还没有付款(网站仍然显示有一件商品要出售),同时客户B看到还有一件商品在库存中,所以他也打算购买。在这种情况下,两个客户都将付费,

我正在使用paypal IPN+PDT在我的网站上销售一些东西。我总是在付款前检查库存中有多少物品。客户下单后,他将被重定向到paypal进行付款。付款完成后,我正在更新关于销售物品的数据库,直到现在我还没有问题,因为我销售的物品是无限的。我不确定如果我有10件物品要出售,我该怎么办,例如在这种情况下:

还有最后一件要卖。客户下了订单,他打算在paypal上付款,但他还没有付款(网站仍然显示有一件商品要出售),同时客户B看到还有一件商品在库存中,所以他也打算购买。在这种情况下,两个客户都将付费,但只有一个(更快的一个)获得他的产品


我必须做些什么才能避免这种情况发生?

如果不先看一下你的答案,我就不能给你一个密码答案,但下面是如何在纸上完成的:

  • 当客户A单击“付款”按钮时,数据库中的项目数量将更新
  • 如果付款通过,则什么也不做,如果付款未通过(取消、错误的付款信息等),则将数量恢复为原始数量

只要在用户单击checkout按钮时进行最后一次“数量检查”,就可以正常工作。假设客户A和客户B在购物车中都有一个项目X,并且只剩下一个。他们不能同时为物品付款,因为您的系统会在重定向到Paypal之前检查数量,一旦其中一位客户点击按钮,数量就会更新以反映购买情况。

没错,但如果客户A点击“付款”按钮系统将在数据库中更新它,然后客户将离开我的页面在paypal网站上付款,但如果他改变主意,他没有付款,再也没有回到我的网站,我如何取消阻止数据库中的最后一项?不幸的是,没有完美的方法来处理这个问题。您可以使用计时器将物品只保留一段时间,或者在两个用户在同一个确切时间为同一物品付款的罕见情况下,只允许第二次订购——仅仅因为一件物品现在缺货并不意味着它将永远存在。确保用户可以在需要时轻松取消订单。保留一段时间是个好主意。一些网站(铁路)通知用户,他的座位只被保留了20分钟就可以付款了。你用购物篮吗?如果商品在购物篮中,其他客户将无法购买。