2.2.10.10 от 11.10.2021 новое в версии: ФФД 1.2

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

2.2.10.10 от 11.10.2021 новое в версии: ФФД 1.2

Сообщение Audim » 11 окт 2021, 23:29

2.2.10.10 от 11.10.2021 новое в версии: ФФД 1.2

Добавлена поддержка ФФД 1.2 для некоторых ККТ
Протокол АТОЛ (Платформа 5) (ФФД 1.2):
Протокол ШТРИХ-М (ФФД 1.2):
Протокол RR-Electro (ФФД 1.2):
Протокол РИТЕЙЛ (ФФД 1.2):
Протокол Paykiosk.ru (ФФД 1.2):
Протокол Dreamkas (Viki Print) (ФФД 1.2):
На подходе Протокол КИТ (КАСБИ).


Изменения в API маркировки:

Код маркировки для ФФД 1.2 нужно передавать в точности такой какой он пришел со сканера!
Пример: BarCode: "0104300943734342212413195240818240640291ffd092MDEwNDMwMDk0MzczNDM",
При этом сканер не должен "Съедать" управляющие символы.
Вы можете протестировать свой сканер здесь: https://xn--80ajghhoc2aj1c8b.xn--p1ai/barcode/

В JSON структуре "Register" фискальной строки изменено поле - структура:
Добавлено Поле "AcceptOnBad" для ККТ работающих по ФФД 1.2:

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

GoodCodeData: {
        // штрих-код маркировки товара со сканера
        BarCode: "0104300943734342212413195240818240640291ffd092MDEwNDMwMDk0MzczNDM",
        // Проверять содержит ли ШК кода маркировки идентификатор экземпляра товара (если вообще не указать - true)
        // Для некоторых товаров нужно передавать ШК EAN-13, тогда это поле устанавливайте в 'false'
        ContainsSerialNumber: true
	// Все равно регистрировать чек даже если код маркировки не прошел проверку
        // Только для работы по ФФД 1.2
        AcceptOnBad: true
}
Смысл: если какой-то код маркировки не прошел проверку в ККТ то чек все равно можно напечатать.
В строке в чеке будет знак [-M] - который это и означает.
ОФД не будет такой код маркировки выводить из оборота.

Добавлена новая команда "ValidationMarkingCode" для ККТ работающих по ФФД 1.2
Данной командой можно проверить коды маркировки в ККТ

При этом некоторые коды (которые в себе содержат крипто-подпись)(например обувные) будут проверены ККТ офлайн.
А все другие коды будут проверятся ККТ через ОФД.
Что соответственно будет занимать некоторое время.

Пример команды:

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

	{
        // Команда серверу
        Command: "ValidationMarkingCode",
        
       //***********************************************************************************************************
        // ПОЛЯ ПОИСКА УСТРОЙСТВА
        //***********************************************************************************************************
        // Номер устройства. Если 0 то первое не блокированное на сервере
        // Не рекомендовано для использования. 
        // Рекомендуем для поиска ККТ задавать InnKkm и TaxVariant !!!!!!
        NumDevice: NumDevice,
        // ИНН ККМ для поиска. Если "" то ККМ ищется только по NumDevice,
        // Если NumDevice = 0 а InnKkm заполнено то ККМ ищется только по InnKkm
        InnKkm: "",
        // Система налогообложения (СНО) для поиска ККТ, Можно не указывать, или = "" - любое СНО
        TaxVariant: "",
        // Заводской номер ККМ для поиска. Если "" то ККМ ищется только по NumDevice,
        KktNumber: "",
        // **********************************************************************************************************

        // Список кодов маркировки
        "GoodCodeDatas": [
            {
                // Наименование товара - справочно, можно не передавать
                "Name": "Тестовый товар 1",
                // штрих-код маркировки товара со сканера (нужно настроить сканер так чтобы не проглатывал управляющие символы)
                // Поддерживаются ШК: 
                // Без идентификатора экземпляра товара: EAN8, EAN13, ITF14
                // С идентификатором экземпляра товара: GS1, ШК шуб, ШК табачной продукции., ЕГАИС-2, ЕГАИС-3
                "Barcode": "010460708021818721&dAIMqnpEQnQ!\u001d910058\u001d921gx+7D2jIWGSo6LLr1FMGiETo7Ez6k4ag9D8FZwEmJqIWtivlAGjqEP8OspoVeIKiP4OkzmSCzRXmEUygvkKQw=="
            },
            {
                // Наименование товара - справочно, можно не передавать
                "Name": "Тестовый товар 2",
                // штрих-код маркировки товара со сканера (нужно настроить сканер так чтобы не проглатывал управляющие символы)
                // Поддерживаются ШК: 
                // Без идентификатора экземпляра товара: EAN8, EAN13, ITF14
                // С идентификатором экземпляра товара: GS1, ШК шуб, ШК табачной продукции., ЕГАИС-2, ЕГАИС-3
                "Barcode": "01046100301415342100000!&\u001d8005106000\u001d93yikZ"
            },
        ],

        // Уникальный идентификатор команды. Любая строка из 40 символов - должна быть уникальна для каждой подаваемой команды
        // По этому идентификатору можно запросить результат выполнения команды
        IdCommand: "g34344gs4ws",
    }
