Форум OlegON > Программы и оборудование для автоматизации торговли > Маркировка

Универсальный скрипт для получения токена ККТ : Маркировка

12.12.2024 21:31


13.09.2024 13:06
Ладно извините, я не программист
13.09.2024 13:16
Я тоже не программист, объясните пожалуйста, где взять

"отпечаток действующего сертификата" ?
13.09.2024 13:46
Тут:



Пробелы только уберите
13.09.2024 16:21
Цитата:
victuan ЧЗ планирует отключение метода для авторизации, он работать не будет.
На этот случай - сделал скрипт для получения токена по схеме "Единая аутентификация" (как и хотят ввести, если не передумают).

Принцип работы - как и в первом сообщении темы - распаковываем архив, запускаем unifiedauth.bat с параметрами (через пробелы.
первый параметр обязательный - отпечаток действующего сертификата
Код:
unifiedauth.bat re23c...23df
второй параметр необязательный - если передать 0 , то скрипт будет работать с тестовым контуром
Код:
unifiedauth.bat re23c...23df 0
если не передавать ничего или любое значение отличное от нуля - скрипт будет работать с продуктивным контуром

третий параметр необходим в том случае, если используется сертификат по МЧД, в этом случае необходимо в него передать ИНН организации, выдавшей МЧД на этот сертификат (данное лицо должно быть зарегистрировано в ЛК ЧЗ, т.е. иметь доступ со своим сертификатом в ЛК ЧЗ).
При указании третьего параметра - обязательно указать второй (0 - тестовый контур, 1 - продуктивный), т.е. например так:
Код:
unifiedauth.bat re23c...23df 1 5046075648
Если всё нормально, то после запуска - рядом со скриптом появится файл лога unifiedauth.log и json-файл с токеном инн_token_prod.json (либо инн_token_test.json если тестовый контур)

Если нужно размножить файл с токеном по разным путям (или переименовать) - заполняете файл copypatches_token.txt (образец с примером в архиве).

Если Винда 64-разрядная, то в архив положил папку с curl_x64, и тогда из неё нужно взять файлы и положить рядом с файлом скрипта.

Работа скрипта проверена мной на директорской подписи и на подписи ФЛ с МЧД - проблем не обнаружено
;)

PS. Токен, полученный этим скриптом, - естественно не будет сейчас работать для разрешительного режима с ККТ (для этого - используйте первый скрипт из первого сообщения).
А когда запретят использовать статический токен - то должен работать токен, полученный вот этим скриптом! (а первым - перестанет)


Вот как-то так
Вложения
Тип файла: zip unifiedauth.zip (4.16 Мб, 26 просмотров)

Правка: volk13, 13.09.2024 16:25
14.09.2024 12:32
Цитата:
volk13 скрипт для получения токена по схеме "Единая аутентификация"
Вчера - установил в реестр своего круглосуточного сервера Win Server 2008 - сертификат физ.лица, на который в ЧЗ есть МЧД (и он зарегистрирован в ЛК ЧЗ)
Далее - настроил запуск через "Планировщик заданий" - каждые 8 часов ежедневно, прописал в copypatches_token.txt - пути ко всем своим РМК.

И теперь - на всех РМК постоянно актуальный токен для подписания документов, направляемых в ЧЗ (например актов разделки сыра и т.д..), ибо срок действия токена = 10 часов, а планировщик рассылает свежий токен каждые 8 часов.

Красота (и никаких лишних сертификатов, рутокенов и запросов на РМК не нужно) ;)

PS. А когда (и если) закончится срок действия статического токена для ККТ (планируют с 1 марта 2025 г.), то ничего более не нужно придумывать, т.к. токен "единой аутентификации" - уже есть на каждом РМК, причём всегда свежий.
Так что проблема в любом случае решена (если чего0то третьего не придумают).
Ну а если придумают - то сделаем и это...
14.09.2024 23:57
Подправил скрипт для получения токена по схеме "Единая аутентификация":

Изменения:

1. убрал лишнюю информацию и "кракозябры" из логов (появляющиеся в случае ошибок при выполнении скрипта)

