Отправка http запросов с Дайджест-аутентификацией из 1С на примере кассового аппарата MG N707TS

Публикация № 867948

Администрирование - Торговое оборудование - ККМ

Пример Дайджест-аутентификацией из 1с MG 707

4
Возникала необходимость использовать кассовый аппарат MG N707TS под ubuntu, как известно, COM объекты не поддерживаются. На самом деле не все так сложно! Расписывать долго не буду, смотрите "Процедура КнопкаСформироватьНажатие" , может кому пригодится.
Функция ПреобразоватьЗаголовкиВСтруктуру(текЗаловка)
    
    БезКавычек = СтрЗаменить(текЗаловка,"""","");
    БезПС = СтрЗаменить(БезКавычек,Символы.ПС,"");
    
    МассивПодстрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(БезПС);
    КлючиЗнач = Новый Соответствие;
    Для Каждого ЭлМ Из МассивПодстрок Цикл         
        Масс2 = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ЭлМ,"=");
        КлючиЗнач.Вставить(СокрЛП(Масс2[0]),СокрЛП(Масс2[1]));
    КонецЦикла;
    
    Возврат КлючиЗнач;
    
КонецФункции

Функция МД5(ПолСтрок)
    
    фу = Новый ХешированиеДанных(ХешФункция.MD5);
    фу.Добавить(ПолСтрок);
    
    с1 = СтрЗаменить(НРег(фу.ХешСумма)," ","");
    
    Возврат с1;
    
КонецФункции

Функция Рассчитать_response(Логин,Пароль,realm,Метод="GET",УРЛ,nonce,nc,cnonce,qop);
    
    мд5_А1 = МД5(Логин+":"+ realm +":"+Пароль);
    мд5_А2 = МД5(Метод+":"+ УРЛ);
    мд5_response = МД5(мд5_А1+":"+nonce+":"+nc+":"+cnonce+":"+qop+":"+ мд5_А2);    
    Возврат мд5_response;
    
КонецФункции

Процедура КнопкаСформироватьНажатие(Кнопка)
    
    _userName = "1";
    _passWord = "0";
    
    НомерОперации = 1;
    гч = Новый ГенераторСлучайныхЧисел(ТекущаяДата()-НачалоДня(ТекущаяДата()));        
    _cnonce = МД5(Строка(гч.СлучайноеЧисло(1,999999))); // можно просто "ABCDEF"  без разницы
    
    //GET / POST
    _МЕТОД = ЭлементыФормы.ПолеВыбораМетода.Значение;
    
    Если _МЕТОД = "POST" Тогда
        
        //чек
        _url = "cgi/chk";
        
        //qty  - Необязательное поле. Должно быть цифрой с не более чем тремя знаками после десятичной точки. Если поле пропущено, количество принимается равным 1.
        //price- Должно быть цифрой с не более чем двумя знаками после десятичной точки.
        //name - Название товара.
        //code - Код товара из не более чем 13 цифр
        //tax  - Необязательное поле. Номер налоговой ставки из таблицы Tax. 0 - без нало-га. При отсутствии поля продажа происходит с первой налоговой ставкой из таблицы налогов.
        
        МассивСтрокОперации = Новый Массив;
        МассивСтрокОперации.Добавить(Новый Структура("C",Новый Структура("cm","комментарий")));
        МассивСтрокОперации.Добавить(Новый Структура("S",Новый Структура("code,price,name,qty,tax",1,20.50,"товар1",3,1)));
        МассивСтрокОперации.Добавить(Новый Структура("D",Новый Структура("prc,all",-7,0))); // скидка 7% этот товар
        МассивСтрокОперации.Добавить(Новый Структура("S",Новый Структура("code,price,name,qty,tax",2,40.30,"товар2",0.750,1)));
        МассивСтрокОперации.Добавить(Новый Структура("D",Новый Структура("prc,all",-5,1))); // скидка 5% на промежуточный итог
        МассивСтрокОперации.Добавить(Новый Структура("D",Новый Структура("sum,all",-10,1)));// скидка 10 денег на весь чек        
        //сумма по чеку 73.05
        
        // обязательно!!! в отбраном порядке т.к. если наличка первая ругается не неверную сумму
        // если в обратном порядке то рассчитывает здачу
        МассивСтрокОперации.Добавить(Новый Структура("P",Новый Структура("no,sum",4,50)));    // карточкой
        //МассивСтрокОперации.Добавить(Новый Структура("P",Новый Структура("no,sum",3, 0)));// кредит
        //МассивСтрокОперации.Добавить(Новый Структура("P",Новый Структура("no,sum",2, 0)));// чеком
        МассивСтрокОперации.Добавить(Новый Структура("P",Новый Структура("no,sum",1,25))); // наличные
        
        
        стрОпераця = Новый Структура;
        стрОпераця.Вставить("F",МассивСтрокОперации); //продажа 
        //стрОпераця.Вставить("R",МассивСтрокОперации); //возврат
        зпJSON = Новый ЗаписьJSON;
        зпJSON.УстановитьСтроку();
        ЗаписатьJSON(зпJSON,стрОпераця);
        ТелоЗапроса = зпJSON.Закрыть();
        
        
    Иначе
        
        _url = "cgi/rep/pay";    
        _url = "cgi/tbl/Oper";
        _url = "cgi/chk";
        _url = "cgi/state";        
        
    КонецЕсли;
    
    СоединениеККМ             = Новый HTTPСоединение(ИП_ИмяКассы);
    HTTPЗапрос                 = Новый HTTPЗапрос(_url);
    HTTPОтвет                 = СоединениеККМ.Получить(HTTPЗапрос);
    тЗаговокАутентификации     = HTTPОтвет.Заголовки.Получить("WWW-Authenticate");    
    сотвЗаголовковАутентификации= ПреобразоватьЗаголовкиВСтруктуру(тЗаговокАутентификации);
    
    _realm     = сотвЗаголовковАутентификации.Получить("Digest realm");    
    _nonce     = сотвЗаголовковАутентификации.Получить("nonce");
    _qop    = сотвЗаголовковАутентификации.Получить("qop");
    
    
    _nc     = Формат(НомерОперации,"ЧЦ=8; ЧН=; ЧВН=; ЧГ=");    
    
    _response= Рассчитать_response(_userName,_passWord,_realm,_МЕТОД,_url,_nonce,_nc,_cnonce,_qop);
    
    тАвторизация = "Digest username="+_userName    +","
    +                "realm="    +_realm            +","
    +                "nonce="    +_nonce            +","
    +                "uri="        +_url            +","
    +                "algorithm="+сотвЗаголовковАутентификации.Получить("algorithm")+","
    +                "cnonce="    +_cnonce        +","
    +                "nc="        +_nc            +","
    +                "qop="        +_qop            +","
    +                "response="    +_response;
    
    
    ЗаголовокЗапроса = Новый Соответствие;
    ЗаголовокЗапроса.Вставить("Authorization",тАвторизация);    
    HTTPЗапрос2 = Новый HTTPЗапрос(_url,ЗаголовокЗапроса);
    Если _МЕТОД = "POST" Тогда
        
        HTTPЗапрос2.УстановитьТелоИзСтроки(ТелоЗапроса);
        HTTPОтвет2 =  СоединениеККМ.ОтправитьДляОбработки(HTTPЗапрос2);
        
    Иначе
        
        HTTPОтвет2 =  СоединениеККМ.Получить(HTTPЗапрос2);
        
    КонецЕсли;
    
    телоОтвета= HTTPОтвет2.ПолучитьТелоКакСтроку();
    Сообщить(телоОтвета);
    
    чJSON = Новый ЧтениеJSON;
    чJSON.УстановитьСтроку(телоОтвета);
    ВостДанные = ПрочитатьJSON(чJSON);
    
КонецПроцедуры

 

4

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. FesenkoA 40 16.07.18 16:13 Сейчас в теме
Вообще то у них есть уже драйвер на НТТР ))) правда немного корявый в плане настройки, но все же
2. IgKR 4 16.07.18 16:57 Сейчас в теме
(1)
же драйвер на НТТР
видать, что я пропустил :)
3. FesenkoA 40 16.07.18 17:09 Сейчас в теме
(2) Мы и производитель (продавец?) с клиентами намучались сильно, так что знакомо... Но ваша версия тоже имеет право на жизнь!
4. rusmil 182 17.07.18 05:18 Сейчас в теме
Для тех кто не в теме можете пояснить для чего применяется эта "отправка http запросов с Дайджест-аутентификацией из 1С" ?
5. IgKR 4 17.07.18 08:56 Сейчас в теме
(4) В данном случаи я ее применяю для связи 1с и кассового аппарата. На кассовом аппарате есть свой WEB сервер, связь осуществляется по HTTP, логин пароль в открытом виде я думаю буден не безопасно, разработчики кассового аппарата по этому и применили дайджест аутентификацию. А куча JSONа это печать чека продаж. для проверки работоспособности.
6. Region102 29.07.18 18:53 Сейчас в теме
Лайк за то что сделали и выложили, дизлайк за оформление кода.


(4) Обычная basic аутентификация при отправке http запроса является не надежной, так вот многие сервисы переходят на другие способы аутентификации, при чем дайджест не самая сложная. Надеюсь 1С включить новые способы аутентификации в стандартные платформенные механизмы.
7. IgKR 4 30.07.18 13:52 Сейчас в теме
(6)
поводу оформления, Согласен. Спасибо!
8. rotting 46 11.01.19 20:02 Сейчас в теме
Спасибо тебе добрый человек
Оставьте свое сообщение

См. также

Подключение АТОЛ 91/92Ф к 1С:Касса 5

Статья Системный администратор Нет файла v8 1cv8.cf Россия Кассовые операции Бесплатно (free) ККМ

Т.к. я не нашел данной информации в гугле (возможно, плохо искал), решил, что нужно оставить эту статью здесь, может, поможет кому.

10.09.2019    1888    rule_2    2       

Чеки ККМ для расчетов с ИП по безналу. Новые обязательные реквизиты в чеке 32

Статья Программист Нет файла v8 v8::ОУ УТ11 УУ Windows Оптовая торговля Бесплатно (free) Практика программирования ККМ Разработка

Новые требования законодательства по пробитию чеков ККМ при расчетах с индивидуальными предпринимателями по безналу. Нюансы подключения интеграционной компоненты ДТО 10.5.0 на примере кассы ККТ АТОЛ 11Ф и конфигурации 1С УТ 11.4. Необходимые доработки типовой конфигурации УТ 11.4 для вывода на печать новых обязательных реквизитов: покупатель, ИНН, ГТД, страна происхождения.

22.07.2019    6772    ids79    16       

Работа с кассой Atol через веб-сервер ДТО-10 57

Статья Программист Нет файла v8 Россия Кассовые операции НДС Бесплатно (free) Внешние источники данных ККМ Фискальный регистратор

Поддержка многопользовательской печати на одном устройстве ККТ. Поддержка изменений в законодательстве (Переход на ФФД 1.05 и НДС 20%).

31.12.2018    18711    medangel    36       

Авансы, кредиты и предоплаты. Примеры чеков ФФД 1.05 24

Статья Бухгалтер Нет файла v8 УТ11 Розничная и сетевая торговля (FMCG) Россия БУ Розничная торговля Бесплатно (free) ККМ

В публикации рассмотрено, как должны выглядеть корректные чеки ФФД 1.05 при авансах, кредитах и предоплатах. Чеки получены с помощью демонстрационной базы 1С:Управление торговлей 11.4.5.54 (Платформа 8.3.11.3034).

30.07.2018    32300    vasilievil    28       

Чеки ККМ онлайн касс Атол на конфигурации КА 1.1 5

Статья Программист Нет файла v8 КА1 Россия Кассовые операции Бесплатно (free) ККМ

Онлайн касса печатает тип СНО УСН, хотя организация работает на ЕНВД.

13.07.2018    7582    dima_finne    6       

Учет и сверка Z-Отчетов ККМ в 1С 15

Статья Программист Нет файла v8 КА1 УПП1 Розничная и сетевая торговля (FMCG) Россия БУ Кассовые операции Бесплатно (free) ККМ

Думаю, все крупные компании при внедрении/эксплуатации 1С делают значительные изменения в ее конфигурации. Как бы вы ни пытались все бизнес процессы решить типовыми решениями от 1С, все равно наступает момент, когда приходится заняться конфигурированием. Я решил написать серию статей, где постараюсь описать решения, которые мне пришлось реализовывать в разных компаниях. Если разработчики 1С посчитают что-то интересным для внедрения в типовые решения, мы будем только рады. В текущей статье речь пойдет о кассовых z-отчетах в 1С.

03.06.2018    13753    dima_home    12       

Подключение онлайн кассы (ККМ) ATOL к УТ 10.3 в терминале. Личный опыт 20

Статья Системный администратор Программист Нет файла v8 БП2.0 УТ10 Windows Кассовые операции Бесплатно (free) ККМ

Использование Онлайн Кассы на Windows HOME c драйвером без цифровой подписи. Проброска портов для ККМ. Использование компьютера с кассой в качестве сервера для быстрой печати чеков через терминал без использования сквозных COM портов.

10.05.2018    22181    pridecom    26       

Ошибка печати чека на ККМ Атол FPrint22. ПоследующаяОплата (Кредит) вместо Электронными. Розница 2 7

Статья Системный администратор Программист Нет файла v8 Розница Россия Кассовые операции Розничная торговля Бесплатно (free) Адаптация типовых решений ККМ

При печати чека на FPrint22 неожиданно выяснилось, что вместо Электронными (пробивали по платежной карте) в чеке вставало на вид оплат ПоследущаяОплата (Кредит).

22.01.2018    23606    ah7777777    15       

Как печатать чеки с разными видами деятельности на онлайн-кассе 7

Статья Программист Нет файла v8::ОУ УТ10 Россия Кассовые операции Розничная торговля ИП, ПБОЮЛ, КФХ Бесплатно (free) ККМ

Как печатать чеки по разным видам деятельности (с НДС и БЕЗ НДС) для одной организации и одного кассового аппарата, не используя сторонних доработок.

17.10.2017    16985    serpolit    10       

Подключение ККТ (Торгового оборудования) в разрезе Пользователя или Клиента RDP 30

Статья Программист Нет файла v8 1cv8.cf Кассовые операции Бесплатно (free) ККМ

Старые конфигурации (Комплексная автоматизаци 1.1, УТ 10.3...) не поддерживают разрез пользователей или клиентов RDP при подключение кассового оборудования. Решил немного освежить идею статьи https://infostart.ru/public/197612/ и комментарии Сергея Муравьёва и Сергея Капустина собрав воедино. В этой статье-заметке вы узнаете, как с минимальными доработками изменить видимость ККТ в разрезе пользователей или терминальных сессий по RDP даже с вводом новых документов по работе с ККТ.

28.09.2017    20938    rpgshnik    24       

Комплексное решение для малого бизнеса: 1С:УНФ + онлайн-касса "ШТРИХ-МPAY-Ф" 4

Статья Системный администратор Программист Нет файла v8 Россия Кассовые операции Бесплатно (free) ККМ

Фирма "1С" представляет новый программно-аппаратный комплекс для интернет-магазинов, предпринимателей и компаний сферы торговли и услуг, предпочитающих облачные решения, а также для тех, кто торгует алкоголем и кому в связи с этим необходимо обеспечить поддержку ЕГАИС.

29.08.2017    14103    user818734    5       

Способы решения ошибок при настройке кассы ККТ для ФЗ-54 22

Статья Системный администратор Программист Нет файла v8 1cv8.cf Россия Кассовые операции Бесплатно (free) ККМ

Решение ошибок: 1. "При выполнении операции произошла ошибка: FFFFFFF8h, Смена открыта, программирование налогов невозможно" 2. "При выполнении операции произошла ошибка: 37h, Команда не поддерживается в данной реализации" 3. "Касса через какой то период перестает отправлять данные в налоговую"

31.05.2017    82987    lightvdv    55       

Внедрение ККМ Онлайн в сторонние конфигурации 1С 105

Статья Программист Нет файла v8 1cv8.cf Кассовые операции Розничная торговля Бесплатно (free) ККМ Фискальный регистратор

В данной статье мне бы хотелось поделиться опытом внедрения ККМ онлайн (Атол 11Ф) в одну из сторонних конфигураций 1С. Надеюсь, что она поможет сэкономить время моим коллегам, которые столкнулись с ситуацией, когда есть конфигурация, но ее поддержка разработчиком уже давно прекращена. В статье мы рассмотрим общие моменты, которые позволят "подружить" ее с онлайн кассами.

22.04.2017    63938    lord_soth    28       

54 ФЗ своими руками 94

Статья Программист Нет файла v8 Розница Розничная и сетевая торговля (FMCG) Россия УУ Windows Кассовые операции Розничная торговля Бесплатно (free) ККМ

Практический опыт внедрения изменений в 54ФЗ в розничной сети, работающей на 1С. Если вы не хотите платить каким-либо подрядчикам, которые "всё сделают и настроят за вас", то статься может оказаться крайне полезной.

17.04.2017    54172    comol    124       

Практика подключения ККМ онлайн 176

Статья Системный администратор Нет файла v8 Россия Кассовые операции Розничная торговля Бесплатно (free) ККМ

С 1 июля 2017 года большинство юридических лиц и индивидуальных предпринимателей работающие с наличными должны использовать контрольно-кассовую технику(ККТ) в режиме онлайн или проще говоря перейти на онлайн кассы. Расскажу на практическом примере, как я подключал и зарегистрировал кассу ATOL FPrint 90Ф.

13.12.2016    277777    ApocalypseNTC    794       

Важные изменения в 54-ФЗ: какой будет ККМ в 2017 году 31

Статья Бухгалтер Пользователь Нет файла v7.7 v8 Розничная и сетевая торговля (FMCG) Россия Кассовые операции Розничная торговля Бесплатно (free) ККМ Фискальный регистратор

Уже начиная с апреля 2016 года нас ждут довольно серьезные изменения по передаче данных о продажах в налоговую. Не только ожесточится контроль над тем, сколько мы продаем, но и изменятся сами ККМ.

11.05.2016    91529    alis112358    80       

Не смогли определить доступный магазин или доступные кассы ККМ. Обратитесь к Администратору системы 13

Статья Системный администратор Нет файла v8 Розница Розничная и сетевая торговля (FMCG) Windows Кассовые операции Бесплатно (free) Администрирование данных 1С ККМ

Иногда бывает, что, после включения рабочего места возникает ошибка «Не смогли определить доступный Магазин или доступные кассы ККМ. Обратитесь к Администратору системы».

04.12.2015    48573    Dima_    4       

Подключение торгового оборудования по rdp. 87

Статья Системный администратор Программист Нет файла v8 КА1 УПП1 Россия УУ Windows Розничная торговля Бесплатно (free) ККМ Сканер штрих-кода

Задача следующая, есть две розничные точки и центральная оптовая. Пользователи работают в терминале на Win Server 2003, база находится на центральной точке, розничные подключаются по интернету. Необходимо подключить сканеры штрих-кода в центральной точке на складе и Сканеры и ФР в розничных точках. При чем в розничных точках один сканер должен переподключаться между кассовым узлом и компьютером в приёмке. Сканеры ШК - Datalogic QuickScan I QM2100 (беспроводной), Honeywell Eclipse 5145, ФР - Штрих-М-ФР-К. Все устройства с интерфейсом USB.

14.08.2013    121121    de0nis    37       

Расширение типового функционала работы с ККМ в 1с Розница 1.0 (добавление произвольного количества типов оплаты) 49

Статья Системный администратор Программист Нет файла v8 Розница Windows Бесплатно (free) ККМ

У одного клиента,занимающегося розничной торговлей, появилась необходимость разделять продажи по типам оплаты в Z-отчете с бОльшим разнообразием,чем позволяет типовой функционал работы с ТО. Т.е. стандартную разбивку на наличную и безналичную оплату расширить до нал,оплата по платежным картам(безнал),банковским кредитам.В то же время исключить кредит из секции «оплата по безналу». Почему возникла такая потребность?Все просто,в бэк-офисе так проще сверять Отчет о розничных продажах с Z-отчетом.

28.02.2013    48147    ranger    17       

Формирование печати чека ККМ и Z - отчета по нескольким отделам магазина одновременно 5

Статья Программист Нет файла v8 Розница Розничная и сетевая торговля (FMCG) Россия Розничная торговля Бесплатно (free) Практика программирования ККМ

Статья на тему: как сделать так, чтобы из 1С Розницы (Розница Магазин Автозапчастей, Розница Магазин обуви и одежды) можно было распечатать ЧекККМ на несколько отделов.

02.08.2012    20877    rsvp201    3       

Подключение ККМ Пирит ФР01К 6

Статья no Нет файла v8 1cv8.cf Россия Бесплатно (free) ККМ Фискальный регистратор

Наша организация всегда работала с ФР "Штрих", сейчас она решила перейти на ФР "Пирит ФР01К", хочу рассказать о проблемах с подключением этого ФР к 1с8 (по крайней мере о тех проблемах что возникли у меня), обработка стандартная с 1с ИТС "CrystalsPiritFR01K.epf", драйвер с сайта Кристалл "CrystalsPiritFR01K.dll";

12.10.2011    27008    Ткачев    3       

Обмен между Атол РМК 3.9.4 и УТ 10.3.1.17 6

Инструменты и обработки no Внешняя обработка (ert,epf) v8 УТ10 Розничная торговля Бесплатно (free) Обработка документов ККМ

Перенос товара из 1С в ККМ Offline и загрузка продаж обратно. Товар переносится иерархически, с разрезами по характеристиками. Также выгружаются скидки по дисконтным картам.

21.05.2009    19851    334    kstukov    6