Ошибка установки зн host umka365 ru not found

Представить себе компьютер, ноутбук, планшет или смартфон, не имеющий доступа к сети Интернет, в настоящее время достаточно сложно. Миллионы пользователей каждый день посещают огромное количество сайтов и страниц. При этом им открывается доступ к разному контенту, файлам, информации и так далее.

Что значит ошибка 404 Not Found и как её исправить

Открывая очередной сайт или страницу, можно столкнуться с одной из самых (если не самой) распространённых ошибок. Она имеет кодовое обозначение 404 и чаще всего сопровождается дополнительной надписью «Not Found».

Закономерный интерес вызывает то, что это за ошибка, почему она появляется, и как её можно устранить. Как с позиции обычного пользователя, так и со стороны владельца сайта, веб-мастера, где «вылез» такой код.

Что это такое

Первым делом нужно понять, что это за ошибка и что означает надпись «404 Not Found», появляющаяся на мониторе компьютера или экране мобильного гаджета.

При имеющихся элементарных знаниях английского языка, уже само название во многом даёт ответ на этот вопрос. Ведь перевод Not Found звучит как «не найдено» или «не обнаружено». А про сам код 404 стоит поговорить отдельно.

Говоря простым языком о том, что означает эта ошибка с обозначением «404 Not Found», можно ответить коротко. Страницы с прописанным адресом не существует. А потому и открыть её невозможно.

Ошибка в Google

Если же рассматривать вопрос глубже, погружаясь в технические подробности, ситуация становится несколько интереснее. Некоторые уверены, что в адресной строке браузера достаточно прописать произвольный набор символов, и после этого появится 404 ошибка. Ведь такой страницы действительно не существует. Но это не так. Случайный набор ведёт к другому сообщению. А именно о том, что установить соединение с сервером не удаётся.

Объяснить это несложно. Запрос отправляется на сервер, на котором работает и располагается веб-сайт. Если с сервером связь есть, то тот или иной ответ будет получен в любом случае. К примеру, когда всё функционирует, ответ будет иметь код 200. Причём он невидимый для обычного юзера. Если же есть какие-то проблемы, уже вылезает ошибка.

Вопрос ещё заключается в том, почему ошибка имеет код именно 404.

Есть теория, которая, скорее, является предметом чьей-то фантазии, что первую серверную разместили в помещении с номером 404.

Но в действительности есть логичное объяснение. Первая цифра 4 указывает на тот факт, что запрос очень долгий и в прописанном адресе может быть ошибка. Вторая 4 говорит, что конкретная ссылка на сайте отсутствует. А 0 характеризует ошибку синтаксиса протокола и относит ошибку к группе 40х.

ВНИМАНИЕ. Рассматриваемый код означает, что сервер обнаружить удалось, но отыскать конкретную страницу на этом сайте не получается.

Это более чем понятное и простое объяснение происхождения такого кода.

Причины возникновения

Несмотря на то, что существует ряд похожих по коду ошибок, каждая из них имеет своё значение. Если 404 заменить на 403, то здесь уже получится иная ситуация. Ссылка есть, но доступ для данного устройства к ней ограничен.

Что же касается причин, из-за которых можно столкнуться с 404 на сайте, то их несколько:

  1. Неправильно указан адрес. Такое возникает часто и по понятной причине. Юзер вводит адрес вручную, либо неправильно его скопировал, в результате чего вылез соответствующий код. Либо же изначально ссылка была неправильной, и она ведёт на страницу, которой в действительности не существует.
  2. Битые ссылки. Сюда относятся те ссылки, которые не перенаправляют ни на одну из страниц на сайте. Довольно часто эта проблема наблюдается в случае с внутренней перелинковкой. Отличие от неправильного адреса в том, что ссылка раньше существовала, но теперь её нет.
  3. Страница удалена. Если на сайте удалили ту или иную страницу, вовсе не факт, что на неё никто не переходит. Дело всё в том, что такие ссылки могут сохраняться в поисковых системах достаточно долгое время. Либо же у пользователя сохранились в закладках старые ссылки, которые уже удалены.
  4. Нарушения в работе сервера. Иногда код 404 может появляться по причине того, что сам сервер неисправен. Но это, скорее, исключение, нежели правило.

Ошибка 404 Not Found

В итоге получается, что с кодом ошибки 404 пользователи сталкиваются тогда, когда не удаётся найти запрашиваемую на сайте страницу. Причины похожи, но всё равно имеют определённые отличия между собой.

В чём опасность ошибки

Изначально может показаться, что в этой ошибке нет ничего страшного, и никакого вреда она принести не может.

Если рассуждать с позиции владельца сайта, то появление подобных страниц ведёт к значительному уменьшению количества посещений. А это непосредственным образом влияет на заработок. Одни юзеры будут думать, что сайт неисправен и возвращаться к нему нет смысла. У других формируется представление, что ресурс вовсе удалён.

Нет ничего приятного в том, когда открываешь ссылку, где потенциально находится искомая и необходимая информация, что видно из описания в том же поисковике, а в ответ получаешь 404 на экране.

Другая проблема скрывается в индексации. Поисковые системы негативно реагируют на сайты, где имеется множество битых ссылок и страниц, которых не существует. Потому индексация подобных ресурсов будет снижаться.

Страница ошибки с оформлением

Как устранить ошибку

Теперь к вопросу о том, как исправить ошибку, которая именуется как 404 Not Found.

Фактически тут есть 2 варианта, в зависимости от того, с чьей стороны смотреть на ситуацию:

  • обычного пользователя;
  • владельца сайта.

Будучи обычным пользователем, который заходит на сайт, но сталкивается с таким кодом, способов решения проблемы не так много.

