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

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

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

Сообщение Audim » 01 авг 2018, 02:48

2.1.38.10 от 21.07.2020 новое в версии: Net.FrameWork 4.8 и Передача кода маркировки (Честный знак/КИЗ) товаров по ШК

Изменена версия Net.FrameWork
Из за поддержки Windows-7 я долго не переводил kkmserver на свежие версии Net.FrameWork
Но вот сегодня случилось: браузеры обновились и перестали открывать сайты по устаревшим протоколам TLS.
Раньше они требовали один раз указать что сайт нужно открывать по устаревшему протоколу.
Сегодня они требуют такое подтверждение каждый день.
Чтобы kkmserver мог хоть как-то работать на Window-7 перевел его на Net.FrameWork 4.8

На Win-8, Win-10 не скажется вообще ни как (Net.FrameWork 4.8 там уже давно прилетел с обновлениями)

А вот на Win-7 если система не пропатчена всеми обновлениями Net.FrameWork 4.8 нету.
После установки kkmserver ver. 2.1.38.10 он может попросить установить Net.FrameWork 4.8.
И не факт что Net.FrameWork 4.8 установится!
Если не встанет то придется натягивать все обновления на Win-7.
Сори за неудобства но по другому ни как....


Передача кода маркировки (Честный знак/КИЗ) товаров по ШК

Изменился API в части передачи кода маркировки.

Очень сложное законодательство получилось в части маркированного товара.
Разные виды товаров маркируются по разному.
Разные правила генерации ШК кодов маркировки:
Табак, алкоголь, лекарства, шубы, обувь и пр. - и все НЕ СОВМЕСТИМО между собой.
Плюс накладываются еще разные версии маркировки одного и того-же вида товаров.

ШК в формате GS1 довольно трудно распарсирить:
Есть много полей применения фиксированного размера.
И для таких полей нужно знать точно размер каждого, а всего полей за сотню...

Короче клоака полная...

Чтобы хоть как-то облегчить жизнь простого программиста сделано следующее:
Вам не нужно более парсирить ШК различных товаров а просто передавать в команде отсканированный сканером ШК.

Изменения в API расширения для браузеров:
Изменена функция "AddRegisterString"

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

    var DataStr = Data.AddRegisterString(
        "Сапоги женские DF-3099-1",  // НаименованиеТовара(64 символа)
        3,  // Количество (3 знака после запятой)
        100, // ЦенаБезСкидки (2 знака после запятой)
        0.01,  // СуммаСтроки (2 знака после запятой)
        -1, // СтавкаНДС(0(НДС 0%), 10(НДС 10%), 20(НДС 20%), -1(НДС не облагается), 120 (НДС 20/120), 110 (НДС 10/110))
        0, // Отдел
         "1254789547853", // Код товара EAN13 - не обязательно
        4,  // Признак способа расчета. тег ОФД 1214. Для ФФД.1.05 и выше обязательное поле
        1,  // Признак предмета расчета. тег ОФД 1212. Для ФФД.1.05 и выше обязательное поле

        // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!	
        //штрих - код маркировки товара со сканера 
        "0104300943734342212413195240818240640291ffd092MDEwNDMwMDk0MzczNDM",
        // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!	

        "пара", // Единица измерения предмета расчета. Можно не указывать
        "156", // Цифровой код страны происхождения товара (CountryOfOrigin) в соответствии с Общероссийским классификатором стран мира 3 симв. Тег 1230
        "54180656/1345865/3435625/23", // Регистрационный номер таможенной декларации (CustomsDeclaration) 32 симв. Тег 1231
        0.01, // Сумма акциза (ExciseAmount) с учетом копеек, включенная в стоимость предмета расчета Тег 1229
        "Тест-доп.реквизит" // Дополнительный реквизит предмета расчета тег 1191, Только для ФФД 1.1 !
    );
Изменения в API расширения http запросов:
В JSON структуре "Register" фискальной строки изменено поле - структура:

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

GoodCodeData: {
        // штрих-код маркировки товара со сканера
        BarCode: "0104300943734342212413195240818240640291ffd092MDEwNDMwMDk0MzczNDM",
        // Проверять содержит ли ШК кода маркировки идентификатор экземпляра товара (если вообше не указать - true)
        // Для некоторых товаров нужно передавать ШК EAN-13, тогда это поле устанавливайте в 'false'
        ContainsSerialNumber: true
}
Внимание!
Сканер нужно настроить так чтобы он не съедал управляющие символы.
Разные сканеры по разному их передают в строку ШК:
Кто просто байтом, другие могут экранировать строками: "\x1d", "\u001d", "\x001d", "<FNC1>", "<GS>"

Примеры ШК коды которые поддерживаются:
EAN-8:
  • "46120441"
EAN-13:
  • "2900001462105"
ITF14:
  • "02900001462105"
GS1, в качестве разделителей полей символы '(' и ')'
  • "(01)12345678901231(253)1234567890123(8003)1234567890123456(10)12345678901234567890(21)12345678"
GS1 (обувь), в качестве разделителей полей символ '\x1d' (в виде байта)
  • "0104300943734342212413195240818240640291ffd092MDEwNDMwMDk0MzczNDM"
