Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Модератор: Дед Пахом

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8707
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 39 раз
Поблагодарили: 144 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

Привет всем !

Класс для разрешительной проверки КМ (кодов маркировки) через API ТС ПИоТ ЕСМ от АО «ЕСП».
Поддержка работы с API ЦРПТ: ПО Локальный модуль и Национальный каталог.
Полный боевой комплект с описанием интерфейса API и примерами.

Реализованный в классе функционал соответствует ПФС версии 1.18 от 26.06.2026 г. (27 сценариев),
для получения сертификата совместимости и допуска к работе в промышленной среде ТС ПИоТ ЦРПТ. 😎

Благодарность за помощь на старте проекта: FinsoftRZ и Alex412.
Любые замечания, исправления и дополнения - приветствуются !

Список изменений в версии от 27.06.2026 г.
----------------------------------------------------------------------------------------------------
- Внесены изменения в соответствии с требованиями ПФС 1.17 и 1.18;
- Устранены проблемы по запросам и внесены изменения в примеры.
----------------------------------------------------------------------------------------------------
Рекомендуем использовать актуальные версии классов LibCURL, cJSON и PrintF.

esp.png
esp.png (13.96 КБ) 147454 просмотра
Вложения
Honest.rar
Пароль: DEFORMAT('РЕГИСТРАЦИЯ АДМИНА ВРЕМЯ В ФОРУМЕ МСК')
(57.55 КБ) 48 скачиваний
Последний раз редактировалось Игорь Столяров 28 Июнь 2026, 18:27, всего редактировалось 134 раза.
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8707
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 39 раз
Поблагодарили: 144 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

Как бы - хорошо: BackEnd, FrontEnd и связка их через запросы REST API.
Вопрос только в том, сколько локальных BackEnd сервисов можно поставить на компьютер, до того как он сдохнет ? :D
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8707
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 39 раз
Поблагодарили: 144 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

Проекту требуются иконки (формат ICO размер 16, 24 и 32) хорошего качества для ЕСМ и Национального каталога.
Если кого-нибудь есть - буду благодарен. 😎
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8707
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 39 раз
Поблагодарили: 144 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

Всем привет !

Стала появляться инсайдерская информация об очередном переносе сроков отключения токенов X-API-KEY на 30.09.2026 г.
https://rr-electro.ru/news/perenos-srok ... o-prichiny
https://vk.com/wall-83092817_435?ysclid ... n3p2174585

Москвичи, что половчее (скажем так) все уже на курортах, не до пиотов им ! :D
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
SergioRaguzini
Ветеран
Сообщения: 312
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 43 раза
Поблагодарили: 1 раз

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение SergioRaguzini »

Привет, Всем!
Игорь Столяров писал(а): 20 Июнь 2026, 18:30 про теги идентификации ПМСР "token" и "lastkey" - то было разъяснение, что напишите "что-нибудь".
Лучше в формате GUID. А вот название и версию ПМСР рекомендовано указывать как при прохождении допуска в промышленную
среду ЦРПТ - они будут зафиксированы в Вашем ЛК интегратора.
Игорь, поясните пожалуйста - применимо ли заполнение идентификационных параметров "чем-нибудь", для случая, когда ПМСР уже прошел сертификацию и в ЛК его "Реестра партнеров..." появился "Ключ регистрации ПО" (ТС ПИоТ)?

Ведь, в файле класса Honest.inc, в описании PIoT:G_Client_Info Group,Type для lastkey в комментарии указано, что это "! Идентификатор версии библиотеки", а для token, соответственно, указано в комментарии "! Контрольная сумма/ЭЦП исполняемого файла ПМСР..."
Если lastkey можно заполнить сгенерированным "с потолка" значением GUID, то, для token вроде как необходимо вычислить контрольную сумму, которая, при малейшем изменении алгоритма APP соответственно поменяется и в exe-файле.
Ведь, если, для вычисления контрольной суммы использовать метод с объявлением бин файла с одним полем string(1) и далее

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

filename = 'my_app.exe'
open(file,40h) !
result = records(file)
То в result в указанном выше примере вернется целое значение, никак не GUID, как поступать в данном случае? Обратил внимание, что в классе появилась переменная PIoT:PmsrSha12 для целей "...что бы постоянно не расчитывать", это как?

