Laravel没有收到Paypal Webhook事件

问题描述

您好,我是laravel的新手,我建立了一个电子商务平台(细节并不重要) 无论如何,我的问题是我创建了一条路线,可以捕获来自Paypal Webhook的所有事件,但是当我直接访问它时,它就起作用了,但是当我尝试从Paypal Webhook Simulator进行尝试时,即使沙箱付款没有通过 我知道问题出在csrf验证中,我尝试排除路由,但没有成功,还尝试创建新的RouteServiceProvider 这是我在Controller中的代码,因此我可以从请求中捕获任何内容

$headers = getallheaders();

file_put_contents("/home/username/public_html/test.txt",json_encode($headers));

这是我的路线

Route::domain(env("APP_DOMAIN"))->group(function () {
    Route::get('/paypal/n','HomeController@notifications');
});

我使用了domain(env(“ APP_DOMAIN”)),因为每个人都可以添加自己的域,并且我希望它可以在主域中正常工作。

RouteServiceProvider中的代码

public function map()
{
    $this->mapApiRoutes();

    $this->mapWebRoutes();

    $this->mapPaymentRoutes();

    //
}

protected function mapPaymentRoutes()
{
    Route::middleware('payment')
        ->namespace($this->namespace)
        ->group(base_path('routes/payment.php'));
}

当然,我确实在文件Kernel.php中定义了支付中间件,并注释了VerifyCsrfToken类

protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,\Illuminate\Session\Middleware\StartSession::class,// \Illuminate\Session\Middleware\AuthenticateSession::class,\Illuminate\View\Middleware\ShareErrorsFromSession::class,\App\Http\Middleware\VerifyCsrfToken::class,\Illuminate\Routing\Middleware\SubstituteBindings::class,],'payment' => [
        \App\Http\Middleware\EncryptCookies::class,// \App\Http\Middleware\VerifyCsrfToken::class,'api' => [
        'throttle:60,1',];

即使有所有这些,并且像很多测试一样,我也无法正常工作 如果我向纯php文件发送请求,则工作正常。 你能帮我这个忙吗,我试图自己找到一个解决方案,但我花了15天的时间却没有运气 我使用laravel 6。

解决方法

如果其他人正在为这个问题而苦苦挣扎,我必须通过在公共场所创建一个纯php文件并发送webhook请求到该文件url / file.php和文件捕获数据并将其发送到我在laravel内部创建的命令来处理它,以便所有与数据库有关的事情都在laravel内部,而file.php就像管道。 我知道这不是最好的主意,但也不是最坏的主意 感谢所有试图帮助我的人。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...