使用外部支付网关进行电子商务库存管理

gpi*_*ino 8 php payment transactions payment-gateway e-commerce

这个问题类似于这一个,但与一捻(所以接受了老问题的答案是无效在以下情况下)

我有一个卖票的网站(PHP/MYSQL).假设我只剩一张票:

  • 买方A将票放入购物车并进入支付网关页面(即paypal)
  • 门票被锁定5分钟,所以买家B不能买
  • 买家A等待5分钟,Paypal页面打开,什么都不做
  • 机票已解锁,因此买方B将其放入购物车并进入Pay​​Pal页面
  • 买方A成功执行PayPal上的付款程序
  • 买方B成功执行PayPal上的付款程序

我可以等待更长时间,但我认为这不会在更一般的情况下解决问题.而且,如果我这样做,就可以制作某种DoS,将物品锁定在库存中很长一段时间.

什么是处理这种情况的最佳方法?

Pau*_*ulG 6

所有支付网关都会进行回发以告知您(例如)支付参考等.大多数还会回发授权/认证信息,例如CSC/CVV2检查结果,以便您(商家)对是否接受最终决定权付款与否.

收到回发后,您应该能够检查机票是否仍然"锁定",如果没有,则通过支付网关发出付款撤销以取消付款.然后你需要显示一条消息'抱歉,超时超时请再试一次'

如果网关不支持"即时反转"样式功能,那么它们至少会支持某种"无效"功能,从而实际上不会从客户卡中取出资金,并且授权保留会自动下降(通常在两天后) ,虽然在某些卡上可能需要更长的时间).对于(希望很小)超时的交易数量,这可能是可以接受的.值得监控多少交易超时,以便可以调整超时期限.

或者,如果票证不再被锁定(并且再次,如果网关支持它),则发回退款付款.


Pet*_*and 1

是否有一种更具社交性的解决方案而不是技术性的解决方案?为什么不明确表明,当您等待太久时,票证就会解锁?