Валютный кредитный договор

Для обращения к ресурсу необходимо отправлять запрос на:

Ресурс /v1/bank-control-statements/reg-curr-cred-contracts

Ресурс позволяет создать документ «Валютный кредитный договор с нерезидентом (ВБК в банк)» по собственной/дочерней организации.

Шаги:

1. Получить AccessToken.

2. Сформировать ЭП.

3. Отправить запрос.

4. Получить статус.

5. Получить документ.

Для создания запроса на регистрацию валютного кредитного договора необходимо отправить POST-запрос (/v1/bank-control-statements/reg-curr-cred-contracts), в котором передать авторизационный токен к данным собственной/дочерней организации (Access Token) и реквизиты запроса на регистрацию валютного кредитного договора. Авторизационный токен передается в параметре Authorization заголовка запроса.

Чтобы получить доступ к ресурсу, необходимо передать в scope сервис BANK_CONTROL_STATEMENT.

Модель запроса и ответа

Наименование Описание
Параметры заголовка
Authorization String
Access token собственной/дочерней организации, полученный через SSO.
Пример: Bearer 8190f687-c916-453b-9d68-0ce22f4f3f9d-1
Параметры запроса
CurrCredContract {
actualDebtAmount (number, optional) Сумма фактической задолженности по основному долгу ,
actualDebtCurrencyCode (string, optional) Цифровой код валюты фактической задолженности по основному долгу ,
actualDebtCurrencyName (string, optional) Буквенный ISO-код валюты фактической задолженности по основному долгу ,
amount (number, optional) Сумма контракта ,
bankComment (string, optional, read only) Банковский комментарий к статусу документа ,
bankControlStatementInfo (BankControlStatementInfo) Информация о ведомости банковского контроля ,
bankStatus (string, optional, read only) Статус документа ,
calcDate (string, optional, read only) Дата расчёта ,
collateralAmount (number, optional) Сумма залогового или другого обеспечения ,
contractDate (string) Дата контракта ,
contractEndDate (string, optional) Дата окончания обязательств по контракту ,
contractNumber (string, optional) Номер контракта ,
credRepayPayments (Array[CredRepayPayment], optional) График платежей по кредитному договору ,
creditAttractions (Array[CreditAttraction], optional) Привлечение кредита на синдицированной (консорциональной) основе ,
creditPayPeriodCode (string, optional) Код срока привлечения (предоставления) ,
0 - до 30 дней
1 - от 31 до 90 дней
2 - от 91 до 180 дней
3 - от 181 дня до 1 года
4 - от 1 года до 3 лет
6 - до востребования
7 - от 3 лет до 5 лет
8 - от 5 лет до 10 лет
9 - Свыше 10 лет
currFixInterestRate (number, optional) Фиксированный размер процентной ставки ,
currencyCode (string, optional) Цифровой код валюты контракта ,
currencyEarningsAmount (number, optional) Сумма, подлежащая погашению за счёт валютной выручки ,
date (string) Дата составления документа ,
decAmount (number, optional, read only) Сумма уменьшения задолженности по основному долгу по иным основаниям ,
digestSignatures (Array[Signature], optional) Электронные подписи по дайджесту документа ,
enrollAmount (number, optional, read only) Сумма денежных средств, переведённых (зачисленных) в счёт погашения основного долга ,
finalDebtAmount (number, optional, read only) Задолженность по основному долгу на дату расчёта (на дату снятия с учета кредитного договора) ,
finalDebtСurrencyCode (string, optional, read only) Цифровой код страны ,
finalDebtСurrencyName (string, optional, read only) Буквенный ISO-код валюты ,
hasDirectInvesting (boolean, optional) Признак наличия отношений прямого инвестирования ,
hasSchedulePaymentsInCredit (boolean, optional) Основания для заполнения графика платежей (п. 8.2 181-И) ,
incAmount (number, optional, read only) Сумма увеличения задолженности по основному долгу по иным основаниям ,
increaseRate (number, optional) Размер процентной надбавки ,
interestRateMethod (string, optional) Метод определения процентной ставки ,
liborRate (string, optional) Код ставки Libor ,
loanAmount (number, optional, read only) Сумма денежных средств, полученных (предоставленных) по кредиту (займу) ,
nonResidents (Array[BankControlStatementNonResident], optional) Информация о нерезидентах ,
number (string, optional) Номер документа ,
otherPayments (string, optional) Иные платежи, предусмотренные кредитным договором ,
otherRateMethod (string, optional) Описание метода определения ставки ,
tranches (Array[CurrCredTranche], optional) Информация о траншах по кредиту ,
transferAmount (number, optional) Сумма, подлежащая зачислению на счета за рубежом
}BankControlStatementInfo {
authPersonName (string, optional) ФИО ответственного лица ,
authPersonTelfax (string, optional) Телефон ответственного лица ,
bankCommentAuthor (string, optional, read only) Автор комментария ,
bfAttachments (Array[BfAttachment], optional) Прикреплённые большие файлы ,
chainId (string, optional, read only) Id цепочки ,
creationMode (string) Режим создания ВБК = [ICS_CONTRACT_INFORMATION, ICS_CONTRACT_REGISTRATION, ICS_CREDIT_REGISTRATION]
stringEnum: "ICS_CONTRACT_INFORMATION", "ICS_CONTRACT_REGISTRATION", "ICS_CREDIT_REGISTRATION",
currencyName (string, optional) Буквенный ISO-код валюты контракта ,
externalId (string) Идентификатор документа в организации-партнёре ,
failReasons (Array[FailReason], optional, read only) Причины отказа ,
isActual (boolean, optional, read only) Признак актуальности ВБК ,
unk (string, optional)
}CredRepayPayment {
condition (string, optional) Особые условия ,
currencyCode (string) Цифровой код валюты платежа ,
currencyName (string, optional) Буквенный ISO-код валюты платежа ,
interestAmount (number, optional) Сумма платежа по процентам ,
interestDate (string, optional) Дата платежа (процентный) ,
principalAmount (number, optional) Сумма платежа по основному долгу ,
principalDate (string, optional) Дата платежа (основной долг)
}CreditAttraction {
amount (number, optional) Сумма привлечения резидентом кредита, предоставленного нерезидентами ,
currencyCode (string, optional) Цифровой код валюты привлечения резидентом кредита, предоставленного нерезидентами ,
currencyName (string, optional) Буквенный ISO-код валюты привлечения резидентом кредита, предоставленного нерезидентами ,
hasPercentType (boolean) Доля или сумма (false - сумма, true - доля) ,
interestCredit (number, optional) Доля в общей сумме кредита, % ,
nonResidentCountryCode (string, optional) Цифровой код страны нерезидента ,
nonResidentCountryName (string, optional) Наименование страны нерезидента ,
nonResidentName (string, optional) Наименование нерезидента
}Signature {
base64Encoded (string) Значение электронной подписи, закодированное в Base64 ,
certificateUuid (string) Уникальный идентификатор сертификата ключа проверки электронной подписи (UUID)
}BankControlStatementNonResident {
countryCode (string) Цифровой код страны ,
countryName (string) Наименование страны ,
name (string) Наименование иностранного контрагента
}CurrCredTranche {
amount (number, optional) Сумма ,
currencyCode (string, optional) Цифровой код валюты ,
currencyName (string, optional) Буквенный ISO-код валюты ,
entryDate (string, optional) Ожидаемая дата поступления ,
periodCode (string, optional) Код срока привлечения (предоставления) ,
0 - до 30 дней
1 - от 31 до 90 дней
2 - от 91 до 180 дней
3 - от 181 дня до 1 года
4 - от 1 года до 3 лет
6 - до востребования
7 - от 3 лет до 5 лет
8 - от 5 лет до 10 лет
9 - Свыше 10 лет
}BfAttachment {
fileId (string, optional) Уникальный идентификатор файла ,
fileName (string, optional, read only) Имя файла
}FailReason {
docField (string, optional) Поле документа ,
reasonComment (string, optional) Правило заполнения/замечания ,
reasonId (string, optional) Код причины отказа ,
returnComment (string, optional) Комментарий
}