GS1, в качестве разделителей полей строка "\u001d"
  • "010460043993125621JgXJ5.T\u001d8005112000\u001d930001\u001d923zbrLA ==\u001d24014276281"
GS1, в качестве разделителей полей строка "\\u001d" (с символом экранизации \)
  • "010460043993125621JgXJ5.T\\u001d8005112000\\u001d930001\\u001d923zbrLA ==\\u001d24014276281"
GS1, в качестве разделителей полей строка "\x1d"
  • "010460406000600021N4N57RSCBUZTQ\x1d2403004002910161218\x1d1724010191ffd0\x1d92tIAF/YVoU4roQS3M/m4"
GS1, в качестве разделителей полей строка "\x1d" (с символом экранизации \)
  • "010460406000600021N4N57RSCBUZTQ\\x1d2403004002910161218\\x1d1724010191ffd0\\x1d92tIAF/YVoU4roQS3M/m4"
GS1, в качестве разделителей полей строка "\x001d"
  • "010460406000600021N4N57RSCBUZTQ\x001d2403004002910161218\x001d1724010191ffd0\x001d92tIAF/YVoU4roQS3M/m4"
GS1, в качестве разделителей полей строка "\x001d" (с символом экранизации \)
  • "010460406000600021N4N57RSCBUZTQ\\x001d2403004002910161218\\x001d1724010191ffd0\\x001d92tIAF/YVoU4roQS3M/m4"
GS1 (лекарство), в качестве разделителей полей строка "<FNC1>"
  • "<FNC1>0108691234567890211323424679<FNC1>1707011910AX785910BC"
GS1, в качестве разделителей полей строка "<GS> " (с пробелом!!!!!!!)
  • "0183525492885520210000000859314<GS> 91ee05<GS> 92r7fLjLdSQBRRL8KgReiJ0mgdFWhlR9gsfe1QS3ibhck="
GS, 1 в качестве разделителей полей строка "<GS> "
  • "0183525492885520210000000859314<GS>91ee05<GS>92r7fLjLdSQBRRL8KgReiJ0mgdFWhlR9gsfe1QS3ibhck="
GS1, в качестве разделителей полей символ '\x1d' (поле 21 фиксированной длины (13) - без символа разделителя в конце - есть и такое!!)
  • "010460620309891021MCEb6/r890123800511700093EBBm240FA068592.14"
Шубы (20 знаков)
  • "RU-430301-ABCDEF1234"
Табак (29 знаков)
  • "00000046186195Xp4k=xyAQDPtFEa"
Табак (25 знаков)
  • "00000046186195Xp4k=xyAQDP"
ЕГАИС 2.0 (25 знаков)
  • "22N00002NU5DBKYDOT17ID980726019019608CW1A4XR5EJ7JKFX50FHHGV92ZR2GZRZ"
ЕГАИС 3.0 (25 знаков)
  • "136222000058810918QWERDFEWT5123456YGHFDSWERT56YUIJHGFDSAERTYUIOKJ8HGFVCXZSDLKJHGFDSAOIPLMNBGHJYTRDFGHJKIREWSDFGHJIOIUTDWQASDFRETYUIUYGTREDFGHUYTREWQWE"
Если Вы обнаружите что какой-то ШК Маркировки (Именно маркировки!) в kkmserver не поддерживается:
Выложите в этой теме фотку (именно фотку а не строку со сканера - я сканерам не доверяю :) ) такого ШК.
Я обязательно добавлю поддержку такого ШК маркировки.

Команда Проверки ШК кода маркировки товара
Добавил новую команды к kkmserver для проверки ШК маркировки - чтобы можно было проверить ШК до регистрации чека.
И не получить ошибку во время регистрации чек или чтобы не профукать вывод из оборота маркированного товара
https://kkmserver.ru/KkmServer#PrimerAd ... odCodeData


2.1.36.10 от 28.03.2020 новое в версии:

1. Восстановил режимы TLS по запросу клиента - поддерживаются все версии SSL/TLS.
В FireFox тоже все ок.

2. Добавил корректную работу по IP6.
т.е. kkmserver на 1 порту сразу держит соединения и по IP4 и по IP6.

3. kkmserver теперь открывает сразу три порта - порт который указан в настройках + НомерПорта +1 и НомерПорта +2.

Пример если у Вас в настройках указан 5893 то:
5893 - http или https (в зависимости от настройки сертификата)
5894 - Всегда https (сертификат по умолчанию на 'localhost')
5895 - Всегда http

т.е. если Вы работаете не через расширение (что само по себе не хорошо) то вам нужен https протокол.
Сразу можете коннектится на 5894 - он всегда по https.
C другой стороны если из за прав не открывается https - то вы всегда сможете зайти на http://localhost:5895/Settings/ - для настройки.


2.1.35.10 от 12.03.2020 новое в версии:

Режим TLS 1.2:

Сегодня FireFox подложил небольшую свинью:
В последней версии отключены по умолчанию режим TLS 1.0/1.1.
Их пока еще можно включить в настройках.
Но как написано и это не на долго.

В kkmserver до этого стоял режим автоматического выбора версии SSL.
Но вот выявился баг: FireFox запрашивает версии SSL у kkmserver и почему-то выбирает TLS 1.0 который сам же и не поддерживает.
Баг проявляется на Net.Framework версии ниже чем 4.7.
Т.е. Win7 в пролете.
И это баг внутри фраймворка - до него не дотянутся...

Чтобы оставить совместимость с Win7 и + не требовать переустановки Net.Framework принудительно включил в kkmserver TLS 1.2

Какие могут быть проблемы у клиентов:
- Если клиент ооооччччееень давно не обновлял браузер - придется ему обновить его.
- Если в Вашем приложении при установке соединения с kkmserver Вы принудительно включаете версию не TLS 1.2.

Атол "Платформа-5" - USB порт:

Добавил в протокол Атол "Платформа-5" режим всязи с ККТ по USB.
Причем для USB можно поставить порт - "Автоматически".
Тогда даже если при подключении нового оборудования у ККТ сменится порт - все будет работать.
Но!
Если у Вас к ПК подключено 2 или более ККТ Атол - тогда все рано нужно будет указать порт вручную.

Атол "Платформа-5" - Linux и MacOs:

В связи с постепенным переползанием всех моделей Атолов на новые прошивки "Платформа-5"
Добавил поддержку Атол "Платформа-5" в дистрибутивах kkmserver для Linux и MacOs



2.1.34.10 от 27.02.2020 новое в версии:

Добавлена поддержка ККТ Эвотор

Эвотры довольно сильно отличаются от обычных ККТ.
Это накладывает ограничения на функционал этих ККТ в kkmserver:

1. Команда регистрации чека НЕ выполняется полностью автоматически.
Вам нужно на Эвоторе указать как чек оплачен, и уже после этого чек напечатается.
2. Команды внесения/изъятия денег не регистрирует чек, а открывает окно на дисплее эвотора - уже из которого и можно зарегистрировать эти чеки.
3. Команда Х-Отчета не печатает отчет, а открывает окно на дисплее эвотора - уже из которого и можно распечатать отчет.
4. Команда открытия денежного ящика не поддерживается.
5. Команда регистрации ККТ не поддерживается.
6. Команда получения данных чеков не поддерживается.

Стоимость: Стоимость приложения устанавливаемое в Эвотор минимально-разрешенная компанией для этот типа приложений 800 р/мес.
Ниже не удалось договорится - не хотят ни в какую.
При использовании в kkmserver только ККТ Эвотор - покупать лицензию на kkmserver НЕ НУЖНО, только оплата за приложение на сайте Эвотора.
Приложение в магазине Эвотора: https://market.evotor.ru/store/apps/5ad ... 1fb17eea0f

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

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

"Cash": 0, // Оплачено наличными
"ElectronicPayment": 3.02, // Оплачено электронно
"AdvancePayment": 0, // Оплачено предоплатой (зачетом аванса) 
"Credit": 0, // постоплатой(в кредит)
"CashProvision": 0, // встречным предоставлением (сертификаты, др. мат.ценности)
Настройка ККТ Эвотор: https://kkmserver.ru/WiKi/SettingEvotor


Добавлено расширение в магазин Microsoft Edge Addons:
https://microsoftedge.microsoft.com/add ... gbfjclefed



2.1.32.10 от 24.12.2019 новое в версии:

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

"IdCommand" команды при ошибке менять не обязательно
Раньше если команда была выполнена с ошибкой нужно было сменить "IdCommand" для повторного выполнения команды.
теперь если команда выполнилась с ошибкой менять "IdCommandу" не нужно.
Т.е. можно один раз присвоить чеку ID и по нему выполнять регистрацию.

Убрал обязательность указания ИНН кассира
Достали!! Убрал.
На ККТ со старыми прошивками возможны ошибки - если ИНН кассира не указан ИНН может подтянутся из внутренних настроек ККТ или просто будет выдана ошибка - будьте внимательны.
И на некоторых моделях ККТ и с новой прошивкой ККТ может не регистрировать чек без ИНН кассира - будет выдавать ошибку.
И все равно юристы говорят что если ККТ не в платежном автомате и не для интернет-расчетов - ИНН кассира обязателен.!



2.1.29.25 от 15.09.2019 новое в версии:

Добавлена поддержка Платформа 5 от атола.
Платформа 5 - это новые прошивки для ККТ.
Пока только АТОЛ-1Ф.
Но постепенно такие прошивки должны появится для всех моделей ККТ.

Особенности: при работе через USB создается только 1 СОМ порт.
Соответственно и EoU запускать и настраивать не нужно.
Но Атол не дает описание низкоуровневого протокола - поэтому работа только через ДТО (драйвер торгового оборудования) Атола.

Для Windows - нужны ДТО Атол x32, Для Linux - нужны ДТО Атол x64


2.1.29.20 от 01.09.2019 новое в версии:

Добавлена поддержка тегов:
1084: Дополнительный реквизит пользователя
1085: Наименование дополнительного реквизита пользователя
1086: Значение дополнительного реквизита пользователя
1192: Дополнительный реквизит чека
1191: Дополнительный реквизит предмета расчета, Только для ФФД 1.1 !

