0

只是想知道是否有人可以帮助我解决我在 PayPal IPN 方面遇到的令人沮丧的问题。我的代码是:

<?php
    error_reporting(E_ALL);
    // tell PHP to log errors to ipn_errors.log in this directory
    ini_set('log_errors', true);
    ini_set('error_log', dirname(__FILE__).'/ipn_errors.log');

    // intantiate the IPN listener
    include('ipnlistener.php');
    $listener = new IpnListener();

    // tell the IPN listener to use the PayPal test sandbox
    $listener->use_sandbox = false;

    // try to process the IPN POST
    try {
       $listener->requirePostMethod();
       $verified = $listener->processIpn();
    } catch (Exception $e) {
       error_log($e->getMessage());
       exit(0);
    }

    // TODO: Handle IPN Response here
    // ... 

    if ($verified) {
       echo 'hello';
       // TODO: Implement additional fraud checks and MySQL storage
       mail('my email here', 'Valid IPN', $listener->getTextReport());
    } else {
       // manually investigate the invalid IPN
       mail('my email here', 'Invalid IPN', $listener->getTextReport());
    }

?>

我的 ipnlistener.php 是这里给出的:https ://github.com/Quixotix/PHP-PayPal-IPN

当有人提交付款时,我确实收到了 Valid IPN 电子邮件,正如我在代码中应该看到的那样,但没有其他任何回显(即 hello 没有回显),并且我的页面的页脚不存在。这就像拒绝回应任何东西,但确实遵循其余的命令。在我的错误日志中,我总是得到“无效的 HTTP 请求方法”。

任何人都可以帮忙吗?

谢谢。

编辑:以防万一它有助于知道,之前的任何回应

try {
   $listener->requirePostMethod();
   $verified = $listener->processIpn();
} catch (Exception $e) {
   error_log($e->getMessage());
   exit(0);
}

很好,但是之后的任何回声都不起作用。

4

1 回答 1

0

“无效的 HTTP 请求方法”错误是由 requirePostMethod() 故意抛出的。这个想法是这个页面应该只接受 POST 请求。当您在浏览器中查看该页面时,这是一个 GET 请求。

编辑:当 requirePostMethod() 抛出异常时,这会阻止 PHP 解析页面的其余部分,这就是为什么事后没有回显的原因。

查看 GitHub 上对 requirePostMethod 的评论 => https://github.com/Quixotix/PHP-PayPal-IPN/blob/master/ipnlistener.php(就在底部)。

希望有帮助!

于 2013-04-20T14:22:11.613 回答