Пример:

{
   "actualDebtAmount":1.01,
   "actualDebtCurrencyCode":"840",
   "actualDebtCurrencyName":"USD",
   "amount":1.01,
   "bankComment":"string",
   "bankControlStatementInfo":{
      "authPersonName":"Иванов Иван Иванович",
      "authPersonTelfax":"4955005550",
      "bankCommentAuthor":"Иванов Иван Иванович",
      "bfAttachments":[
         {
            "fileId":"22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6",
            "fileName":"SB_7718830000_40702810038290010000_T18.txt"
         }
      ],
      "chainId":"1234567890123",
      "creationMode":"ICS_CONTRACT_INFORMATION",
      "currencyName":"USD",
      "externalId":"22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6",
      "failReasons":[
         {
            "docField":"Номер контракта",
            "reasonComment":"Указан неверно",
            "reasonId":"PS_REST_REJ_PART_2-9",
            "returnComment":"Отказ проверки"
         }
      ],
      "isActual":false,
      "unk":"string"
   },
   "bankStatus":"string",
   "calcDate":"2018-12-31",
   "collateralAmount":1.01,
   "contractDate":"2018-12-31",
   "contractEndDate":"2018-12-31",
   "contractNumber":"123АБВ",
   "credRepayPayments":[
      {
         "condition":"АБВ123",
         "currencyCode":"840",
         "currencyName":"USD",
         "interestAmount":1.01,
         "interestDate":"2018-12-31",
         "principalAmount":1.01,
         "principalDate":"2018-12-31"
      }
   ],
   "creditAttractions":[
      {
         "amount":1.01,
         "currencyCode":"840",
         "currencyName":"USD",
         "hasPercentType":false,
         "interestCredit":1.01,
         "nonResidentCountryCode":"643",
         "nonResidentCountryName":"РОССИЯ",
         "nonResidentName":"Kazan"
      }
   ],
   "creditPayPeriodCode":"1",
   "currFixInterestRate":1.01,
   "currencyCode":"840",
   "currencyEarningsAmount":1.01,
   "date":"2018-12-31",
   "decAmount":1.01,
   "digestSignatures":[
      {
         "base64Encoded":"HlaeIHXXEcGT1bFxo1NlpAzpr+kJ2IQrcxVdvDTep6xjsmD1FDb+6NIyLT+/T24S0mPfVCU75sieOMt71TBS7w==",
         "certificateUuid":"22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6"
      }
   ],
   "enrollAmount":1.01,
   "finalDebtAmount":1.01,
   "finalDebtСurrencyCode":"643",
   "finalDebtСurrencyName":"USD",
   "hasDirectInvesting":false,
   "hasSchedulePaymentsInCredit":false,
   "incAmount":1.01,
   "increaseRate":1.01,
   "interestRateMethod":"1",
   "liborRate":"Л06",
   "loanAmount":1.01,
   "nonResidents":[
      {
         "countryCode":"643",
         "countryName":"РОССИЯ",
         "name":"Kazan"
      }
   ],
   "number":"1",
   "otherPayments":"АБВ123",
   "otherRateMethod":"АБВ123",
   "tranches":[
      {
         "amount":1.01,
         "currencyCode":"840",
         "currencyName":"USD",
         "entryDate":"2018-12-31",
         "periodCode":"1"
      }
   ],
   "transferAmount":1.01
}