2, в случае, если в третьем параметре передаётся ИНН организации, выдавшей МЧД, то имя файла с токеном будет таким:
ИНН_ИНН_token*
где первый ИНН - это ИНН организации, а второй ИНН - ИНН ФЛ (с МЧД).
(Чтобы не путать токены чисто для самого ИП, с токенами для ООО, где ИП(или ФЛ) - использовали для получения токена ООО свои сертификаты по МЧД)
Вложения
Тип файла: zip unifiedauth.zip (4.16 Мб, 10 просмотров)
15.09.2024 10:58
Новая версия скрипта для получения токена по схеме "Единая аутентификация":

Изменения:

1. убрал выявленный при тестировании неприятный "косяк" с именем выходного файла
2. переработал механизм извлечения необходимого ИНН из ответа криптопрошной утилиты
3. добавил таймауты команде curl
4. почистил прочие выявленные "косяки" при обработке исключений

PS. Обращаю внимание, что на выходе скрипт выдаёт не чисто сам токен (длиннющую "колбасу"), а json-файл, содержащий этот токен в параметре "token".
Т.е. для получения чистого токена - его необходимо предварительно извлечь из строки json-файла (с этим справится любой разработчик ПО, если необходимо).
А через данный скрипт - извлечение чистого токена невозможно, т.к. скрипт написан для CMD, а CMD не позволяет работать со строками длиннее 8191 символа (обрезает, если строка длиннее).. А токен единой аутентификации - в несколько раз длиннее.

На досуге - возможно переделаю на другой "язык", т.к. сам алгоритм - вроде отлажен окончательно (ну и сам принцип помещения скрипта в "Планировщик" и раздача токена на РМК (чтобы на РМК всегда были свежие токены) - тоже ясен)
.
Вложения
Тип файла: zip unifiedauth.zip (4.16 Мб, 20 просмотров)
17.09.2024 09:29
Круто!
Универсально, на все случаи жизни, кому что надо.

У меня-же, задача получения токена не стоит - это делает кассовая программа УКМWIN, и сама умеет, если РуТокенЭЦП на кассовом компе стоит, и может без него, что обычно и мспользуется - "флешка" с КЭП стоит на компе где БЭК, а касс может быть несколько. Программе, для получения токена достаточно файлика с подписанными ЭЦП произвольными данными. По новым "хотелкам" от ЦРПТ, их надо обновлять периодически.
Вот очередной видеоролик, как я это сделал в 1С. Сама 1С в этом процессе не участвует, файлик формируется и "рассылается" по всем кассам скриптом CMD, который формируется и настраивается задание в планировщике из 1С. После чего, он уже работает независимо от 1С, главное, что-бы компьютер был включен. В общем, вот, может кому-то пригодится сама идея:



Пока - так. А если к дате "Ч", ЦРПТ что-то новое выдумает - будем решать.
17.09.2024 11:19
Сам скрипт, там аналогичен скрипту от volk13 по первому варианту, только параметры я не использую - так, как формирую его из 1С, а исходные данные для него у меня в базе и так есть - КЭП пользователя (соответственно ее отпечаток) есть в справочнике, и пути до касс в списке подключаемого оборудования. Контур - мне не нужен, так, как файлик ЭЦП одинаковый для любого контура, хоть песочницы, хоть боевого, а куда посылать запрос - это дело уже самой программы УКМWIN, там это в справочнике проверки марок настраивается.

Да, по планировщику. Можно конечно зайти в планировщик винды "пешком" и интерактивно настроить задание.
Но, как-то вломмм....
Поэтому использую виндовую консольную утилиту SCHTASKS, по сути, это тот-же штатный виндовый планировщик, только настраивается из коммандной строки параметрами. Мне из 1С так проще было и привычнее
17.09.2024 11:29
Да, если кто-то будет разбираться с планировщиком из коммандной строки, вот что-бы не терять время:

Запрограммировать выполнение задания: "SCHTASKS /Create /TN Scrypt /TR " + СокрЛП(РабКаталог) + "\Skrypt.cmd /SC HOURLY /MO " + Интервал + " /F"

Показать выполняемые задания: "SCHTASKS /Query /TN Scrypt > " + СокрЛП(РабКаталог) + "Z.txt" Файлик Z.txt потом распарсить и удалить.

Остановить выполнение задания (точнее удалить его): "SCHTASKS /Delete /TN Scrypt /F"

В принципе - ничего сложного.
Часовой пояс GMT +3, время: 21:31.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.