Изменения в API расширения для браузеров:

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

В данных чека:
var Data = KkmServer.GetDataCheck(...);
.....
// Дополнительный реквизит пользователя тег ОФД 1084
Data.UserAttribute = {
     // Наименование дополнительного реквизита пользователя тег ОД 1085
     Name: "Поле-тест",
     // Значение дополнительного реквизита пользователя тег ОФД 1086
     Value: "Тестовое значение"
};
// Дополнительный реквизит чека тег 1192
Data.AdditionalAttribute = "Тест";
....

// Добавление печати фискальной строки
 var DataStr = Data.AddRegisterString(
         .....
        // Сумма акциза (ExciseAmount) с учетом копеек, включенная в стоимость предмета расчета Тег 1229
        0.01,
        // Дополнительный реквизит предмета расчета тег 1191, Только для ФФД 1.1 !
        "Тест-доп.реквизит"
);

Изменения в API расширения http запросов:

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

В данных чека:
....
// Дополнительный реквизит пользователя тег ОФД 1084
UserAttribute: {
      // Наименование дополнительного реквизита пользователя тег ОД 1085
      Name: "Поле-тест",
      // Значение дополнительного реквизита пользователя тег ОФД 1086
      Value: "Тестовое значение"
},
// Дополнительный реквизит чека тег 1192
AdditionalAttribute: "Тест",
....

В данных фискальной строки (Register):
.....
// Дополнительный реквизит предмета расчета тег 1191, Только для ФФД 1.1 !
 AdditionalAttribute: "Тест-доп.реквизит",
.....
Поддержка тегов по ККТ:
1192:
-Поддерживают: АТОЛ, ШТРИХ-М, СтарРус, RR-Electro, Micro-Pay (microteh), КИТ (Терминал-ФА), Dreamkas (Viki Print), Crystals (Pirit)
-Не поддерживают: -
1191:
-Поддерживают: АТОЛ, ШТРИХ-М, СтарРус, RR-Electro, КИТ (Терминал-ФА), Dreamkas (Viki Print), Crystals (Pirit)
-Не поддерживают: Micro-Pay (microteh)
1084 (1085, 1086):
-Поддерживают: АТОЛ, ШТРИХ-М, СтарРус, RR-Electro, Dreamkas (Viki Print), Crystals (Pirit)
-Не поддерживают: Micro-Pay (microteh), КИТ (Терминал-ФА)


2.1.29.12 от 01.08.2019 новое в версии:

Добавлена поддержка тега 1057 и данных агента и поставщика на весь чек

Изменения в API расширения для браузеров:

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

var Data = KkmServer.GetDataCheck(....)
...
// Добавление признаков агента и поставщика 
Data.AddDataAgent(
        // Признак агента (не обязательно), Тег 1057
        // 0: "Банковский платежный агент:" Оказание услуг пользователем, являющимся банковским платежным агентом
        // 1: "Банковский платежный субагент:" Оказание услуг пользователем, являющимся банковским платежным субагентом
        // 2: "Платежный агент:" Оказание услуг пользователем, являющимся платежным агентом
        // 3: "Платежный субагент:" Оказание услуг пользователем, являющимся платежным субагентом
        // 4: "Поверенный:" Оказание услуг пользователем, являющимся поверенным
        // 5: "Комиссионер:" Оказание услуг пользователем, являющимся комиссионером
        // 6: "Агент:" Оказание услуг пользователем, являющимся агентом и не являющимся банковским платежным агентом (субагентом), платежным агентом (субагентом), поверенным, комиссионером
        2,
        // Операция платежного агента тег 1044
        "95315",
        // Телефон платежного агента тег 1073
        "+79995554422",
        // Телефон оператора по приему платежей  тег 1074
        "+72223334455",
        // Телефон оператора перевода тег 1075
        "+74447776655",
        // Наименование оператора перевода тег 1026
        "ООО Тестовая организация",
        // Адрес оператора перевода тег 1005
        "Москва, зубовский бульвар 44",
        // ИНН оператора перевода тег 1016
        "430601071197",
        // Телефон поставщика тег 1171
        "+76662229955"
);
Изменения в API расширения http запросов:

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