Тут есть следующие рекомендации о том, как убрать ошибку 404, дополненную обычно надписью Not Found:

  • проверить адрес введённой ссылки на наличие возможных ошибок, опечаток;
  • попробовать ввести тот же адрес ещё раз;
  • перезагрузить страницу, которая не отображается;
  • вернуться на страницу назад и ещё раз попробовать перейти на требуемый раздел.

Проверка адреса и обновление страницы

Но чаще всего проблема со стороны самого сайта. И её предстоит исправлять веб-мастеру. Пока он её не обнаружит и не откорректирует, открыть страницу по этой ссылке не получится.

Что делать веб-мастеру

А этот вопрос требует более детального рассмотрения.

Ошибка будет устранена лишь в том случае, если что-то предпринять в её отношении. В редких случаях эту ошибку с кодом 404 и подписью Not Found провоцирует сервер. Там должны решить, как устранить её, после чего сайт снова заработает без вмешательства веб-мастера.

Но поскольку такое явление редкость, приходится действовать самому. На этот счёт есть несколько полезных рекомендаций.

Тут речь идёт о 2 проблемах, которые чаще всего сопровождаются появлением кода ошибки 404:

  1. Ссылка никуда не ведёт. Это происходит в тех случаях, когда для страницы задаётся некорректный или неправильный адрес. Устранить проблему довольно легко. Нужно найти эту страницу и закрепить за ней рабочую ссылку. Если таких страниц несколько, корректировка выполняется вручную. Для крупных сайтов с большим числом страниц лучше применять автоматические виджеты. Они будут формировать страницы. Такие решения помогут избавиться от проблем в будущем и предотвратить отток посетителей из-за ошибки 404 на страницах.
  2. Присутствуют битые ссылки. Зачастую проблема возникает из-за внутренней перелинковки. То есть когда ссылки с одной страницы сайта ведут на другие страницы этого же ресурса. Часто бывает так, что ссылка остаётся, а страницы, куда она ведёт, уже нет. Такая ситуация негативно воспринимается поисковыми системами. Тут есть два варианта. Во-первых, ссылка просто удаляется. Во-вторых, можно поменять адрес, чтобы ссылка вела на другую страницу. У этой задачи тоже есть возможность применения автоматизированного решения. Для этого используются специальные сервисы и программы, осуществляющие автоматическую перелинковку.

Представленные рекомендации обычно решают около 90% всех проблем, которые связаны с ошибкой 404.

Но есть ещё несколько советов, к которым точно стоит прислушаться:

  1. Не рекомендуется для основных страниц веб-сайта использовать сложные и длинные адреса. Чем он короче, тем лучше. Это снижает вероятность появления ошибок и опечаток.
  2. Не стоит злоупотреблять переименованием страниц, постоянно меняя ссылки, которые на них ведут. Это негативно сказывается на работе поисковых роботов, вводит в заблуждение пользователей. К примеру, юзер только недавно добавил себе в избранное важную ссылку, а при открытии её через пару дней она выдаёт ошибку 404. А всё потому, что адрес изменился. Теперь ему придётся снова заходить на сайт, искать обновлённую страницу и добавлять уже её. Далеко не все готовы это делать. Так владелец сайта теряет посетителей.
  3. Использовать следует только те серверы, которые отличаются надёжной и стабильной работой. Это защита от целого ряда ошибок, включая 404.

Простые, но эффективные меры, которые помогут минимизировать число подобных страниц на сайте.

Как ошибка 404 может приносить пользу

Звучит странно, но в действительности ошибку 404 можно использовать себе на благо.

Даже при самом тщательном подходе к ведению сайта полностью избежать появления ошибок 404 невозможно. Зато её можно превратить в эффективный инструмент. Он не только не снизит посещаемость, но ещё и привлечёт к ресурсу дополнительное внимание.

Тут выделяют 3 основные функции, которые выполняет 404:

  • акцентирует внимание на случившейся нестандартной ситуации;
  • указывает юзерам на то, что они допустили ошибку, но запрашиваемая информация есть на этом сайте;
  • предлагает алгоритм действий, направленных на исправление ситуации.

В этом случае главной задачей будет отойти от стандартной формы ошибки и отказаться от банальной надписи, что страницу, которую запрашивает пользователь, найти не удалось.

По сути, открывая такую страницу, пользователь видит, что он ошибся. Но никаких решений не предлагается. И тогда действительно наблюдается отток посетителей.

Актуальные CMS обладают всеми необходимыми инструментами, чтобы поменять дизайн страницы с ошибкой 404 и сделать её более привлекательной, полезной.

Если применить эти инструменты, даже при появлении Not Found с кодом 404, посетитель может увидеть:

  • ссылку, которая ведёт на главную страницу сайта;
  • ссылки на похожие либо просто самые популярные страницы;
  • карту всего веб-ресурса;
  • форму для поиска, чтобы отыскать нужную информацию;
  • форму для обратной связи с администрацией.

Дизайн страницы

Используя подобное оформление страницы с ошибкой 404, владелец сайта минимизирует количество посетителей, которые, столкнувшись с этим кодом, спешат покинуть ресурс. Увидев предложенную им альтернативу, они наверняка перейдут на главную страницу, введут в поиск нужный запрос или заинтересуются другими ссылками.

Параллельно, отталкиваясь от действий пользователей, попадающих на страницу с 404 ошибкой, можно отслеживать, какие именно проблемы возникают, и оперативно их устранять.

С сайта umki.org в разделе Драйверы оборудования для начала скачиваем Универсальное ПО для работы с ККТ на базе УМКА — как написано на сайте : применяется для работы и настроек всех типов ККТ на базе УМКА.