Вернется вот такой ответ:

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

	{
        "MarkingCodeValidation": [
            {
                "Name": "Тестовый товар 1",
                "BarCode": "010460708021818721&dAIMqnpEQnQ!\u001d910058\u001d921gx+7D2jIWGSo6LLr1FMGiETo7Ez6k4ag9D8FZwEmJqIWtivlAGjqEP8OspoVeIKiP4OkzmSCzRXmEUygvkKQw==",
                // Результат проверки КМ в ФН (тег 2106)
                "ValidationResult": 16,
                "DecryptionResult": "[М] Проверка КП КМ не выполнена, статус товара ОИСМ не проверен (ККТ функционирует в автономном режиме); ФН не содержит ключ проверки кода проверки этого КМ"
            },
            {
                "Name": "Тестовый товар 2",
                "BarCode": "01046100301415342100000!&\u001d8005106000\u001d93yikZ",
                // Результат проверки КМ в ФН (тег 2106)
                "ValidationResult": 16,
                "DecryptionResult": "[М] Проверка КП КМ не выполнена, статус товара ОИСМ не проверен (ККТ функционирует в автономном режиме); КМ данного типа не подлежит проверке в ФН"
            }
        ],
        "Command": "ValidationMarkingCode",
        "Error": "",
        "Warning": "",
        "Message": "",
        "Status": 0,
        "IdCommand": "",
        "NumDevice": 7
    }
Состояния битов в значении реквизита "ValidationResult" (тег 2106)

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

0 бит:	"0" - код маркировки не был проверен ФН и (или) ОИСМ
	"1" - код маркировки проверен
1 бит:	"0" - результат проверки КП КМ отрицательный или код маркировки не был проверен
	"1" - результат проверки КП КМ положительный
2 бит:	"0" - сведения о статусе товара от ОИСМ не получены
	"1" - проверка статуса ОИСМ выполнена
3 бит:	"0" - от ОИСМ получены сведения, что планируемый статус товара некорректен или сведения о статусе товара от ОИСМ не получены
	"1" - от ОИСМ получены сведения, что планируемый статус товара корректен
4 бит:	"0" - результат проверки КП КМ и статуса товара сформирован ККТ, работающей в режиме передачи данных
	"1" - результат проверки КП КМ сформирован ККТ, работающей в автономном режиме
5 бит: - 7	Заполняются нулями

Логика работы такая (по мнению авторов ФЗ-54):

1. Перед регистрацией чека Вы должны подать команду "ValidationMarkingCode" в которой передать все коды маркировки которые есть в чеке.
2. kkmserver через ККТ проверяет эти коды и возвращает Вам результат проверки.
3. Если есть коды маркировки которые не прошли проверку Вы должны спросить у покупателя согласен ли он на это.
4. Если Да то Вы передаете эти коды маркировки в чек с пометкой в поле "AcceptOnBad: true".
Тогда чек напечатается.

ЗЫ: Коды маркировки в команде регистрации чека не проверяются если они ранее проверены командой "ValidationMarkingCode"
После регистрации чека все проверенные коды маркировки сбрасываются из памяти ККТ

Но вот мне кажется вы не будете работать по такой схеме. Поэтому:

Поэтому можно без команды "ValidationMarkingCode" передать все коды маркировки сразу в чек.
И в зависимости от "AcceptOnBad" коды маркировки не прошедшие проверку применятся или не применятся.
И соответственно весь чек или будет зарегистрирован или не будет.

Вообще это нарушение закона (без вопроса покупателю) - на Ваше усмотрение.


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