var Data = {
        // Команда серверу
        Command: "RegisterCheck",
        ....
        // Признак агента. Тег ОФД 1057. Поле не обязательное. Можно вообще не указывать.
        // 0: "Банковский платежный агент:" Оказание услуг пользователем, являющимся банковским платежным агентом
        // 1: "Банковский платежный субагент:" Оказание услуг пользователем, являющимся банковским платежным субагентом
        // 2: "Платежный агент:" Оказание услуг пользователем, являющимся платежным агентом
        // 3: "Платежный субагент:" Оказание услуг пользователем, являющимся платежным субагентом
        // 4: "Поверенный:" Оказание услуг пользователем, являющимся поверенным
        // 5: "Комиссионер:" Оказание услуг пользователем, являющимся комиссионером
        // 6: "Агент:" Оказание услуг пользователем, являющимся агентом и не являющимся банковским платежным агентом (субагентом), платежным агентом (субагентом), поверенным, комиссионером
        AgentSign: 2,
        // Данные агента. тег ОД 1223.
        // Поле не обязательное. Обязательно если установлено поле "AgentSign"
        // Можно вообще не указывать.
        AgentData: {
            // Операция платежного агента тег ОФД 1044
            PayingAgentOperation: "95315",
            // Телефон платежного агента тег ОФД 1073
            PayingAgentPhone: "+79995554422",
            // Телефон оператора по приему платежей  тег ОФД 1074
            ReceivePaymentsOperatorPhone: "", //"+72223334455",
            // Телефон оператора перевода тег ОФД 1075
            MoneyTransferOperatorPhone: "+74447776655",
            // Наименование оператора перевода тег ОФД 1026
            MoneyTransferOperatorName: "ООО Тестовая организация",
            // Адрес оператора перевода тег ОФД 1005
            MoneyTransferOperatorAddress: "Москва, зубовский бульвар 44",
            // ИНН оператора перевода тег ОФД 1016
            MoneyTransferOperatorVATIN: "430601071197"
        },
        // Данные поставщика платежного агента.
        // Поле не обязательное. 
        PurveyorData: {
            // Телефон поставщика тег ОД 1171
            PurveyorPhone: "+76662229955"
        },
        .....
}

2.1.29.10 от 23.07.2019 новое в версии:

Сервера и дистрибутивы подписаны валидным сертификатом.


2.1.28.18 от 07.07.2019 новое в версии:

Тарминал FA - на прошивке 1.0.30 поддерживает новые теги:
ClientInfo, ClientINN, GoodCodeData, CountryOfOrigin, CustomsDeclaration, ExciseAmount

В эмулятор эквайринга добавил:
Ширина строк 32 символа
Настройку имитации задержки (типа пока клиент вставит карту, наберет ПИН....) при выполнении команд оплаты


2.1.28.10 от 30.05.2019 новое в версии:

Добавил эмулятор эквайрингового терминала.

Добавлена поддержка новых тегов по 54-ФЗ:
Тег 1227: Наименование организации или фамилия, имя, отчество (при наличии), серия и номер паспорта покупателя(клиента)
Тег 1228: ИНН Организации или покупателя(клиента).

