ККМ http web-сервер печати чеков / этикеток через JSON запрос по HTTP протоколу (54-ФЗ)







Программа предназначена для печати и регистрации фискальных/не фискальных чеков на Контрольно-кассовых машинах оборудованных фискальным регистратором (далее ККМ).
Программа является маленьким HTTP web-сервером и имеет встроенные драйвера ККМ.
Позволяет печатать/регистрировать чеки с мобильных устройств / планшетов или с настольного ПК из 1с одновременно.
Позволяет печатать/регистрировать чеки на KKM подключенных к другим ПК.
Есть возможность печати этикеток с штрих-кодами на принтерах этикеток.
Так-же возможно использовать ККМ в качестве принтера этикеток.

Технология использования — HTTP(Ajax/REST) запрос, данные передаются через JSON;
Возможности: Печать/регистрация чеков из браузера IE/Chrome и т.п.;
Протокол передачи данных: Печать/регистрация чеков по HTTP протоколу;

У 1с сейчас начинает появляется похожий функционал, но у 1с всегда должна установлена и запущена платформа 1с что требует как минимум лицензии на 1 продукт 1с или сетевую лицензию. Эта-же программа позволяет работать без лицензии 1с, например: В магазине чеки регистрируются с мобильной платформы (планшет) оффлайн и для складских операций используется тонкий клиент для удаленной базы через интернет. Такая схема позволяет магазину быть безопасной от наличия интернета.


Возможности:

  • Logo1Данные для печати чеков принимаются через HTTP запрос в формате JSON. Возможен запуск программы как windows-сервис.
  • Печатать различных штрих-кодов (в начале чека, в конце, на товар) даже если это не умеет делать ККМ.
  • Типы печатаемых ШК: EAN13, CODE39, CODE128, PDF417, QR .
  • Объединение нескольких ККМ в один пул который будет выглядеть для пользователя как 1 ККМ.
       При печати на пул чек будет регистрироваться на различных ККМ входящих в пул по очереди.
       При возникновении ошибки на одной ККМ она может автоматически блокироваться в пуле.
  • Переадресация чека на другой "ККМ web-сервер" для удалённой регистрации чека.
  • Печать чека на принтер-чеках и ККМ без фискального регистратора.
  • Печать чека на дисплее для отладки.
  • Излечение (на некоторых ККМ) фискальной подписи чека (КПК) и возвращение его клиенту.
  • Снятие Х и Z отчетов.
  • Фискализация (Регистрация) ККТ.
  • Внесение и изъятие денежных средств из кассы.
  • Открытие денежного ящика.
  • Запрос количества наличных средств в ККМ (по учету в ККМ).
  • Логин пароль для пользователей и отдельно для администратора.
  • Защищенное HTTPS соединение по вашему сертификату.
  • Задание любого IP порта для сервера (По умолчанию 5893).
  • Синхронная / Асинхронная работа. При асинхронной работе сервер сразу вернет управление. Результат выполнения операции можно запросить отдельно позже.
  • Поддержка кросс-доменных вызовов для браузеров.

Новая версия (поддержка 54-ФЗ):

  • Добавлен новый функционал по поддержке ККТ по 54фз с ФН и передачей информации в ОФД:
  • Передача адреса (Email или телефон) в данные чека.
  • Получение Web-ссылки на зарегистрированный чек в ОФД.
  • Передача произволных полей в чек, являющихся неотемлемой частью договора купли/продажи оформляемой чеком.
  • Передача данных по оператору/банковского агента/банковского субагента перевода денежных средств
  • Возможность не печати чека на ленту.
  • Возможность работы по нескольким системам налогообложения: возможность указать в чеке применяемую СНО.
  • Печать не фискальных строк 4 шрифтами.
  • Регистрация и передача в ОФД наименования товаров и Штрих-Код EAN13
  • Новый отчет "Состояние расчетов и состояние связи с ОФД"
  • Новый тип чека — строно (коррекция). теперь можно отсторнировать продажу в любое время! (не злоупотреблять — налоговая не спит!)
  • Регистрация ККТ в ОФД.
  • Открытие закрытие ФН.
  • Изменение регистрационных данных.
  • Передача данных в ОФД через COM порт по протоколу PPP Ethernet over USB
  • Подключение ККТ по Ethernet протоколу.
  • Получение списка ККМ.
  • Поиск сетевых и локальных ККТ.
  • API полностью совместим с новой версией UnitServer и KkmFactory.
  • Интеграция с ЕГАИС — при регистрации чека возможно отправление данных в ЕГАИС чрез систему "Универсальный транспортный модуль ЕГАИС (УТМ)"

Поддерживаемые устройства (ККМ):

  • Протокол АТОЛ:
    АТОЛ-22Ф/FPrint-22ПТК, АТОЛ-25Ф, АТОЛ-90Ф, АТОЛ-55Ф/FPrint-55ПТК,
    АТОЛ-11Ф/FPrint-11ПТК, АТОЛ-77Ф/FPrint-77ПТК, АТОЛ-30Ф, FPrint-190АК .
  • Протокол ШТРИХ-М:
    ШТРИХ-М-01Ф, ШТРИХ-ON-LINE, ШТРИХ-ЛАЙТ-01Ф, ШТРИХ-ЛАЙТ-02Ф, ШТРИХ-М-02-Ф,
    ШТРИХ-МИНИ-02Ф, ШТРИХ-ФР-02Ф, ШТРИХ-МИНИ-01Ф, РИТЕЙЛ-01Ф, ШТРИХ-ФР-01Ф
  • Протокол Сервис-Плюс (только старые ККМ, новые ККТ пока не поддерживаются): 
    СП-101 (СП-101 К, СП-101 ФР-К), СП-402 (СП-402 К, СП-402 ФР-К),
    СП-412, СП-413, СП-601 (СП-601 К, СП-601 ФР-К)
  • ESC/POS принтеры чеков:
    Принтеры этикеток, принтеры чеков (без фискального регистратора)
    работающие по протоколу ESC/POS (COM, LTP порты, windos спулер печати)

     

    Windows принтер:
    Принтеры этикеток, Принтеры чеков (без фискального регистратора)
    работающие через windos спулер печати

Требование к системе:

  • Никакие другие сторонние драйвера ККМ не нужны! В программу включены собственные драйвера ККМ!
  • Сторонний Web-сервер (apache, iis) не нужен! Программа сама является маленьким HTTP сервером!
  • Операционная система- Windows 7, Windows 8, Windows 10.
  • Требуется установить .NET Framework 4.5.1 (Наверняка у Вас уже установлено).
  • Прочие требования предъявляемые ККМ к системе.

Пример кода на JavaScript для печати фискального чека:

//**************************************************************************************
// Вызов команды на KkmServer
//**************************************************************************************
function ExecuteCommand(
    Async,          // false - сервер вернет ответ только после выполнения команды. Если true то сразу после постановки команды в очередь
    Data,           // Данные команды
    FunSuccess,     // Функция выполняемая при успешном соединении
    FunError,       // Функция выполняемая при ошибке соединения
    timeout) {
   
    if (FunSuccess === undefined) {
        FunSuccess = ExecuteSuccess;
    }
    if (timeout === undefined) {
        timeout = 60000; //Минута - некоторые драйверы при работе выполняют интерактивные действия с пользователем - тогда увеличте тайм-аут.
    }
    var JSon = $.toJSON(Data);
    $.support.cors = true;
    var jqXHRvar = $.ajax({
        type: 'POST',
        async: true,
        timeout: timeout,
        url: UrlServer + ((UrlServer == "") ? window.location.protocol + "//" + window.location.host + "/" : "/") + 'Execute/' + ((Async) ? "async" : "sync"),
        crossDomain: true,
        dataType: 'json',
        contentType: 'application/json; charset=UTF-8',
        processData: false,
        data: JSon,
        headers: (User != "" || Password != "") ? { "Authorization": "Basic " + btoa(User + ":" + Password) } : "",
        success: FunSuccess,
        error: FunError
    });
}

//**************************************************************************************
// Печать тестового чека продажи
//**************************************************************************************

