我最近尝试将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永远不会被调用。它根本不起作用..我也尝试使用
在立即购买按钮的变量中设置URLnotify_url=https://www.website.com/success.php
它似乎仍然没有被调用。我真的很困惑我做错了......
答案 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。