gifts2017

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

Опубликовал Дмитрий Гарбуз (audim) в раздел Оборудование - ККМ

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

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

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

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

  • Протокол АТОЛ:
    ФЕЛИКС-02К, ТОРНАДО, Меркурий MS-K, ФЕЛИКС-3СК, FPrint-02K,
    FPrint-03K, FPrint-88K, FPrint-5200K, PayVKP-80K, PayPPU-700K, PayCTS-2000K, FPrint-55K (FPrint-55ПТК), FPrint-22K (FPrint-22ПТК),
    FPrint-11ПТК, FPrint-77ПТК, BIXOLON-01K.
  • Протокол ШТРИХ-М:
    ЭЛВЕС-МИНИ-ФР-Ф, ШТРИХ-ФР-К, ШТРИХ-950К, ЭЛВЕС-ФР-К, ШТРИХ-МИНИ-ФР-К, ШТРИХ-LIGHT-ФР-К,
    ШТРИХ-КОМБО-ФР-К, ШТРИХ-950К, ШТРИХ-КОМБО-ФР-К, ШТРИХ-М-ФР-К, ШТРИХ-КИОСК-ФР-К, ШТРИХ-АЗС, ШТРИХ-500
  • Протокол Сервис-Плюс:
    СП-101 (СП-101 К, СП-101 ФР-К), СП-402 (СП-402 К, СП-402 ФР-К),
    СП-412, СП-413, СП-601 (СП-601 К, СП-601 ФР-К)
  • ESC/POS принтеры чеков:
    Принтеры этикеток, принтеры чеков (без фискального регистратора)
    работающие по протоколу ESC/POS (COM, LTP порты, windos спулер печати)

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

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

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

//**************************************************************************************
// Вызов команды на KkmServer
//**************************************************************************************
function PostKkmServer(URL, Command, IDdevice, Data, User, Password) {

 $.support.cors = true;
    var jqXHRvar = $.ajax({
        type: 'POST',
        async: true,
        url: URL + '/' + Command + '/sync/' + IDdevice,
        crossDomain: true,
        dataType: 'json',
        contentType: 'application/json; charset=UTF-8',
        processData: false,
        data: $.toJSON(Data),
        headers: { "Authorization": "Basic " + btoa(User + ":" + Password) },
        success: function (data, textStatus, jqXHR) {
            var Responce = data.Error;
            if (Responce == "") {
                Responce = "Ok<br/>"
            };
            if (data.Amount != 0) {
                Responce = Responce + "Наличные в кассе: " + data.Amount + "<br/>";
            }
            Responce = Responce + "Номер ККМ: " + data.NumberKkm + "<br/>";
            Responce = Responce + "ИНН: " + data.INN + "<br/>";
            Responce = Responce + "Номер ЭКЛЗ: " + data.NumberEklz + "<br/>";
            Responce = Responce + "Номер чека: " + data.NumberCheck + "";
            $('.Responce').html(Responce);
        }
    });
}

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

function Check() {
    // Данные чека
    var Check =
    {
        IsFiscalCheck: true,
        TypeCheck: 0,
        BarCodeHeader: {
            BarcodeType: "PDF417",
            Barcode: "www.kkmserver.ru"
        },
        CheckStrings: [
            {
                BarCode: {
                    BarcodeType: "EAN13",
                    Barcode: "1254789547853"
                },
                LeftString: "",
                CenterString: "",
                RightString: "",
                Name: "Товар №2",
                Quantity: 1,
                Price: 10.77,
                Amount: 1.00,
                Department: 0,
                Tax: 18.00
            }
        ],
        BarCodeFooter: {
            BarcodeType: "CODEQR",
            Barcode: "www.kkmserver.ru"
        },
        Cash: 1.01,
        PayByCard: 0,
        PayByCredit: 0,
        PayByCertificate: 0
    };
    PostKkmServer('http://localhost:5893', 'Check', '1', Check, 'User', '');
}
//**************************************************************************************

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


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

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

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


Для печати чеков из конфигураций 1С нужно использовать драйвер ККМ для 1С:
http://infostart.ru/public/408615/ 

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

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

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

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

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

Все

Наименование Файл Версия Размер Кол. Скачив.
Дистрибутив сервера ККМ
.msi 2,62Mb
29.07.16
28
.msi 1.1.3.6 2,62Mb 28 Скачать
Продление техподдержки на 1 год
17.08.2016
500 руб.

Лицензии

Наименование Файл Версия Размер Кол. Скачив.
Лицензия на KkmServer + Техподдержка
17.08.2016
1.1.3.6 3000 руб.

