Задать вопрос

Как получить данные об авторизованном пользователе Laravel?

Разрабатываю проект на Laravel 8. Столкнулся с такой проблемой: работаю с платежной системой для приема платежей. Когда пользователь совершает оплату, callback от платежной системы приходит на определенный адрес, потом обрабатывается и приходит методом POST на мой сайт. Затем отслеживаю это в web.php и передаю в контроллер. В контроллере мне нужно изменить данные о пользователе, который совершил оплату, но когда пытаюсь узнать о нем через Auth::user(), ничего не работает. Также пытался отследить id пользователя через Auth::id(), но тоже безрезультатно. Когда проверяю Auth::check() говорит о том, что пользователь неавторизован. Как можно решить эту проблему?
web.php
Route::post('/payment', [RateController::class, 'payment'])->name('payment');

RateController:
public function payment(Request $request) {
    if($request->input('status') == 'done') {
        $user = Auth::user();
        $user->rate = $request->input('rate');
        $user->save();
    }
}

Прием callback:
<?php
    $str = file_get_contents('php://input');
    $object = json_decode($str, true);
    $url = 'https://findinvestor.me/payment';
    $params = array(
        'rate' => 'bronze',
        'status' => $object['status'],
    );
    $result = file_get_contents($url, false, stream_context_create(array(
        'http' => array(
            'method'  => 'POST',
            'header'  => 'Content-type: application/x-www-form-urlencoded',
            'content' => http_build_query($params)
        )
    )));
?>
  • Вопрос задан
  • 621 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
JhaoDa
@JhaoDa
LaravelRUS Team
Сохраняй информацию о заказе у себя, с привязкой к пользователю, а потом уже перенаправляй на оплату. Либо, если по API платёжки можно передать доп. параметры, то передавай туда (с пониманием, что это потенциальная дыра).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Sanes
@Sanes
Что-то вы прям совсем не туда. Или я не понял ваш хитрый план.
Auth::user() это авторизованный пользователь. В ответе от платежной системы у вас ID транзакции. Он в своё время должен быть предварительно записан в БД и сопостовляться с id пользователя. Там же и статус платежа.

auth()->user()->id Вернёт id авторизованного пользователя.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы