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。它根本不起作用..我还尝试使用

在“立即购买”按钮的变量中设置 URL
notify_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 数据的主要内容,如果未能解决你的问题,请参考以下文章

缺少 PAYPAL IPN 自定义字段

PayPal 标准 IPN 退款结算消息缺少必填的“业务”字段

PayPal 订阅 - 缺少 PDT 发票

PayPal订阅IPN下次结算日期

如何传递 Paypal ipn 自定义和发票变量?

Paypal:ipn响应问题