Для вычисления правильной подписи при проверке результата платежа нужно корректное имя файла скрипта, который вызывается (точнее окончание url после последнего / и перед GET параметрами). В коде было жестко вписано "result" - я добавил возможность указать вручную или, если не указано, окончание вычленяется автоматически.
Также в результат проверки включалась проверка на переметр, который не отправлялся платроном. Возможно это устаревшая практика.
Также проверку на amount думаю лучше делать на стороне контроллера. Тут еще можно почистить.
exit(); и Yii::app()->end(); также лучше оставить на усмотрение контроллера.
Кроме того немного почистил код, добавил функцию, которая генерирует xml тэги из массива.