ФГИС Сатурн. Интерфейс авторизации

20.04.23

Интеграция - Обмен с ГосИС

Процедуры авторизации для API ФГИС Сатурн.

По просьбе разработчика ФГИС Сатурн публикую свои наработки для работы с API из 1С.

#Область ПрограммныйИнтерфейсФГИССатурн

//Преобразует текст формата JSON в значение типа "Структура"
// Функция - JSONВСтруктуру
//  
// Параметры:
//  ТекстJSON	 - Строка	 - строка с текстом формата JSON
// 
// Возвращаемое значение:
//  Структура - структура с данными
//
Функция JSONВСтруктуру(ТекстJSON) Экспорт
    ЧтениеJSON = Новый ЧтениеJSON();
    ЧтениеJSON.УстановитьСтроку(ТекстJSON);
    Структура = ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();
    Возврат Структура;
КонецФункции 

//Преобразует значение типа "Структура" в текст формата JSON
// Функция - Структуру ВJSON
//
// Параметры:
//  СтруктураНаОтправку	 - Структура	 - структура с данными
// 
// Возвращаемое значение:
//  Строка - текст формата JSON
//
Функция СтруктуруВJSON(СтруктураНаОтправку) Экспорт
	МояЗаписьJSON = Новый ЗаписьJSON;
	МояЗаписьJSON.УстановитьСтроку();
	
	ЗаписатьJSON(МояЗаписьJSON, СтруктураНаОтправку);
	
	Тело = МояЗаписьJSON.Закрыть();
	Возврат Тело;
КонецФункции   

//Возвращает ид сессии в формати ФГИС Сатурн
// Функция - Сгенерировать ид сессии
//
// Параметры:
//  salt - Строка	 - строка для генерации ид сессии полученная от апи авторизации
//  Ключ - Строка	 - ключ доступа к АПИ
// 
// Возвращаемое значение:
// Строка  - ид сессии в формати ФГИС Сатурн
//
Функция СгенерироватьИдСессии(salt, Ключ)
	
	КлючИСессия = salt + "." + Ключ;
	
	Хеширование = Новый ХешированиеДанных(ХешФункция.SHA256);
	
	ДДКлючИСессия = ПолучитьДвоичныеДанныеИзСтроки(КлючИСессия);
	
	Хеширование.Добавить(ДДКлючИСессия);
	
	ДдХеш = Хеширование.ХешСумма;
	
	Возврат "SEAPISID:" + НРег(ПолучитьHexСтрокуИзДвоичныхДанных(ДдХеш));
	
КонецФункции

//Выполняет первичную авторизацию в апи ФГИС Сатурн
// Процедура - Авторизация ФГИССатурн
//
// Параметры:
//  ПараметрыПроцедуры	 - Структура	 - Структура с параметрами подключения. Логин - имя пользователя для соединения,
//  Пароль - пароль для соединения, Домен - домен пользователя, Сервер - адрес сервера ФГИС Сатурн,
//  ЛогинФГИС - логин пользователя ФГИС Сатурн, Ключ - ключ доступа к АПИ.
//  При успешном выполнении добавляет в данную структуру поле ИдСессии - ид сессии в формати ФГИС Сатурн
//  При ошибке добавляет поле Ошибка - истина, ОписаниеОшибки - строка
Процедура АвторизацияФГИССатурн(ПараметрыПроцедуры)
	
	Соединение = Новый HTTPСоединение(ПараметрыПроцедуры.Сервер, 443, ПараметрыПроцедуры.Логин, ПараметрыПроцедуры.Пароль,,, Новый ЗащищенноеСоединениеOpenSSL); //TODO С авторизацией разгрестись
	
	Запрос = Новый HTTPЗапрос("probeInnerArm/innerArm/seapiAuth");
	Запрос.Заголовки.Вставить("Content-type", "application/json");
		
	СтруктураПараметров = Новый Структура; 
	СтруктураПараметров.Вставить("op", "startAuth");  //Команда "Начало авторизации"
	СтруктураПараметров.Вставить("login", ПараметрыПроцедуры.ЛогинФГИС);
	СтруктураПараметров.Вставить("domain", ПараметрыПроцедуры.Домен); 
	
	Тело = СтруктуруВJSON(СтруктураПараметров);
	
	Запрос.УстановитьТелоИзСтроки(Тело);
	
	Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос); 
	
	Если Ответ.КодСостояния <> 200 Тогда 
		ПараметрыПроцедуры.Вставить("Ошибка", Истина);
		ПараметрыПроцедуры.Вставить("ОписаниеОшибки", Ответ.ПолучитьТелоКакСтроку());
		Возврат;
	КонецЕсли;
	
	СтруктураОтвета = JSONВСтруктуру(Ответ.ПолучитьТелоКакСтроку());
	
	Если СтруктураОтвета.resCode <> 200 Тогда
		ПараметрыПроцедуры.Вставить("Ошибка", Истина);
		ПараметрыПроцедуры.Вставить("ОписаниеОшибки", СтруктураОтвета.resMsg);
		Возврат;	                                                          
	КонецЕсли;
		
	ИдСессии = СгенерироватьИдСессии(СтруктураОтвета.resData.salt, ПараметрыПроцедуры.Ключ);           
	
	ПараметрыПроцедуры.Вставить("ИдСессии", ИдСессии);	
	
