---
tags: ОР ЛКК
---
# Оформление займа
Протокол: `http` `https`
Адрес: `server/base/hs/api/loanProcessing/{название_метода}`
Отправка запроса происходит после нажатия кнопки расчитать в калькуляторе, если поле **first_design** = Ложь. Иначе - процесс взятия займа через анкету. При успешном запросе возвращает список json. При отсутствии вернёт ошибочный результат
## Начало оформление договора
==POST== `start`
**Параметры**
* client_hash - хэш клиента
* ip
**Тело запроса**
```json=
{
"type": "ConsumerLoan",
"sum":8000,
"period":5,
"type_period":"Month",
"step_period":1
}
```
Данные для тела запроса - то, что выбрал клиент при расчитать, и часть что пришло на лимитах
* type - тип (рассрочка/займ) в зависимости от того на какой закладке калькулятора нажимали кнопку рассчитать. Возможные значения: ==Installments/ConsumerLoan==
**Описание ответа**
```json=
{
"error":false,
"description":"",
"response":{
"result":true,
"description":"",
"contract_num":"З21НвАР008300010",
"text_no_card":"Обратитесь в ближайшее отделление...",
"contract_conditions":{
"insurance_available":false,
"sum":8000,
"insurance_sum":0,
"period":"5 месяцев",
"rate_daily":"0,8% в день",
"rate_annual":"292% в год"
},
"insurance":true,
"next":true
}
}
```
**Параметры**
В случае ошибки - их result подставится в наш error и description
- **contract_num**: номер сформированного договора
- **contract_conditions**: данные условий по конракту
- **insurance_available**: признак доступности страховки у клиента
- **sum**:сумма , в т.ч. сумма страховкиs
- **insurance_sum**: сумма страховки
- **period**: период займа по договору
- **rate_daily**: процентная ставка в день
- **rate_annual**: годовая процентная ставка
- **result**: результат операции
- **description**: описание результата операции при result:false
- **insurance**: признак необходимости согласия на страховку - если здесь true, то перед следующим шагом нужно в окне показать галку согласия на страховку, и результат выбора клиентом пероедать на следующий этап
- **next**: признак наличия следующего шага
- **text_no_card**: текст сообщения при отсутствии карты Арифметика
Ошибочный ответ, см. [пример](/E1rcq73tSPODd0Ds-6qT9w#Пример-ошибочного-ответа)
## Продолжение оформление договора
==GET== `continue`
**Параметры**
* client_hash - хэш клиента
* ip
* contract_num - номер договора пришедшего на start
* insurance - булево, выбор клиента в поле фладка страховки
**Описание ответа**
```json=
{
"error":false,
"description":"",
"response":{
"contract_num":"З21НвАР008300010",
"base_source":"%D0%A0%D0%91%D0%9E-%D0%9D%D1%81%D0%BA",
"key":"9725D3C8187047E49FE90E0405AC41847F447D85E58CE54CFBCCABE22A1BA957",
"documents":[
{
"name":"Согласия займ",
"extension":"pdf",
"data":"Двоичные данные в base64",
"agreement":false
}
],
"contract_conditions":{
"insurance_available":false,
"sum":8000,
"insurance_sum":0,
"period":"5 месяцев",
"rate_daily":"0,8% в день",
"rate_annual":"292% в год"
},
"insurance":true,
"next":true,
"result":true,
"description":"",
"need_sign_agree":false
}
}
```
**Параметры**
В случае ошибки - их result подставится в наш error и description
- **base_source**: код базы, где создан договор
- **contract_num**: номер сформированного договора
- **key**: ключ данных пакета документов,
- **documents_signed**: признак, что документы подписаны(для траншей),
- **documents**: массив данных документов
- **name**: наименование файла
- **agreement**: признак соглашения ПЭП
- **extension**: расширение
- **data**: двоичные данные в base64
- **contract_conditions**: данные условий по конракту
- **insurance_available**: признак доступности страховки у клиента
- **sum**:сумма , в т.ч. сумма страховкиs
- **insurance_sum**: сумма страховки
- **period**: период займа по договору
- **rate_daily**: процентная ставка в день
- **rate_annual**: годовая процентная ставка
- **result**: результат операции
- **description**: описание результата операции при result:false
- **insurance**: признак необходимости согласия на страховку
- **next**: признак наличия следующего шага
- **need_sign_agree** - нужно ли согласие на ПЭП - надо посмотреть что мы с ним делали ранее, это я подставляю
Ошибочный ответ, см. [пример](/E1rcq73tSPODd0Ds-6qT9w#Пример-ошибочного-ответа)
## Отправить смс клиенту для подписания пакета документов
==GET== `getSms`
**Параметры**
* client_hash - хэш клиента
* ip
* key - полученный на прошлом этапе
* repeat - признак повторной отправки смс
**Описание ответа**
```json=
{
"error":false,
"description":"",
"response":{
"result":true,
"code":"D3918389A738B4E770C952DED1EE3E83B200D9F5",
"code_length":5,
"time":180,
"key":"9725D3C8187047E49FE90E0405AC41847F447D85E58CE54CFBCCABE22A1BA957",
"code_test":"25053"
}
}
```
**Параметры**
В случае ошибки - их result подставится в наш error и description
- **result**: результат операции,
- **description**: описание результата операции при result:false,
- **code**: код подписи в формате хеша SHA1,
- **code_length**: длина кода(число), по умолчанию равно 5 при значении 0
- **time**: период, через который можно отправить запрос на отправку кода повторно (секунды),
- **key**: ключ данных
- **code_test** - открытый код смс (только в тестовой БД)
Ошибочный ответ, см. [пример](/E1rcq73tSPODd0Ds-6qT9w#Пример-ошибочного-ответа)
## Подписание пакета документов кодом из смс
==GET== `sign`
**Параметры**
* client_hash - хэш клиента
* ip
* key - полученный на прошлом этапе
* contract_num - номер договора (есть и на старте и на продолжении)
* code - введенный код пользователем (но изначально можно проверить по полю code операции getSms что хэши совпдают)
**Описание ответа**
```json=
{
"error":false,
"description":"",
"response":{
"result":true,
"description":""
}
}
```
**Параметры**
В случае ошибки - их result подставится в наш error и description
Ошибочный ответ, см. [пример](/E1rcq73tSPODd0Ds-6qT9w#Пример-ошибочного-ответа)
## Отправить смс клиенту для подписания пакета документов
==GET== `getSms`
**Параметры**
* client_hash - хэш клиента
* ip
* key - полученный на прошлом этапе
* repeat - признак повторной отправки смс
**Описание ответа**
```json=
{
"error":false,
"description":"",
"response":{
"result":true,
"code":"D3918389A738B4E770C952DED1EE3E83B200D9F5",
"code_length":5,
"time":180,
"key":"9725D3C8187047E49FE90E0405AC41847F447D85E58CE54CFBCCABE22A1BA957",
"code_test":"25053"
}
}
```
**Параметры**
В случае ошибки - их result подставится в наш error и description
- **result**: результат операции,
- **description**: описание результата операции при result:false,
- **code**: код подписи в формате хеша SHA1,
- **code_length**: длина кода(число), по умолчанию равно 5 при значении 0
- **time**: период, через который можно отправить запрос на отправку кода повторно (секунды),
- **key**: ключ данных
- **code_test** - открытый код смс (только в тестовой БД)
Ошибочный ответ, см. [пример](/E1rcq73tSPODd0Ds-6qT9w#Пример-ошибочного-ответа)
## Этап добавления карт
По кругу гоняем этапы - продолжение, запрос смс, подписание, пока на продолжении не прийдет
* result: true и next : false - означает конец оформления,
* либо - result: true; next : true; need_card: true - это значит этап добавления карт (для удобства сделал один параметр - card_stage true/false - можешь ориентироваться либо на него, либо на три описаных выше что приходят от них)
Этот этап возникает на ответе операции **Продолжение оформление договора** поэтому сначала рассмотрим что будет в ответе, а после что отправлять.
Все параметры идентичны тому, что приходят в **Продолжение оформление договора** за исключением одного - массив **cards** - в нем будут указаны доступные для выбора карты.
Далее есть два варианта
* Клиент выбирает карту из списка пришедшего в массиве cards - в этом случае после выбора отправляем запрос на продолжение, все стандартно. НО дополнительно передаем два параметра, указанные ниже. После отправки продолжаем гонять цикл продолжение, запрос смс, подписание.
* card - номер выбранной карты
* card_accepted = true
* Клиент хочет добавить новую карту - также отправляем запрос на продолжение со стандартными параметрами, дополнительно передаем два параметра -
* card_accepted = false
* redirect_url - заполняется URL для возврата в ЛК
В этом случае прийдет такой ответ:
```json=
{
"error":false,
"description":"",
"response":{
"result":true,
"need_card":false,
"description":"",
"error_description":"",
"link":"https://cs.demo.korona.net/cardencrypt/mfo-acq/full.html?&backurl=http://146.120.88.162:80/cerd_gentest_ext/hs/redir/card/9A946B5BDF95600227DCC22415F3C7E9&rnd=e0538b8789a540f1badffd245994f348&svc=ips",
"insurance":false,
"next":true,
"need_sign_agree":false,
"card_stage":false
}
}
```
Здесь интересует поле link - туда мы и отправляем клиента для ввода карты. После редиректа обратно к нам - отправляем запрос на **Получение состояния регистрации карты**
Ошибочный ответ, см. [пример](/E1rcq73tSPODd0Ds-6qT9w#Пример-ошибочного-ответа)
## Получение состояния регистрации карты
==GET== `getCardState`
**Параметры**
* client_hash - хэш клиента
* ip
* contract_num - номер договора
**Описание ответа**
```json=
{
"error":false,
"description":"",
"response":{
"result": true/false,
"status": true/false,
"available_actions": [
"continue"/"change_card"
],
"success_reg": true/false,
"cards": [<массив карт клиента>]
}
}
```
**Параметры**
В случае ошибки - их result подставится в наш error и description
- **success_reg** - интересует только этот параметр, если он true, значит регистрация карты на стороннем сервисе прошла успешно, иначе нет
После этой операции открывается окно
Ошибочный ответ, см. [пример](/E1rcq73tSPODd0Ds-6qT9w#Пример-ошибочного-ответа)