我正在使用Laravel 4和Paypal开发一款简单的购物车。
对于IPN侦听器,我安装了以下软件包: - https://github.com/mike182uk/paypal-ipn-listener
我使用Route :: any()创建了一个路由,允许paypal使用这个简单代码调用函数的请求上的任何方法:
$listener = new \PayPal\Ipn\Listener;
$verifier = new \PayPal\Ipn\Verifier\CurlVerifier;
$ipnMessage = \PayPal\Ipn\Message::createFromGlobals();
$verifier->setIpnMessage($ipnMessage);
$verifier->setEnvironment('sandbox'); // can either be sandbox or production
$listener->setVerifier($verifier);
$listener->listen(function() use ($listener) {
// on verified IPN (everything is good!)
$resp = $listener->getVerifier()->getVerificationResponse();
$report = $listener->getReport();
$myfile = fopen("ipn.log", "w");
fwrite($myfile, $report);
fclose($myfile);
}, function() use ($listener) {
// on invalid IPN (somethings not right!)
$report = $listener->getReport();
$resp = $listener->getVerifier()->getVerificationResponse();
$myfile = fopen("ipn.log", "w");
fwrite($myfile, $report);
fclose($myfile);
});
当我看到日志文件Paypal返回INVALID时,我看到我没有收到任何帖子数据。 但是当我使用带有来自Paypal github的代码的单个php文件的IPN时,我收到了所有数据。 https://raw.githubusercontent.com/paypal/ipn-code-samples/master/paypal_ipn.php
P.S:我没有收到任何错误,IPN发送成功
答案 0 :(得分:1)
问题是因为我有al路由的csrf过滤器。
我解决了它在组中引入此路由并将此代码添加到app / filters.php
// CSRF For routes outside "rest" route group.
$firstSegment = Request::segment(1);
if($firstSegment != 'rest')
Route::filter('csrf','post');