КонецПроцедуры  

Процедура ПодтвердитьИдСессии(ПараметрыПроцедуры) 
	
	Соединение = Новый HTTPСоединение(ПараметрыПроцедуры.Сервер, 443, ПараметрыПроцедуры.Логин, ПараметрыПроцедуры.Пароль,,, Новый ЗащищенноеСоединениеOpenSSL); //TODO С авторизацией разгрестись
	
	Запрос = Новый HTTPЗапрос("probeInnerArm/innerArm/seapiAuth");
	Запрос.Заголовки.Вставить("Content-type", "application/json");
	
	СтруктураПараметров = Новый Структура; 
	СтруктураПараметров.Вставить("op", "approveSID"); //Команда "Подтвердить авторизацию"
	СтруктураПараметров.Вставить("login", ПараметрыПроцедуры.ЛогинФГИС);
	СтруктураПараметров.Вставить("domain", ПараметрыПроцедуры.Домен);
	СтруктураПараметров.Вставить("sid", ПараметрыПроцедуры.ИдСессии);
	
	Тело = СтруктуруВJSON(СтруктураПараметров);
	
	Запрос.УстановитьТелоИзСтроки(Тело);
	
	Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);
	
	Если Ответ.КодСостояния <> 200 Тогда 
		ПараметрыПроцедуры.Вставить("Ошибка", Истина);
		ПараметрыПроцедуры.Вставить("ОписаниеОшибки", Ответ.ПолучитьТелоКакСтроку());
		Возврат;
	КонецЕсли; 
	
	СтруктураОтвета = JSONВСтруктуру(Ответ.ПолучитьТелоКакСтроку());
	
	Если СтруктураОтвета.resCode <> 202 Тогда
		ПараметрыПроцедуры.Вставить("Ошибка", Истина);
		ПараметрыПроцедуры.Вставить("ОписаниеОшибки", СтруктураОтвета.resMsg);
		Возврат;	                                                          
	КонецЕсли; 
	
	ПараметрыПроцедуры.Вставить("СессияВалиднаДо", СтруктураОтвета.resData.validTo);
	
КонецПроцедуры 

Процедура ЗакрытьСессию(ПараметрыПроцедуры)
	
	Соединение = Новый HTTPСоединение(ПараметрыПроцедуры.Сервер, 443, ПараметрыПроцедуры.Логин, ПараметрыПроцедуры.Пароль,,, Новый ЗащищенноеСоединениеOpenSSL); //TODO С авторизацией разгрестись
	
	Запрос = Новый HTTPЗапрос("probeInnerArm/innerArm/seapiAuth");
	Запрос.Заголовки.Вставить("Content-type", "application/json");
	
	СтруктураПараметров = Новый Структура; 
	
	СтруктураПараметров.Вставить("op", "closeSession"); //Команда закрыть сессию
	СтруктураПараметров.Вставить("login", ПараметрыПроцедуры.ЛогинФГИС);
	СтруктураПараметров.Вставить("domain", ПараметрыПроцедуры.Домен);
	СтруктураПараметров.Вставить("sid", ПараметрыПроцедуры.ИдСессии);	
	
КонецПроцедуры


#КонецОбласти

Для обращения к командам API требуется создать ИД сессии и передавать его в теле запроса.

Сначала вызываем процедуру АвторизацияФГИССатурн.

В нее передаем структуру со следующими параметрами:

Сервер - адрес сервера (демо версия апи - api-demo.fgis-saturn.ru, боевой - api1.fgis-saturn.ru/gate1)

Логин - логин пользователя системы для доступа к соединению (не уточнял требуется ли в боевом варианте, для тестовой среды - "admin")

