Новое в версиях -2

Mini web-сервер для печати чеков на фискальных регистраторах из мобильных приложений через HTTP запрос JSON.
Ответить
Audim
Администратор
Сообщения: 2395
Зарегистрирован: 17 мар 2015, 18:36

Новое в версиях -2

Сообщение Audim » 19 дек 2021, 04:02

2.2.17.10 от 04.11.2023, новое в версии: Продажа маркированного товара из упаковки

В Фискальную строку "Register" добавлены два поля:

1. "MeasureOfQuantity" - Мера количества предмета расчета. Тег ОФД 2108, Значение из таблицы 114 (ФФД)
Если не передавать то применяется "0" - (шт. или ед.)
0 шт.или ед.; 10 г; 11 кг; 12 т; 20 см; 21 дм; 22 м; 30 кв.см; 31 кв.дм; 32 кв.м; 40 мл; 41 л; 42 куб.м; 50 кВт ч; 51 Гкал; 70 сутки; 71 час; 72 мин; 73 с; 80 Кбайт; 81 Мбайт; 82 Гбайт; 83 Тбайт; 255 Прочее
Некоторые ККТ при передачи кода маркировки трабуют чтобы MeasureOfQuantity = 0 (шт.или ед.)

Код: Выделить всё

MeasureOfQuantity: 0,

2. "PackageQuantity" - Общее количество товара в упаковке(тег 1294)
Передавать ТОЛЬКО при продаже товара из упаковки маркировки!! Как правило передавать не нужно (или передавать null)
Должно быть больше или равно продаваемому количеству товара
Имеет смысл только при передачи совместно с кодом маркировки
При указании PackageQuantity - поле MeasureOfQuantity должно быть строго равно 0 (шт. или ед.) и не равнятся 0!
При указании PackageQuantity - поле Quantity (количество продаваемого товара) должно быть строго целое число
Например при продаже 2 сигарет из упаковки в 22 шт. - MeasureOfQuantity = 0, Quantity = 2, PackageQuantity = 22

Код: Выделить всё

PackageQuantity: 22l,
3. Поле "MeasurementUnit" (Единица измерения предмета расчета Тег 1197)
убрано из документации - устарело.
Но в коде будет присутствовать до окончания вывода ФН 1.1 из эксплуатации

4. Для регионов ДНР и ЛНР добавлена возможность связки принтера и эквайрингового терминала.

2.2.16.45 от 20.04.2023, новое в версии: Перевод СБП на сертификаты Минцифры

Система СБП переползает на Российские сертификаты.
Импортные скоро отключат.
Соответственно обновил URL сервисов сбербанка.

Также Вам на ПК где используется СБП нужно установить сертификаты Минцифры:
https://www.gosuslugi.ru/crt

2.2.16.41 от 05.04.2023, новое в версии: Ошибка в новых прошивках Штрих-М

В последних версиях прошивок для Штрих-М в сетевом протоколе что-то поменялось.
Это что-то не отображено в описании протокола Штрих-М.
Сам Штрих в своих ДТО это молча исправил.

Мы попытались обойти эту гребанную магию.
На таких ККТ на первой команде (после перезапуска ПК) может быть временное подвисание сек. на 15 - не паникуйте - kkmserver пытается определить какой вариант этой гребаной магии стоит на Вашей ККТ :).
Далее все будет идти как обычно с нормальной скоростью.


2.2.16.10 от 29.09.2022, новое в версии: Дисплеи покупателя и СБП Тинькофф

Дисплеи покупателя:

Добавили поддержку дисплеев покупателя.
Вот такие:

Дисплей QR кодов MERTECH QR-PA
https://mertech.ru/qr-kod-displei/

Дисплей QR кодов QR-Screen
https://qr-screen.ru/product/

Как правило они нужны для системы быстрых платежей по QR коду.
И команды на них придут автоматически при подаче команды на терминал или на СБП.
Но можно и подавать свои команды и выводить текст для клиентов.

Реализовано три команды:

Код: Выделить всё

        // Вывести на экран
        function OutputOnCustomerDisplay(NumDevice) {
            // Подготовка данных команды
            var Data = {
                // Команда серверу
                Command: "OutputOnCustomerDisplay",
                // Номер устройства. Если 0 то первое не блокированное на сервере
                NumDevice: NumDevice,
                // Вывод верхней строки на дисплей
                TopString: "Оплата заказа:",
                // Вывод QR кода на дисплей
                CodeQR: "https://kkmserver.ru",
                // Вывод нижней строки на дисплей
                BottomString: "Сумма: 3000.00 руб"
            };
         
            // Вызов команды
            ExecuteCommand(Data);
        }

Код: Выделить всё

        // Очистить экран
        function ClearCustomerDisplay(NumDevice) {
            // Подготовка данных команды
            var Data = {
                // Команда серверу
                Command: "ClearCustomerDisplay",
                // Номер устройства. Если 0 то первое не блокированное на сервере
                NumDevice: NumDevice
            };
            // Вызов команды
            ExecuteCommand(Data);
        }

