Paypal IPN,缺少 POST 数据
Posted
技术标签:
【中文标题】Paypal IPN,缺少 POST 数据【英文标题】:Paypal IPN, Missing POST Data 【发布时间】:2018-02-05 02:28:27 【问题描述】:我最近尝试在我的网站中实施 Paypal 的 IPN。 这是我采取的步骤(沙盒)
1:创建 2 个沙盒帐户(买方/卖方)
2:在卖家账户上启用IPN并将URL设置为我的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() #1 main 在第 60 行的 /home/site/public_html/PayPalIPN.php 中抛出
这是引发异常的行
if ( ! count($_POST))
throw new Exception("Missing POST Data");
我真的很难过。我在这里只看到一个关于这个问题的问题,Paypal 的教程没有提到当这个错误发生时出了什么问题。感谢您的帮助
更新
看来我在错误的地方使用了一些 URL。所以现在我在“paypalipn.php”有一个 IPN 类和另一个名为“success.php”的文件,其中包含 paypalipn.php 并使用 IPN 类检查其是否经过验证。我已将侦听器 URL 设置为 success.php,当它被购买时,用户被重定向到“purchased.php”。我遇到的问题是,似乎从未调用过success.php。它根本不起作用..我还尝试使用
在“立即购买”按钮的变量中设置 URLnotify_url=https://www.website.com/success.php
它似乎仍然没有被调用。我真的很困惑我做错了什么......
【问题讨论】:
【参考方案1】:似乎被调用的 .php 中有错误。在我修复了错误之后,它似乎被调用了。现在我只是想弄清楚如何正确地将自定义变量发送到 IPN。我不断从 $_POST 得到错误的东西。
【讨论】:
【参考方案2】:检查您的网址是否正确。
不应该是这样吗?
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。
【讨论】:
以上是关于Paypal IPN,缺少 POST 数据的主要内容,如果未能解决你的问题,请参考以下文章