Заявление о снятии с учета/переуступке контракта (кредитного договора)
Для обращения к ресурсу необходимо отправлять запрос на:
Текущий тестовый контур
https://edupirfintech.sberbank.ru:9443
Новый тестовый контур
https://iftfintech.testsbi.sberbank.ru:9443
Промышленный контур
https://fintech.sberbank.ru:9443
Ресурс /v1/contract-close-applications
Ресурс позволяет отправить в Банк Заявление о переуступке/снятии с учета контракта (кредитного договора).
Шаги
1. Получить AccessToken.
2. Сформировать ЭП.
3. Отправить запрос.
4. Получить статус.
5. Получить документ
Для создания запроса необходимо отправить POST-запрос (/v1/contract-close-applications), в котором передать авторизационный токен к данным собственной/дочерней организации (Access Token) и реквизиты запроса переуступки/снятия валютного контракта. Авторизационный токен передается в параметре Authorization заголовка запроса.
Чтобы получить доступ к ресурсу, необходимо передать в scope сервис CONTRACT_CLOSE_APPLICATION
.
Модель запроса и ответа
Наименование | Описание |
---|---|
Параметры заголовка | |
Authorization (String) | Access token собственной/дочерней организации, полученный через SSO Пример: Bearer f8ad3141-b7e8-4924-92de-3de4fd0a464e-1 |
Параметры тела запроса | |
ContractCloseApplication { | |
additionalInfo (string, optional) | Дополнительная информация (комментарий) пользователя, |
authPersonName (string) | ФИО ответственного лица, |
authPersonTelfax (string) | Телефон ответственного лица, |
bankComment (string, optional, read only) | Банковский комментарий к статусу документа, |
bankControlStatementType (string) | Тип ВБК= [ON_CONTRACT , ON_CREDIT ] stringEnum:"ON_CONTRACT", "ON_CREDIT" , |
bankStatus (string, optional, read only) | Статус документа, |
bfAttachments (Array[BfAttachment], optional) | Прикрепленные большие файлы, |
closeReasonCode (string) | Код основания для снятия контракта с учета, |
contractBankNumber (string) | Номер контракта (кредитного договора), установленный Банком (УНК), |
contractDate (string, optional) | Дата контракта (кредитного договора), |
contractNumber (string, optional) | Номер контракта (кредитного договора), |
date (string) | Дата составления документа, |
digestSignatures (Array[Signature], optional) | Электронные подписи по дайджесту документа, |
externalId (string) | Идентификатор документа в организации-партнере, |
failReasons (Array[FailReason], optional, read only) | Причины отказа в части данных контратка (кредитного договора), |
number (string, optional) | Номер документа, |
otherBankInfo (string, optional) | Наименование банка, в который переводится контракт, |
reasonDocDate (string, optional) | Дата документа, подтверждающего уступку, |
reasonDocNumber (string, optional) | Номер документа, подтверждающего уступку, |
residentBuilding (string, optional) | Корпус/строение организации-резидента, |
residentCity (string, optional) | Город организации-резидента, |
residentDistrict (string, optional) | Район организации-резидента, |
residentFlat (string, optional) | Номер офиса организации-резидента, |
residentHouse (string, optional) | Номер дома организации-резидента, |
residentKpp (string, optional) | КПП организации-резидента, |
residentName (string, optional) | Наименование организации-резидента, |
residentOgrn (string, optional) | ОГРН организации-резидента, |
residentRegDate (string, optional) | Дата внесения организации-резидента в государственный реестр, |
residentSettlementName (string, optional) | Населенный пункт организации-резидента, |
residentState (string, optional) | Субъект РФ организации-резидента, |
residentStreet (string, optional) | Улица организации-резидента, |
residentTaxNumber (string, optional) | ИНН организации-резидента |
}BfAttachment { | |
fileId (string, optional) | Уникальный идентификатор файла, |
fileName (string, optional, read only) | Имя файла |
}Signature { | |
base64Encoded (string) | Значение электронной подписи, закодированное в Base64, |
certificateUuid (string) | Уникальный идентификатор сертификата ключа проверки электронной подписи (UUID) |
}FailReason { | |
docField (string, optional) | Поле документа, |
reasonComment (string, optional) | Правило заполнения/замечания, |
reasonId (string, optional) | Код причины отказа, |
returnComment (string, optional) | Комментарий |
} |
Пример запроса
{
"authPersonName": "Иванов Иван Иванович",
"authPersonTelfax": "4955005550",
"bankControlStatementType": "ON_CONTRACT",
"closeReasonCode": "6.1.3",
"contractBankNumber": "21080003/1481/1948/3/1",
"date": "2022-01-15",
"bfAttachments": [
{
"fileId": "f6735a79-3c8d-4f57-b5bf-cc8a21024ff9"
}
],
"reasonDocDate": "2018-12-31",
"reasonDocNumber": "1",
"residentBuilding": "1",
"residentCity": "Воронеж",
"residentDistrict": "Воронежский",
"residentFlat": "1",
"residentHouse": "2",
"residentKpp": "222201001",
"residentName": "Общество с ограниченной ответственностью \"Клиент\"",
"residentOgrn": "380123456789012",
"residentRegDate": "2018-12-31",
"residentSettlementName": "Воронеж",
"residentState": "Воронежская область",
"residentStreet": "Воронежская",
"residentTaxNumber": "7707083893",
"digestSignatures": [
{
"base64Encoded": "HlaeIHXXEcGT1bFxo1NlpAzpr+kJ2IQrcxVdvDTep6xjsmD1FDb+6NIyLT+/T24S0mPfVCU75sieOMt71TBS7w==",
"certificateUuid": "88da0266-be94-4bd0-ab74-a35948a3d6b6"
}
],
"externalId": "1dd4ae43-fde7-4388-beb3-da3156be0ce7"
}
Для получения значения параметра contractBankNumber необходимо выполнить запрос актуальной ВБК из Банка, используя ресурс /v1/bank-control-statements/reg-curr-contracts/{externalId}
Значения closeReasonCode
Значение | Описание |
---|---|
6.1.1 | Перевод из банка УК контракта (кредитного договора) на обслуживание в другой уполномоченный банк (включая перевод из одного филиала в другой филиал банка УК, из головного офиса банка УК в филиал банка УК, из филиала банка УК в головной офис банка УК), а также при закрытии резидентом всех расчетных счетов в банке УК. |
6.1.2 | Исполнение сторонами всех обязательств по контракту (кредитному договору), включая исполнение обязательств третьим лицом. |
6.1.3 | Уступка резидентом требования по контракту (кредитному договору) другому лицу - резиденту либо перевод долга резидентом по контракту (кредитному договору) на другое лицо - резидента. |
6.1.4 | Уступка резидентом требования по контракту (кредитному договору) нерезиденту либо перевод долга резидентом по контракту (кредитному договору) на нерезидента. |
6.1.5 | Исполнение (прекращение) обязательств по контракту (кредитному договору) по иным, не указанным в подпункте 6.1.2 пункта 6.1 Инструкции № 181-И, основаниям, предусмотренным законодательством Российской Федерации. |
6.1.6 | Прекращение оснований, требующих в соответствии с Инструкцией № 181-И постановки на учет контракта (кредитного договора), в том числе вследствие внесения соответствующих изменений и (или) дополнений в контракт (кредитный договор), а также в случае если контракт (кредитный договор) был ошибочно принят на учет при отсутствии в контракте (кредитном договоре) оснований, требующих его принятия на учет. |
Передача электронной подписи вместе с документом
Для передачи ЭП под документом используется массив digestSignatures, в котором передаются элементы типа Signature (все поля обязательны):
Наименования поля | Описания поля | Пример |
---|---|---|
base64Encoded (string) | Значение ЭП документа | HlaeIHXXEcGT1bFxo1NlpAzpr+kJ2IQrcxVdvDTep6xjsmD1FDb+6NIyLT+/T24S0mPfVCU75sieOMt71TBS7w== |
certificateUuid (string) | Идентификатор сертификата, использованного при создании ЭП ( можно узнать, обратившись к ресурсу /v1/crypto) | 22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6 |
С документом «Переуступка/Снятие с учета Валютного контракта» можно передать одну или две электронных подписей (или не передавать при отсутствии ЭП) вместе с реквизитами создаваемого документа.
Если ЭП передана/ы в API, то они сохраняются вместе с документом, а сам документ продвигается дальше по своему жизненному циклу.
Если ЭП не была/и передана/ы, то документ сохраняется в своем начальном статусе и ожидает дальнейшего подписания в интерфейсе СББОЛ.
Документ может быть подписан следующими наборами подписей:
одна (единственная) подпись;
первая и вторая подписи.
При этом подписант, обладающий полномочием единственной подписи, не может «сочетаться» с подписантом, владеющим первой или второй подписью.
Очередность наложения ЭП при наложении первой и второй подписей не имеет значения, состав полей дайджеста не изменяется. Тип подписи указывается в настройках криптопрофиля, когда пользователь Партнера создается в Банке.
Теги дайджеста должны быть отсортированы по алфавиту.
В таблице bfAttachments UUID-ы сортируются по возрастанию.
В дайджесте не указываются значения number и блок linkedDocs.
Формат дайджеста
Наименование поля | Описание поля | Пример |
---|---|---|
additionalInfo | Дополнительная информация (комментарий) пользователя | Доп. инфо |
authPersonName | ФИО ответственного лица | Иванов Иван Иванович |
authPersonTelfax | Телефон ответственного лица | 4955005550 |
bankControlStatementType | Тип ВБК | ON_CONTRACT |
ON_CONTRACT - контракт | ||
ON_CREDIT - кредитный договор | ||
reasonDocDate | Дата документа, подтверждающего услугу | 2018-12-31 |
reasonDocNumber | Номер документа, подтверждающего услугу | 1 |
date | Дата документа | 2022-01-15 |
externalId | Идентификатор документа в организации-партнере | 1dd4ae43-fde7-4388-beb3-da3156be0ce7 |
closeReasonCode | Причина снятия с учета (в блоке только одна из причин (reason6XX) может принимать значение true) | 6.1.3 |
contractBankNumber | Номер контракта (кредитного договора), установленный Банком (УНК) | 21080003/1481/1948/3/1 |
residentName | Наименование организации-резидента | "Общество с ограниченной ответственностью "Клиент" |
residentKpp | КПП организации-резидента | 222201001 |
residentOgrn | ОГРН организации-резидента | 380123456789012 |
residentRegDate | Дата внесения в государственный реестр | 2018-12-31 |
residentTaxNumber | ИНН организации-резидента | 7707083893 |
residentHouse | Корпус/строение | 2 |
residentCity | Город организации-резидента | Воронеж |
residentDistrict | Район организации-резидента | Воронежский |
residentFlat | Номер офиса организации-резидента | 1 |
residentBuilding | Корпус/строение организации-резидента | 1 |
residentSettlementName | Населенный пункт | Воронеж |
residentState | Субъект РФ | Воронежская область |
residentStreet | Улица | Воронежская |
Table=BfAttachments | Значение указывается при наличии UUID-ов больших файлов | |
fileId | UUID больших файлов | 1dd4ae43-fde7-4388-beb3-da3156be0ce7 |
# | Разделитель значений UUID-ов больших файлов |
Пример дайджеста
additionalInfo=Дополнительная информация
authPersonName=Иванов Иван Иванович
authPersonTelfax=4955005550
bankControlStatementType=ON_CONTRACT
closeReasonCode=6.1.3
contractBankNumber=21080003/1481/1948/3/1
date=2022-01-15
externalId=1dd4ae43-fde7-4388-beb3-da3156be0ce7
reasonDocDate=2018-12-31
reasonDocNumber=1
residentBuilding=1
residentCity=Воронеж
residentDistrict=Воронежский
residentFlat=1
residentHouse=2
residentKpp=222201001
residentName=Общество с ограниченной ответственностью "Клиент"
residentOgrn=380123456789012
residentRegDate=2018-12-31
residentSettlementName=Воронеж
residentState=Воронежская область
residentStreet=Воронежская
residentTaxNumber=7707083893
TABLES
Table=BfAttachments
fileId=1dd4ae43-fde7-4388-beb3-da3156be0ce7
#
Ресурс /v1/contract-close-applications/{externalId}/state
Ресурс позволяет получить статус ранее отправленного заявления.
Шаги
1. Получить AccessToken.
2. Отправить запрос
Для получения статуса необходимо отправить GET-запрос (/v1/contract-close-applications/{externalId}/state), в котором передать авторизационный токен к данным собственной/дочерней организации (Access Token) и идентификатор документа (externalId). Авторизационный токен передается в параметре Authorization заголовка запроса.
Чтобы получить доступ к ресурсу, необходимо передать в scope сервис CONTRACT_CLOSE_APPLICATION
.
Модель запроса
Наименование | Описание |
---|---|
Параметры заголовка | |
Authorization (String) | Access token, полученный через SSO Пример: Bearer f8ad3141-b7e8-4924-92de-3de4fd0a464e-1 |
Параметры запроса | |
externalId (String) | Идентификатор документа, присвоенный пользователем |
Пример запроса
curl -X GET --header 'Accept: /' --header
'Authorization: Bearer f8ad3141-b7e8-4924-92de-3de4fd0a464e-1'
'http://edupirfintech.sberbank.ru:9443/fintech/api/v1/contract-close-applications/
ffffffff-fffa-458e-ad92-fff9497303ba/state'
Модель ответа
Наименование | Описание |
---|---|
DocState | |
bankComment (string, optional, read only) | Банковский комментарий к статусу документа, |
bankStatus (string, optional) | Статус документа, |
channelInfo (string, optional, read only) | Комментарий, специфичный для документа, полученного по данному каналу, |
Пример ответа
{
"bankStatus":"CHECKERROR",
"bankComment":"Загрузите документы, подтверждающие выбранное основание\n",
"channelInfo":null
}
Возможные статусы
Код состояние документа | Наименование статуса | Назначение |
---|---|---|
Промежуточные статусы/Продолжать опрашивать | ||
ACCEPTED | Принят | Электронный документ принят на стороне Банка |
ACCEPTED_BY_ABS | Принят АБС | Электронный документ был принят к обработке в АБС Банка |
CREATED | Создан | Документ записан в БД, проверки не выполнялись |
DELIVERED | Доставлен | Запрос доставлен в ДБО и взят в обработку |
EXPORTED | Выгружен | Документ выгружен в АБС для дальнейшей обработки |
TRIED_BY_CFE | Проверяется ВК | Электронный документ на проверке Валютного контроля |
Окончательные статусы/Прекратить опрос | ||
INVALIDEDS | ЭП/АСП не верна | Проверки документа привели к неуспешному результату |
CHECKERROR | Ошибка контроля | |
REQUISITEERROR | Ошибка реквизитов | Логические проверки документа привели к неуспешному результату |
REFUSEDBYABS | Отказан АБС | Запрос доставлен в ДБО и не прошел проверку |
REFUSED_BY_CFE | Отказан ВК | Электронный документ был отклонен Валютным контролем |
Окончательные(Успешные) статусы/Прекратить опрос | ||
ACCEPTED_BY_CFE | Принят ВК | Электронный документ был принят Валютным контролем |
Ресурс /v1/contract-close-applications/{externalId}
Ресурс позволяет получить атрибуты ранее отправленного заявления.
Шаги
1. Получить AccessToken.
2. Отправить запрос.
Для получения документа необходимо отправить GET-запрос (/v1/contract-close-applications/{externalId}), в котором необходимо передать авторизационный токен к данным собственной/дочерней организации (Access Token) и внешний идентификатор поручения. Авторизационный токен передается в параметре Authorization заголовка запроса.
Чтобы получить доступ к ресурсу, необходимо передать в scope сервис CONTRACT_CLOSE_APPLICATION
.
Модель запроса
Наименование | Описание |
---|---|
Параметры заголовка | |
Authorization (String) | Access token, полученный через SSO Пример: Bearer f8ad3141-b7e8-4924-92de-3de4fd0a464e-1 |
Параметры запроса | |
externalId (String) | Идентификатор документа, присвоенный сервисом |
Пример:
curl -X GET --header "Accept: /" --header
'Authorization: Bearer f8ad3141-b7e8-4924-92de-3de4fd0a464e-1'
'https://edupirfintech.sberbank.ru:9443/fintech/api/v1/
contract-close-applications/ffffffff-fffa-458e-ad92-fff9497303ba/state'
Модель ответа
Соответствует модели запроса и ответа /v1/contract-close-applications.
Дополнительная информация
Подписание запроса транспортной подписью
Content-Type может содержать одно из двух значений:
- application/json – запрос без подписи
- application/jose – запрос, подписанный транспортной подписью
Если Content-Type имеет значение application/jose, то запрос должен содержать данные (реквизитный состав платежного документа) в виде компактной сериализации RFC 7515: JSON Web Signature (JWS).
JWS состоит из:
1. Заголовка (Header)
2. JSON-документа с реквизитным составом платежного поручения (Payload)
3. Подписи запроса (Signature)
Формирование компактной сериализации JWS
JWS формируется из трех составляющих:
Base64Url(Header) || ’.’ || Base64Url(Payload) || ’.’ || Base64Url(Signature)
Signature - это подпись данных приватной частью ключевой пары клиента (используется приватный ключ парный сертификату клиента с UUID, указанному в Заголовке (Header) в параметре kid).
Подпись вычисляется по алгоритму указанному в Заголовке (Header) в параметре alg, в данном случае gost34.10-2012, и вычисляется от исходных данных:
Base64Url(Header) || ‘.’ || Base64Url(Payload).
Формирование исходных данных для вычисления подписи описано в спецификации RFC 7515: JSON Web Signature (JWS).
Следует отметить, что при кодировании JWS используется преобразование Base64Url, отличающееся от Base64 преобразования.
Условно это преобразование можно представить следующим образом:
Base64Url(x) := Base64(x).Split(‘=’)[0].Replace(‘+’, ’-’).Replace(‘/’, ’_’)
здесь функция Split(x), разбивает строку на части ([i] означает взятие i–ой части), используя символ разделитель x, функция Replace(x,y) заменяет все вхождения символа x на символ y.
Преобразование BASE64URL, отличается от BASE64 преобразования:
- Используются другие вспомогательные символы Base 64 Encoding with URL and Filename Safe Alphabet.
BASE64URL | BASE64 |
---|---|
- (minus) | + |
_ (underline) | / |
- В BASE64URL не используется (опускается) padding, т.е. не добавляются знаки ‘=’ на конце закодированного содержимого Padding of Encoded Data.
В ответе на запрос сервер возвращает JSON-документ, который содержит реквизитный состав подготовленного черновика рублевого платежного поручения в статусе Создан.
Коды возврата
Код возврата | Описание кода возврата | Причина возникновения | |
---|---|---|---|
200 (GET-запрос) | ОК | ||
201 (POST-запрос) | CREATED | ||
Создан | |||
400 | DESERIALIZATION_FAULT | ||
Неверный формат запроса | Неверный формат запроса | ||
WORKFLOW_FAULT | |||
Для внешнего сервиса недоступны операции по счету: 40702810ХХХХХХХХХХХХ | Для внешнего сервиса недоступны операции по счету: счет не добавлен в список разрешенных в оферте; внешний сервис заблокирован в СББОЛ; счет указан неверно. Отсутствует доступный открытый рублевый расчетный счет у организации плательщика | ||
Документ с такими реквизитами уже существует | Документ с такими реквизитами уже существует. Проверка по номер документа в течении года. | ||
Не указан идентификатор сертификата подписи | Не указан идентификатор сертификата подписи(параметр kid заголовка JWS) | ||
Некорректный формат параметра kid заголовка JWS | Некорректный формат параметра kid заголовка JWS(ожидается UUID) | ||
VALIDATION_FAULT | |||
Ошибка валидации | Ошибка валидации данных запроса с указанием некорректных значений. Значения полей модели или параметров запроса не соответствуют допустимым и определенным в модели. | ||
SIGN_CHECK_EXCEPTION | |||
Подлинность подписи не установлена/Сертификат не обнаружен или не является активным | Ошибка возникает, если не удалось установить подлинность подписи | ||
401 | UNAUTHORIZED | ||
accessToken not found by value =хххххххх-хххх-хххх-хххх-хххххххххххх-х | Указан некорректный или просроченный access_token. | ||
403 | ACTION_ACCESS_EXCEPTION | ||
Операция не может быть выполнена: доступ к ресурсу запрещен | У пользователя нет прав на использование соответствующего сервиса SberBusinessAPI, доступ к которому не предусмотрен настройками scope; У пользователя отсутствует оферта с внешним сервисом. | ||
415 | JWS_EXCEPTED | ||
В соответствии с текущими настройками сервиса с clientId=%s необходимо использовать запрос в формате JWS Compact Serialization | Ошибка возникает, если в настройках внешних сервисов выставлен флаг "Требуется подпись для внешнего сервиса" | ||
500 | UNKNOWN_EXCEPTION | ||
Внутренняя ошибка сервера | |||
503 | UNAVAILABLE_RESOURCE_EXCEPTION | ||
Сервис временно недоступен | Проводятся технические работы |