{"id":19099181,"url":"https://github.com/diev/api5704","last_synced_at":"2025-04-30T15:44:01.304Z","repository":{"id":210719198,"uuid":"727277563","full_name":"diev/Api5704","owner":"diev","description":"Получение сведений о ССП и СЗ при обращении банка к API КБКИ по Указанию Банка России N 6775-У, ранее 5704-У.","archived":false,"fork":false,"pushed_at":"2025-03-06T13:18:25.000Z","size":581,"stargazers_count":3,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-30T15:43:35.605Z","etag":null,"topics":["api","config","exec","net8","net9","pkcs7","runtime-config","tls-client","transport","x509"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/diev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-04T14:44:42.000Z","updated_at":"2025-03-26T09:37:27.000Z","dependencies_parsed_at":"2024-06-26T23:33:54.618Z","dependency_job_id":"68786db2-02d0-4b28-b4a0-ff4a32c0362a","html_url":"https://github.com/diev/Api5704","commit_stats":null,"previous_names":["diev/api5704"],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diev%2FApi5704","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diev%2FApi5704/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diev%2FApi5704/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diev%2FApi5704/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/diev","download_url":"https://codeload.github.com/diev/Api5704/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251733918,"owners_count":21635043,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","config","exec","net8","net9","pkcs7","runtime-config","tls-client","transport","x509"],"created_at":"2024-11-09T03:49:00.643Z","updated_at":"2025-04-30T15:44:01.282Z","avatar_url":"https://github.com/diev.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Api6775 (ранее Api5704)\n[![Build status](https://ci.appveyor.com/api/projects/status/0rnoo3ra0mwyc327?svg=true)](https://ci.appveyor.com/project/diev/api5704)\n[![.NET](https://github.com/diev/Api5704/actions/workflows/dotnet.yml/badge.svg)](https://github.com/diev/Api5704/actions/workflows/dotnet.yml)\n[![GitHub Release](https://img.shields.io/github/release/diev/Api5704.svg)](https://github.com/diev/Api5704/releases/latest)\n\nПолучение сведений о среднемесячных платежах (ССП) и сведений о самозапрете\n(снятии самозапрета) по Указанию Банка России от 27.06.2024 N 6775-У\n«О порядке взаимодействия квалифицированных бюро кредитных историй (в том\nчисле между собой) с пользователями кредитных историй, иными юридическими\nлицами и индивидуальными предпринимателями, не являющимися пользователями\nкредитных историй, в целях предоставления квалифицированными бюро кредитных\nисторий сведений о среднемесячных платежах, сведений о запрете (снятии\nзапрета) на заключение договоров потребительского займа (кредита), порядке\nи форме предоставления указанных сведений, порядке и форме запроса и\nпредоставления квалифицированным бюро кредитных историй необходимых сведений\nдля подготовки сведений о среднемесячных платежах, сведений о запрете\n(снятии запрета) на заключение договоров потребительского займа (кредита),\nа также о порядке предоставления бюро кредитных историй в квалифицированные\nбюро кредитных историй данных, необходимых для формирования и предоставления\nпользователям кредитных историй сведений о среднемесячных платежах субъекта\nкредитной истории».\n\n## Порядок взаимодействия с использованием API\n\n«Порядок взаимодействия пользователей кредитных историй, бюро кредитных\nисторий, в том числе квалифицированных бюро кредитных историй, с\nквалифицированными бюро кредитных историй с использованием программного\nинтерфейса приложения (API) в целях предоставления сведений о\nсреднемесячных платежах» публикуется в соответствии с пунктом 1.2\nУказания Банка России N 5704-У:\n\n\u003chttps://cbr.ru/ckki/transfer_inform/\u003e\n\nПо этой ссылке важно отслеживать вступление в силу новых версий форматов\nи не путать версии документов и версии xsd.\n\n* Версия 2.0 (с 01.03.2025)\n* Версия 1.3 (с 10.07.2024 по 30.04.2025)\n\nВ обновленной версии 2.0 по сравнению с версией 1.3 произведены следующие\nосновные изменения:\n\n1. изменено основание разработки Порядка (вступление в силу Указания Банка\nРоссии от 27.06.2024 N 6775-У «О порядке взаимодействия квалифицированных\nбюро кредитных историй (в том числе между собой) с пользователями кредитных\nисторий, иными юридическими лицами и индивидуальными предпринимателями,\nне являющимися пользователями кредитных историй, в целях предоставления\nквалифицированными бюро кредитных историй сведений о среднемесячных платежах,\nсведений о запрете (снятии запрета) на заключение договоров потребительского\nзайма (кредита), порядке и форме предоставления указанных сведений, порядке\nи форме запроса и предоставления квалифицированным бюро кредитных историй\nнеобходимых сведений для подготовки сведений о среднемесячных платежах,\nсведений о запрете (снятии запрета) на заключение договоров потребительского\nзайма (кредита), а также о порядке предоставления бюро кредитных историй\nв квалифицированные бюро кредитных историй данных, необходимых для\nформирования и предоставления пользователям кредитных историй сведений\nо среднемесячных платежах субъекта кредитной истории»);\n2. изменено название Порядка — «Порядок взаимодействия пользователей\nкредитных историй, бюро кредитных историй, в том числе квалифицированных\nбюро кредитных историй, с квалифицированными бюро кредитных историй\nс использованием программного интерфейса приложения (API) в целях\nпредоставления сведений о среднемесячных платежах субъектов кредитных\nисторий и (или) сведений о запрете (снятии запрета) на заключение\nдоговоров потребительского займа (кредита)»;\n3. скорректирован запрос сведений о среднемесячных платежах в части\nдополнения возможностью запроса сведений о запрете (снятии запрета);\n4. добавлена возможность пакетного запроса сведений (до 10 субъектов\nв одном запросе).\n\nАдрес базового URL API тестовой системы:\n\u003chttps://reports.demo.nbki.ru/qbch/\u003e\n\nАдрес базового URL API тестовой системы, планируемой к выпуску:\n\u003chttps://reports.test-alfa.nbki.ru/qbch/\u003e\n\nАдрес базового URL API версии 1.3 промышленной системы:\n\u003chttps://ssp.nbki.ru/qbch/\u003e\n\nАдрес базового URL API версии 2.0 промышленной системы:\n\u003chttps://ssp.nbki.ru/qbch/v2_0/\u003e\n\nДля подключения требуется зарегистрированный через ЛК сертификат\nи зачастую дополнительная привязка через Службу поддержки.\n\n## Подготовка запросов\n\nДля небольшого использования по подготовке и учету сделанных запросов\nприлагается файл Microsoft Excel с макросами `Api6775.xslm` в папке\n[XSLM](XSLM).\n\nКак альтернативу Excel можно рассмотреть другой проект по составлению\nшаблонных XML-запросов - \u003chttps://github.com/diev/ReplForms\u003e.\nДля этой программы положен файл шаблона в папку [Templates](Templates).\n\nНыне запросы ССП могут быть только в режиме одного окна,\nчто определяется значением параметра `ТипЗапроса`:\n\n* ТипЗапроса=\"`2`\" – запрашивает одно окно КБКИ.\n\nСНИЛС требуется указывать по формату `\\d\\d\\d-\\d\\d\\d-\\d\\d\\d \\d\\d`.\n\nХэшКод требуется переводить в нижний регистр `[\\da-f]{64}`.\n\n## Config\n\nПри первом запуске будет создан файл настроек `Api6775.config.json`\n(в папке с программой) с параметрами по умолчанию.\nОткорректируйте его перед новым запуском:\n\n* `MyThumbprint` = отпечаток вашего сертификата (прописанного в КБКИ\nдля подключения к их серверу), который должен быть в Хранилище\nсертификатов и у вас должен быть ключ (и PIN, если назначен);\n* `VerboseClient` = отображать содержимое вашего сертификата\n(для наглядности);\n* `ServerAddress` = url сервера для подключения;\n* `ServerThumbprint` = отпечаток сертификата сервера (опционально);\n* `ValidateTls` = проверять действительность сертификатов TLS\n(по срокам действия, цепочки и т.п.);\n* `ValidateThumbprint` = проверять отпечаток сервера (отключите,\nесли не знаете `ServerThumbprint`);\n* `VerboseServer` = отображать содержимое сертификата сервера\n(для наглядности);\n* `UseProxy` = использовать прокси;\n* `ProxyAddress` = url прокси-сервера (опционально);\n* `SignFile` = подписывать запросы в программе (если СКЗИ для\nподписывания и доступ в Интернет для обмена совмещены на одном АРМ);\n* `CleanSign` = удалять подписи ответов в программе (на диске\nбудут сохранены оба файла - `.xml` и `.xml.sig`);\n* `MaxRetries` = число попыток с предписанным интервалом в 1 сек.,\nчтобы получить сведения по запросу;\n* `DirSource` = папка и маска файлов с исходными запросами для пакетной\nобработки (должна существовать, чтобы при запуске без параметров, файлы\nбрались оттуда). Пример: `OUT\\*.xml` (не забывайте об удвоении `\\\\` в\nфайлах формата JSON);\n* `DirRequest` = папка+файл для отправленных запросов, где\nпапка+файл - это путь к создаваемому файлу, где могут быть сделаны\nавтоподстановки (в любом порядке и количестве - и в имени папки, и в\nимени файла):\n  * `{name}` = имя исходного файла без расширения;\n  * `{date}` = текущая дата в формате `ГГГГ-ММ-ДД`;\n  * `{guid}` = ИдентификаторЗапроса из исходного XML;\n* `DirResult` = папка+файл для полученных квитанций;\n* `DirAnswer` = папка+файл для полученных сведений;\n* `CspTest` = путь к программе КриптоПро `csptest.exe` (опционально);\n* `CspTestSignFile` = команда с параметрами для подписи запросов в\nпрограмме, где:\n  * `%1` = исходный файл XML;\n  * `%2` = подписанный файл XML.sig для отправки;\n  * `%3` = будет подставлено значение `MyThumbprint` для выбора\nсертификата в Хранилище для подписи.\n\nПример рабочего конфига:\n\n```json\n{\n  \"MyThumbprint\": \"2756273e9e3c99ee435ffeaa79505b10214321c8\",\n  \"VerboseClient\": true,\n  \"ServerAddress\": \"https://ssp.nbki.ru/qbch/v2_0/\",\n  \"ServerThumbprint\": \"18042E6D06AE9F05B639DF511A8583FEDE72784D\",\n  \"ValidateTls\": true,\n  \"ValidateThumbprint\": false,\n  \"VerboseServer\": true,\n  \"UseProxy\": false,\n  \"ProxyAddress\": \"http://192.168.2.1:3128\",\n  \"SignFile\": true,\n  \"CleanSign\": true,\n  \"MaxRetries\": 10,\n  \"DirSource\": \"OUT\\\\*.xml\",\n  \"DirRequests\": \"Requests\\\\{name}.{date}.{guid}.request.xml\",\n  \"DirResults\": \"Results\\\\{name}.{date}.{guid}.result.xml\",\n  \"DirAnswers\": \"Answers\\\\{name}.{date}.{guid}.answer.xml\",\n  \"CspTest\": \"C:\\\\Program Files\\\\Crypto Pro\\\\CSP\\\\csptest.exe\",\n  \"CspTestSignFile\": \"-sfsign -sign -in %1 -out %2 -my %3 -add -addsigtime\"\n}\n```\n\n## Usage\n\nПредоставление сведений о среднемесячных платежах субъектов\nкредитных историй:\n\n    Api6775 запрос параметры\n\nРегистр командной строки неважен. Ниже запросы (команды) для\nудобства указаны в верхнем регистре, а файлы - в нижнем.\n\nОбычно программе нужен только первый файл (или guid), а последующие\nв параметрах она создает с указанными именами и полученной информацией.\n\n**dlput** – передача от КБКИ данных, необходимых для формирования\nи предоставления пользователям кредитных историй сведений о\nсреднемесячных платежах Субъекта.\n\n    Api6775 DLPUT qcb_put.xml result.xml\n\n**dlrequest** – запрос сведений о среднемесячных платежах Субъекта.\nПараметры: `request.xml[.sig] result.xml`\n(`result.xml` будет создан с результатом операции).\n\n    Api6775 DLREQUEST request.xml result.xml\n\n**dlanswer** – получение сведений о среднемесячных платежах Субъекта\nпо идентификатору ответа.\n\n    Api6775 DLANSWER n6c80c1c8-f620-491c-994a-6886706d85dc answer.xml\n    Api6775 DLANSWER result.xml answer.xml\n\n**dlputanswer** – получение информации о результатах загрузки данных,\nнеобходимых для формирования и предоставления пользователям кредитных\nисторий сведений о среднемесячных платежах Субъекта, в базу данных КБКИ.\nПараметры: `id answer.xml` (вместо `id` можно подставить `result.xml`\nс ним из предыдущей операции, `answer.xml` будет создан с ответом).\n\n    Api6775 DLPUTANSWER 945cb186-0d50-45ff-8823-797942987638 answer.xml\n    Api6775 DLPUTANSWER result.xml answer.xml\n\n**certadd** – добавление нового сертификата абонента.\n\n    Api6775 CERTADD A6563526-A3F3-4D4E-A923-E41E93F1D921 cert.cer cert.cer.sig result.xml\n\n**certrevoke** – отзыв сертификата абонента.\nПараметры: `id cert.cer sign.sig result.xml`\n(`result.xml` будет создан с результатом операции).\n\n    Api6775 CERTREVOKE A6563526-A3F3-4D4E-A923-E41E93F1D921 cert.cer cert.cer.sig result.xml\n\n## Пример получения ССП и СЗ в конфигурации с наложением ЭП программой\n\nПолучить новый GUID (пусть в данном примере\n`6d20a9fd-7bce-4480-bf56-a66932876bf7`).\nПодготовить файл запроса `request.xml`, где будет этот\n`ИдентификаторЗапроса=\"6d20a9fd-7bce-4480-bf56-a66932876bf7\"`.\nОтправить файл командой `dlrequest`:\n\n    Api6775 DLREQUEST request.xml result.xml\n\nПосмотреть полученный (в случае успеха передачи) файл `result.xml`.\nТам будет строка вида (одной строкой) с ответом на наш запрос:\n\n    \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n    \u003cРезультат Версия=\"2.0\" ОГРН=\"1077333000003\"\u003e\n    \u003cИдентификаторОтвета\n    ИдентификаторЗапроса=\"ef15a678-637f-11ea-83b8-21758a33c94a\"\n    ДатаЗапроса=\"2024-07-14\"\u003e\n    6afbdd01-6380-11ea-83b8-21758a33c94a\u003c/ИдентификаторОтвета\u003e\n    \u003c/Результат\u003e\n\nВот этот идентификатор ответа надо через некоторое время\nотправить командой для получения ответного файла с ССП:\n\n    Api6775 DLANSWER b17c7a39-359e-4e7c-941d-668e2e957a7c answer.xml\n\nДругой вариант проще - запустить запрос с файлом из предыдущего этапа -\nпрограмма возьмет ИдентификаторОтвета из него сама:\n\n    Api6775 DLANSWER result.xml answer.xml\n\nИли еще проще - использовать расширение API (см.ниже).\n\nПолученный файл `answer.xml` содержит искомую информацию с ССП.\n\n## Расширение API дополнительными командами\n\nОтправка запроса (`dlrequest`), получение квитанции и сведений\n(`dlanswer`), создание текстового отчета (`report`) за один запуск -\nкоманда `auto`:\n\n    Api6775 AUTO request.xml result.xml answer.xml report.txt\n\nПакетная обработка запросов (`auto`) из папки за один запуск -\nкоманда `dir` (это и действие по умолчанию, если параметров не указано\nвовсе, но есть папка `DirSource` в конфиге, а также там указаны папки\n`DirRequest`, `DirResult`, `DirAnswer`):\n\n    Api6775 DIR source request result answer report\n    Api6775\n\nгде:\n\n- `source` - папка с исходными запросами `*.xml` (имена файлов любые -\nрекомендуется использовать ФИО);\n- `request` - папка, куда будут сложены копии исходных файлов,\nпереименованные по маске `ФИО.yyyy-MM-dd.guid.request.xml`:\n  - `ФИО` - исходное имя файла (например, ФИО),\n  - `yyyy-MM-dd` - текущая дата,\n  - `guid` - ИдентификаторЗапроса из XML;\n- `result` - папка, куда будут сложены полученные квитанции,\nпереименованные по аналогичной маске `ФИО.yyyy-MM-dd.guid.result.xml`;\n- `answer` - папка, куда будут сложены полученные сведения,\nпереименованные по аналогичной маске `ФИО.yyyy-MM-dd.guid.answer.xml`.\n- `report` - папка, куда будет положен сводный отчет по полученным сведениям,\nпереименованный по аналогичной маске `ФИО.yyyy-MM-dd.guid.answer.xml.txt`.\n\nПосле получения файла в папке `answer`, соответствующий ему исходный\nфайл будет считаться обработанным и удален из папки `source`, при этом\nон всегда может быть позже найден в папке `request` с датой и guid.\n\nТакже к полученному файлу `answer.xml` будет создан текстовый сводный\nотчет в файле `answer.txt` рядом с ним.\n\nОтдельно его можно получить командой:\n\n    Api6775 REPORT answer.xml report.txt\n\n## Вычисление ХэшКода согласий\n\nДля вычисления ХэшКода служит утилита из состава КриптоПро:\n\n    \"C:\\Program Files (x86)\\Crypto Pro\\CSP\\cpverify.exe\" -mk -alg GR3411_2012_256 file.pdf\n    A36D628486A17D934BE027C9CAF79B27D7CD9E4E49469D97312B40AD6228D26F\n\nДля удобства в Api5704.xlsm добавлены макросы:\n\n- `CalcHash` - указать файл PDF в диалоге, рассчитать (требуется\nустановленный КриптоПро) и скопипастить из окна ввода.\n- `ReadHash` - указать готовый файл TXT в диалоге и скопипастить из\nокна ввода.\n\nТакже добавлен `hash.cmd`, который надо закинуть в папку с PDF, и он\nпосчитает и запишет к каждому PDF рядом файл `.txt`, с кодом уже в\nнижнем регистре.\n\n## Проверка ХэшКода на сервисе Госуслуг\n\n\u003chttps://www.gosuslugi.ru/pgu/eds\u003e\n\n## Requirements\n\n* .NET 8\n* .NET 9\n* CryptoPro CSP\n* Microsoft Excel\n\n## Versioning\n\nНомер версии программы указывается по нарастающему принципу и строится\nот максимальной протестированной версии .NET на момент разработки и даты\nредакции:\n\n* Актуальная версия .NET (9);\n* Год текущей разработки (2024);\n* Месяц без первого нуля и день редакции (624 - 24.06.2024);\n* Номер билда, если указан - просто нарастающее число для внутренних отличий.\n\nПродукт развивается для собственных нужд, а не по коробочной\nстратегии, и поэтому *Breaking Changes* могут случаться чаще,\nчем это принято в *SemVer*. Поэтому проще по датам актуализации кода.\n\nПри обновлении программы рекомендуется сохранить предыдущий конфиг,\nудалить его из папки с программой, чтобы она создала новый, перенести\nнеобходимые старые значения в новый конфиг перед новым запуском\nпрограммы.\n\n## License\n\nLicensed under the [Apache License, Version 2.0](LICENSE).\nВы можете использовать эти материалы под свою ответственность.\n\n[![Telegram](https://img.shields.io/badge/t.me-dievdo-blue?logo=telegram)](https://t.me/dievdo)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiev%2Fapi5704","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiev%2Fapi5704","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiev%2Fapi5704/lists"}