Доброго времени суток, уважаемые читатели!
Я хотел бы поделиться опытом использования API Электронного кабинета налогоплательщика для Украины. Документация API написана, на мой взгляд, не очень понятно и с некоторыми ошибками. Когда разбирался, то потерял кучу времени. По этому примеры вызова методов решил выложить на Инфостарте.
На текущий момент использую два метода. Чтобы использовать эти методы, необходимо в Настройках личного кабинета налогоплательщика зарегистрировать себе Токен. Токен имеет ограничение по периоду 3 месяца и на получение 1000 запросов в день.
1. Получение информации по ПРРО (программный РРО)
// Описание: Метод возвращает информацию по зарегистрированному ПРРО
//
// Параметры:
// СтруктураПараметров - Структура -
// СтруктураПараметров.ИНН - КодПоЕДРПОУ Юр/Физ лица;
// СтруктураПараметров.ФН_кассы - Фискальный номер ПРРО кассы
//
// Возвращаемое значение:
// ОтветHTTP - HTTPОтвет на запрос
// Пример ответа
//{
// "DATA": [
// {
// "N_FIS": 4099999999,
// "D_REG": "03.06.2021",
// "D_SKS": null,
// "SKS_REASON": null,
// "ADDRESS": "УКРАЇНА, ЧЕРНIВЕЦЬКА ОБЛ., ....."
// },
// {
// "N_FIS": 4099999998,
// "D_REG": "18.05.2021",
// "D_SKS": null,
// "SKS_REASON": null,
// "ADDRESS": "УКРАЇНА, М.КИЇВ ОБОЛОНСЬКИЙ Р-Н, ...."
// }
// ],
// "FULL_NAME": "ИВАНОВ ИВАН ИВАНОВИЧ",
// "TIN_S": "**********"
//}
Функция ИнформацияПроПРРО(СтруктураПараметров) Экспорт
АдресСервера = "cabinet.tax.gov.ua";
ИНН = СтруктураПараметров.ИНН;
ФН_кассы = СтруктураПараметров.ФН_кассы;
Токен = "111111"; //ОбщиеФункции.ПолучитьЗначениеКонстанты("ТокенДФС");
СтруктураЗапроса = Новый Структура;
СтруктураЗапроса.Вставить("tins", ИНН); //Обязательный. Передается код ЕДРПОУ
СтруктураЗапроса.Вставить("nFis", ФН_кассы); //Не обязательный. Передается фискальный номер ПРРО, если не передвать вернет все ПРРО по Коду ЕДРПОУ
СтруктураЗапроса.Вставить("token", Токен); //Обязательный. Токен из личного кабинета налогоплательщика
//СтруктураЗапроса.Вставить("name",""); // Не обязательный. Передается название плательщика НДС
СтрJSON = ПРРО_Checkbox.ПолучитьJSONИзСтруктуры(СтруктураЗапроса);
Соответствие = Новый Соответствие;
Соответствие.Вставить("Content-Type", "application/json");
Соединение = Новый HTTPСоединение(АдресСервера,Неопределено, Неопределено, Неопределено, Неопределено, Неопределено, Новый ЗащищенноеСоединениеOpenSSL);
ЗапросHTTP = Новый HTTPЗапрос("ws/api/public/registers/prro", Соответствие);
ЗапросHTTP.УстановитьТелоИзСтроки(СтрJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
ОтветHTTP = Соединение.ВызватьHTTPМетод("POST", ЗапросHTTP);
Возврат ОтветHTTP;
КонецФункции //ИнформацияПроПРРО
2. Поиск фискального чека в Государственной фискальной службе
// Описание: Поиск фискального чека на сервере Налоговой по Фискальному номеру и дате
//
// Параметры:
// СтруктураПараметров - Структура -
// СтруктураПараметров.Дата - (Дата) Дата чека;
// СтруктураПараметров.ФискальныйНомерЧека - (Строка) Фискальный номер чека
//
// Возвращаемое значение:
// ОтветHTTP - HTTPОтвет на запрос
//
Функция ПоискФискальногоЧека(СтруктураПараметров) Экспорт
АдресСервера = "cabinet.tax.gov.ua";
пДата = СтруктураПараметров.Дата; // Дата чека
пФискальныйКод = СтруктураПараметров.ФискальныйНомерЧека; // Фискальный номер чека
Токен = "1111"; //ОбщиеФункции.ПолучитьЗначениеКонстанты("ТокенДФС");
Соответствие = Новый Соответствие;
Соответствие.Вставить("Content-Type", "application/json");
Соединение = Новый HTTPСоединение(АдресСервера,Неопределено, Неопределено, Неопределено, Неопределено, Неопределено, Новый ЗащищенноеСоединениеOpenSSL);
ДатаОтбора = Формат(пДата, "ДФ=' yyyy-MM-dd HH:mm:ss'");
ЗапросHTTP = Новый HTTPЗапрос("ws/api_public/rro/chkAll?id="+пФискальныйКод+"&date="+ДатаОтбора+"&type=3&token="+Токен, Соответствие);
ОтветHTTP = Соединение.ВызватьHTTPМетод("GET", ЗапросHTTP);
Возврат ОтветHTTP;
КонецФункции //ПоискФискальногоЧека