使用Laravel 5的Paypal的IPN模拟器

Mic*_*usa 2 paypal-sandbox paypal-ipn laravel-5

我即将解决这个问题,我正在我的应用程序中实现IPN系统,现在开始使用Paypal的IPN模拟器进行测试.

当我尝试发送IPN模拟时,它只是给出以下错误:

很遗憾,但是有一个HTTP错误.请再试一次.

首先想到的是 - 贝宝的服务已经关闭 - 测试错误,因为如果我创建一个空白页面并向其发送IPN消息http://myDNS.com/blankpage.php就可以发送它.

第二个想法 - 路线问题 - 我认为这也不是问题:

这是我的IPN听众PurchaseController.php:

public function completed()
{
    //FAHIM's Paypal IPN Listener

    $ipn = new PaypalIPNListener();
    $ipn->use_sandbox = true;

    $verified = $ipn->processIpn();

    $report = $ipn->getTextReport();

    Log::info("-----new payment-----");

    Log::info($report);

    if ($verified) {
        if($_POST['address_status'] == 'confirmed'){
            //sucess
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

routes.php:

Route::post('purchase/completed/', array('as' => 'purchase.completed', 'uses' => 'PurchaseController@completed'));
Run Code Online (Sandbox Code Playgroud)

是否存在与IPN Simulator和Laravel相关的已知问题?

先感谢您.

Mic*_*usa 8

看起来我找到了答案!问题是,只要Paypal尝试发送POST信息,就会抛出tokenMismatchException.

对于有相同问题的人,这是解决方案:

VerifyCsrfToken.php中间件中添加一个例外,以便异常URI不需要CsrfToken验证:

就我而言,它看起来像这样:

protected $except = [
    'purchase/completed'
];
Run Code Online (Sandbox Code Playgroud)

我正在使用Laravel 5,所以请记住,在较低版本中它可能略有不同.