Пароль - пароль пользователя системы для доступа к соединению (не уточнял требуется ли в боевом варианте, для тестовой среды - "qazwsx")

ЛогинФГИС - логин пользователя системы.

Домен - домен пользователя системы.

В случае успешного выполнения - процедура добавит параметр ИдСессии в переданную в нее структуру.

Далее вызываем процедуру ПодтвердитьИдСессии.

В нее можно передать ранее созданную структуру ПараметрыПроцедуры с параметром ИдСессии полученным из предыдущего вызова.

В случае успешного выполнения - процедура добавит/обновит параметр СессияВалиднаДо.

Если требуется держать сессию дольше чем по дату указанную в этом параметре, процедуру следует вызвать повторно.

Для закрытия сессии вызываем процедуру ЗакрытьСессию.

В нее можно передать ранее созданную структуру ПараметрыПроцедуры с параметром ИдСессии полученным из предыдущего вызова.

В случае ошибок - все процедуры добавляют в переданную структуру параметры Ошибка = Истина и ОписаниеОшибки - с текстовым описанием ошибки.

UPD: Данный код работоспособен на тестовой среде. Для продуктивной среды следует заменить в урл хттп запросов "probeInnerArm/innerArm" на "gate1"

ФГИС Сатурн

См. также

Бюджетный учет Обмен с ГосИС Бухгалтер Пользователь Бухгалтерский учет 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 1С:Управление холдингом Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Управляйте учетной политикой раздельного учета ГОЗ в 1С:Бухгалтерия 3.0 ПРОФ/КОРП и УХ 3.2. Отчеты по исполнению госконтрактов, расчетно-калькуляционные материалы и контроль операций для исполнения в срок. Готовое расширение подходит для всех бухгалтеров и руководителей производства, помогая вести правильный учет по гособоронзаказу в соответствии 275-ФЗ. Профессиональный консалтинг и регулярные обновления продукта.

28.08.2020    300118    2099    vvmanannikov    133    

985

Бюджетный учет Обмен с ГосИС Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Государственные, бюджетные структуры Россия Бухгалтерский учет Платные (руб)

Доработка конфигурации 1С:Бухгалтерия предприятия, редакция 3.0. реализована в виде расширения. Предназначена для ведения раздельного учета и автоматизации заполнения отчетности исполнения контрактов ГОЗ в конфигурациях 1С БП КОРП, ПРОФ, БИТ.ФИНАНС.

55200 руб.

16.08.2019    91929    234    87    

140

SALE! 40%

Обмен с ГосИС Программист Бухгалтер Пользователь Платформа 1С v8.3 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Интеграция и синхронизация Честный Знак и 1C - полноценная обработка, которая манипулирует сотнями задач по ведению учета в системе мониторинга честный знак, особенности: такие как полная поддержка учета карточек в национальном каталоге (модерация, редактирование, подписание, получение информации), получение кодов маркировок в станции управления заказами "СУЗ Облако", удобная отправка и получение "УПД" через систему "ЭДОЛайт" из документов реализации или корректировки, так же существует механизм приема через ЭДОЛайт, отправка и получения таких документов как перемаркировка , списание, отгрузка и еще более 40 типов документов в ГИСМТ которые описаны ниже, моментальное сопоставление и внедрение в типовую конфигурацию которое обеспечивает ракетную мега скорость

18000 10800 руб.

28.03.2023    17622    110    21    

90

Бюджетный учет Обмен с ГосИС Бухгалтер Пользователь Бухгалтерский учет 1С:Управление производственным предприятием Государственные, бюджетные структуры Россия Бухгалтерский учет Платные (руб)

Для 1С: УПП 1.3 предлагаем Вашему вниманию подсистему "Раздельный учет результатов финансово-хозяйственной деятельности организаций, выполняющих государственный оборонный заказ (раздельный учет ГОЗ)". Ключевые возможности подсистемы: - Автоматическое заполнение регламентированного отчета «Исполнение контрактов ГОЗ»; - Расшифровка показателей отчета об исполнении контрактов ГОЗ с детализацией до документов; - Контроль хозяйственных операций на соответствие требованиям Постановления Правительства № 47; - Автоматизированный ввод начальных данных по контрактам, заключенным ранее даты начала использования подсистемы.

90000 руб.

25.09.2020    30668    42    10    

40

SALE! 20%

Оптовая торговля Розничная торговля Обмен с ГосИС Бухгалтер Платформа 1С v8.3 1С:Управление торговлей 10 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Россия Бухгалтерский учет Управленческий учет Акцизы Платные (руб)

