Глючит backend при включении уведомления по SMS Не принято

1

Для магазина был написан плагин по отправке SMS через провайдера, не представленного в магазине плагинов. За основу был взят плагин для SMS.RU . Всё работает за исключением одного момента. При включении уведомление по SMS на изменение статуса заказа на "отправлен" (в приложении ShopScript 6), после ввода номера трэкинга и нажатие на клавишу "сохранить" экран не перерисовывается. На экране не показывается изменение статуса заказ. Но сам SMS уходит и реально статус заказа тоже меняется. Если экран рефрешнуть принудительно, покажет истинное состояние. В логах никаких сообщений об ошибке не появляется. Все остальные изменения состояния заказа по SMS отрабатывают корректно

13 комментариев

  • +1

    А в консоль ошибок не сыпет?

  • +1

    Но в логе WebAsyst php.log нашёл вот такую странную запись:

    PHP Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/22/126887/webspace/httpdocs/domokeys.net/wa-plugins/sms/smstraffic/lib/smstrafficSMS.class.php:68) in /var/www/vhosts/22/126887/webspace/httpdocs/domokeys.net/wa-system/response/waResponse.class.php on line 212

    • +1

      так уже понятнее.

      1. убрать (если есть) закрывающий тег ?>

      2. проверить и убрать BOM https://support.webasyst.ru/forum/4159/parsererror...

      • +1

        Подниму тему. Написал на Perl простенький скрипт и просканировал весь сайт (php и html) на предмет наличия BOM. Нашлись в нескольких файлах типа updates и model плюс в шаблоне плагина callme. Поубивал везде. Но лучше не стало. Не обновляется страница при попытке смены статуса заказа на "отправлен". Всё остальное работает. Ну и в логи никаких ошибок не пишет...

        • +1

          А на 68-й строке этого файла sms/smstraffic/lib/smstrafficSMS.class.php что за код?

          • +1

            В файле всего 64 строки сейчас. Я там сократил всё что только можно. Теперь сообщение о попытке модификации заголовка больше не появляется. Но по-прежнему не обновляет экран.

          • +1

            пошагово поигравшись с плагином отправки смс выяснил, что баг возникает как только выполняется curl_exec(..). Если закомментировать отправку запроса к стороннему серверу и сэммулировать его ответ как удачный, всё работает.


            Мне кажется, что всё-так это проблема ShopScript. Толко включение уведомления на событие "отправлен" порождает баг отрисовки. А отличие только в том, что в бакэнде при нажатие кнопки "отправить" появляется дополнительная форма с предложением ввести номер транзакции.


            --- Дополнение ---

            Кстати, я нашёл кучу BOM в файлах самого webasyst. В исходных файлах jquey:

            ./wa-content/js/jquery/jquery-1.8.2.min.js

            ./wa-content/js/jquery/jquery-1.8.1.min.js

            ./wa-content/js/ace/worker-javascript.js

            ./wa-content/js/ace/worker-php.js

            ./wa-content/js/ace/worker-css.js

            ./wa-content/js/jquery-plugins/jquery.placeholder-1.1.9.js


          • +1

            Тэгов нет, а вот с BOM не очень понял. Где его не должно быть? Для написания я пользуюсь UltraEdit . Файл описания класса плагина в кодировке UTF-8 с юниксовой аннотацией переводов на новую строку. Файлы бэкэнда самого ShopScript мы не редактировали. Не очень понимаю где ещё смотреть. В классе плагина в функции send через cURL просто формируется post запрос к серверу провайдера и проверяется с возвращением значения истина или ложь. Никаких иных действий не делается. Единственная проблема которая наблюдается параллельно - это не возможность отреактировать текст уведомления. На экране идёт рассинхронизация положения курсора на экране и реально редактируемой позиции в поле для ввода текста сообщения. Но даже если использовать стандартный ответ (который подставляется при добавлении этого типа уведомления, ошибка остаётся

          • +1

            Забыл отписаться. Ошибка была моя. Формировался запрос по curl, а ответ не забирался (собственно он был не нужен). Видимо этот ответ получал движок и это его "клинило". Добавил чтение и всё заработало

            Добавить комментарий

            Чтобы добавить комментарий, зарегистрируйтесь или войдите