Передача электронной подписи вместе с документом

Для передачи ЭП под документом используется массив digestSignatures, в котором передаются элементы типа Signature (все поля обязательны):

Наименования поля Описания поля Пример
base64Encoded (string) Значение ЭП документа HlaeIHXXEcGT1bFxo1NlpAzpr+kJ2IQrcxVdvDTep6xjsmD1FDb+6NIyLT+/T24S0mPfVCU75sieOMt71TBS7w==
certificateUuid (string) Идентификатор сертификата, использованного при создании ЭП ( можно узнать, обратившись к ресурсу /v1/crypto) 22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6

Для документов, создаваемых по собственным счетам, можно передать одну или две электронных подписей (или не передавать при отсутствии ЭП) вместе с реквизитами создаваемого документа.
Если ЭП передана/ы в API, то они сохраняются вместе с документом, а сам документ продвигается дальше по своему жизненному циклу.
Если ЭП не была/и передана/ы, то документ сохраняется в своем начальном статусе и ожидает дальнейшего подписания в интерфейсе СББОЛ.

Документ может быть подписан следующими наборами подписей:

  • одна (единственная) подпись;
  • первая и вторая подписи.

При этом подписант, обладающий полномочием единственной подписи, не может «сочетаться» с подписантом, владеющим первой или второй подписью.

Очередность наложения ЭП при наложении первой и второй подписей не имеет значения, состав полей дайджеста не изменяется. Тип подписи указывается в настройках криптопрофиля, когда пользователь Партнера создается в Банке.

Формирование электронной подписи (ГОСТ 2012)

Алгоритм сортировки дайджеста