Чем Вы заполняете user_name и tz (например, для Московского часового пояса)? Можно ли пропустить заполнение каких-то идентификационных данных при использовании ПМСР с локальным ТС ПИоТ?
Если не затруднит, поделитесь пож-ста примером (разумеется, с "фонарным" ключем) идентификации для работы сертифицированного ПМСР и локального ТС ПИоТ
Спасибо

p.s. для сертиикации пользователь заявлял "общепит" для 4-х тов.групп, но проверяли по всем 26 сценариям...
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8707
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 39 раз
Поблагодарили: 144 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

Добрый день !

Постараюсь ответить на Ваш запрос по пунктам.

1. Основное. Категорически не правильно получать информацию из описания класса.
Наш основной документ - это "Методические рекомендации ЦРПТ" за подписью г-на Алхазова.
Версия 16 доступна на сайте ЦРПТ и я неоднократно публиковал ссылки.
Смотрите пожалуйста - половина Ваших вопросов сразу отпадает.

2. Вопрос в том с каким ТС ПИоТ Вы работаете.
Если со стендом - можете посылать что угодно. Если с локальным ЕСМ - то без реальных данных он не будет работать.

3. Ни в коем случае, не навязываю какие-либо методики, просто для примера:

Расчёт SHA1 для произвольного файла (возвращает в формате GUID) не меняя есстественно сам файл:

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

GetFileSHA1          PROCEDURE  (String sFileName),String
Loc:CodInfo          &STRING
Loc:GUID             STRING(36)
  Code
  Loc:CodInfo &= json::LoadFile(sFileName)  ! Загрузить файл в строку

  If Not (Loc:CodInfo &= Null)
     Loc:GUID = GetStrSHA1(Loc:CodInfo)
     Dispose(Loc:CodInfo)
  end  
  Return Loc:GUID  
где, собственно, сам расчёт SHA1 реализован как:

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

GetStrSHA1           PROCEDURE  (*String ssInput),String
SHA1Context          Like(SHA1_Context_type)
Loc:SHA1             STRING(20)
Loc:SHAS             STRING(40)
Loc:Count            BYTE        
  Code
  sha1_starts(SHA1Context)
  sha1_update(SHA1Context, ssInput, Len(ssInput))
  sha1_finish(SHA1Context, Loc:SHA1)  

  Loop Loc:Count = 1 to 20
    Loc:SHAS = Clip(Loc:SHAS) & BYTETOHEX(Val(Loc:SHA1[(Loc:Count)]),1)
  end
                       ! Возвращаем GUID 36
  Return Upper(Loc:SHAS[01:08] & '-' & Loc:SHAS[09:12] & '-' & Loc:SHAS[13:16] & '-' & Loc:SHAS[17:20] & '-' & Loc:SHAS[21:32])
P/S 1: LIB c функциями SHA_* - в форуме публиковал Игорь Губин, за что ему отдельное спасибо ! :D
P/S 2: Я знаю, что такую реализацию можно сделать проще через ANY - но здесь показан обрезанный вариант.
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8707
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 39 раз
Поблагодарили: 144 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

SergioRaguzini писал(а): 01 Июль 2026, 20:12 переменная PIoT:PmsrSha12 для целей "...что бы постоянно не расчитывать", это как?
И теперь, с учётом предыдущего поста, где-нибудь при запуске ПМСР один раз выполняем:

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

  PIoT:PmsrSha12 = GetFileSHA1(Command('0'))
И далее, уже используем хеш ПМСР из PIoT:PmsrSha12 во всех запросах ТС ПИоТ ... :D
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
SergioRaguzini
Ветеран
Сообщения: 312
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 43 раза
Поблагодарили: 1 раз

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение SergioRaguzini »

Привет Всем!
Игорь, спасибо, по приведенному Вами примеру получил hash ввиде GUID с использованием Sha1.lib из примера Игоря Губина, за что ему отдельная благодарность.
Игорь Столяров писал(а): 01 Июль 2026, 20:50 Наш основной документ - это "Методические рекомендации ЦРПТ" за подписью г-на Алхазова.
Версия 16 доступна на сайте ЦРПТ и я неоднократно публиковал ссылки.
Искал в интернете вышеупомянутые "Методические рекомендации", много чего скачал, просмотрел и данную тему начиная с 1 января, но вот такой документ найти, к сожадению, не получилось... :facepalm:
Поделитесь пож-ста ссылкой
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8707
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 39 раз
Поблагодарили: 144 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