Впоследствии выясняем ,что Рабочее место кассира UmkaLitee это то же самое.

Внутри установщик UmkaLite-1.2.9-2019-12-09-22-53-42.exe , который надо запустить от имени Администратора.

По умолчанию при установке предлагается запустить службы :

фотка 1

Как результат успешной инсталляции запускается сервис frservicemgr:

фотка 2

Иногда при установке в процессе вылетает ошибка (на что она влияет пока не понятно) :

фотка 3

Если почитать инструкцию по установке :
UMKALite_install инсталляция от Админа
UMKALite_Run — запуск сервисов инсталляция от Админа .

Если сразу попытаться запустить программу и выбрать УМКА 01ФА лайт:

фотка 4

Должно появится окно запроса логина/пароля , заводской номер кассы должен появится в соответствующем поле :
Логин / пароль не указываем , нажимаем пропустить .

фотка 5

Потом идет предложение указать опять имя пользователя и пароль (Подходят Кассир1 : 1 и СИСТ.АДМ : 99)

фотка 6

и вываливаемся в программу. Если ФН чистый вставлен предлагается сразу зарегистрировать кассу, что мы и делаем на тестовом ФН:

фотка 7

Дальше можно бить чеки

фотка 8

На некоторое время появляется окно с образом пробитого чека

фотка 9

Чеки можно распечатывать на ESC-POS принтере.

Немного начинаем изучаем организацию взаимодействия комплекса :

Информация на сайте не совсем легка для понимания, поэтому посканируем tcp порты для начала.

netstat -ao показывает , что сервис frservicemgr слушает порт 4168.

TCP    127.0.0.1:65001        Win10-64:0             LISTENING       4168

Все оказалось не так уж сложно : надо при старте программы правильно ввести логин, пароль от лк umka365.ru (это номер телефона и пароль из смс, там только цифры) :

фотка 10

И правильном процессе вы увидите «Авторизация на сервере выполнена успешно».

#

фотка 11

Далее в ЛК касса появится автоматически.

  • Главная
  • База Знаний
14 articles

Импорт товаров из файла

21.12.2017

Регистрация в кабинете

18.06.2018

Вход в кабинет агента

18.06.2018

Юридические лица и ИП

18.06.2018

Создание адреса

18.06.2018

Точки продаж

18.06.2018

Кассиры

18.06.2018

Загрузка товаров на ККТ

18.06.2018

Регистрация ККТ из кабинета umka365

06.05.2019

Журнал чеков

07.05.2019

Не работает передача файлов (ошибка #11001, «Host not found»)

[12:49:45] [ERROR] Ошибка #0234: ошибка заливки файла на сервер (URL «http://0.0.0.0:80/uploading/», #11001, «Host not found»).

Здравствуйте. У вас WEB-сервер работает?

Какую версию вы используете?

Team lead
Чат со мной

Web сервер работает, проверял, и доступность DNS тоже проверил все это функционирует, был перенос точки доступа интернета на другой роутер, открыл порты чат работает сам, а вот передача файлов нет.

Покажите скрин настроек WEB-сервера из админки.

Team lead
Чат со мной

1. «Настройки», «Сетевые настройки».
2. «Настройки», «WEB-сервисы».

И вы не ответили на мой вопрос, повторяю:

Какую версию вы используете?

Team lead
Чат со мной

сетевые настройки и вэб сервис

Вложения

веб_серв.JPG

веб_серв.JPG (132.67 КБ) Просмотров: 1797


сет.настр.JPG

сет.настр.JPG (78.38 КБ) Просмотров: 1797

IP вы затёрли. Что там? Можете личкой написать.

Team lead
Чат со мной

прикладываю скрин открытых портов, замазал маркером адрес внутреннего сервера, это адрес внутренний к которому подключаются клиенты внутри сети, внешний IP к нему подключаются из другого здания

Вложения

скрин портов.JPG

скрин портов.JPG (85.52 КБ) Просмотров: 1794

получилось так что точку доступа перенес на другой роутер, раньше на сервере чата сразу был воткнут кабель с интернетом а теперь через роутер сделано перенаправление портов и после этого пропала передача файлов т.е не работает, сразу ошибку выдает
Ошибка #0234: ошибка заливки файла на сервер (URL «http://0.0.0.0:80/uploading/», #11001, «Host not found»).
непонятно просто проверил все как сказано по ошибке# 11001, «Host not found»). пинг работает DNS тоже как у вас сказано в инструкциях по ошибке

заметил очень интересный факт,, если нажать через правую кнопку мышки и выбрать отправить и выбрать Mychat дальше выбираю пользователя то все отправляется, а вот если простым копированием копировать файл а потом вставить в окно диалога сразу ошибка о которой писал

Я не понимаю, о чём вы говорите, извините. Позвоните любым мессенджером, покажете через AnyDesk.

Ошибка #0234: ошибка заливки файла на сервер (URL «http://0.0.0.0:80/uploading/», #11001, «Host not found»).

http://0.0.0.0 ? Это как? :)

Team lead
Чат со мной

это IP адрес внутренний сервера просто не стал писать его на обозрение
в какое время вам позвонить можно

Сейчас можно.

Team lead
Чат со мной

Алексей спасибо за помощь, моя невнимательность привела к нелепой ошибке. Забыл в адресе указать недостающий знак при подключении к серверу.

Вложения

ошибка исправлена.JPG

ошибка исправлена.JPG (32.2 КБ) Просмотров: 1779

Правила форума
СНАЧАЛА ПОЛЬЗУЙТЕСЬ ПОИСКОМ!!!

При обращении просим Вас сразу указывать:
Вашу ОСь? Видео? Звук? DirectX? Логи Мамбл, Мурмур?
Это поможет быстрей и более точно ответить на Ваши вопросы.

Surik33

Сообщения: 2
Зарегистрирован: 14 мар 2010, 12:29

Попытка соединения с сервером не удалась: Host not found.

Доброе время суток!
При попытке соединиться выдает ошибку «Попытка соединения с сервером не удалась: Host not found.»
Отключал антивирусник, брандмауэр не помогает. Запускал Mumble на Windows XP (с этими же настройками) все работает.
Не могу понять из за чего.
За ранее спасибо.


B0nuse

Site Admin
Сообщения: 1588
Зарегистрирован: 27 июл 2009, 08:58
Благодарил (а): 40 раз
Поблагодарили: 363 раза
Контактная информация:

Re: Попытка соединения с сервером не удалась: Host not found

Сообщение

B0nuse » 15 мар 2010, 18:23

Surik33 писал(а):Доброе время суток!
При попытке соединиться выдает ошибку «Попытка соединения с сервером не удалась: Host not found.»
Отключал антивирусник, брандмауэр не помогает. Запускал Mumble на Windows XP (с этими же настройками) все работает.
Не могу понять из за чего.
За ранее спасибо.

Попробуйте проверить соедиение пропинговав с компьютера сервер:

Пропишите при подключении вместо адреса сервера его IP адрес


Surik33

Сообщения: 2
Зарегистрирован: 14 мар 2010, 12:29


B0nuse

Site Admin
Сообщения: 1588
Зарегистрирован: 27 июл 2009, 08:58
Благодарил (а): 40 раз
Поблагодарили: 363 раза
Контактная информация:


Uplive

Сообщения: 4
Зарегистрирован: 24 сен 2010, 21:06

Re: Попытка соединения с сервером не удалась: Host not found

Сообщение

Uplive » 05 окт 2010, 12:54

B0nuse писал(а):Это значит, что связи с сервером нет.

Ответ просто на 5+ ))
Я и сам понимаю, что нет связи…так а что делать-то теперь? куда глядеть?в инете все отлично работает ,онлайн приложения, скайп и т.п…
Даже антивирусов на компе нет, не то что фаерволов, все снесли вместе с виндой, думали в ней причина, а оказалось нет.
Где искать-то, дайте намек)?