Теги дайджеста должны быть отсортированы по алфавиту. В таблице bfAttachments UUID-ы сортируются по возрастанию.
В таблице NonResidents данные сортируются аналогично сортировке в исходном документе. В дайджесте не указываются значения Number и блок linkedDocs.

Формат дайджеста

Наименование поля Описание поля Пример
actualDebtAmount Сумма фактической задолженности по основному долгу 1.00
actualDebtCurrencyCode Цифровой код валюты 840
actualDebtCurrencyName Буквенный ISO-код валюты USD
amount Сумма кредитного договора 1.00
bankControlStatementInfo.authPersonName ФИО ответственного лица Иванов Иван Иванович
bankControlStatementInfo.authPersonTelfax Телефон ответственного лица 4955005550
bankControlStatementInfo.creationMode Режим создания ВБК ICS_CREDIT_REGISTRATION
bankControlStatementInfo.currencyName Буквенный ISO-код валюты кредитного договора USD
bankControlStatementInfo.externalId Идентификатор документа в организации-партнёре c18835bc-c43e-425c-80ba-354d62094e93
collateralAmount Сумма залогового или другого обеспечения 1.00
contractDate Дата кредитного договора 26.09.2019
contractEndDate Дата окончания обязательств по договору 26.09.2019
contractNumber Номер кредитного договора 123АБВ
creditPayPeriodCode Код срока привлечения (предоставления) 1
currFixInterestRate Фиксированный размер процентной ставки 1.0000
currencyCode Цифровой код валюты кредитного договора 840
currencyEarningsAmount умма, подлежащая погашению за счет валютной выручки 1.00
date Дата создания документа по местному времени в формате YYYY-MM-DD 26.09.2019
hasDirectInvesting Признак наличия отношений прямого инвестирования true
hasSchedulePaymentsInCredit Основания для заполнения графика платежей (п. 8.2 181-И) true
increaseRate Размер процентной надбавки 1.0000
interestRateMethod Метод определения процентной ставки 1
liborRate Код ставки Libor Л06
number Номер сформированного документа на стороне клиента 1
otherPayments Иные платежи, предусмотренные кредитным договором АБВ123
otherRateMethod Описание метода определения ставки АБВ123
transferAmount Сумма, подлежащая зачислению на счета за рубежом 1.00
TABLES Значение указывается при наличии UUID-ов больших файлов или данных по платежам/траншам/нерезидентам
Table=BfAttachments Значение указывается при наличии UUID-ов больших файлов
fileId UUID БФ 853b4bf6-2c6e-4020-a18f-289df39f78b8
# Разделитель
Table=CredRepayPayments График платежей по кредитному договору
condition Особые условия АБВ123
currencyCode Цифровой код валюты USD
currencyName Буквенный ISO-код валюты USD
interestAmount Сумма платежа по процентам 1.00
interestDate Дата платежа (процентный) 26.09.2019
principalAmount Сумма платежа по основному долгу 1.00
principalDate Дата платежа (основной долг) 26.09.2019
#
Table=CreditAttractions Привлечение кредита на синдицированной (консорциональной) основе
amount Сумма 1.00
currencyCode Цифровой код валюты 840
currencyName Буквенный ISO-код валюты USD
hasPercentType Доля или сумма true
interestCredit Доля в общей сумме кредита, % 1.00
nonResidentCountryCode Цифровой код страны нерезидента 38
nonResidentCountryName Наименование страны нерезидента Казахстан
nonResidentName Наименование нерезидента Kazan
# Разделитель
Table=NonResidents
countryCode Цифровой код страны 38
countryName Наименование страны Казахстан
name Наименование нерезидента Kazan
# Разделитель
Table=Tranches Информация о траншах по кредиту
amount Сумма транша 1.00
currencyCode Цифровой код валюты транша 840
currencyName Буквенный код валюты USD
entryDate Ожидаемая дата поступления 26.09.2019
periodCode Код срока привлечения 1
# Разделитель

Пример: дайджеста

actualDebtAmount=1.00
actualDebtCurrencyCode=840
actualDebtCurrencyName=USD
amount=1.00
bankControlStatementInfo.authPersonName=Иванов Иван Иванович
bankControlStatementInfo.authPersonTelfax=4955005550
bankControlStatementInfo.creationMode=ICS_CREDIT_REGISTRATION
bankControlStatementInfo.currencyName=USD
bankControlStatementInfo.externalId=c18835bc-c43e-425c-80ba-354d62094e93
collateralAmount=1.00
contractDate=2019-09-26
contractEndDate=2019-09-26
contractNumber=123АБВ
creditPayPeriodCode=1
currFixInterestRate=1.0000
currencyCode=840
currencyEarningsAmount=1.00
date=2019-09-26
hasDirectInvesting=true
hasSchedulePaymentsInCredit=true
increaseRate=1.0000
interestRateMethod=1
liborRate=Л06
number=1
otherPayments=АБВ123
otherRateMethod=АБВ123
transferAmount=1.00
TABLES
Table=BfAttachments
fileId=853b4bf6-2c6e-4020-a18f-289df39f78b8
#
Table=CredRepayPayments
condition=АБВ123
currencyCode=USD
currencyName=USD
interestAmount=1.00
interestDate=2019-09-26
principalAmount=1.00
principalDate=2019-09-26
#
Table=CreditAttractions
amount=1.00
currencyCode=840
currencyName=USD
hasPercentType=true
interestCredit=1.00
nonResidentCountryCode=038
nonResidentCountryName=Казахстан
nonResidentName=Kazan
#
Table=NonResidents
countryCode=038
countryName=Казахстан
name=Kazan
#
Table=Tranches
amount=1.00
currencyCode=840
currencyName=USD
entryDate=2019-09-26
periodCode=1
#

Подписание запроса транспортной подписью (JWS)

Коды возврата

Ресурс /v1/bank-control-statements/{externalId}/state

Ресурс позволяет получить статус отправленного документа.

Шаги:

1. Получить AccessToken.

2. Отправить запрос

Для получения статуса документа необходимо отправить GET-запрос (/v1/bank-control-statements/{externalId}/state), в котором передать авторизационный токен к данным собственной/дочерней организации (Access Token) и идентификатор документа (externalId). Авторизационный токен передается в параметре Authorization заголовка запроса.

Чтобы получить доступ к ресурсу, необходимо передать в scope сервис BANK_CONTROL_STATEMENT.

Модель запроса

Наименование Описание
Параметры заголовка
Authorization String
Access token, полученный через SSO.
Пример: Bearer daf9a14c-821d-4bde-9c10-0e56e63d54a0-1
Параметры запроса
externalId String Идентификатор документа, присвоенный клиентом

Пример:

curl -X GET --header 'Accept: application/json' --header
'Authorization: Bearer daf9a14c-821d-4bde-9c10-0e56e63d54a0-1'
'https://edupirfintech.sberbank.ru:9443/fintech/api/v1/
bank-control-statements/22a6dd81-103a-4d3a-8e9b-0ba4b527f010/state'

Модель ответа

Наименование Описание
DocState
bankComment (string, optional, read only) Банковский комментарий к статусу документа,
bankStatus (string, optional) Статус документа,
channelInfo (string, optional, read only) Комментарий, специфичный для документа, полученного по данному каналу,

Пример:

{
   "bankStatus":"DELIVERED",
   "bankComment":null,
   "channelInfo":null
}

Возможные статусы

Код состояние документа Наименование статуса
Промежуточные статусы/Продолжать опрашивать
ACCEPTED Принят
ACCEPTED_BY_ABS Принят АБС
CREATED Создан
DELIVERED Доставлен
EXPORTED Выгружен
TRIED_BY_CFE Проверяется ВК
WAITSENDDOCUMENT Ожидает досыла документа
Окончательные статусы/Прекратить опрос
INVALIDEDS ЭП/АСП не верна
REQUISITEERROR Ошибка реквизитов
REFUSEDBYABS Отказан АБС
REFUSED_BY_CFE Отказан ВК
Окончательные(Успешные) статусы/Прекратить опрос
ACCEPTED_BY_CFE Принят ВК

Коды возврата

Ресурс /v1/bank-control-statements/reg-curr-cred-contracts/{externalId}

Ресурс позволяет ранее отправленный документ.

Шаги:

1. Получить AccessToken.

2. Отправить запрос.

Для получение ранее отправленного документа необходимо отправить GET-запрос (/v1/bank-control-statements/reg-curr-cred-contracts/{externalId}), в котором передать авторизационный токен к данным собственной/дочерней организации (Access Token) и идентификатор документа (externalId). Авторизационный токен передается в параметре Authorization заголовка запроса.

Чтобы получить доступ к ресурсу, необходимо передать в scope сервис BANK_CONTROL_STATEMENT.

Модель запроса и ответа