SergioRaguzini писал(а): 02 Июль 2026, 11:41 Поделитесь пож-ста ссылкой
Да пожалуйста ... :D

1. Идём вот сюда: https://xn--80ajghhoc2aj1c8b.xn--p1ai/local-module/

2. И забираем вот здесь:
1.jpg

3. Документацию по интеграции с ЕСМ забираем в Вашем Личном кабинете АО "ЕСП":
2.jpg
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 6053
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 25 раз
Поблагодарили: 90 раз

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение finsoftrz »

Игорь Столяров писал(а): 02 Июль 2026, 9:23
SergioRaguzini писал(а): 01 Июль 2026, 20:12 переменная PIoT:PmsrSha12 для целей "...что бы постоянно не расчитывать", это как?
И теперь, с учётом предыдущего поста, где-нибудь при запуске ПМСР один раз выполняем:

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

  PIoT:PmsrSha12 = GetFileSHA1(Command('0'))
И далее, уже используем хеш ПМСР из PIoT:PmsrSha12 во всех запросах ТС ПИоТ ... :D
А Вы уверены, что так надо делать?
Разъяснений по поводу использования данного значения нет никаких. Если пересчитывать контрольную сумму при каждом изменении в программе (а таких изменений может быть по нескольку в месяц), в ЧЗ будут фиксироваться разные значения, в то время как там зарегистрирована одна только версия программы. Я пока оставил фиксированное значение (его можно посмотреть в проводнике).
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8707
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 39 раз
Поблагодарили: 144 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

finsoftrz писал(а): 03 Июль 2026, 7:12 Разъяснений по поводу использования данного значения нет никаких.
Разъяснения были.
Сказали передавайте пока, что хотите, но лучше привыкайте сразу к формату GUID.
Сейчас параметр TOKEN информационный и никак не связан с регистрацией ПМСР.

Описание постоянно меняется.
Насколько мне известно - текущие требования вот такие:

1.jpg

Большой брат хочет знать всё о том, что связано с запуском программы ... :D
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8707
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 39 раз
Поблагодарили: 144 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

finsoftrz писал(а): 03 Июль 2026, 7:12 в ЧЗ будут фиксироваться разные значения
Возможно (!!!) идея такова, что если какая-то версия ПМСР начинает постоянно создавать проблемы,
то можно будет сразу блокировать запросы от других аналогичных версий ПМСР (с таким же хешем).
В тоже время иные (более ранние или уже исправленные) версии этой же ПМСР продолжают работу.
Последний раз редактировалось Игорь Столяров 03 Июль 2026, 9:06, всего редактировалось 1 раз.
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 6053
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 25 раз
Поблагодарили: 90 раз

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение finsoftrz »

Игорь Столяров писал(а): 03 Июль 2026, 8:48 Разъяснения были.
Сказали передавайте пока, что хотите, но лучше привыкайте сразу к формату GUID.
Это Вы называете разъяснением? :dizzy:
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 6053
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 25 раз
Поблагодарили: 90 раз

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение finsoftrz »

Игорь Столяров писал(а): 03 Июль 2026, 9:01
finsoftrz писал(а): 03 Июль 2026, 7:12 в ЧЗ будут фиксироваться разные значения
Возможно (!!!) идея такова, что если какая-то версия ПМСР начинает постоянно создавать проблемы,
то можно будет сразу блокировать запросы от других аналогичных версий ПМСР (с таким же хешем).
В тоже время другие (более ранние или уже исправленные) версии этой же ПМСР продолжают работу.
Я тоже так думаю.
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8707
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 39 раз
Поблагодарили: 144 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

finsoftrz писал(а): 03 Июль 2026, 9:06 Это Вы называете разъяснением?
Да. Визуально помню - что я это именно читал, но не помню где.
Нужно искать. И много такого рода информации есть в ответах на вебинарах,
как ЦРПТ, так и АО "ЕСП". Пока исходим из описания (см. предыдущий пост)
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8707
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 39 раз
Поблагодарили: 144 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

finsoftrz писал(а): 03 Июль 2026, 9:07 Я тоже так думаю.
Вот и мы, логическим путём, пришли к тому, что каждая сборка ПМСР должна иметь уникальный хеш ! :D
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Ответить