Добавлено поле ИНН для поиска.
Если "" или не указано то ищется только по NumDevice,
[/code]InnKkm: "1234567890"[/code]

В настройках терминала можно ввести этот ИНН.
Но если в настройках терминала указана ККТ где будут печататься слип-чеки то ИНН терминала возьмётся оттуда (если он явно не указан в "InnKkm"


Изменился механизм привязки лицензии:

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

При установке новой версии вместо старой, на которой была получена лицензия по email-у и пароля - произойдет привязка таких лицензий к ИНН и далее лицензия будет получатся автоматом даже после переустановки kkmsrver.

Для клиентов у которых сублицензирование:
Вы с лицензиями продолжаете работать через email.
Но клиентские ПК будут привязываться не через серийник а через ИНН ККТ.

Все это сделано для того чтобы уйти вообще от получения лицензии в kkmserver.

Для Эвоторов лицензия вообще не нужна будет.

avk1973
Сообщения: 49
Зарегистрирован: 07 мар 2019, 15:52

Re: 2.2.10.10 от 11.10.2021 новое в версии: ФФД 1.2

Сообщение avk1973 » 15 окт 2021, 14:04

Можно ещё раз уточнить для лицензии, для самых непонятливых? На конкретных примерах.
У нас разные ккмсервера в разных филиалах и все как я понимаю привязаны на 1 емейл.

Соотв. вопросы
1) Не получится ли , что после обновления первого из ккмсерверов, все остальные привяжутся к тому же инн? Учтён ли такой случай в перелицензировании?

2) У меня есть тестовый ккмсервер, на который вообще все кассы привязаны, для проверок и отладки изменений. Очень удобно.
Сейчас я уже не смогу на одном сервере держать несколько организаций? Мне надо будет для тестового закупать лицензию на каждую ИНН отдельно? Или вообще держать несколько ккмсерверов на одном компе ?

3) Получается, сейчас у меня перекрестная регистрация (на один сервер привязано несколько ккм и наоборот, на одну кассу привязано несколько серверов). Может ли на одну кассу (один ИНН) быть привязано несколько ккм-серверов? Или надо срочно развязываться?

4) Теперь, если касса в одном филиале сломалась, на вторую в том же городе уже никак не подключишься, даже временно? Да, так нехорошо, но, например, в нашем медвежьем углу попытка ремонта сломавшейся кассы заняла у сервиса неделю, потом ещё две недели ждали замену.

5) Как быть если на ккмсервер вообще касс не привязано? В скором времени у нас возникнет такая ситуация на новом складе. Там нужны термопринтеры и сканеры, касс по моему вообще не нужно будет.

Audim
Администратор
Сообщения: 2395
Зарегистрирован: 17 мар 2015, 18:36

Re: 2.2.10.10 от 11.10.2021 новое в версии: ФФД 1.2

Сообщение Audim » 15 окт 2021, 22:22

1. Если ИНН одинаковый - привяжутся к 1-ной лицензии.
Но добавить ККТ с другим ИНН уже не получится.

2. Так если ИНН совпадают с реальными у вас подтянется реальная лицензия автоматом.
Да и если что - напишите - тестовую дам.

3. >Может ли на одну кассу (один ИНН) быть привязано несколько ккм-серверов?
Да, можно. И потребуется 1 лицензия.

4) Теперь, если касса в одном филиале сломалась, на вторую в том же городе уже никак не подключишься, даже временно?
Да почему? ИНН то у них все равно будет одинаковый! Все будет работать.

5. Все будет работать.
термопринтеры и сканеры без лицензии вообще будут работать.

avk1973
Сообщения: 49
Зарегистрирован: 07 мар 2019, 15:52

Re: 2.2.10.10 от 11.10.2021 новое в версии: ФФД 1.2

Сообщение avk1973 » 16 окт 2021, 06:10

Audim писал(а):
15 окт 2021, 22:22
1. Если ИНН одинаковый - привяжутся к 1-ной лицензии.
Но добавить ККТ с другим ИНН уже не получится.
Да вот в том-то и проблема, что лицензия с другого места работы , скорее всего тоже на мою почту привязана (держу специальную, насмерть заспамленную для всяких регистраций). И даже не берусь сказать, как часто прошлые работодатели обновляются, может уже обновились (а может на что другое перешли или закрылись). ИНН там разумеется другой.