Изменения в API расширения для браузеров:
После вызова: var Data = KkmServer.GetDataCheck(...... можно добавить поля:

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

// Тег 1227: Покупатель (клиент) - наименование организации или фамилия, имя, отчество (при наличии), серия и номер паспорта.
// Только с использованием наличных / электронных денежных средств 
// и при выплате выигрыша, получении страховой премии или при страховой выплате.
Data.ClientInfo = "Везучий В.В. РЕ-125486";
// Тег 1228: ИНН Организации или покупателя(клиента). Тег 1228
// Только с использованием наличных / электронных денежных средств 
// и при выплате выигрыша, получении страховой премии или при страховой выплате.
Data.ClientINN = "502906602876"; 
Изменения в API расширения http запросов:
В JSON структуре чека можно добавить поля:

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

// Тег 1227: Покупатель (клиент) - наименование организации или фамилия, имя, отчество (при наличии), серия и номер паспорта.
// Только с использованием наличных / электронных денежных средств 
// и при выплате выигрыша, получении страховой премии или при страховой выплате.
ClientInfo: "Везучий В.В. РЕ-125486",
// Тег 1228: ИНН Организации или покупателя(клиента). Тег 1228
// Только с использованием наличных / электронных денежных средств 
// и при выплате выигрыша, получении страховой премии или при страховой выплате.
ClientINN: "502906602876", 
Поддерживаемые протоколы ККТ:
  • Atol: ККТ с передачей данных в ОФД (54-ФЗ)
    Штрих-М: ККТ с передачей данных в ОФД (54-ФЗ)
    Micro-Pay (microteh.ru): ККТ с передачей данных в ОФД (54-ФЗ)
Остальные не поддерживаются из за того что у них ПОКА нет в прошивке возможности передать эти теги.

Так-же добавлена поддержка новых тегов в фискальных строках:
Тег 1230: Цифровой код страны происхождения товара в соответствии с Общероссийским классификатором стран мира 3 симв.
Тег 1231: Регистрационный номер таможенной декларации 32 симв.
Тег 1229: Сумма акциза с учетом копеек, включенная в стоимость предмета расчета.

Изменения в API расширения для браузеров:
В функции "AddRegisterString()" добавлены 3 новых НЕОБЯЗАТЕЛЬНЫХ параметра:

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

AddRegisterString(
   Name, Quantity, Price, Amount, Department, Tax, EAN13, EGAIS, SignMethodCalculation, SignCalculationObject, MeasurementUnit,
   GoodCodeData, AgentSign, AgentData, PurveyorData,
   // Тег 1230: Цифровой код страны происхождения товара в соответствии с Общероссийским классификатором стран мира 3 симв. 
   CountryOfOrigin,                        
   // Тег 1231: Регистрационный номер таможенной декларации 32 симв. 
   CustomsDeclaration,                 
   // Тег 1229: Сумма акциза с учетом копеек, включенная в стоимость предмета расчета.
   ExciseAmount                         
);
Изменения в API расширения http запросов:
В JSON структуре "Register" фискальной строки можно добавить поля:

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

// Тег 1230: Цифровой код страны происхождения товара в соответствии с Общероссийским классификатором стран мира 3 симв. 
CountryOfOrigin: "156",                       
// Тег 1231: Регистрационный номер таможенной декларации 32 симв. 
CustomsDeclaration: "54180656/1345865/3435625/23",                  
// Тег 1229: Сумма акциза с учетом копеек, включенная в стоимость предмета расчета.
ExciseAmount: 0.01,                        
Поддерживаемые протоколы ККТ:
  • Atol: ККТ с передачей данных в ОФД (54-ФЗ)
    Micro-Pay (microteh.ru): ККТ с передачей данных в ОФД (54-ФЗ)
Остальные не поддерживаются из за того что у них ПОКА нет в прошивке возможности передать эти теги.

В JSON результата добавлено поле: "Warning"
В этом поле будут выдаваться различные предупреждения.
Например если в команде были указаны некоторые поля а ККТ не поддерживает то в этом поле будет возвращен текст:
"Warning": "Не поддерживается передача поля CountryOfOrigin"


2.1.27.10 от 11.04.2019 новое в версии: Маркировка товаров (Честный знак / КИЗ)

Добавлена поддержка передачи "Кода маркировки товара" (он-же КИЗ "контрольный идентификационный знак", он же "Честный знак")
При передаче фискальной строки можно так-же указать этот КИЗ.
ККТ передаст эту информацию в ОФД как тег 1162.
И по нему ОФД передаст информацию в систему ИСМП https://ismp.crpt.ru,
а та уже дальше по различным системам учета маркированного товара.
Это нужно для автоматического вывода маркированного товара из оборота.

Сейчас поддерживаются следующие товары:
  • Изделия из меха
    Лекарственные препараты
    Табачная продукция
    Обувные товары.
Поддерживаемые протоколы ККТ:
  • Atol: ККТ с передачей данных в ОФД (54-ФЗ)
    Штрих-М: ККТ с передачей данных в ОФД (54-ФЗ)
    RR-Electro: ККТ с передачей данных в ОФД (54-ФЗ)
    Paykiosk.ru: ККТ с передачей данных в ОФД (54-ФЗ)
    СтарРус: ККТ с передачей данных в ОФД (54-ФЗ)
    Micro-Pay (microteh.ru): ККТ с передачей данных в ОФД (54-ФЗ)
    Dreamkas (Viki Print): ККТ с передачей данных в ОФД (54-ФЗ)
    Crystals (Pirit): ККТ с передачей данных в ОФД (54-ФЗ)
    Эмулятор: ККТ с передачей данных в ОФД (54-ФЗ)
НЕ поддерживаемые протоколы ККТ:
  • КИТ (КАСБИ): ККТ с передачей данных в ОФД (54-ФЗ)
    Искра (Прим): ККТ с передачей данных в ОФД (54-ФЗ)
Не поддерживаются из за того что у них ПОКА нет в прошивке возможности передать тег 1162

Изменения в API расширения для браузеров:
После регистрации фискальной строки функцией "AddRegisterString"
нужно вызвать функцию:

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

Data.AddGoodCodeData(
  // Тип товара. Список значений: "02" – изделия из меха, "03 - Лекарственные препараты", "05" - табачная продукция, "1520" - обувные товары
  "05",
  // Глобальный идентификатор торговой единицы (GTIN) - поле 01 в GS1
  "98765432101234",
  // Серийный номер КИЗ - поле 21 в GS1
  "ABC1234"
);
Изменения в API расширения http запросов:
В JSON структуре "Register" фискальной строки нужно добавить поле - структуру:

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

GoodCodeData: {
  // Тип товара. Список значений: "02" – изделия из меха, "03 - Лекарственные препараты", "05" - табачная продукция, "1520" - обувные товары
  StampType: "02",
  // Глобальный идентификатор торговой единицы (GTIN) - поле 01 в GS1
  GTIN: "04630037591316",
  // Серийный номер КИЗ - поле 21 в GS1
  SerialNumber: "sgEdK2y5"
}
Для понимания того что нас ждет в будущем:
https://xn--80ajghhoc2aj1c8b.xn--p1ai/business/


2.1.26.18 от 24.03.2019 новое в версии:

1. Добавлен протокл эквайринговых терминалов ARCUS-2 (Beta), пока только под Windows.
Если кто-нибудь даст дистрибутив Arcus-а под Linux - сделаю и на нем.

2. Добавил в настройки ККТ крыжик "Установка даты и времени ККТ":
Если он установлен то при закрытии смены дата и время будут установлены в ККТ по времени ПК.
Если на ККТ используется время другой временной зоны - выключите эту функцию.
Почему - "При закрытии смены" а не "при открытии смены"?
Потому что на некоторых ККТ (например Атол) смена открывается автоматом и мне не перехватить это событие.
А вот "закрытие смены" есть везде.


2.1.26.10 от 11.03.2019 новое в версии:

1. Для Принтеров чеков сделана эмуляция регистрации чека.
Есть возможность настроить шаблон чека.
Т.е. на принтер чеков теперь можно подавать точно такие-же команды регистрации чеков как и на ККТ.
Сама по себе эта возможность будет не очень полезна и даже после июля незаконна, но см. п.2.

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

Это даст возможность держать в "облаке" один ККТ а бумажные чеки печатать локально на принтерах чеков или на не нужных ККТ без ФН.
При этом такие чеки будут абсолютно законны, т.к. в них содержатся все необходимые фискальные поля. (Закон такое разрешает)

Таким-же образом сработают и остальные команды ККТ: Закрытие/Открытие смены, Внесение/Изъятие ДС, Чеки коррекции.

Для включения маршрутизации сначала включите режим эмуляции чеков.


2.1.25.29 от 06.03.2019 новое в версии:

В команде регистрации чека добавлено поле "PlaceMarket" - место расчетов (тег 1187)
Поле не обязательное, можно не указывать.
Если не указано - то место расчетов берется из данных регистрации ККТ.
Поле применяется например:
- для указания сайта ИМ если ККТ обслуживает сразу несколько ИМ.
- При разъездной торговле

Внимание! Реализовано пока только для ККТ "Атолов" и "MicroPay"
Когда другие производители добавят эту возможность у себя - реализую и у них.


2.1.25.25 от 07.02.2019 новое в версии:

1. В настройки ККТ добавил настройку номера устройства эквайринга (когда эквайринг работает из команды на регистрацию чека)
2. В команду на регистрацию чека добавлено не обязательное поле "NumDeviceByProcessing" через которое можно указать номер устройства для эквайринга.
Null - из настроек на сервере, 0 - любое устройство, число - номер конкретного устройства

2.1.22.19 от 21.09.2018 новое в версии:

1. Добавлен протокол эквайринговых терминалов INPAS (Бета)


2.1.22.17 от 12.09.2018 новое в версии:

1. В обратный вызов по HTTP протоколу добавил заголовки User_Agent, Referer
2. Исправлена ошибка для старых Атолов
3. Исправлена ошибка с полем "UnitName" при получении списка устройств.


2.1.22.14 от 22.08.2018 новое в версии:

В новой версии:

Наконец-то знающие люди подсказали как совместить в одном exe файле терминальное и windows приложение.
Оказалось что это довольно непростая задача.
Именно из за этого мне в свое время пришлось разделить kkmserver на два отдельных продукта: Собственно kkmserver и компонента для расширения.
При этом было очень много ошибок при настройке ПО - когда были запущены сразу и KkmServer и компонента расширения - при этом все конфликтовало между собой.

Теперь я смог в одном приложении совместить сам KKT сервер (работающий по протоколу HTTP/HTTPS) и работу как нативной компоненты для браузеров (работающий по протоколу connectNative).

Соответственно Компонента расширения (но не само расширение - не путать) уходит в небытие.
Ее место занимает KkmServer.

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

В других случаях может потребоваться (если стояли сразу и Kkmserver и компонента расширения но нужны настройки именно из компоненты) в ручную скопировать файл настройки:
C:\Program Files (x86)\KkmServer.ru\AddIn\Settings\SettingsServ.ini
в KkmServer:
C:\Program Files (x86)\KkmServer.ru\KkmServer\Settings

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

Так-же реализована крос-KkmServer-ая работа :)
Подробнее тут: https://kkmserver.ru/WiKi/StartServer


