README.md

    Api6775 (ранее Api5704)

    Build status .NET GitHub Release

    Получение сведений о среднемесячных платежах (ССП) и сведений о самозапрете (снятии самозапрета) по Указанию Банка России от 27.06.2024 N 6775-У «О порядке взаимодействия квалифицированных бюро кредитных историй (в том числе между собой) с пользователями кредитных историй, иными юридическими лицами и индивидуальными предпринимателями, не являющимися пользователями кредитных историй, в целях предоставления квалифицированными бюро кредитных историй сведений о среднемесячных платежах, сведений о запрете (снятии запрета) на заключение договоров потребительского займа (кредита), порядке и форме предоставления указанных сведений, порядке и форме запроса и предоставления квалифицированным бюро кредитных историй необходимых сведений для подготовки сведений о среднемесячных платежах, сведений о запрете (снятии запрета) на заключение договоров потребительского займа (кредита), а также о порядке предоставления бюро кредитных историй в квалифицированные бюро кредитных историй данных, необходимых для формирования и предоставления пользователям кредитных историй сведений о среднемесячных платежах субъекта кредитной истории».

    Порядок взаимодействия с использованием API

    «Порядок взаимодействия пользователей кредитных историй, бюро кредитных историй, в том числе квалифицированных бюро кредитных историй, с квалифицированными бюро кредитных историй с использованием программного интерфейса приложения (API) в целях предоставления сведений о среднемесячных платежах» публикуется в соответствии с пунктом 1.2 Указания Банка России N 5704-У:

    https://cbr.ru/ckki/transfer_inform/

    По этой ссылке важно отслеживать вступление в силу новых версий форматов и не путать версии документов и версии xsd.

    • Версия 2.0 (с 01.03.2025)
    • Версия 1.3 (с 10.07.2024 по 30.04.2025)

    В обновленной версии 2.0 по сравнению с версией 1.3 произведены следующие основные изменения:

    1. изменено основание разработки Порядка (вступление в силу Указания Банка России от 27.06.2024 N 6775-У «О порядке взаимодействия квалифицированных бюро кредитных историй (в том числе между собой) с пользователями кредитных историй, иными юридическими лицами и индивидуальными предпринимателями, не являющимися пользователями кредитных историй, в целях предоставления квалифицированными бюро кредитных историй сведений о среднемесячных платежах, сведений о запрете (снятии запрета) на заключение договоров потребительского займа (кредита), порядке и форме предоставления указанных сведений, порядке и форме запроса и предоставления квалифицированным бюро кредитных историй необходимых сведений для подготовки сведений о среднемесячных платежах, сведений о запрете (снятии запрета) на заключение договоров потребительского займа (кредита), а также о порядке предоставления бюро кредитных историй в квалифицированные бюро кредитных историй данных, необходимых для формирования и предоставления пользователям кредитных историй сведений о среднемесячных платежах субъекта кредитной истории»);
    2. изменено название Порядка — «Порядок взаимодействия пользователей кредитных историй, бюро кредитных историй, в том числе квалифицированных бюро кредитных историй, с квалифицированными бюро кредитных историй с использованием программного интерфейса приложения (API) в целях предоставления сведений о среднемесячных платежах субъектов кредитных историй и (или) сведений о запрете (снятии запрета) на заключение договоров потребительского займа (кредита)»;
    3. скорректирован запрос сведений о среднемесячных платежах в части дополнения возможностью запроса сведений о запрете (снятии запрета);
    4. добавлена возможность пакетного запроса сведений (до 10 субъектов в одном запросе).

    Адрес базового URL API тестовой системы: https://reports.demo.nbki.ru/qbch/

    Адрес базового URL API тестовой системы, планируемой к выпуску: https://reports.test-alfa.nbki.ru/qbch/

    Адрес базового URL API версии 1.3 промышленной системы: https://ssp.nbki.ru/qbch/

    Адрес базового URL API версии 2.0 промышленной системы: https://ssp.nbki.ru/qbch/v2_0/

    Для подключения требуется зарегистрированный через ЛК сертификат и зачастую дополнительная привязка через Службу поддержки.

    Подготовка запросов

    Для небольшого использования по подготовке и учету сделанных запросов прилагается файл Microsoft Excel с макросами Api6775.xslm в папке XSLM.

    Как альтернативу Excel можно рассмотреть другой проект по составлению шаблонных XML-запросов - https://github.com/diev/ReplForms. Для этой программы положен файл шаблона в папку Templates.

    Ныне запросы ССП могут быть только в режиме одного окна, что определяется значением параметра ТипЗапроса:

    • ТипЗапроса=“2” – запрашивает одно окно КБКИ.

    СНИЛС требуется указывать по формату \d\d\d-\d\d\d-\d\d\d \d\d.

    ХэшКод требуется переводить в нижний регистр [\da-f]{64}.

    Config

    При первом запуске будет создан файл настроек Api6775.config.json (в папке с программой) с параметрами по умолчанию. Откорректируйте его перед новым запуском:

    • MyThumbprint = отпечаток вашего сертификата (прописанного в КБКИ для подключения к их серверу), который должен быть в Хранилище сертификатов и у вас должен быть ключ (и PIN, если назначен);
    • VerboseClient = отображать содержимое вашего сертификата (для наглядности);
    • ServerAddress = url сервера для подключения;
    • ServerThumbprint = отпечаток сертификата сервера (опционально);
    • ValidateTls = проверять действительность сертификатов TLS (по срокам действия, цепочки и т.п.);
    • ValidateThumbprint = проверять отпечаток сервера (отключите, если не знаете ServerThumbprint);
    • VerboseServer = отображать содержимое сертификата сервера (для наглядности);
    • UseProxy = использовать прокси;
    • ProxyAddress = url прокси-сервера (опционально);
    • SignFile = подписывать запросы в программе (если СКЗИ для подписывания и доступ в Интернет для обмена совмещены на одном АРМ);
    • CleanSign = удалять подписи ответов в программе (на диске будут сохранены оба файла - .xml и .xml.sig);
    • MaxRetries = число попыток с предписанным интервалом в 1 сек., чтобы получить сведения по запросу;
    • DirSource = папка и маска файлов с исходными запросами для пакетной обработки (должна существовать, чтобы при запуске без параметров, файлы брались оттуда). Пример: OUT\*.xml (не забывайте об удвоении \\ в файлах формата JSON);
    • DirRequest = папка+файл для отправленных запросов, где папка+файл - это путь к создаваемому файлу, где могут быть сделаны автоподстановки (в любом порядке и количестве - и в имени папки, и в имени файла):
      • {name} = имя исходного файла без расширения;
      • {date} = текущая дата в формате ГГГГ-ММ-ДД;
      • {guid} = ИдентификаторЗапроса из исходного XML;
    • DirResult = папка+файл для полученных квитанций;
    • DirAnswer = папка+файл для полученных сведений;
    • CspTest = путь к программе КриптоПро csptest.exe (опционально);
    • CspTestSignFile = команда с параметрами для подписи запросов в программе, где:
      • %1 = исходный файл XML;
      • %2 = подписанный файл XML.sig для отправки;
      • %3 = будет подставлено значение MyThumbprint для выбора сертификата в Хранилище для подписи.

    Пример рабочего конфига:

    {
      "MyThumbprint": "2756273e9e3c99ee435ffeaa79505b10214321c8",
      "VerboseClient": true,
      "ServerAddress": "https://ssp.nbki.ru/qbch/v2_0/",
      "ServerThumbprint": "18042E6D06AE9F05B639DF511A8583FEDE72784D",
      "ValidateTls": true,
      "ValidateThumbprint": false,
      "VerboseServer": true,
      "UseProxy": false,
      "ProxyAddress": "http://192.168.2.1:3128",
      "SignFile": true,
      "CleanSign": true,
      "MaxRetries": 10,
      "DirSource": "OUT\\*.xml",
      "DirRequests": "Requests\\{name}.{date}.{guid}.request.xml",
      "DirResults": "Results\\{name}.{date}.{guid}.result.xml",
      "DirAnswers": "Answers\\{name}.{date}.{guid}.answer.xml",
      "CspTest": "C:\\Program Files\\Crypto Pro\\CSP\\csptest.exe",
      "CspTestSignFile": "-sfsign -sign -in %1 -out %2 -my %3 -add -addsigtime"
    }
    

    Usage

    Предоставление сведений о среднемесячных платежах субъектов кредитных историй:

    Api6775 запрос параметры
    

    Регистр командной строки неважен. Ниже запросы (команды) для удобства указаны в верхнем регистре, а файлы - в нижнем.

    Обычно программе нужен только первый файл (или guid), а последующие в параметрах она создает с указанными именами и полученной информацией.

    dlput – передача от КБКИ данных, необходимых для формирования и предоставления пользователям кредитных историй сведений о среднемесячных платежах Субъекта.

    Api6775 DLPUT qcb_put.xml result.xml
    

    dlrequest – запрос сведений о среднемесячных платежах Субъекта. Параметры: request.xml[.sig] result.xml (result.xml будет создан с результатом операции).

    Api6775 DLREQUEST request.xml result.xml
    

    dlanswer – получение сведений о среднемесячных платежах Субъекта по идентификатору ответа.

    Api6775 DLANSWER n6c80c1c8-f620-491c-994a-6886706d85dc answer.xml
    Api6775 DLANSWER result.xml answer.xml
    

    dlputanswer – получение информации о результатах загрузки данных, необходимых для формирования и предоставления пользователям кредитных историй сведений о среднемесячных платежах Субъекта, в базу данных КБКИ. Параметры: id answer.xml (вместо id можно подставить result.xml с ним из предыдущей операции, answer.xml будет создан с ответом).

    Api6775 DLPUTANSWER 945cb186-0d50-45ff-8823-797942987638 answer.xml
    Api6775 DLPUTANSWER result.xml answer.xml
    

    certadd – добавление нового сертификата абонента.

    Api6775 CERTADD A6563526-A3F3-4D4E-A923-E41E93F1D921 cert.cer cert.cer.sig result.xml
    

    certrevoke – отзыв сертификата абонента. Параметры: id cert.cer sign.sig result.xml (result.xml будет создан с результатом операции).

    Api6775 CERTREVOKE A6563526-A3F3-4D4E-A923-E41E93F1D921 cert.cer cert.cer.sig result.xml
    

    Пример получения ССП и СЗ в конфигурации с наложением ЭП программой

    Получить новый GUID (пусть в данном примере 6d20a9fd-7bce-4480-bf56-a66932876bf7). Подготовить файл запроса request.xml, где будет этот ИдентификаторЗапроса="6d20a9fd-7bce-4480-bf56-a66932876bf7". Отправить файл командой dlrequest:

    Api6775 DLREQUEST request.xml result.xml
    

    Посмотреть полученный (в случае успеха передачи) файл result.xml. Там будет строка вида (одной строкой) с ответом на наш запрос:

    <?xml version="1.0" encoding="UTF-8"?>
    <Результат Версия="2.0" ОГРН="1077333000003">
    <ИдентификаторОтвета
    ИдентификаторЗапроса="ef15a678-637f-11ea-83b8-21758a33c94a"
    ДатаЗапроса="2024-07-14">
    6afbdd01-6380-11ea-83b8-21758a33c94a</ИдентификаторОтвета>
    </Результат>
    

    Вот этот идентификатор ответа надо через некоторое время отправить командой для получения ответного файла с ССП:

    Api6775 DLANSWER b17c7a39-359e-4e7c-941d-668e2e957a7c answer.xml
    

    Другой вариант проще - запустить запрос с файлом из предыдущего этапа - программа возьмет ИдентификаторОтвета из него сама:

    Api6775 DLANSWER result.xml answer.xml
    

    Или еще проще - использовать расширение API (см.ниже).

    Полученный файл answer.xml содержит искомую информацию с ССП.

    Расширение API дополнительными командами

    Отправка запроса (dlrequest), получение квитанции и сведений (dlanswer), создание текстового отчета (report) за один запуск - команда auto:

    Api6775 AUTO request.xml result.xml answer.xml report.txt
    

    Пакетная обработка запросов (auto) из папки за один запуск - команда dir (это и действие по умолчанию, если параметров не указано вовсе, но есть папка DirSource в конфиге, а также там указаны папки DirRequest, DirResult, DirAnswer):

    Api6775 DIR source request result answer report
    Api6775
    

    где:

    • source - папка с исходными запросами *.xml (имена файлов любые - рекомендуется использовать ФИО);
    • request - папка, куда будут сложены копии исходных файлов, переименованные по маске ФИО.yyyy-MM-dd.guid.request.xml:
      • ФИО - исходное имя файла (например, ФИО),
      • yyyy-MM-dd - текущая дата,
      • guid - ИдентификаторЗапроса из XML;
    • result - папка, куда будут сложены полученные квитанции, переименованные по аналогичной маске ФИО.yyyy-MM-dd.guid.result.xml;
    • answer - папка, куда будут сложены полученные сведения, переименованные по аналогичной маске ФИО.yyyy-MM-dd.guid.answer.xml.
    • report - папка, куда будет положен сводный отчет по полученным сведениям, переименованный по аналогичной маске ФИО.yyyy-MM-dd.guid.answer.xml.txt.

    После получения файла в папке answer, соответствующий ему исходный файл будет считаться обработанным и удален из папки source, при этом он всегда может быть позже найден в папке request с датой и guid.

    Также к полученному файлу answer.xml будет создан текстовый сводный отчет в файле answer.txt рядом с ним.

    Отдельно его можно получить командой:

    Api6775 REPORT answer.xml report.txt
    

    Вычисление ХэшКода согласий

    Для вычисления ХэшКода служит утилита из состава КриптоПро:

    "C:\Program Files (x86)\Crypto Pro\CSP\cpverify.exe" -mk -alg GR3411_2012_256 file.pdf
    A36D628486A17D934BE027C9CAF79B27D7CD9E4E49469D97312B40AD6228D26F
    

    Для удобства в Api5704.xlsm добавлены макросы:

    • CalcHash - указать файл PDF в диалоге, рассчитать (требуется установленный КриптоПро) и скопипастить из окна ввода.
    • ReadHash - указать готовый файл TXT в диалоге и скопипастить из окна ввода.

    Также добавлен hash.cmd, который надо закинуть в папку с PDF, и он посчитает и запишет к каждому PDF рядом файл .txt, с кодом уже в нижнем регистре.

    Проверка ХэшКода на сервисе Госуслуг

    https://www.gosuslugi.ru/pgu/eds

    Requirements

    • .NET 8
    • .NET 9
    • CryptoPro CSP
    • Microsoft Excel

    Versioning

    Номер версии программы указывается по нарастающему принципу и строится от максимальной протестированной версии .NET на момент разработки и даты редакции:

    • Актуальная версия .NET (9);
    • Год текущей разработки (2024);
    • Месяц без первого нуля и день редакции (624 - 24.06.2024);
    • Номер билда, если указан - просто нарастающее число для внутренних отличий.

    Продукт развивается для собственных нужд, а не по коробочной стратегии, и поэтому Breaking Changes могут случаться чаще, чем это принято в SemVer. Поэтому проще по датам актуализации кода.

    При обновлении программы рекомендуется сохранить предыдущий конфиг, удалить его из папки с программой, чтобы она создала новый, перенести необходимые старые значения в новый конфиг перед новым запуском программы.

    License

    Licensed under the Apache License, Version 2.0. Вы можете использовать эти материалы под свою ответственность.

    Telegram

    Описание

    Получение сведений о ССП и СЗ при обращении банка к API КБКИ по Указанию Банка России N 6775-У, ранее 5704-У.

    Конвейеры
    0 успешных
    0 с ошибкой