Код: Выделить всё

        // Получить опции дисплея
        function OptionsCustomerDisplay(NumDevice) {
            // Подготовка данных команды
            var Data = {
                // Команда серверу
                Command: "OptionsCustomerDisplay",
                // Номер устройства. Если 0 то первое не блокированное на сервере
                NumDevice: NumDevice
            };
            // Вызов команды
            ExecuteCommand(Data);
        }
        Ответ:
        {
            // Есть вывод верхней строки
            "IsTopString": true,
            // Есть вывод нижней строки
            "IsBottomString": true,
            // Есть вывод QR кода
            "IsCodeQR": true,
        }
СБП Тинькоф:

Добавили устройство - СБП для банка Тинькофф.


2.2.15.10 от 23.07.2022, новое в версии: Эквайринговые терминалы по протоколу ТТК2

Эквайринговые терминалы по протоколу ТТК2:

Добавили поддержку протокола TTK2 для эквайринговых терминалов.
Протокол работает напрямую с Ethernet портом терминала.
Это позволит например освободится от использования ПО Сберанка (pilot_nt.dll).
А так-же позволит работать с терминалами сбербанка в Linux и Mac-OS.
Но подходит не для всех терминалов сбербанка а для так называемых "Интегрированных терминалов" (что бы это не значило).

Так-же протокол TTK2 поддерживают некоторые терминалы других банков.



2.2.14.12 от 19.04.2022 новое в версии: СБП, История операций, Окна в расширении, Linux

Linux, MacOS:

Избавились от тяжелого наследия Windows:
Т.е. избавились от зависимости к библиотеке libgdiplus - которая некоторым попила много крови.
Теперь библиотеки генерации штрих-кодов и работы с изображениями встроены в сам kkmserver.


СБП (Система быстрых платежей):

Немного общей информации об оплате QR кодами
Есть три системы:

1. QR код в котором зашиты поля платежки.
Достоинства:
- Понимают все системы, программы, банкоматы.
- Не нужно заключать договор на эквайринг
Недостатки:
- Платеж идет как обычная платежка - т.е. долго, и само главное - нет ни какой возможности проверить что оплата прошла - только получив и обработав выписку из банка.
- Возня клиента с мобильником - но это у всех систем

2. Системы различных баков
Достоинства:
- Проверить оплату можно быстро.
Недостатки:
- Вселенная только одного банка
- Нет стандарта - для каждого банка все по своему
- Возня клиента с мобильником - но это у всех систем

3. СБП -Система быстрых платежей от ЦБ:
Достоинства:
- Понимают все крупные банки, если в системе банка нет оплаты по СБП то есть отдельная программа для мобильников:
- Приложение для оплаты по QR коду на мобильнике: https://sbp.nspk.ru/sbpay/
- Проверка что оплата клиентом произведена происходит тут-же
- Возможность отменить QR код (что и происходит если клиент не оплатил) - для того чтобы потом случайно не было оплаты по этой продаже.
- Возможность получать отчет по проведенным оплатам за смену
Недостатки:
- Нужно заключать договор на эквайринг (мерчант)
- Возня клиента с мобильником - но это у всех систем

Общая информация о системе быстрых платежей:
https://sbp.nspk.ru/business/

Мы реализовали СБП с эквайрингом от Сбербанка:
- Реализовано как еще один протокол эквайрингового терминала
- API - без изменения (для эквайринговых терминалов): https://kkmserver.ru/KkmServer#PrimerPaymentCard
- При работе сгененрированный QR код оплаты можно вывести на экран (и показать его клиенту) или напечатать маленький не фискальный чек с этим QR и отдать его клиенту для оплаты.

Регистрация СПБ в сбербанке (Те у кого там нет договора на эквайринг):
- https://www.sberbank.ru/ru/s_m_business ... ce/platiqr
- Там нужно выбрать "На сайте или в приложении":

Регистрация СПБ для Для клиентов Сбер-Бизнес:
- https://www.sberbank.ru/help/business/sbbol/100013
- Выбирать оборудование там не нужно, сразу заполняйте "Торговая точка"

