gpt4 book ai didi

php - Paypal IPN 库存控制

转载 作者:搜寻专家 更新时间:2023-10-31 20:51:01 25 4
gpt4 key购买 nike

我一直在开发在线零售店。

它是用 php 编写的,使用 paypal 和 IPN 来处理付款。

我已经写了我自己的购物车。当用户想要结账时,他们点击结账按钮,该按钮具有标准的购物车上传功能,用户将被带到 Paypal 以完成付款。然后 Paypal 向我发送一个 IPN 以通知我付款。

我的问题是,我应该在什么时候存储订单以及何时减少库存水平?

我现在的标准流程是这样的:

  1. 用户将商品添加到购物车。

    • 如果商品现已售罄或添加的数量超过可用数量,则会更新购物车以反射(reflect)这一情况。
    • 但是,将库存添加到购物车不会降低库存水平。
  2. 用户点击结帐。

    • 购物车被加载到数据库中的订单记录中,库存水平降低。
    • 用户被带到 paypal 以完成付款。
  3. (a) 用户完成支付。

    (b) 用户没有通过返回网站或转到其他地方/关闭浏览器来完成付款。

  4. (可选)用户点击返回网站。

    • 用户看到“谢谢,订单完成”的完整页面。
    • 没有处理与订单表相关的任何事情,因为 paypal 无论如何都会发送 IPN。
  5. Paypal 发送 IPN
    • 使用交易状态更新订单

如您所见,此过程存在一些问题。如果客户在未完成付款的情况下离开 Paypal 页面,我将有一个“悬而未决”的订单,并且由于库存水平也降低了,其他客户将无法获得该库存!一个解决方案是每隔一段时间手动“清理”数据库。

替代方案?

  • 选项 I) 在收到“已完成的交易”IPN 之前,不要将订单存储在数据库中,然后使用存储在 session 中的购物车信息来创建订单并降低库存水平。但是, session 可能会过期,Paypal 付款可能需要几天时间,具体取决于付款方式。

  • 选项 II) 按原样存储订单,但在收到完成的交易 IPN 之前不要降低库存水平。这仍然存在悬空订单的问题,但至少在清理时不需要重新添加库存,我只需要删除订单即可。但是,另一个问题是,如果多个人在同一时间订购,那么他们的订单总计包含超过库存的数量。当系统收到完整的 IPNS,然后将库存水平降至负数时,这可能会非常困惑!

我在互联网上到处寻找某种帮助,但没有任何地方提到!大家直接跳到 IPN 应该怎么处理。我只是不明白其他人怎么可能没有这个问题?!

请帮忙!

最佳答案

您要处理的问题与航空公司预订系统多年来一直存在的问题相同。使用相同的解决方案即

1.当用户点击结账时(同时被重定向到 Paypal)

reduce inventory count
place a timestamp in the database along with a state that this order is temporary

2a。一旦您收到 IPN 即知道计费已成功

change state of the order to permanent

2b。有一个每隔几分钟运行一次的 cron 作业来跟踪临时订单。如果临时订单的时间大于您允许的时间,例如 20 分钟,则:

remove the temporary order from database
undo the change in inventory count

关于php - Paypal IPN 库存控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7623037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com