Полнофункциональное расширение (ранее известное как Модуль 1С-ЕГАИС) для взаимодействия типовых конфигураций 1С и ЕГАИС, предоставляющее максимум возможностей по работе с УТМ. Получение и отправка ТТН, отправка акта о постановке на баланс и акта о списании. Получение остатков. Загрузка и сопоставление номенклатуры и контрагентов. Оправка в ЕГАИС отчетов о производстве и импорте.

8970 7176 руб.

15.12.2015    170793    955    364    

400

ККМ Кассовые операции Розничная торговля Обмен с ГосИС Программист Бухгалтер Пользователь Бухгалтерский учет Оперативный учет Управляемые формы 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение конфигурации для УТ 11.5, КА 2.5 ,ERP 2.5 (Управляемые формы) позволяет выполнять печать кассовых чеков на одну ККМ 54-ФЗ с нескольких рабочих мест. НИКАКИХ НАСТРОЕК В РАЗРАБОТКЕ - ПОДКЛЮЧИЛ И ПЕЧАТАЙ. Если у вас несколько отделов и одна ККМ - печатайте на одной ККМ! Если у вас две ККМ и одна поломалась - печатайте на одной ККМ, пока ремонтируете другую!

4500 руб.

27.08.2018    122189    1025    584    

864

Регламентированный учет и отчетность Обмен с ГосИС ЭДО и ОФД Бухгалтер Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)

Работаете по контрактной схеме, сталкивались с проблемой, что в контракте жестко указаны наименование, цена, единица измерения товара. И не все готовы создавать новую номенклатуру под каждый контракт или менять наименование и единицу измерения для уже имеющейся. Тем более, бывает так, что контракт - это формальность. Контракт не описывает жесткие условия поставки, нужно соблюсти правильность в предоставлении документов. Данное решение позволит вам оперировать своей номенклатурой при оформлении реализаций по государственному контракту в УТ 11.5 и КА 2.5.11, в то же время выводить на печать документы, соответствующие данным контракта. Реализована выгрузка для сайта госзакупок (ЕИС) по 44-ФЗ.

60000 руб.

19.12.2022    12011    34    20    

21

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Обмен с ГосИС Программист Бухгалтер Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Сельское хозяйство и рыболовство Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Пищевая промышленность Россия Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная конфигурация Хамелеон Меркурий для взаимодействия с системой Меркурий (тестовый+рабочий+демо контур) может использоваться для интеграции в любую конфигурацию на базе 1С, версии ПРОФ и выше. Основное отличие от других решений - работа через веб-интерфейс и API 2.0(API 2.1). Для удобства реализован общий интерфейс в виде обработки, схожей с интерфейсом Меркурий, но возможностей гораздо больше, т.к. при интеграции в Вашу учетную систему, можно на основании Ваших справочников и документов, создавать соответствующие документы и справочники в системе Меркурий и наоборот.

44000 руб.

08.11.2017    122941    292    140    

398
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. lalex23 160 14.06.23 12:49 Сейчас в теме
Есть подозрение, что проблема на моей стороне, но 1С:Предприятие 8.3 (8.3.15.1747)
Код ошибки: -400
Сообщение ошибки: ERR:400 Bad Request
Описание ошибки: запрос не распознан
Тело запроса: {
"op": "startAuth",
"login": "ivanov_ni_220628",
"domain": "vetis"
}
что может быть не так? сервис авторизации в настоящий момент работает, простая ссылка
https://api-demo.fgis-saturn.ru/probeInnerArm/innerArm/seapiAuth?op=startAuth&login=ivanov_ni_220628&domain=vetis
выдаёт результат
{"resCode":200,"resMsg":"OK:200 ","resDescription":"Ожидается генерации ключа сессии.","resData":{"salt":"8fF4d6P8ie"}}
2. lalex23 160 14.06.23 13:16 Сейчас в теме
(1) победил строкой:
Запрос.УстановитьТелоИзСтроки(Тело, "UTF-8", ИспользованиеByteOrderMark.НеИспользовать);
не один сторонний веб-сервис ворОтит нос от BOM-символов, что вкрячивает в текст запроса 1С
3. EliasShy 48 14.06.23 15:33 Сейчас в теме
(2) На 8.3.19 и 8.3.21 таким проблем не было.

В приложенном примере не обошли проблему с датой: как ее отдает Сатурн и как ее видит 1с. Я добавлял доп обработчик.
Оставьте свое сообщение