Добрый день! Есть сайт, на котором оплата связана с Яндекс Деньгами. После успешной оплаты происходит редирект на контроллер (использую фреймворк Yii2), который через модель записывает, что заказ оплачен. Параметры к нему передаются через GET. Ну и их можно подменить. Как этого избежать? Или, может, я вообще неправильно делаю?
После успешной оплаты происходит редирект на контроллер (использую фреймворк Yii2), который через модель записывает, что заказ оплачен.
Так там перед ридиректом идет post запрос на avisoURL и вот в нем есть возможность проверить все и записать, при редиректе этого делать ни в коем случае не надо. Или дайте ссылку на проект, буду постоянным клиентом )))
diman2000linda, Я не юзал ЯДеньги, но если там только get редирект, то конечно это нельзя юзать с какими-либо записями в БД.
редирект, это для пользователя, а не для Вас. Что бы он вернулся на сайт и увидел там надпись "все оплачено" или "где деньги сволочь?". Вероятно в ЯД подразумевается "как получим Ваши деньги, так сразу и отправим Вам посылку", а дальше все ручками. Любые записи в БД, тем более статуса оплаты, только после post запроса и только после его валидации. В ЯК это все есть, но нужно обязательно https и т.д. Хотя для приема платежей это и так маст хэв
diman2000linda, Тут или переходить или беда беда бедулька. Как вариант после ридиректа общая фраза, а все остальное ручками в админке. Так там по редиректу наверное и признаков оплаты не видно и id заказа нет. Как Вы это себе представляли?
Если запрос поступил от платёжной системы, то там должно поидее быть поле hash. Как именно он формируется, смотрите в документации от платёжного шлюза, который используете, но там помимо параметров обязательно используется секретное слово, известное только вам и платёжному шлюзу, потому если поменять хоть один параметр или хоть один символ в секретном слове - то хэш не сойдётся и запрос можно считать поддельным.