Php 贝宝IPN库存控制
我一直在开发一个在线零售商店 它是用php编写的,使用paypal和IPN来处理付款 我已经写了我自己的购物车。当用户想要结帐时,他们点击结帐按钮,该按钮具有标准购物车上传功能,用户被带到paypal完成付款。贝宝然后给我发送一个IPN通知我付款 我的问题是,我应该在什么时候存储订单,什么时候应该降低库存水平 我现在掌握的标准流程如下:Php 贝宝IPN库存控制,php,paypal,paypal-ipn,orders,Php,Paypal,Paypal Ipn,Orders,我一直在开发一个在线零售商店 它是用php编写的,使用paypal和IPN来处理付款 我已经写了我自己的购物车。当用户想要结帐时,他们点击结帐按钮,该按钮具有标准购物车上传功能,用户被带到paypal完成付款。贝宝然后给我发送一个IPN通知我付款 我的问题是,我应该在什么时候存储订单,什么时候应该降低库存水平 我现在掌握的标准流程如下: 用户将项目添加到购物车 如果商品现已售罄或添加的数量超过可用数量,则会更新购物车以反映这一点 但是,添加到购物车的库存不会降低库存水平 用户点击结帐 购物
- 如果商品现已售罄或添加的数量超过可用数量,则会更新购物车以反映这一点
- 但是,添加到购物车的库存不会降低库存水平
- 购物车被加载到数据库中的订单记录中,库存水平降低
- 用户被带到paypal完成付款
- 用户看到“谢谢,订单完成”完整页面
- 由于paypal仍将发送IPN,因此未处理与订单表相关的任何内容。
- 使用交易状态更新订单
- 选项I)在收到“已完成交易”IPN之前,不要将订单存储在数据库中,然后使用会话中存储的购物车信息创建订单并降低库存水平。但是,会话可能会过期,paypal付款可能需要几天时间,具体取决于付款情况
- 选项II)按现在的状态存储订单,但在收到完整的交易IPN之前,不要降低库存水平。这仍然有悬而未决的订单问题,但至少在清理时不需要再次添加库存,我只需要删除订单。然而,另一个问题是,如果多人在相似的时间订购,那么他们的订单总量超过了库存。当系统接收到完整的IPN,然后将库存水平降至负值时,这可能会非常混乱
请帮忙 作为一个商人和一个开发者,我更喜欢用IPN调整库存,即使那个IPN是待定的(例如eCheck)。两名顾客同时结帐并持有你最后一批剩余存货的几率通常很低。如果您确实有足够高的容量和较低的库存水平(为什么会这样?),那么您可能希望在购物车中执行一些操作,在会话超时期间锁定项目
如果订单被取消或退回,请确保您的订单处理代码将库存退回库存。您处理的问题与航空公司预订系统多年来遇到的问题相同。使用相同的解决方案 1.在用户单击“签出”时(重定向到Paypal时) 2a。一旦收到IPN,即知道计费已成功
change state of the order to permanent
2b。有一个每隔几分钟运行一次的cron作业来跟踪临时订单。如果临时订单的时间超过您允许的时间(如20分钟),则:
remove the temporary order from database
undo the change in inventory count
我也真的需要帮助!我只是必须手动删除选项,以购买该项目时,它是脱销。
remove the temporary order from database
undo the change in inventory count