2.1.21.10 от 31.07.2018 новое в версии:

В новой версии:

1. Добавлена возможность печати не-фискальных чеков на ККТ.
В настройках ККТ появилось два поля:
-"Фискальный/Не-фискальный чек" - собственно выбор какой чек печатать - фискальный или нет.
-"Шаблон не фискального чека" - текстовое поле в котом находится описание шаблона чека.

2. Добавлена поддержка ККТ "Искра"
Поддерживаемые модели: ПРИМ 06-Ф, ПРИМ 08-Ф, ПРИМ 88-Ф, ПРИМ 07-Ф - Бета версия!


2.1.20.16 от 16.07.2018 новое в версии:

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

2. Выложен новый драйвер для 1с: драйвер поддерживает ревизию API 2002.
Этот API 1с не опубликовала, но он уже во всю используется в ее конфигурациях.
Позволяет работать с ККТ по ФФД 1.05/1.1
Если конфигурация относительно старая - то я оставил ссылку на предыдущий драйвер. Но он работает с ККТ только по ФФД 1.0
Так-же в драйвер добавлена поддержка 64-битного тонкого клиента.

2.1.15.10 (11.01.2017) Новое в версии

1. В продукты kkmserver/расширение добавлена возможность работы с эквайринговыми терминалами:

Пока только терминалы сбербанка РФ.
Внутренний драйвер свой собственный - встроенный.
Работает через Pilot_nt.dll, который входит в поставку ПО сбера для терминала.
И эта DLL НЕ COM.Object (как SBRFCOM.dll или sbrf.dll) а нативная windows.
Соответственно она не требует регистрации и ее намного проще настроить.