Моментальная
доставка

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Олег Дмитров (baracuda) 01.03.16 15:16
Где это может понадобиться?
2. Дмитрий Гарбуз (audim) 01.03.16 17:37
Когда надо напечатать/зарегистрировать чек из браузера.
В случаях когда ККМ находится на другой машине.
Для печати/регистрации чека из нескольких терминальных сессий на 1 ККМ.
Для печати/регистрации чека с мобильного устройства.
И еще в одном щепетильном случае.
3. Головаченко Дима (Smaylukk) 16.03.16 18:05
Подскажите, если это реализовано, каким образом можно произвольную строку или набор строк?
Это касается принтера этикеток.
4. Дмитрий Гарбуз (audim) 16.03.16 22:19
Вот пример печати этикеток:
var Check =
{
IsFiscalCheck: false, // true - фискальный чек, false - не фискальный
TypeCheck: 10, // Тип чека: 0 – продажа; 1 – покупка; 2 – возврат продажи; 3 – возврат покупки; 10 - Этикетка
CheckStrings: [ // Строки чека
{ // ПЕРВАЯ ЭТИКЕТКА
BarCode: {
BarcodeType: "EAN13", // Тип штрихкода: "EAN13", "CODE39", "CODE128", "PDF417", "CODEQR" (Не обязательно)
Barcode: "1254789547853", // Значение штрихкода (Не обязательно)
}
},
{
LeftString: "", // Строка печатаемая слева чека (Не обязательно)
CenterString: "Ботинки женские", // Строка печатаемая по центру чека (Не обязательно)
RightString: "", // Строка печатаемая слева справа чека (Не обязательно)
DoubleWidth: true, // Двойная высота и ширина строки
EndPage: false, // Начать новую этикетку
},
{
LeftString: "", // Строка печатаемая слева чека (Не обязательно)
CenterString: "DFX-345/40 Размер-36", // Строка печатаемая по центру чека (Не обязательно)
RightString: "", // Строка печатаемая слева справа чека (Не обязательно)
DoubleWidth: false, // Двойная высота и ширина строки
EndPage: true, // конец этикетки
},
{ // ВТОРАЯ ЭТИКЕТКА
BarCode: {
BarcodeType: "EAN13", // Тип штрихкода: "EAN13", "CODE39", "CODE128", "PDF417", "CODEQR" (Не обязательно)
Barcode: "1254789547853", // Значение штрихкода (Не обязательно)
}
},
{
LeftString: "", // Строка печатаемая слева чека (Не обязательно)
CenterString: "Сапоги мужские", // Строка печатаемая по центру чека (Не обязательно)
RightString: "", // Строка печатаемая слева справа чека (Не обязательно)
DoubleWidth: true, // Двойная высота и ширина строки
EndPage: false, // Начать новую этикетку
},
{
LeftString: "", // Строка печатаемая слева чека (Не обязательно)
CenterString: "VCL-4455 Размер-41", // Строка печатаемая по центру чека (Не обязательно)
RightString: "", // Строка печатаемая слева справа чека (Не обязательно)
DoubleWidth: false, // Двойная высота и ширина строки
EndPage: true, // конец этикетки
}
]
};
$.support.cors = true;
$.ajax({
type: 'POST',
async: false,
url: 'http://YourUrlServer:5893/Check/sync/1',
crossDomain: true,
dataType: 'json',
contentType: 'application/json; charset=UTF-8',
processData: false,
data: $.toJSON(Check),
headers: { "Authorization": "Basic " + btoa("User:Password") },
success: function (data, textStatus, jqXHR){
// Здесь обрабатываем ответ от сервера
}
});
5. nitrios 24.03.16 05:53
Программа поддерживает одновременное подключение более одного ФР к одному серверу?
6. Дмитрий Гарбуз (audim) 24.03.16 18:28
8 ККМ.
И может одновременно принимать на 1 один ФР сразу несколько заданий выстраивая их в очередь.
7. Дмитрий Гарбуз (audim) 24.03.16 18:30
На 1 и том-же ККМ задания выполняются последовательно,
На разных ККМ - параллельно.
8. Головаченко Дима (Smaylukk) 30.03.16 15:30
В 1С при настройке ФР Атол есть возможность указать не COM-порт, а UDP/IP адрес.
В вашем продукте есть такая возможность?
9. Дмитрий Гарбуз (audim) 30.03.16 15:34
(8) Smaylukk,
Такая возможность есть но закрыта :)
А если серьезно то там все элементарно, код я написал, но мне просто не на чем протестировать - нет такой ККМ :(.
10. Алексей Лустин (lustin) 11.05.16 21:16
3 вопроса:

* работает ли под Mono ? и не под Windows ?
* есть ли возможность добавить к серверу плагины с возможностью подписки на событие ?
* что значит лицензия, каков порядок лицензирования ?
11. Дмитрий Гарбуз (audim) 11.05.16 22:31
(10) lustin,
1. Нет. Будет версия под NetCore когда он выйдет, вот она будет работать под линуксами
2. Такой возможности нет. А на какие события Вы хотели подписаться? Прям теряюсь в догадках...
3. Лучше посмотреть на сайте сервера.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа