Переменные сеанса Laravel получают значение Null, после перенаправления на платежный шлюз и возврата обратно

#laravel #session

#laravel #сеанс

Вопрос:

Я нашел несколько связанных вопросов, но у них недостаточно объяснений / решений для моей проблемы. Я интегрирую платежный шлюз Paycorp с существующим проектом. В PaymentController.php Я помещаю все настройки IPG отеля в массив и помещаю в сеанс. Как только я помещаю его в сеанс, я пытаюсь распечатать его с помощью vardump, он работает, он находится в сеансе! Затем я инициирую платеж и перенаправляю на сгенерированный URL. Он перенаправляет на платеж Paycorp, я предоставляю данные карты и отправляю. Когда он возвращается к PaymentCompleteController.php Мне нужно завершить платеж, и мне нужны настройки IPG отеля, которые я ввел в сеанс. Когда я попытался его получить, ничего нет, и оно равно NULL.

PaymentController.php

     $params['something1'] = $something1;
    $params['something2'] = $something2;
    $params['something3'] = $something3;
    $params['something4'] = $something4;

    Session::put(SampleModel::PARAMS, $params);
    //At this point Params are in the session
    //var_dump(Session::get(SampleModel::PARAMS)); exit();

    //Initiate Payment and Redirect to URL
  

Как только данные карты будут предоставлены и отправлены, они будут перенаправлены обратно на

PaymentCompleteController.php

     vardump(Session::get(SampleModel::PARAMS)); exit();
  

В PaymentCompleteController.php переменная сеанса равна нулю. Но переменная, помещенная перед PaymentController.php все еще существуют.

Ответ №1:

Когда запускается жизненный цикл приложения Laravel, любое значение, введенное в сеанс, еще не сохраняется до завершения жизненного цикла приложения. Перенаправление предотвращает это.

Сохраняйте значения сеанса сразу после вызова put() :

 Session::put(SampleModel::PARAMS, $params);
Session::save();
  

Комментарии:

1. Спасибо, теперь это работает! Работая над Laravel более 8 месяцев, я никогда не сталкивался с этой проблемой! Также я ценю вас за объяснение.