API работы с эквайриногом в kkmserver точно-такой-же как и в unitserver.
В "Расширении" API расширен - в инжектируемый скрипт добавлены функции работы с эквайрингом.


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

Для этого в данные чека можно добавить следующие поля:
КОД: ВЫДЕЛИТЬ ВСЁ
// Эквайринг будет задействован если: 1. чек фискальный, 2. оплата по "ElectronicPayment" не равна 0, 3. PayByProcessing = true
PayByProcessing: true
// Номер чека для эквайринга
ReceiptNumber: "TEST-01",
// Печатать Слип-чек дополнительно для кассира (основной слип-чек уже будет печататся в составе чека)
PrintSlipForCashier: true,
//Если это чек возврата то возможны два поля для отмены транзакции (если не указано то по эквайрингу будет не отмена а возврат оплаты)
RRNCode: "", // RRNCode из операции эквайринга. Только для отмены оплаты! Для Оплаты или возврата оплаты не заполнять!
AuthorizationCode: "", // AuthorizationCode из операции эквайринга. Только для отмены оплаты! Для Оплаты или возврата оплаты не заполнять!

Алгоритм работы такой:
1. Если регистрируемый чек фискальный, в нем есть оплата "ElectronicPayment" и взведен флаг "PayByProcessing" то:
2. Создается и выполняется команда на проведение оплаты через эквайринг. Сумма оплаты = "ElectronicPayment".
2.1 Если транзакция не прошла возвращается ошибка
3. Если транзакция прошла то в данные чека внедряется текст слип-чека (он будет напечатан сразу после шапки чека)
4. Производится регистрация чека.
5. Если регистрация чека успешна то:
5.1 Если нужно печатается дополнительный Слип-чек для кассира (если указан флаг "PrintSlipForCashier")
5.2 В результат выполнения команды регистрации чека дополнительно вставляется структура "RezultProcessing" с данными по проведению транзакции оплаты
6 Если чек не удалось зарегистрировать то:
6.1 Создается команда на аварийную отмену транзакции (Для этого на некоторых терминалах потребуется повторная авторизация платежной карты, на некоторых не потребуется)
6.2 Система возвращает результат транзакции


2.1.18.30 от 28.05.2018 новое в версии:

Только-что выложил версию 2.1.18.30 от 28.05.2018

В этой версии я откатился у VikiPrint к прошивке 660-664 т.к. 670 прошивку отозвали.
Если будите ставить эту версию - откатите у себя до 664.
По ощущениям 664 работает стабильнее чем 670.


2.1.15.10 (11.01.2017) Новое в версии


1. В продукты kkmserver/расширение добавлена возможность работы с эквайринговыми терминалами:

Пока только терминалы сбербанка РФ.
Внутренний драйвер свой собственный - встроенный.
Работает через Pilot_nt.dll, который входит в поставку ПО сбера для терминала.
И эта DLL НЕ COM.Object (как SBRFCOM.dll или sbrf.dll) а нативная windows.
Соответственно она не требует регистрации и ее намного проще настроить.

API работы с эквайриногом в kkmserver точно-такой-же как и в unitserver.
В "Расширении" API расширен - в инжектируемый скрипт добавлены функции работы с эквайрингом.


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

Для этого в данные чека можно добавить следующие поля:
КОД: ВЫДЕЛИТЬ ВСЁ
// Эквайринг будет задействован если: 1. чек фискальный, 2. оплата по "ElectronicPayment" не равна 0, 3. PayByProcessing = true
PayByProcessing: true
// Номер чека для эквайринга
ReceiptNumber: "TEST-01",
// Печатать Слип-чек дополнительно для кассира (основной слип-чек уже будет печататся в составе чека)
PrintSlipForCashier: true,
//Если это чек возврата то возможны два поля для отмены транзакции (если не указано то по эквайрингу будет не отмена а возврат оплаты)
RRNCode: "", // RRNCode из операции эквайринга. Только для отмены оплаты! Для Оплаты или возврата оплаты не заполнять!
AuthorizationCode: "", // AuthorizationCode из операции эквайринга. Только для отмены оплаты! Для Оплаты или возврата оплаты не заполнять!

Алгоритм работы такой:
1. Если регистрируемый чек фискальный, в нем есть оплата "ElectronicPayment" и взведен флаг "PayByProcessing" то:
2. Создается и выполняется команда на проведение оплаты через эквайринг. Сумма оплаты = "ElectronicPayment".
2.1 Если транзакция не прошла возвращается ошибка
3. Если транзакция прошла то в данные чека внедряется текст слип-чека (он будет напечатан сразу после шапки чека)
4. Производится регистрация чека.
5. Если регистрация чека успешна то:
5.1 Если нужно печатается дополнительный Слип-чек для кассира (если указан флаг "PrintSlipForCashier")
5.2 В результат выполнения команды регистрации чека дополнительно вставляется структура "RezultProcessing" с данными по проведению транзакции оплаты
6 Если чек не удалось зарегистрировать то:
6.1 Создается команда на аварийную отмену транзакции (Для этого на некоторых терминалах потребуется повторная авторизация платежной карты, на некоторых не потребуется)
6.2 Система возвращает результат транзакции

Ответить