Права - ерунда, ошибка программная.
Вполне логично выдают, там не хватает параметра LMI_PAYMENT_NO, который должен приходить в ответе сервера на транзакцию. Где-то теряется:)
Надо как-то поймать строку, которую сервер передает в контроллер, без этого дело не продвинется. У меня все запросы-подтверждения пишутся в базу, можно всегда найти пропущенный платеж.
Cоздайте табличку 'debug' в базе, два поля, 'id', int(10) автоинкрементный и 'data', тип text.
потом в нужных местах (в каждом условии в файле controller.php) поставьте
\IPS\Db::i()->insert( 'debug', json_encode(\IPS\Request::i()));
Попробуйте оплатить, потом посмотрите в табличку что за запрос он присылает.
Сорри,
\IPS\Db::i()->insert( 'debug', array('data' =>json_encode(\IPS\Request::i())));