Проблемы могут появиться у тех у кого в kkmserver несколько устройств эквайринга (например обычный терминал и СБП).
Для тех кто работает без расширения браузера:
- Тут Вам нужно будет модернизировать Вашу систему чтобы в команде был нужный номер устройства эквайринга
(В случае работы "от чека" поле "NumDeviceByProcessing "
Для тех кто работает через расширения браузера:
Смотрите следующий пункт.


Окна в расширении:

Иногда при работе с оборудованием нужно дать пользователю выбрать устройство на котором он хочет выполнить команду.
Например если проводится оплата по терминалу эквайринга а их в kkmserver из настроено несколько - по какому проводить?

Проблема в том что kkmserver может стоять удаленно - и соответственно он ни чего не сможет показать на экране у пользователя.
Только если Ваша система сама проверит сколько и какие устройства подключены и задаст вопрос.
Но никто из разработчиков систем этим не озадачивается.

Но вот если Ваша система работает через расширение для браузера то совсем другое дело:
Мы сделали 3 вещи:

1. Расширение для браузера прежде чем отправить команду на выполнение проверит сначала на скольких устройствах может быть выполнена команда.
И если таких устройств больше одного - то на страничке в браузере будет выведено окно о выборе устройства для выполнения команды.

2. При выполнении команды Расширение для браузера покажет окошко-информацию что команда выполняется.
Особенно это полезно для приема платежей - команда может висеть долго и пользователь может забыть что у него идет транзакция.
Так-же в этом окошке для некоторых устройств (которые это поддерживают - например для СБП) можно прервать операцию

3. При подаче команды на регистрацию чека:
если в команде указана оплата по безналу и в настройках kkmserver указано разрешение для проведения транзакции "от чека"
будет открыто специальное окно.
- В этом окне пользователь может указать - нужно но ли на какую сумму нужно провести транзакцию
- Собственно провести саму транзакцию без печати чека (только слип)
- если необходимо то можно провести несколько транзакций, или при ошибке - повторно провести транзакцию
- И после приема всех оплат напечатать сам кассовый чек.
Т.е. все то что ленятся делать разработчики систем/Сайтов

ЗЫ: все окошки можно отключить в окне настройки расширения.


История операций:

В меню настроек kkmserver мы добавили пункт "История операций".
На этой страничке будут показаны все операции по ККТ и эквайринговым терминалам.
Показано будет кратко - Дата, наименование операции и сумма.
И прямо из строки истории можно будет нажать кнопку "Возврат" и
- сделать или чек на возврат/корректировку
- или провести возврат по оплате по эквайрингу.
При этом откроется соответствующая страница со всеми данными чека или оплаты.


Оплата картой:

В меню настроек kkmserver мы добавили пункт "Оплата картой".
Предназначена для аварийного проведения операций по эквайрингу.
Аналогично пункту "Регистрация чека"


2.2.12.10 от 17.03.2022 новое в версии: Печать на чековую ленту

Че-то у всех резко закончилась бумажная чековая лента.
(Вот мне интересно куда она делась?)

Из за этого добавил в настройки ККТ параметр:
"Печать чека и отчета на ленте:"
Там можно выбрать:

Код: Выделить всё

            "Из команды. Если там нет - Печатать на ленте." (по умолчанию)
            "Из команды. Если там нет - Не печатать на ленте."
            "Из команды. Если там нет - Не печатать. Но печатать отчеты."
            "Всегда печатать на ленте. Признак из команды игнорировать"
            "Всегда Не печатать на ленте. Признак из команды игнорировать"
            "Всегда Не печатать. Но печатать отчеты. Признак из команды игнорировать"
Т.е. можно настроить в kkmserver чтобы не чего не гнало на ленту.

Но есть нюансы!!!:
- Некоторые ККТ всегда печатают отчеты.
- Некоторые ККТ всегда печатают чеки если ККТ не зарегистрирована на "Интернет продажи"
- Некоторые ККТ всегда печатают чеки если в данных чека нет телефона или email-а клиента
- А у некоторых это еще зависит и от версии прошивки.



2.2.11.14 от 04.01.2022 новое в версии:

Весы:
Добавлена поддержка весов "Атол" по протоколу "Пассивный".

ККТ Атол:
Для всех дистрибутивов добавил возможность работы без установки ДТО (dll ДТО Атола встроен в дистрибутив)

Доработана форма печати чеков:
Добавлена возможность регистрации чека с кодами маркировки
Добавлена возможность регистрации чека с указанием агентской схемы
Добавлена возможность указания использования эквайринга для данного чека


2.2.10.43 от 18.12.2021 новое в версии: доработки по эквайрингу

Протокол UCS:
Добавлена возможность работы по USB порту (требуется ПО от UCS)

Протокол INPAS:
При выборе СОМ порта или IP адреса Ethernet - kkmserver будет работать напрямую с терминалом (по протоколу SmartSale), без использования ПО DualConnector

Изменения в API терминалов:
Раньше после транзакции возвращалось куча признаков транзакции:
ase "CN": DataCommand.CardNumber = Val; break;
- ReceiptNumber
- RRNCode
- AuthorizationCode
- CardHash
- CardDPAN
- CardHash
- TransDate
Все эти поля могли понадобится при отмене или возврате транзакции.
В ответе на транзакцию добавлено поле "UniversalID"
В него в читаемом виде записаны все поля транзакции, пример:
"CN:1254********6845;RN:26;RRN:5486265211;AC:783451264186418"
"CN:************5427;RRN:135282495958;AC:219084;CH:BFBE7F701F3533899494869A7D29F46FA2529892"
Это поле после команды "PayByPaymentCard" нужно запоминать.
И в команде возврата, отмены, аварийной отмены - передавать в поле "UniversalID".

Ответить