@D3V1L

Не приходят IPN уведомления laravel?

у меня такой вопрос. Еще около двух лет назад я пытался поставить Payeer на Laravel, но безуспешно. Столкнулся с проблемой на мой настроенные роут попросту не приходит IPN нотификация. Вышел из положения создав отдельный php файл в директории паблик, но это костыли.

Сейчас работаю уже с другой системой, PrimePayeer, опыта стало больше, но ситуация аналогичная, пытаюсь разобраться и нигде не могу найти решения. На отдельный файл в директории /public нотификация сразу приходит. А на функцию по следующим настройкам - нет

Функции:
public function success() {
    Storage::put('success.txt', 'no ip check');
    return view('payment.success');
}

public function fail() {
    return view('payment.fail');
}

public function status(Request $request) {
    Storage::put('notok.txt', 'no ip check');
    try {
        $secret = env('PRIMEPAYER_SECRET');

        Storage::put('ok.txt', 'no ip check');

        if (!in_array(request()->ip(), ['109.120.152.109', '145.239.84.249', true])) {
            exit();
        }

        Storage::put('user.txt', 'user_id: '.$request->uv_user);

        $sign = $request->sign;
        unset($request->sign);

        $data = $request->all();

        ksort($data,SORT_STRING);
        $signi = hash('sha256', implode(':', $data).':'.$secret);

        if($signi !== $sign) {
            Storage::put('log.txt', $signi.'\n\n'.$sign.'\n'.'Incorrect Sign');
        }

        $user = User::findOrFail($request->uv_user);
        $user->balance += $request->amount;
        $user->save();

        return response()->setStatusCode(200);
    } catch (\Exception $e) {
        Storage::put('errors.txt', $e->getMessage());
    }
}

web.php:
Route::post('/success', 'HomeController@success');
Route::post('/fail', 'HomeController@fail');
Route::post('/status', 'HomeController@status');

VerifyCSRF Middleware:
VerifyCsrfToken extends Middleware
{
    protected $addHttpCookie = true;

    protected $except = [
        '/success',
        '/fail',
        '/status'
    ];
}

Касательно файликов в функции статус. Ни один так и не создался. Что говорит о том что либо нотификация получила код 500, либо еще какой то статус код, который даже не дает выполниться элементарным функциям.

Очень хочется наконец-то разобрать IPN, ибо платежки больная тема. Кто сталкивался, подскажите пожалуйста как решить:)
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
@D3V1L Автор вопроса
Спустя много времени, совершенно случайно понял в чем проблема )
Дело в том что все урлы проверки статусов нужно вносить в переменную $except, в middleware VerifyCSRFToken.php, которая просто будет всем выдавать 419 | Page Expired на внешние пост запросы.
Надеюсь кому то поможет )
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы