使用IPN完成PayPal付款后删除cookie

问题描述:

我正在创建一个即将完成的付款系统,唯一剩下的部分就是删除所有用于交易的cookie。使用IPN完成PayPal付款后删除cookie

现在我可以删除所有的cookie,如果我添加一个删除功能到我的网站页面之一,并将其​​设置为刷新,这可以工作,但是,但要求用户返回到该页面开始,一些用户可能一旦使用贝宝进行支付关闭浏览器,所以下次他们打开网页时,cookies仍然有效。

我试图删除在PayPal使用它与网页进行通信的IPN文件中的cookie,但我似乎无法删除它,因为我不能让页面刷新,有没有另一种方法删除cookie?

PHP

foreach ($_COOKIE as $key => $value){ 
    setcookie($key, $value, time()-(100000 * 60), '/'); 
} 
if(count($_COOKIE) !=0){ 
    // I also tried this method, refreshing the IPN file but it didnt work. 
    header("Refresh:0"); 
} 

你的方法是错误的。您应该跟踪数据库中的交易,而不是Cookie。 Cookies可以用于会话。

然后,您可以在收到PayPal的付款确认后,通过您的IPN页面关闭数据库中的交易。

换句话说,IPN页面被PayPal调用,永远不会看到客户浏览器,因此无法删除那里的cookie。

+0

嗯我明白了,我和数据库没有任何关系,但它只有客户选择购买的商品数量和价格的信息。这些信息将不会存储到数据库中。 – Luke

+0

是的,我了解,但除非您保护您的Cookie,否则客户可以更改产品的价格,您需要吗?因此,将会话存储在会话中,并将会话ID发送到PayPal,以便在IPN页面上接收并操作会话或使用数据库。后者是首选的方法。 –

+0

谢谢。是的,我知道客户可以改变价格,一旦IPN被调用,我有一个函数可以检查来自数据库的cookie的价格。我想我必须在贝宝将用户重定向到我的网页时删除这些cookie,我只是觉得很烦人,因为如果客户决定在重定向之前关闭浏览器,下次他们打开网页时Cookie仍然存在。即使我重新编程代码以将价格连接到数据库,我仍然希望为用户选择的项目总数设置一个cookie。 – Luke

setcookie() PHP手册评论部分:

http://php.net/manual/en/function.setcookie.php#109173

想删除一个cookie?很多人都这么做: setcookie('name','content',time() - 3600);

但是,当客户的时间错误时,为什么你会变得如此复杂并且冒险不起作用呢?为什么随着时间摆弄();

下面是取消设置cookie的最简单方法: setcookie('name','content',1);

就是这样。

+0

OP询问如何避免重定向,而不是如何删除cookie。 – DanFromGermany

+0

我知道这种方法,我删除cookie的方式确实有效,不管效率是否低下,现在都没有关系。我想知道的是如何让这个函数无需刷新页面而工作,因为IPN文件不会刷新。 – Luke