Paypal IPN,缺少POST数据

时间:2017-08-27 19:19:17

标签: php paypal paypal-ipn

我最近尝试将Paypal的IPN实施到我的网站中。 以下是我采取的步骤(沙盒)

1:制作2个沙箱帐户(买方/卖方)

2:在卖家帐户上启用IPN并将网址设置为我的PayPalIPN.php

PayPalIPN.php为https://github.com/paypal/ipn-code-samples/blob/master/php/PaypalIPN.php

3:创建一个按钮,购买后按钮转到success.php

success.php是https://github.com/paypal/ipn-code-samples/blob/master/php/example_usage.php

现在,当我点击立即购买时,登录我的沙箱买家帐户,购买它,然后按下带我回到商家,我收到此错误

  

致命错误:未捕获异常:/home/site/public_html/PayPalIPN.php:60中缺少POST数据堆栈跟踪:#0 /home/site/public_html/success.php(7):PaypalIPN-> verifyIPN( )在第60行的/home/site/public_html/PayPalIPN.php中抛出#1 {main}

这是抛出异常的行

 if ( ! count($_POST)) {
       throw new Exception("Missing POST Data");
    }

我真的很难过。我在这里只看到一个问题,Paypal的教程没有提到发生此错误时出了什么问题。我感谢任何帮助

更新

所以好像我在错误的地方使用了一些网址。所以现在我在'paypalipn.php'上有一个IPN类,另一个名为'success.php'的文件包括paypalipn.php,并使用IPN类来检查它是否经过验证。我已将侦听器URL设置为success.php,并在购买时将用户重定向到“purchase.php”。我遇到的问题是看起来像success.php永远不会被调用。它根本不起作用..我也尝试使用

在立即购买按钮的变量中设置URL
notify_url=https://www.website.com/success.php

它似乎仍然没有被调用。我真的很困惑我做错了......

2 个答案:

答案 0 :(得分:0)

似乎被调用的.php中有错误。我修复错误后,似乎被调用了。现在我只想弄清楚如何正确地将自定义变量发送到IPN ..我一直在从$ _POST中得到错误的东西。

答案 1 :(得分:0)

检查您的网址是否正确。

不应该这样吗?

 notify_url=https://www.website.com/paypalipn.php

 return_url=https://www.website.com/success.php

要检查您是否收到POST变量,可以在success.php中使用以下内容在屏幕上打印。

 print_r($_POST);

要添加自定义数据,如果您使用表单/按钮,则可以执行以下操作;

$custom_data = $myvar;

并在PayPal表单中添加如下:

<input type="hidden" name="custom" value="<?php echo $custom_data ;?>">

Paypal应将其作为发布变量返回到您的return_url。