function RegisterCheck(NumDevice, TypeCheck, IsBarCode, Print) {
    // Подготовка данных команды
    var Data = {
        // Команда серверу
        Command: "RegisterCheck",
                 
        //***********************************************************************************************************
        // ПОЛЯ ПОИСКА УСТРОЙСТВА
        //***********************************************************************************************************
        // Номер устройства. Если 0 то первое не блокированное на сервере
        NumDevice: NumDevice,
        // ИНН ККМ для поиска. Если "" то ККМ ищется только по NumDevice,
        // Если NumDevice = 0 а InnKkm заполнено то ККМ ищется только по InnKkm
        InnKkm: "",
        //---------------------------------------------
        // Заводской номер ККМ для поиска. Если "" то ККМ ищется только по NumDevice,
        KktNumber: "",
        // **********************************************************************************************************
        // Время (сек) ожидания выполнения команды.
        //Если За это время команда не выполнилась в статусе вернется результат "NotRun" или "Run"
        //Проверить результат еще не выполненной команды можно командой "GetRezult"
        //Если не указано или 0 - то значение по умолчанию 60 сек.
        // Поле не обязательно. Это поле можно указвать во всех командах
        Timeout: 30,
        // Уникальный идентификатор команды. Любая строка из 40 символов - должна быть уникальна для каждой подаваемой команды
        // По этому идентификатору можно запросить результат выполнения команды
        // Поле не обязательно
        IdCommand: guid(),
        // Это фискальный или не фискальный чек
        IsFiscalCheck: true,
        // Тип чека;
        // 0 – продажа;                             10 – покупка;
        // 1 – возврат продажи;                     11 - возврат покупки;
        // 8 - продажа только по ЕГАИС (обычный чек ККМ не печатается) 
        // 9 - возврат продажи только по ЕГАИС (обычный чек ККМ не печатается)
        TypeCheck: TypeCheck,
        // Аннулировать открытый чек если ранее чек не был  завершен до конца
        CancelOpenedCheck: true,
        // Не печатать чек на бумагу
        NotPrint: (Print == true) ? false : true, //true,
        // Продавец, тег ОФД 1021
        CashierName: "Kазакова Н.А.",
        // Телефон или е-Майл покупателя, тег ОФД 1008
        // Если чек не печатается (NotPrint = true) то указывать обязательно
        ClientAddress: "client@server.ru",
        // Система налогообложения (СНО) применяемая для чека
        // Если не указанно - система СНО настроенная в ККМ по умолчанию
        // 0: Общая ОСН
        // 1: Упрощенная УСН (Доход)
        // 2: Упрощенная УСН (Доход минус Расход)
        // 3: Единый налог на вмененный доход ЕНВД
        // 4: Единый сельскохозяйственный налог ЕСН
        // 5: Патентная система налогообложения
        // Комбинация разных СНО не возможна
        // Надо указывать если ККМ настроена на несколько систем СНО
        TaxVariant: "",
        // Дополниельные реквизиты чека (не обязательно):
        //1005 Адрес оператора по переводу денежных средств (Строка 100)
        //1016 ИНН оператора по переводу денежных средств (Строка 12)
        //1026 Наименование оператора по переводу денежных средств (Строка 64)
        //1044 Операция банковского агента (Строка 24)
        //1045 Операция банковского субагента (Строка 24)
        //1073 Телефон банковского агента (Строка 19)
        //1074 Телефон платежного агента (Строка 19)
        //1075 Телефона оператора по переводу денежных средств (Строка 19)
        //1082 Телефон банковского субагента (Строка 19)
        //1083 Телефон платежного субагента (Строка 19)
        //1119 Телефон оператора по приему платежей (Строка 19)
        CheckProps: [
            { Print: true, PrintInHeader: true, Teg: 1005, Prop: "Москва, ул. Трехгорка д.13" },
            { Print: true, PrintInHeader: true, Teg: 1010, Prop: 10.25 },
            { Print: true, PrintInHeader: true, Teg: 1073, Prop: "8(985)775-44-61" },
        ],
        // Дополнительные произвольные реквизиты (не обязательно) пока только 1 строка
        AdditionalProps: [
            //{ Print: true, PrintInHeader: false, NameProp: "Номер транзакции", Prop: "234/154" },
            { Print: true, PrintInHeader: false, NameProp: "Дата транзакции", Prop: "10.11.2024 10:30" },
        ],
        // Это только для тестов:
        ClientId: "23FG4GV4D2956",
        // КПП организации, нужно только для ЕГАИС
        KPP: "782543005",
        // Строки чека
        CheckStrings: [
            // Строка с печатью штрих-кода
            {
                BarCode: {
                    // Тип штрих-кода: "EAN13", "CODE39", "CODE128","QR", "PDF417".
                    BarcodeType: "PDF417",
                    // Значение штрих-кода
                    Barcode: "12345DFG Proba pera, Print barcode 1234567890",
                },
            },
            //При вставке в текст символов ">#10#<" строка при печати выровнеется по центру, где 10 - это на сколько меньше станет строка ККТ
            {
                PrintText: {
                    Text: ">#2#<ООО "Рога и копыта",
                    Font: 1,
                },
            },
            // При вставке в текст в середину строки символов "<#10#>" Левая часть строки будет выравнена по левому краю, правая по правому, где 10 - это на сколько меньше станет строка ККТ
            // При вставке в текст в середину строки символов "<#10#>>" Левая часть строки будет выравнена по правому краю, правая по правому, где 10 - отступ от правого клая
            { PrintText: { Text: "Пример №1 печати поля:<#16#>154,41" }, },
            // Строка с печатью текста определенным шрифтом
            {
                PrintText: {
                    Text: "Шрифт № 1",
                    Font: 1, // 1-4, 0 - по настройкам ККМ
                    Intensity: 15, // 1-15, 0 - по настройкам ККМ
                },
            },
            // Строка с печатью фискальной строки
            {
                Register: {
                    // Наименование товара 64 символа
                    Name: "Сапоги женские DF-3099",
                    // Количество товара
                    Quantity: 3,
                    // Цена за шт. без скидки
                    Price: 100,
                    // Конечная сумма строки с учетом всех скидок/наценок;
                    Amount: 0.01,
                    // Отдел, по которому ведется продажа
                    Department: 0,
                    // НДС в процентах или ТЕГ НДС: 0 (НДС 0%), 10 (НДС 10%), 18 (НДС 18%), -1 (НДС не облагается)
                    Tax: 18,
                    //Штрих-код EAN13 для передачи в ОФД (не печатется)
                    EAN13: "1254789547853",
                    // Данные для ЕГАИС системы, можно не указывать
                    EGAIS: {
                        Barcode: "22N0000154NUCPRZ3R8381461004001003499NKAQ0ZBUVDNV62JQAR69PEV878RO93V",
                        Ean: "3423290167937",
                        Volume: 0.7500,
                    },
                },
                BarCode: {
                    // Тип штрих-кода: "EAN13", "CODE39", "CODE128","QR", "PDF417".
                    BarcodeType: "EAN13",
                    // Значение штрих-кода
                    Barcode: "1254789547853",
                },
            },
        ],
        // Наличная оплата
        Cash: 800,
        // Безналичная оплата типа 1 (по умолчанию - Оплата картой)
        CashLessType1: 0.01,
        // Безналичная оплата типа 2 (по умолчанию - Оплата кредитом)
        CashLessType2: 0,
        // Безналичная оплата типа 3 (по умолчанию - Оплата сертификатом)
        CashLessType3: 0,
    };

    // Вызов команды
    ExecuteCommand(false, Data);

    // Возвращается JSON:
    //{
    //    "CheckNumber": 1,    // Номер документа
    //    "SessionNumber": 23, // Номер смены
    //    "LineLength": -1,
    //    "URL": "t=20240115T154700&s=0.01&fn=99078900002287&i=118&fp=549164494&n=1",
// URL проверки чека, где: t-дата-время, s-сумма документа, fn-номер ФН, i-номер документа, fp-фискальная подпись, n-тип документа
    //    "Info": null,
    //    "Command": "RegisterCheck",
    //    "Error": "", 
// Текст ошибки если была - обязательно показать пользователю - по содержанию ошибки можно в 90% случаях понять как ее устранять
    //    "Status": 0   // Ok = 0, Run(Запущено на выполнение) = 1, Error = 2, NotFound(устройство не найдено) = 3, NotRun = 4
    //}
}
//**************************************************************************************

 

Тестовый режим:

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

 

 Срок действия бесплатной техподдержки: не ограничен. 

Работа с 1С предприятием:

Для печати чеков из конфигураций 1С есть драйвер для 1с.
В 

Гарантия возврата денег

ООО «Инфостарт» гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом в течение 14-ти дней со дня поступления денег на наш счет.

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

Для возврата оплаты просто свяжитесь с нами.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *