Laravel по-русски

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

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

#1 03.02.2017 06:53:45

Обработка post запроса от стороннего сервиса

Пользую L 5.1.
Есть необходимость отработать post-запрос, пришедший от сторонней платежной системы.
В запросе отдаются, будем считать, две переменые: status и sign.
Обработка в контроллере пока простейшая:

    class OrderController extends Controller {
         public function anyPayment(Request $request) {
             dd($request->all());
        }
    }

Отключаю CSRF-проверку добавлением в VerifyCsrfToken:

    protected $except = [
        'order/payment/*',
    ];

Итог: dd отдает мне пустой массив.
Далее, проверяю, в принципе данные поступают или нет.
Сооружаю формочку:

    <form method = "post"  action = "http://mysait/order/payment/"> 
        <div>status <input   type = "text" name = "status" value = "abc" /></div> 
	<div>sign <input   type = "text" name = "sign" value = "def" /></div> 
       <div> <input type = "submit"></div> 
    </form>

Проверка дает отрицательный результат, данных нет.
В формочке post меняю на get.
Что имеем:

array:2 [▼
  "status" => "abc"
  "sign" => "def"
]

Вопрос: что делается не так, и есть ли варианты решения этой проблемы?

Не в сети

#2 03.02.2017 07:15:04

Re: Обработка post запроса от стороннего сервиса

Вопрос: что делается не так, и есть ли варианты решения этой проблемы?

для начала открой закладку сеть в devtools и отключи очистку списка запросов. после этого повтори тест. на 99% уверен что запрос на "http://mysait/order/payment/" отдаёт редирект на "http://mysait/order/payment" (без слэша). после редиректа браузер уже не отправляет данные в запрос и $request->all() оказывается пустым. угадал?

Не в сети

#3 03.02.2017 08:04:09

Re: Обработка post запроса от стороннего сервиса

constb пишет:

отдаёт редирект на "http://mysait/order/payment" (без слэша)

Я же явно указал слэш в "http://mysait/order/payment/"

Не в сети

#4 03.02.2017 08:31:30

Re: Обработка post запроса от стороннего сервиса

ларавель для известных маршрутов, заканчивающихся на слэш, делает редирект на адрес без слэша

Не в сети

#5 03.02.2017 08:43:55

Re: Обработка post запроса от стороннего сервиса

ларавель для известных маршрутов, заканчивающихся на слэш, делает редирект на адрес без слэша

И как можно решить проблему?
Так же сталкивался с этой проблемой при редиректе и внутри проекта, приходилось прописывать кроме post-маршрутов еще и get-маршруты (скажем, при возврате на предыдущую страницу при ошибке ввода в форму).

Не в сети

#6 03.02.2017 10:01:03

Re: Обработка post запроса от стороннего сервиса

это не проблема. слэши на конце url - проблема, её ларавель решает

Не в сети

#7 03.02.2017 10:26:53

Re: Обработка post запроса от стороннего сервиса

И все же, как заставить (уговорить, запутать, обмануть) лару принять post-данные со стороннего источника?

Не в сети

#8 03.02.2017 10:57:10

Re: Обработка post запроса от стороннего сервиса

убрать / из конца url

Не в сети

#9 03.02.2017 11:20:45

Re: Обработка post запроса от стороннего сервиса

Спасибо, заработало!

Вот только еще надо было закоментить строчку

    'App\Http\Middleware\VerifyCsrfToken'

в app\Http\Kernel.php, иначе сразу сваливалось на домашнюю страницу

Не в сети

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