У нас кстати тоже разные инн у торговли , медуслуг и сервиски (это разные направления деятельности). К счастью они только на тестовом пересекаются. Что будет если его обновить первым (как я обычно делал) все бы подцепились или только одна ?

p.s. То, что лучше обновлять с "индивидуальных" серверов , я уже понял, вопрос скорее для других, врядли описанная ситуация уникальна, особенно в маленьких городках, где вообще ещё можно встретить по зоопарк юрлиц в одном магазинчике (летом на рыбалку ездил- сигареты, двухтактное масло для ПЛМ и воду продавали по трём разным кассам, на одной заправке ;) ).

Audim
Администратор
Сообщения: 2395
Зарегистрирован: 17 мар 2015, 18:36

Re: 2.2.10.10 от 11.10.2021 новое в версии: ФФД 1.2

Сообщение Audim » 16 окт 2021, 18:12

Те что уже подключены - будут работать.

starbase
Сообщения: 9
Зарегистрирован: 13 окт 2017, 13:25

Re: 2.2.10.10 от 11.10.2021 новое в версии: ФФД 1.2

Сообщение starbase » 19 ноя 2021, 14:40

Уточните по лицензиям, почему на старых версиях 2.1 отваливается на разных кассах бессрочная лицензия, нужно нажимать снова <получить лицензию>.

Audim
Администратор
Сообщения: 2395
Зарегистрирован: 17 мар 2015, 18:36

Re: 2.2.10.10 от 11.10.2021 новое в версии: ФФД 1.2

Сообщение Audim » 20 ноя 2021, 19:25

В Windows иногда при установке патчей меняется серийный номер.
Из за этого и лучше перейти на новую версию 2.2.х.х

avk1973
Сообщения: 49
Зарегистрирован: 07 мар 2019, 15:52

Re: 2.2.10.10 от 11.10.2021 новое в версии: ФФД 1.2

Сообщение avk1973 » 21 янв 2022, 15:07

Audim писал(а):
16 окт 2021, 18:12
Те что уже подключены - будут работать.
Добрый день. Насколько я понял из практического опыта обновления - всё не так просто.

Сегодня обновлял второй сервер из четырёх, "зачлось" лишь две из трёх работавших на нём организаций, одну пришлось отключать до выяснения.

Техподдержка ответила, что число лицензий должно соответствовать числу касс , и поскольку у меня было 3 лицензии на "старые" ККМ сервера, а на них работало 4 организации -- мне потребовалось докупить одну лицензию. Докупил, но лучше бы это было сделать заранее, не останавливая работу, благо цена на софт абсолютно умеренная (я бы сказал даже почти даром учитывая функционал).

Думаю это надо как-то отразить в описании яснее, чтобы перед обновлением недостающее количество лицензий докупалось заранее.

Ещё желательно бы уточнить по какому принципу выбираются организации для "зачёта" в счёт новых лицензий (если их больше чем лицензий на "старый" ккм сервер), чтобы понимать какие именно из "лишних" ИНН нужно докупить. Чтобы это можно было сделать до перехода, а не после.
---------------------------------------------------------

Если это возможно, я бы предложил следующее- "старые" лицензии (на ккмсервер) зачитываются в счёт новых (на организации), начиная с наибольшего или наименьшего ИНН. ИМХО это будет самый простой способ перевода.

duzorg
Сообщения: 41
Зарегистрирован: 18 сен 2017, 12:02

Re: 2.2.10.10 от 11.10.2021 новое в версии: ФФД 1.2

Сообщение duzorg » 02 апр 2022, 07:43

Здравствуйте. Столкнулись тут с тем, что с кассы на ФФД 1,05 не приходят чеки в честный знак.
Чек 228429287440300695969 обработан с ошибкой из-за передачи полного кода маркировки.
При расшифровке, значение поля productCode RE0EMK1SqrU1V3dZcXcdOTNQVWND преобразуется в полный код маркировки, включающий код проверки.
При использовании версии ККТ 1.05, необходимо передавать только код идентификации (без кода проверки). По данной причине, чек не обработан в ГИСМТ.
Подскажите, срезание КМ возможно на ККМ сервере, если касса на 1,05 работает?

Audim
Администратор
Сообщения: 2395
Зарегистрирован: 17 мар 2015, 18:36

Re: 2.2.10.10 от 11.10.2021 новое в версии: ФФД 1.2

Сообщение Audim » 02 апр 2022, 14:54

Пришлите на kkmserver@gmail.com лог команды.

Ответить