Наименование Описание
Параметры заголовка
Authorization String
Access token, полученный через SSO.
Пример: Bearer f8ad3141-b7e8-4924-92de-3de4fd0a464e-1
Параметры запроса
externalId String
Идентификатор документа, присвоенный сервисом

Пример:

curl -X GET --header 'Accept: application/json' --header
'Authorization: Bearer f8ad3141-b7e8-4924-92de-3de4fd0a464e-1'
'https://edupirfintech.sberbank.ru:9443/fintech/api/v1/bank-control-statements/
reg-curr-cred-contracts/22a6dd81-103a-4d3a-8e9b0ba4b527f5f6'

Модель ответа

Соответствует модели запроса и ответа /v1/bank-control-statements/reg-curr-cred-contract

Подписание запроса транспортной подписью (JWS)

Ресурс /v1/bank-control-statements/reg-curr-cred-contracts/list

Ресурс позволяет получить UUID Валютных кредитных контрактов, зарегистрированных в Банке. Пользовательская версия документа, который клиент подписал и отправил в банк (форма постановки на учет контракта или кредитного договора) является первой версией в рамках документа Ведомость банковского контроля. До обработки такой ВБК банком - эта версия является актуальной. После обработки новая версия документа получит признак актуальности, при этом начальная пользовательская версия станет неактуальной. Также, если сам Пользователь захочет внести изменение в ВБК, оформляя заявку (ЗоВИ), также создается новая версия ВБК с признаком актуальности, у предыдущей версии этот признак снимается. Каждое изменение должно быть создано к последней актуальной версии ВБК, поэтому важно знать externalId актуальной версии ВБК.

Шаги:

1. Получить AccessToken.

2. Отправить запрос.

Для создания запроса на получение UUID Валютных кредитных контрактов необходимо отправить GET-запрос (/v1/bank-control-statements/reg-curr-cred-contracts/list), в котором передать авторизационный токен к данным собственной/дочерней организации (Access Token) и реквизиты запроса. Авторизационный токен передается в параметре Authorization заголовка запроса.

Чтобы получить доступ к ресурсу, необходимо передать в scope сервис BANK_CONTROL_STATEMENT.

Модель запроса и ответа

Наименование Описание
Параметры заголовка
Authorization String
Access token, полученный через SSO.
Пример: Bearer f8ad3141-b7e8-4924-92de-3de4fd0a464e-1
Параметры запроса
date Date
Дата создания документа по местному времени (yyyy-MM-dd)
isActual String
Признак актуальности ВБК
false - возвращаются актуальные и архивные идентификаторы ВБК
true - возвращаются актуальные идентификаторы ВБК
page Number
Номер страницы

Пример:

curl -X GET --header "Accept: /" --header
"Authorization: Bearer f8ad3141-b7e8-4924-92de-3de4fd0a464e-1"
"https://edupirfintech.sberbank.ru:9443/fintech/api/v1/bank-control-statements/
reg-curr-cred-contracts/list?date=2019-11 -25&isActual=false&page=1" 

Модель ответа

Наименование Описание
FintechCurrContractsUUID
_links (Array[Link], optional) Ссылки на связанные ресурсы,
externalId (Array[string], optional) ВБК
}Link {
href (string) Абсолютный или относительный адрес,
rel (string) Отношение ссылки к текущей сущности (next, prev)

Пример:

{
   "_links":[
      {
         "href":"? date=2018-03-15&isActual=false&page=3",
         "rel":"next"
      }
   ],
   "externalId":[
      "22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6",
      "26a6dd81-103a-4d3a-8e9b-0ba4b527f5f8",
      "12a6dd31-103a-4d3a-8e9b-0ba4b527f5f4"
   ]
}

Коды возврата

Дополнительная информация

Подписание запроса транспортной подписью

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 преобразования:

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; У пользователя отсутствует оферта с внешним сервисом.
404 NOT_FOUND
Документ с указанным ID не найден Невозможно найти документ с указанным внешним идентификатором.
415 JWS_EXCEPTED
В соответствии с текущими настройками сервиса с clientId=%s необходимо использовать запрос в формате JWS Compact Serialization Ошибка возникает, если в настройках внешних сервисов выставлен флаг "Требуется подпись для внешнего сервиса"
500 UNKNOWN_EXCEPTION
Внутренняя ошибка сервера
503 UNAVAILABLE_RESOURCE_EXCEPTION
Сервис временно недоступен Проводятся технические работы

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней