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

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

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

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

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 Система возвращает результат транзакции

Ответить