2017-08-27 114 views
3

我最近试图实现贝宝的IPN到我的网站。 这里是我已经采取了(沙盒)贝宝IPN,缺少POST数据

1步骤:使2个沙箱帐户(买方/卖方)

2:卖家帐户中启用IPN和URL设置为我PayPalIPN.php

PayPalIPN.php是

3:创建一个按钮,该按钮进入购买后success.php

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

现在

当我现在买的点击,登录到我的沙盒买家帐户,买它,然后按带我回商人,我得到这个错误

Fatal error: Uncaught Exception: Missing POST Data in /home/site/public_html/PayPalIPN.php:60 Stack trace: #0 /home/site/public_html/success.php(7): PaypalIPN->verifyIPN() #1 {main} thrown in /home/site/public_html/PayPalIPN.php on line 60

这是抛出异常的行

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

我真的很难过这个。在这个问题上,我只看到过一个问题,Paypal的教程没有提到这个错误发生时的错误。我感谢所有帮助

UPDATE

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

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

它似乎仍然没有得到所谓的设置在立即购买按钮的变量的URL。我真的很困惑我在做什么错...

回答

0

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

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; 

,并在贝宝的形式添加这样的:

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

贝宝应该把它返回到您的return_url作为发布变量。