Как избежать подмены GET-параметров?
После успешной оплаты происходит редирект на контроллер (использую фреймворк Yii2), который через модель записывает, что заказ оплачен. 
Так там перед ридиректом идет post запрос на avisoURL и вот в нем есть возможность проверить все и записать, при редиректе этого делать ни в коем случае не надо. Или дайте ссылку на проект, буду постоянным клиентом )))
Если запрос поступил от платёжной системы, то там должно поидее быть поле hash. Как именно он формируется, смотрите в документации от платёжного шлюза, который используете, но там помимо параметров обязательно используется секретное слово, известное только вам и платёжному шлюзу, потому если поменять хоть один параметр или хоть один символ в секретном слове - то хэш не сойдётся и запрос можно считать поддельным.