B0nuse

Site Admin
Сообщения: 1588
Зарегистрирован: 27 июл 2009, 08:58
Благодарил (а): 40 раз
Поблагодарили: 363 раза
Контактная информация:




Uplive

Сообщения: 4
Зарегистрирован: 24 сен 2010, 21:06

Re: Попытка соединения с сервером не удалась: Host not found

Сообщение

Uplive » 05 окт 2010, 15:08

B0nuse писал(а):Ну значит проверяйте свои прокси, брандмауэры, настройки сети и т.д. на предмет свободного хождения TCP/UDP пакетов на 64738 порте.

если смотреть другие сервера, ну например, российские публичные, там и пинг показывает и количество людей, ну и подключается…нормально)


<? namespace Armax; use BitrixMain; use BitrixMainApplication; use BitrixMainArgumentException; use BitrixMainLocalization; use BitrixCatalog; use BitrixSaleResult; use BitrixSaleCashboxCashbox; use BitrixSaleCashboxCheck; use BitrixSaleCashboxCheckManager; use BitrixSaleCashboxInternalsCashboxTable; use BitrixSaleCashboxInternalsCashboxCheckTable; use BitrixSaleCashboxIPrintImmediately; use BitrixSaleCashboxICheckable; use BitrixSaleCashboxSellCheck; use BitrixSaleCashboxSellReturnCashCheck; use BitrixSaleCashboxSellReturnCheck; use BitrixSaleCashboxAdvancePaymentCheck; use BitrixSaleCashboxAdvanceReturnCashCheck; use BitrixSaleCashboxAdvanceReturnCheck; use BitrixSaleCashboxPrepaymentCheck; use BitrixSaleCashboxPrepaymentReturnCheck; use BitrixSaleCashboxPrepaymentReturnCashCheck; use BitrixSaleCashboxFullPrepaymentCheck; use BitrixSaleCashboxFullPrepaymentReturnCheck; use BitrixSaleCashboxFullPrepaymentReturnCashCheck; use BitrixSaleCashboxCreditCheck; use BitrixSaleCashboxCreditReturnCheck; use BitrixSaleCashboxCreditPaymentCheck; use BitrixSaleCashboxErrorsWarning; use BitrixSaleCashboxErrorsError; use sgoettschmonologRotatingFileHandlerHandlermonologRotatingFileHandler; use MonologLogger; class UmkaOnline extends Cashbox implements IPrintImmediately, ICheckable { const SERVICE_URL = ‘https://umka365.ru/kkm-trade/atolpossystem/v4’; const TOKEN_OPTION_NAME = ‘umkaonline_access_token’; const UUID_DELIMITER = ‘-‘; const OPERATION_CHECK_REGISTRY = ‘registry’; const OPERATION_CHECK_CHECK = ‘check’; const REQUEST_TYPE_GET = ‘get’; const REQUEST_TYPE_POST = ‘post’; const RESPONSE_HTTP_CODE_401 = 401; const RESPONSE_HTTP_CODE_200 = 200; const ERROR_LOGS_DIR = ‘/umkaonline’; /** * @param string $client_phone * @return string */ private function normalizePhone($client_phone) { $phone = NormalizePhone($client_phone); if (is_string($phone)) { if ($phone[0] === ‘7’) $phone = substr($phone, 1); } else { $phone = »; } return $phone; } /** * @param Check $check * @return array * @throws BitrixMainSystemException * @throws MainLoaderException */ public function buildCheckQuery(Check $check) { $data = $check->getDataForCheck(); /** @var MainTypeDateTime $dateTime */ $dateTime = $data[‘date_create’]; $serviceEmail = $this->getValueFromSettings(‘SERVICE’, ‘EMAIL’); if (!$serviceEmail) { $serviceEmail = static::getDefaultServiceEmail(); } $result = array( ‘timestamp’ => $dateTime->format(‘d.m.Y H:i:s’), ‘external_id’ => static::buildUuid(static::UUID_TYPE_CHECK, $data[‘unique_id’]), ‘service’ => array( ‘callback_url’ => $this->getCallbackUrl(), ), ‘receipt’ => array( ‘client’ => array(), ‘company’ => array( ’email’ => $serviceEmail, ‘sno’ => $this->getValueFromSettings(‘TAX’, ‘SNO’), ‘inn’ => $this->getValueFromSettings(‘SERVICE’, ‘INN’), ‘payment_address’ => $this->getValueFromSettings(‘SERVICE’, ‘P_ADDRESS’), ), ‘payments’ => array(), ‘items’ => array(), ‘total’ => (float)$data[‘total_sum’] ) ); $email = $data[‘client_email’] ?: »; $phone = NormalizePhone($data[‘client_phone’]); if (is_string($phone)) { if ($phone[0] === ‘7’) $phone = substr($phone, 1); } else { $phone = »; } $clientInfo = $this->getValueFromSettings(‘CLIENT’, ‘INFO’); if ($clientInfo === ‘PHONE’) { $result[‘receipt’][‘client’] = [‘phone’ => $phone]; } elseif ($clientInfo === ‘EMAIL’) { $result[‘receipt’][‘client’] = [’email’ => $email]; } else { $result[‘receipt’][‘client’] = [ ’email’ => $email, ‘phone’ => $phone, ]; } $paymentTypeMap = $this->getPaymentTypeMap(); foreach ($data[‘payments’] as $payment) { $result[‘receipt’][‘payments’][] = array( ‘type’ => $paymentTypeMap[$payment[‘type’]], ‘sum’ => (float)$payment[‘sum’] ); } $checkTypeMap = $this->getCheckTypeMap(); $paymentObjectMap = $this->getPaymentObjectMap(); foreach ($data[‘items’] as $i => $item) { $vat = $this->getValueFromSettings(‘VAT’, $item[‘vat’]); if ($vat === null) $vat = $this->getValueFromSettings(‘VAT’, ‘NOT_VAT’); $result[‘receipt’][‘items’][] = array( ‘name’ => $item[‘name’], ‘price’ => (float)$item[‘price’], ‘sum’ => (float)$item[‘sum’], ‘quantity’ => $item[‘quantity’], ‘payment_method’ => $checkTypeMap[$check::getType()], ‘payment_object’ => $paymentObjectMap[$item[‘payment_object’]], ‘vat’ => array( ‘type’ => $vat ), ); } return $result; } /** * @return array */ private function getPaymentObjectMap() { return [ Check::PAYMENT_OBJECT_COMMODITY => ‘commodity’, Check::PAYMENT_OBJECT_SERVICE => ‘service’, Check::PAYMENT_OBJECT_JOB => ‘job’, Check::PAYMENT_OBJECT_EXCISE => ‘excise’, Check::PAYMENT_OBJECT_PAYMENT => ‘payment’, ]; } /** * @return array */ private function getPaymentTypeMap() { return array( Check::PAYMENT_TYPE_CASH => 4, Check::PAYMENT_TYPE_CASHLESS => 1, Check::PAYMENT_TYPE_ADVANCE => 2, Check::PAYMENT_TYPE_CREDIT => 3, ); } /** * @return string * @throws MainArgumentNullException * @throws MainArgumentOutOfRangeException */ private static function getDefaultServiceEmail() { return MainConfigOption::get(‘main’, ’email_from’); } /** * @return array */ protected function getCheckTypeMap() { return array( SellCheck::getType() => ‘full_payment’, SellReturnCashCheck::getType() => ‘full_payment’, SellReturnCheck::getType() => ‘full_payment’, AdvancePaymentCheck::getType() => ‘advance’, AdvanceReturnCashCheck::getType() => ‘advance’, AdvanceReturnCheck::getType() => ‘advance’, PrepaymentCheck::getType() => ‘prepayment’, PrepaymentReturnCheck::getType() => ‘prepayment’, PrepaymentReturnCashCheck::getType() => ‘prepayment’, FullPrepaymentCheck::getType() => ‘full_prepayment’, FullPrepaymentReturnCheck::getType() => ‘full_prepayment’, FullPrepaymentReturnCashCheck::getType() => ‘full_prepayment’, CreditCheck::getType() => ‘credit’, CreditReturnCheck::getType() => ‘credit’, CreditPaymentCheck::getType() => ‘credit_payment’, ); } /** * @param $operation * @param $token * @param array $queryData * @return string * @throws MainSystemException */ protected function getUrl($operation, $token, array $queryData = array()) { $groupCode = $this->getField(‘NUMBER_KKM’); if ($operation === static::OPERATION_CHECK_REGISTRY) { return static::SERVICE_URL.‘/’.$groupCode.‘/’.$queryData[‘CHECK_TYPE’].‘?token=’.$token; } elseif ($operation === static::OPERATION_CHECK_CHECK) { return static::SERVICE_URL.‘/’.$groupCode.‘/report/’.$queryData[‘EXTERNAL_UUID’].‘?token=’.$token; } throw new MainSystemException(); } /** * @param int $modelId * @return array * @throws ArgumentException * @throws MainArgumentNullException * @throws MainArgumentOutOfRangeException * @throws MainLoaderException * @throws MainObjectPropertyException * @throws MainSystemException */ public static function getSettings($modelId = 0) { $settings = array( ‘AUTH’ => array( ‘LABEL’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_FARM_SETTINGS_AUTH’), ‘REQUIRED’ => ‘Y’, ‘ITEMS’ => array( ‘LOGIN’ => array( ‘TYPE’ => ‘STRING’, ‘LABEL’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_UMKAONLINE_SETTINGS_AUTH_LOGIN_LABEL’) ), ‘PASS’ => array( ‘TYPE’ => ‘STRING’, ‘LABEL’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_UMKAONLINE_SETTINGS_AUTH_PASS_LABEL’) ), ) ), ‘SERVICE’ => array( ‘LABEL’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_FARM_SETTINGS_SERVICE’), ‘REQUIRED’ => ‘Y’, ‘ITEMS’ => array( ‘EMAIL’ => array( ‘TYPE’ => ‘STRING’, ‘LABEL’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_FARM_SETTINGS_SERVICE_EMAIL_LABEL’), ‘VALUE’ => static::getDefaultServiceEmail() ), ‘INN’ => array( ‘TYPE’ => ‘STRING’, ‘LABEL’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_FARM_SETTINGS_SERVICE_INN_LABEL’) ), ‘P_ADDRESS’ => array( ‘TYPE’ => ‘STRING’, ‘LABEL’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_FARM_SETTINGS_SERVICE_URL_LABEL’) ), ) ) ); $settings[‘VAT’] = array( ‘LABEL’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_BITRIX_SETTINGS_VAT’), ‘REQUIRED’ => ‘Y’, ‘ITEMS’ => array( ‘NOT_VAT’ => array( ‘TYPE’ => ‘STRING’, ‘LABEL’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_BITRIX_SETTINGS_VAT_LABEL_NOT_VAT’), ‘VALUE’ => ‘none’ ) ) ); if (MainLoader::includeModule(‘catalog’)) { $dbRes = CatalogVatTable::getList(array(‘filter’ => array(‘ACTIVE’ => ‘Y’))); $vatList = $dbRes->fetchAll(); if ($vatList) { $defaultVat = array(0 => ‘vat0’, 10 => ‘vat10’, 18 => ‘vat18’); foreach ($vatList as $vat) { $value = »; if (isset($defaultVat[(int)$vat[‘RATE’]])) $value = $defaultVat[(int)$vat[‘RATE’]]; $settings[‘VAT’][‘ITEMS’][(int)$vat[‘ID’]] = array( ‘TYPE’ => ‘STRING’, ‘LABEL’ => $vat[‘NAME’].‘ [‘.(int)$vat[‘RATE’].‘%]’, ‘VALUE’ => $value ); } } } $settings[‘TAX’] = array( ‘LABEL’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_FARM_SETTINGS_SNO’), ‘REQUIRED’ => ‘Y’, ‘ITEMS’ => array( ‘SNO’ => array( ‘TYPE’ => ‘ENUM’, ‘LABEL’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_FARM_SETTINGS_SNO_LABEL’), ‘VALUE’ => ‘osn’, ‘OPTIONS’ => array( ‘osn’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_FARM_SNO_OSN’), ‘usn_income’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_FARM_SNO_UI’), ‘usn_income_outcome’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_FARM_SNO_UIO’), ‘envd’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_FARM_SNO_ENVD’), ‘esn’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_FARM_SNO_ESN’), ‘patent’ => LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_FARM_SNO_PATENT’) ) ) ) ); return $settings; } /** * @return string * @throws MainSystemException */ protected function getCallbackUrl() { $context = Application::getInstance()->getContext(); $scheme = $context->getRequest()->isHttps() ? ‘https’ : ‘http’; $server = $context->getServer(); $domain = $server->getServerName(); if (preg_match(‘/^(?<domain>.+):(?<port>d+)$/’, $domain, $matches)) { $domain = $matches[‘domain’]; $port = $matches[‘port’]; } else { $port = $server->getServerPort(); } $port = in_array($port, array(80, 443)) ? » : ‘:’.$port; return sprintf(‘%s://%s%s/bitrix/tools/sale_farm_check_print.php’, $scheme, $domain, $port); } /** * @return string */ public static function getName() { return LocalizationLoc::getMessage(‘SALE_UMKAONLINE_TITLE’); } /** * @param array $data * @return array * @throws ArgumentException * @throws MainNotImplementedException * @throws MainObjectException */ protected static function extractCheckData(array $data) { $result = array(); if (!$data[‘uuid’]) return $result; $checkInfo = CheckManager::getCheckInfoByExternalUuid($data[‘uuid’]); if ($data[‘error’]) { $errorType = static::getErrorType($data[‘error’][‘code’]); $result[‘ERROR’] = array( ‘CODE’ => $data[‘error’][‘code’], ‘MESSAGE’ => $data[‘error’][‘text’], ‘TYPE’ => ($errorType === Error::TYPE) ? Error::TYPE : Warning::TYPE ); } $result[‘ID’] = $checkInfo[‘ID’]; $result[‘CHECK_TYPE’] = $checkInfo[‘TYPE’]; $check = CheckManager::getObjectById($checkInfo[‘ID’]); $dateTime = new MainTypeDateTime($data[‘payload’][‘receipt_datetime’]); $result[‘LINK_PARAMS’] = array( Check::PARAM_REG_NUMBER_KKT => $data[‘payload’][‘ecr_registration_number’], Check::PARAM_FISCAL_DOC_ATTR => $data[‘payload’][‘fiscal_document_attribute’], Check::PARAM_FISCAL_DOC_NUMBER => $data[‘payload’][‘fiscal_document_number’], Check::PARAM_FISCAL_RECEIPT_NUMBER => $data[‘payload’][‘fiscal_receipt_number’], Check::PARAM_FN_NUMBER => $data[‘payload’][‘fn_number’], Check::PARAM_SHIFT_NUMBER => $data[‘payload’][‘shift_number’], Check::PARAM_DOC_SUM => $data[‘payload’][‘total’], Check::PARAM_DOC_TIME => $dateTime->getTimestamp(), Check::PARAM_CALCULATION_ATTR => $check::getCalculatedSign() ); return $result; } /** * @param $id * @return array */ public function buildZReportQuery($id) { return array(); } /** * @param array $data * @return array */ protected static function extractZReportData(array $data) { return array(); } /** * @param Check $check * @return Result * @throws BitrixMainSystemException * @throws MainLoaderException */ public function printImmediately(Check $check) { $printResult = new Result(); $token = $this->getAccessToken(); if ($token === ») { $token = $this->requestAccessToken(); if ($token === ») { $printResult->addError(new MainError(LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_REQUEST_TOKEN_ERROR’))); return $printResult; } } $checkQuery = static::buildCheckQuery($check); $validateResult = $this->validateCheckQuery($checkQuery); if (!$validateResult->isSuccess()) { return $validateResult; } $operation = $check::getCalculatedSign() === Check::CALCULATED_SIGN_INCOME ? ‘sell’ : ‘sell_refund’; $url = $this->getUrl(static::OPERATION_CHECK_REGISTRY, $token, array(‘CHECK_TYPE’ => $operation)); $result = $this->send(static::REQUEST_TYPE_POST, $url, $checkQuery); if (!$result->isSuccess()) return $result; $response = $result->getData(); if ($response[‘http_code’] === static::RESPONSE_HTTP_CODE_401) { $token = $this->requestAccessToken(); if ($token === ») { $printResult->addError(new MainError(LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_REQUEST_TOKEN_ERROR’))); return $printResult; } $url = $this->getUrl(static::OPERATION_CHECK_REGISTRY, $token, array(‘CHECK_TYPE’ => $operation)); $result = $this->send(static::REQUEST_TYPE_POST, $url, $checkQuery); if (!$result->isSuccess()) return $result; $response = $result->getData(); } if ($response[‘http_code’] === static::RESPONSE_HTTP_CODE_200) { if ($response[‘uuid’]) { $printResult->setData(array(‘UUID’ => $response[‘uuid’])); } else { $printResult->addError(new MainError(LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_CHECK_REG_ERROR’))); } } else { if (isset($response[‘error’][‘text’])) { $printResult->addError(new MainError($response[‘error’][‘text’])); } else { $printResult->addError(new MainError(LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_CHECK_REG_ERROR’))); } } return $printResult; } /** * @param $type * @param $id * @return string * @throws BitrixMainSystemException */ public static function buildUuid($type, $id) { $context = Application::getInstance()->getContext(); $server = $context->getServer(); $domain = $server->getServerName(); $domain = str_replace(«.«, ««, $domain); return $type.static::UUID_DELIMITER.$domain.static::UUID_DELIMITER.$id; } /** * @param Check $check * @return Result * @throws BitrixMainSystemException */ public function check(Check $check) { $EXTERNAL_UUID = $check->getField(‘EXTERNAL_UUID’); $checkId = $check->getField(‘ID’); if (empty($EXTERNAL_UUID)) { CashboxCheckTable::update($checkId, array(‘STATUS’ => ‘E’)); $r = new Result(); $r->addError(new MainError(LocalizationLoc::getMessage(‘SALE_CASHBOX_UMKAONLINE_CHECK_STATUS_WRONG_UUID’))); return new $r; } $url = $this->getUrl( static::OPERATION_CHECK_CHECK, $this->getAccessToken(), array(‘EXTERNAL_UUID’ => $EXTERNAL_UUID) ); $result = $this->send(static::REQUEST_TYPE_GET, $url); if (!$result->isSuccess()) return $result; $response = $result->getData(); if ($response[‘http_code’] === static::RESPONSE_HTTP_CODE_401) { $token = $this->requestAccessToken(); if ($token === ») { $result->addError(new MainError(LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_REQUEST_TOKEN_ERROR’))); return $result; } $url = $this->getUrl( static::OPERATION_CHECK_CHECK, $this->getAccessToken(), array(‘EXTERNAL_UUID’ => $check->getField(‘EXTERNAL_UUID’)) ); $result = $this->send(static::REQUEST_TYPE_GET, $url); if (!$result->isSuccess()) return $result; $response = $result->getData(); } if ($response[‘status’] === ‘wait’) { $result->addError(new MainError(LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_REQUEST_STATUS_WAIT’))); return $result; } return static::applyCheckResult($response); } /** * @param array $checkData * @return Result */ protected function validateCheckQuery(array $checkData) { $result = new Result(); if ($checkData[‘receipt’][‘client’][’email’] === » && $checkData[‘receipt’][‘client’][‘phone’] === ») { $result->addError(new MainError(LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_ERR_EMPTY_PHONE_EMAIL’))); } foreach ($checkData[‘receipt’][‘items’] as $item) { if ($item[‘vat’] === null) { $result->addError(new MainError(LocalizationLoc::getMessage(‘SALE_CASHBOX_ATOL_ERR_EMPTY_TAX’))); break; } } return $result; } /** * @param $method * @param $url * @param array $data * @return Result * @throws ArgumentException */ private function send($method, $url, array $data = array()) { $result = new Result(); $http = new MainWebHttpClient(); $http->setHeader(‘Content-Type’, ‘application/json; charset=utf-8’); if ($method === static::REQUEST_TYPE_POST) { $http->disableSslVerification(); $data = $this->encode($data); $response = $http->post($url, $data); } else { $response = $http->get($url); } if ($response !== false) { try { $response = $this->decode($response); if (!is_array($response)) $response = array(); $response[‘http_code’] = $http->getStatus(); $result->addData($response); } catch (ArgumentException $e) { $this->logHttp([ ‘msg’ => ‘Не удалось разобрать ответ от umka365’, ‘request’ => [ ‘url’ => $url, ‘method’ => $method, ‘data’ => $data, ], ‘http’ => $http, ‘$response’ => $response, ]); $result->addError(new MainError($e->getMessage())); } } else { $this->logHttp([ ‘msg’ => ‘Отсутствует ответ от umka365’, ‘request’ => [ ‘url’ => $url, ‘method’ => $method, ‘data’ => $data, ], ‘http’ => $http ]); $error = $http->getError(); foreach ($error as $code =>$message) { $result->addError(new MainError($message, $code)); } } $resultData = $result->getData(); if ($resultDatastatus«] === «fail» || $resultDataerror«]) { $this->logHttp([ ‘msg’ => ‘Ответ от сервера: status fail или есть ошибка в error’, ‘request’ => [ ‘url’ => $url, ‘method’ => $method, ‘data’ => $data, ], ‘http’ => $http, ‘$response’ => $response, ]); } return $result; } /** * @return array */ public static function getGeneralRequiredFields() { $generalRequiredFields = parent::getGeneralRequiredFields(); $map = CashboxTable::getMap(); $generalRequiredFields[‘NUMBER_KKM’] = $map[‘NUMBER_KKM’][‘title’]; return $generalRequiredFields; } /** * @return string * @throws MainArgumentNullException * @throws MainArgumentOutOfRangeException */ private function getAccessToken() { return MainConfigOption::get(‘sale’, $this->getOptionName(), »); } /** * @param $token * @throws MainArgumentOutOfRangeException */ private function setAccessToken($token) { MainConfigOption::set(‘sale’, $this->getOptionName(), $token); } /** * @return string */ private function getOptionName() { return static::TOKEN_OPTION_NAME_ID:«.$this->getField(‘ID’); } /** * @param array $data * @return mixed * @throws ArgumentException */ private function encode(array $data) { return MainWebJson::encode($data); } /** * @param string $data * @return mixed * @throws ArgumentException */ private function decode($data) { return MainWebJson::decode($data); } /** * @return string * @throws MainArgumentOutOfRangeException * @throws ArgumentException */ private function requestAccessToken() { $url = static::SERVICE_URL.‘/getToken’; $data = array( ‘login’ => $this->getValueFromSettings(‘AUTH’, ‘LOGIN’), ‘pass’ => $this->getValueFromSettings(‘AUTH’, ‘PASS’) ); $result = $this->send(static::REQUEST_TYPE_POST, $url, $data); if ($result->isSuccess()) { $response = $result->getData(); $this->setAccessToken($response[‘token’]); return $response[‘token’]; } $this->logHttp([ ‘msg’ => ‘Не был получент токен в requestAccessToken’, ‘request’ => [ ‘url’ => $url, ‘method’ => $method, ‘data’ => $data, ], ‘http’ => $http, ‘$response’ => $response, ]); return »; } /** * @param $errorCode * @return int */ protected static function getErrorType($errorCode) { return Error::TYPE; } /** * @return bool */ public static function isSupportedFFD105() { return true; } /** * @return void */ public function sendToErrorLog($msg, $data = []) { $computed_msg = ‘>>> ‘ . $msg . « «; $error_logs_path = $_SERVER[‘DOCUMENT_ROOT’]. self::ERROR_LOGS_DIR . «/errors-cashbox-id-«. $this->getField(‘ID’) . «.log«; // 16 mb per file, max 10 files $handler = new monologRotatingFileHandler($error_logs_path, 10, 16*1024*1024); $log = new Logger(‘umka_logs’); $log->pushHandler($handler); $log->addInfo($computed_msg, $data); } /** * @return void */ public function logHttp($data = []) { $msg = array_key_exists(‘msg’, $data) ? $data[‘msg’] : »; $final_data = [ ‘request’ => [ ‘url’ => null, ‘method’ => null, ‘data’ => null, ], ‘response’ => [ ‘headers’ => null, ‘status’ => null, ‘body’ => null, ‘$response’ => null, ], ‘extra’ => [], ]; if (array_key_exists(‘request’, $data)) { $final_data[‘request’] = array_merge($final_data[‘request’], $data[‘request’]); } if (array_key_exists(‘http’, $data) && $data[‘http’] instanceof MainWebHttpClient) { $http = $data[‘http’]; $final_data[‘response’][‘headers’] = $http->getHeaders()->toString(); $final_data[‘response’][‘status’] = $http->getStatus(); $final_data[‘response’][‘body’] = $http->getResult(); } if (array_key_exists(‘$responce’, $data)) { $final_data[‘response’][‘$responce’] = $data[‘$responce’]; } if (array_key_exists(‘extra’, $data)) { $final_data[‘extra’] = $data[‘extra’]; } $this->sendToErrorLog($msg, $final_data); } }

  • Ошибка установки криптопровайдера банка faktura при обновлении сертификата
  • Ошибка установки звукового драйвера windows 10
  • Ошибка установки драйвера realtek 0001 windows 10
  • Ошибка установки криптопро 577
  • Ошибка установки е7 гвинт