Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Paypal IPN和PHP:处理Paypal操作前后的订单_Php_Paypal_Paypal Ipn - Fatal编程技术网

Paypal IPN和PHP:处理Paypal操作前后的订单

Paypal IPN和PHP:处理Paypal操作前后的订单,php,paypal,paypal-ipn,Php,Paypal,Paypal Ipn,我已经和Paypal做了一个小的电子商务,它是有效的,但我觉得它做得不对 由于处理来自Paypal的IPN响应的页面无法读取$\u SESSION变量,因此在用户提交表单并重定向到Paypal之前,我会获取所有购物车项目并将其存储在数据库中的表中,我还会使用用户信息注册新订单,但状态为0(未完成). 然后,在用户付款并收到IPN响应后,我检查状态是否已完成,检查支付的金额是否正确,货币和常规检查以确保支付成功 这种方法的问题是,如果用户一旦重定向到Paypal,决定离开/关闭浏览器/Paypa

我已经和Paypal做了一个小的电子商务,它是有效的,但我觉得它做得不对

由于处理来自Paypal的IPN响应的页面无法读取
$\u SESSION
变量,因此在用户提交表单并重定向到Paypal之前,我会获取所有购物车项目并将其存储在数据库中的表中,我还会使用用户信息注册新订单,但状态为
0
(未完成).

然后,在用户付款并收到IPN响应后,我检查状态是否已完成,检查支付的金额是否正确,货币和常规检查以确保支付成功

这种方法的问题是,如果用户一旦重定向到Paypal,决定离开/关闭浏览器/Paypal选项卡,我将在数据库中注册一个失败的订单,我不能删除它,只能手动删除

我如何处理这种情况,在用户付款之前注册订单/购物车是否正确


感谢您并对这篇冗长的帖子表示歉意。

如果您想检查交易是否发生,请依赖IPN消息。根据您使用的api,您有几种方法可以使用有用的信息自定义IPN消息,即:

  • 使用paypal自定义字段
  • 使用额外参数(即www.yoursite.com/IPN?myvar=myval)动态定义IPN url
这样,您就可以在支付和应用程序中的实际用户之间建立一个挂钩。 显然,当http post来自paypal时,用户的php会话属性不可用