Здравствуйте! Впервые сталкиваюсь с данной ошибкой - даже не знаю в какую сторону копать.
При попытке добавить Яндекс.Кассу на сайт не приходят уведомления (после успешной оплаты пользователем на определённый URL яндекс отправляет, как я понял, POST-запрос с данными).
Вот несколько ключевых роутов:
Route::post('/money/recharge', 'MoneyController@recharge')->name('money.recharge'); # Здесь обработчик формы, где указано только кол-во денег :)
Route::any('/get-notifications', 'MoneyController@confirm'); # Не был уверен какой тип запроса
Вот код контроллера:
class MoneyController extends Controller
{
public function recharge(Request $request)
{
$request->validate(['amount' => 'required|numeric|max:10000|min:10']);
$client = new Client();
$client->setAuth('id', 'key');
$idempotenceKey = uniqid('', true);
$response = $client->createPayment([
'amount' => [
'value' => $request->input('amount'),
'currency' => 'RUB'
],
'payment_method_data' => [
'type' => 'bank_card'
],
'confirmation' => [
'type' => 'redirect',
'return_url' => 'https://somesite.ru/profile/recharge'
],
'metadata' => [
'user_id' => $request->user()->id
]
], $idempotenceKey);
Payment::create([
'user_id' => $request->user()->id,
'unique_id' => $response->id,
'amount' => $request->input('amount')
]);
return redirect($response->confirmation->confirmationUrl);
}
public function confirm(Request $request)
{
Log::info('payment request', ['request_all' => $request->all()]); # Просто пытаюсь понять, обращается ли что-то к странице.
return 'confirmed';
}
}
На страницу платежа переходит, платёж проводит, но никакого уведомления нет.
После общения с тех поддержкой выяснилось:
К сожалению, Ваш последний платеж не прошел по той причине, что при доставке уведомления по адресу https://somesite.ru/get-notifications мы получаем http код 419.
Никогда не сталкивался с данным кодом, и в
специфицации его нет, но вот что подсказали:
419 код - тайм-аут проверки подлинности. Другими словами запрос, требующий авторизации пользователя, не может быть обработан, так как время проверки подлинности истекло.
Но я не пойму о какой проверки идёт речь? Ведь нет никаких авторизаций/проверок.