Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 14.08.2017 18:28:26

Прием http-уведомлений от Яндекс.Деньги

Всем горячие приветы!

Согласно мануалам от Яндекс сервис Яндекс.Деньги отправляет http-запрос при пополнении кошелька на указанный адрес… подробно можно почитать, например, здесь https://learn.dkrylov.com/articles/php/poshagovaja-nastrojka-jandeks-dengi-s-http-uvedomlenijami_9

Я добавил роут в web.php
Route::post(’receive’, ’MoneyController@yandexReceive’)->name(’receive’);

Обработчик должен принять уведомлялку и сохранить в БД

PHP
<?php

namespace App\Http\Controllers;

use 
App\Http\Controllers\Controller;
use 
Illuminate\Http\Request;
use 
App\Payment;
use 
App\Log;

class 
MoneyController extends Controller
{

    public function 
yandexReceive(Request $request){
        
$test_notification false;

        if (
$request->has('test_notification')) {
            
$test_notification $request->input('test_notification');
        }

        
$log = new Log;
        
$log->data $test_notification;
        
$log->save();
    }
}

При отсылке тестового уведомления — результат 0.

Далее я сделал простую форму на локальном сервере для отсылки пост-запроса

PHP
<form method="post" action="http://site.ru/receive" enctype="application/x-www-form-urlencoded">
    <
input type="hidden" name="test_notification" value="true">
    <
input type="submit" value="Go!">
</
form>

И что же? У меня открывается не запрошенная страница, а главная!
Где капать? Что курить? Подскажите!

Не в сети

#2 14.08.2017 23:08:53

Re: Прием http-уведомлений от Яндекс.Деньги

А ларчик то просто открывается…
Наш любимый защитник VerifyCsrfToken блочит всех и вся,

Откройте посредник VerifyCsrfToken и добавьте исключения к роуту

PHP
<?php

namespace App\Http\Middleware;

use 
Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class 
VerifyCsrfToken extends BaseVerifier
{
    
/**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    
protected $except = [
        
//
        
'receive',
        
'receive/*',
    ];
}

Не в сети

Подвал раздела