В данном разделе описан интерфейс, который должен быть предоставлен Proxy-сервером для Pro компоненты iDa Mobile. В качестве базового типа веб-сервиса, который должен предоставлять Proxy выбран Axis2 Web Service. При необходимости в Pro может быть реализована работа с сервисами других типов. Для удобства понимания в данном разделе протокол описывается в терминах Java-кода, на основе которого было сгенерировано wsdl описание Proxy web service.
Каждый запрос передает на сервер один объект RequestDTO и получает ответ в виде объекта ResponseDTO. Ниже описаны семантика каждого из методов, а также структура параметров и результатов запросов.
Requests description
Запросы, принимающие bankClientId должны производить проверку допустимости доступа клиента с данным идентификатором к запрашиваемым сущностям. Например, при запросе транзакций счета с идентификатором productId необходимо проверить, является ли пользователь с данным идентификатором productId владельцем счета. При нарушении условий безопасности выполнение может завершаться ошибкой – данная ситуация невозможна при использовании поставляемого клиентского приложения и какая-то осмысленная обработка на клиенте не является необходимой.
blockCard
Запрос на блокировку карты
key
type
status
comment
Request:
bankClientId
string
1..1
идентификатор клиента
cardId
string
1..1
идентификатор карты для блокировки
Response:
result
string
1..1
результат операции {OK, ERROR}
faultMessage
string
0..1
сообщение об ошибке
Exception:
BankClientNotExistsException
string
0..1
клиент с запрошенным bankClientId не существует
CardNotExistsException
string
0..1
карта с запрошенным cardId не существует
changePassword
www.websequencediagrams.com
participant Bank proxy as b
participant iDa Pro as p
participant Mobile as m
note over p,m,b: --- var 1 ---
m->p:
p->b: login { login, password }
b->p: loginResult { bankClientId, PASSWORD_CHANGING_REQUIRED }
m->p:
p->b: changePassword { newPassword }
b->p: ok
p->m: ok
note over p,m,b: --- var 1 ---
m->p:
p->b: login { login, password }
b->p: loginResult { bankClientId, VALIDATION_REQUIRED }
p->m:
b->m: send SMS
m->p:
p->b: login { login, password, validationCode }
b->p: loginResult { bankClientId, PASSWORD_CHANGING_REQUIRED }
p->b: changePassword { newPassword }
b->p: ok
p->m: ok
Запрос на смену пароля при логине. Фактически пользователь логинится под старым паролем (или временным), но банк принудительно заставляет его сменить пароль на новый.
Варианты использования
Смена пароля без 2х факторного подтверждения смс
Смена пароля с 2х факторной процедурой
key
type
status
comment
Request:
newPassword
string
1..1
новый пароль в открытом виде
Response:
result
string
1..1
результат выполнения команды {OK, ERROR}
message
string
0..1
расширенное сообщение об ошибке
changeProductName
Запрос на изменения наименования продукта
key
type
status
comment
Request:
bankClientId
string
1..1
идентификатор клиента
productId
string
1..1
id продукта, для которого изменяется наименование
newProductName
string
1..1
новое наименование продукта
Response:
result
string
1..1
результат выполнения команды {OK, ERROR}
message
string
0..1
сообщение об ошибке или иное сообщение
needConfirmation
bool
1..1
признак необходимости подтверждения
transferCode
string
0..1
код операции
confirmCodeLifetime
int
0..1
время действия кода подтверждения
Exception:
BankClientNotExistsException
string
0..1
клиент с запрошенным bankClientId не существует
checkClient
www.websequencediagrams.com
participant Bank proxy as b
participant iDa Pro as p
participant Mobile as m
note over p,m,b: use PIN code first time
m->p: loginWithPassword { login, password, deviceInfo }
p->b: login { login, password, deviceInfo }
b->p: bankClientId
p->m: sessionId
m->p: isPinEstablished { deviceInfo, login }
alt NO PIN
m->+p: establishPin { pin }
p-->>p: PostgreSQL [ login, pin, sessionId ]
p->-m: OK
end
note over p,m,b: use PIN code second time
m->p: loginWithPin { pin, login, deviceInfo }
p->b: checkClient { bankClientId }
Запрос на проверку валидности клиента во время авторизации по ПИН-коду
Краткое описание схемы
Отправляется запрос IsPinEstablishedRequest с текущим логином и кодом из ответа на запрос GetDeviceVerificationCodeRequest.
В случае не 2xx HTTP ответа от сервера установка пина прерывается, пользователь переходит в pro-часть приложения.
Если в ответе на IsPinEstablishedRequest вернулось, что пин уже установлен, то пользователю показывается сообщение об этом, в настройках приложения сохраняется маркер, что для пользователя с таким логином пин установлен. Пользователь переходит в pro-часть приложения.
Если пин до этого не был установлен, пользователю показывается интерфейс для ввода пина. После того, как он нажмет на кнопку “Установить”, на сервер отправится запрос EstablishSecurityKeyRequest с ключами из алгоритма Диффи- Хеллмана.
В случае, если запрос вернул ошибку, пользователю покажется сообщение об ошибке, и он остается на экране установки пина.
В случае успешного ответа, пин шифруется с помощью алгоритма Диффи-Хеллмана с полученным из ответа на EstablishSecurityKeyRequest публичным ключем от сервера. Зашифрованный пин отправляется на сервер запросом EstablishPinRequest.
В случае, если запрос вернул ошибку, пользователю показывается сообщение. Он остается на экране установки пина.
Успешный ответ означает, что пин установлен на сервере. В настройках приложения сохраняется маркер, что для пользователя с таким логином пин установлен. Пользователь переходит в pro-часть приложения.
наименование формы, возможные значения: “Персональный курс”, “Стандартный курс”, “Курс Центрального банка”
blockMessage1
string
0..1
текст информационного поля под таблицей биржевых курсов, например: “Курс обновляется каждые 40 секунд. Биржевой курс работает только для долларов США и евро в рабочие дни с 10:00 до 17:00”
blockMessage2
string
0..1
текст информационного поля под таблицей курсов, например: “Биржевой курс работает только для долларов США и евро в рабочие дни с 10:00 до 17:00”
Exception:
BankClientNotExistsException
string
0..1
клиент с запрошенным bankClientId не существует
getCurrentForm
Запрос на получение текущей формы. Принимает заполненную пользователем форму и выдаёт её с предзаполненными данными для нее
Запрос на получение отфильтрованных значений по заданному филду
key
type
status
comment
Request:
bankClientId
string
1..1
идентификатор клиента
fieldId
string
1..1
идентификатор поля, по которому нужно вернуть список значений
formId
string
1..1
идентификатор формы, на которой расположен данный филд
name
string
1..1
фильтр по введенной пользователем строке
value
string
0..1
фильтр по значению (должен вернуть один единственный элемент, у которого значение совпадает со значением в запросе)
dependentFieldId
string
0..1
идентификатор зависимого поля, по которому нужно вернуть список значений
dependentFieldValue
string
0..1
фильтр по значению зависимого поля, по которому нужно вернуть список значений
Response: | | |
values | ComboBoxValueDTO | 0..1 | набор значений для поля, отфильтрованные на основании фильров в запросе
needReload | bool | 0..1 | признак того, что текущая форма должна быть перезагружена
Exception: | | |
BankClientNotExistsException | string | 0..1 | клиент с запрошенным bankClientId не существует
getEvents
Запрос на получение фидов. Лента, поддерживающая все ключи транзакции, но не сортируется самостоятельно и отображается в зависимости от ключа
key
type
status
comment
Request:
bankClientId
string
1..1
идентификатор клиента
feedId
string
1..1
идентификатор ленты
fromIndex
int
0..1
индекс начального элемента в общем списке
toIndex
int
0..1
индекс элемента до которого надо прислать элементы в общем списке
Запрос на получение следующей формы в цепочке форм. Принимает заполненную пользователем форму, выдает следующую форму в цепочке вместе с предзаполненными данными для нее
текст для дополнительной кнопки на экране завершения операции
additionalButtonAction
string
0..1
действие для дополнительной кнопки на экране завершения операции
Exception:
BankClientNotExistsException
string
0..1
клиент с запрошенным bankClientId не существует
getNextQuestion
Запрос на получение следующего вопроса по цепочке. Принимает идентификатор предыдущего вопроса и код ответа на предыдущий вопрос, выдает следующий вопрос, результат операции и сообщение.
получатель с запрошенным beneficiaryId не существует
getPersonalNews
Запрос на получение личных уведомлений и новостей для пользователя. Физически попадает в отдельный раздел меню. Наличие раздела управляется через ключ PERSONAL_NEWS в BANKCLIENTDTO
В запрос передается набор фильтров, результатом является список транзакций, отсортированный в порядке убывания даты их выполнения. Каждая из выбранных транзакций удовлетворяет каждому условию фильтра в запросе
key
type
status
comment
Request:
bankClientId
string
1..1
идентификатор клиента
productId
string
1..1
идентификатор продукта
cardId
string
0..1
идентификатор карты
fromIndex
int
1..1
начиная с какой позиции нужно передать транзакции (при первом запросе - 0)
идентификатор обьекта из поля type (если не указан, то проверяется то обновляется весь список)
Response:
haveUpdates
bool
1..1
нужно ли обновлять
ObjectType
key
comment
BENEFICIARY_CATEGORIES
раздел платежей
STANDARD_FORMS
список стандартных форм
PAYMENT_FORM
форма и наследник формы
login
Запрос проверяет корректность пары login/password, если пара верна – возвращает идентификатор клиента bankClientId, соответствующий логину на стороне бэка
key
type
status
comment
Request:
login
string
1..1
логин
password
string
1..1
пароль
validationCode
string
0..1
код из SMS, который передаётся только в случае ответа на команду логин с результатом VALIDATION_REQUIRED
двухфакторная аутентификация с ожиданием кода из СМС
makeTransfer
www.websequencediagrams.com
participant Bank proxy as b
participant iDa Pro as p
participant Mobile as m
participant PiGeon as pi
p->+b: query form
b->-p: form ( hasNext = false )
p->m:
m->p:
p->b: makeTransfer
alt needConfirmation = true, transferCode = tcode
b->p:
b->pi: send confirmCode = ccode
pi->m:
m->p:
p->b: confirmTransfer ( transferCode = tcode, confirmCode = ccode)
b->p: ok
p->m:
else needConfirmation = false
b->p: ok
p->m:
end
Запрос на совершение платежа, поддерживает два режима – с подтверждением и без. Если необходимо подтверждение платежа, признак needConfirmation должен быть выставлен в true и присутствовать код перевода в transferCode, данный код используется в confirmTransfer для обозначения того, какой перевод мы подтверждаем
Запрос на расчет комиссии по платежу – отправляется заполненная форма с информацией о платеже, результатом работы является ответ, содержащий размер комиссии и валюту
Запрос проверяет наличие пользователя, если пользователь присутствует – возвращает информацию, необходимую для проверки пароля. Метод используется при построении банком облачной системы, когда проксирующий сервер iDaPro вынесен за периметр банка и необходимо не передавать пароль. В обычной ситуации применяется метод login
Запрос для включения/выключения использования баллов кредитной карты
key
type
status
comment
Request:
bankClientId
string
1..1
идентификатор клиента
cardId
string
1..1
идентификатор карты
customerChoice
bool
1..1
флаг, отвечающий за передачу значения включения/выключения баллов для карты
Response:
result
string
1..1
результат операции {OK, ERROR}
message
string
0..1
сообщение
Exception:
BankClientNotExistsException
string
0..1
клиент с запрошенным bankClientId не существует
Data Structs
Используются в общении iDa Pro сервера и Proxy банка
Все платежи, переводы, шаблоны в iDa архитектуре представлены с помощью «ФОРМ». Все данные, которые пользователь может вводить для совершения операций описываются в виде форм, а конкретные введенные пользователем данные – в виде заполненных форм.
Ниже излагается универсальная структура описания форм в системе iDa Mobile. Каждая форма (например, форма денежного перевода) задается кортежем, на который ссылается набор полей формы formField. На кортеж formField может ссылаться некоторое количество кортежей comboBoxValue, которые задают допустимые значение поля формы в случае, если formField.fieldClass = COMBO_BOX.
Следует обратить внимание, что данная структура описывает и хранит не конкретные значения полей форм, а описание структуры формы и типов полей. Конкретные значения хранятся в паре filledForm – formValue.
С помощью форм также можно создавать элемент обратной связи, заявки на продукты и другие распоряжения килента банку
ссылка на иконку справа баннера на вкладке “Общее”
commonNotificationUrl
string
1..1
ссылка для баннера на вкладке “Общее”, открывающаяся при нажатии на баннер (может содержать как внешние ссылки http:// так и внутренние в виде form://[form_id])
—
additionalNotificationText
string
1..1
текст уведомления баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationStyle
string
1..1
цвет фона баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationIconLeftUrl
string
1..1
ссылка на иконку слева баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationIconRightUrl
string
1..1
ссылка на иконку справа баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationUrl
string
1..1
ссылка для баннера на всех вкладках, кроме вкладки “Общее”, открывающаяся при нажатии на баннер (может содержать как внешние ссылки http:// так и внутренние в виде form://[form_id])
признак наличия у продукта кнопки копирования номера счета
sendStatementEnabled
bool
0..1
признак отображения кнопки “Отправить выписку” на экране аналитики по продукту
—
commonNotificationText
string
1..1
текст уведомления баннера на вкладке “Общее”
commonNotificationStyle
string
1..1
цвет фона баннера на вкладке “Общее”
commonNotificationIconLeftUrl
string
1..1
ссылка на иконку слева баннера на вкладке “Общее”
commonNotificationIconRightUrl
string
1..1
ссылка на иконку справа баннера на вкладке “Общее”
commonNotificationUrl
string
1..1
ссылка для баннера на вкладке “Общее”, открывающаяся при нажатии на баннер (может содержать как внешние ссылки http:// так и внутренние в виде form://[form_id])
—
additionalNotificationText
string
1..1
текст уведомления баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationStyle
string
1..1
цвет фона баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationIconLeftUrl
string
1..1
ссылка на иконку слева баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationIconRightUrl
string
1..1
ссылка на иконку справа баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationUrl
string
1..1
ссылка для баннера на всех вкладках, кроме вкладки “Общее”, открывающаяся при нажатии на баннер (может содержать как внешние ссылки http:// так и внутренние в виде form://[form_id])
признак наличия у продукта кнопки копирования номера счета
sendStatementEnabled
bool
0..1
признак отображения кнопки “Отправить выписку” на экране аналитики по продукту
—
commonNotificationText
string
1..1
текст уведомления баннера на вкладке “Общее”
commonNotificationStyle
string
1..1
цвет фона баннера на вкладке “Общее”
commonNotificationIconLeftUrl
string
1..1
ссылка на иконку слева баннера на вкладке “Общее”
commonNotificationIconRightUrl
string
1..1
ссылка на иконку справа баннера на вкладке “Общее”
commonNotificationUrl
string
1..1
ссылка для баннера на вкладке “Общее”, открывающаяся при нажатии на баннер (может содержать как внешние ссылки http:// так и внутренние в виде form://[form_id])
—
additionalNotificationText
string
1..1
текст уведомления баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationStyle
string
1..1
цвет фона баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationIconLeftUrl
string
1..1
ссылка на иконку слева баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationIconRightUrl
string
1..1
ссылка на иконку справа баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationUrl
string
1..1
ссылка для баннера на всех вкладках, кроме вкладки “Общее”, открывающаяся при нажатии на баннер (может содержать как внешние ссылки http:// так и внутренние в виде form://[form_id])
признак наличия у продукта кнопки копирования номера счета
sendStatementEnabled
bool
0..1
признак отображения кнопки “Отправить выписку” на экране аналитики по продукту
—
commonNotificationText
string
1..1
текст уведомления баннера на вкладке “Общее”
commonNotificationStyle
string
1..1
цвет фона баннера на вкладке “Общее”
commonNotificationIconLeftUrl
string
1..1
ссылка на иконку слева баннера на вкладке “Общее”
commonNotificationIconRightUrl
string
1..1
ссылка на иконку справа баннера на вкладке “Общее”
commonNotificationUrl
string
1..1
ссылка для баннера на вкладке “Общее”, открывающаяся при нажатии на баннер (может содержать как внешние ссылки http:// так и внутренние в виде form://[form_id])
—
additionalNotificationText
string
1..1
текст уведомления баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationStyle
string
1..1
цвет фона баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationIconLeftUrl
string
1..1
ссылка на иконку слева баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationIconRightUrl
string
1..1
ссылка на иконку справа баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationUrl
string
1..1
ссылка для баннера на всех вкладках, кроме вкладки “Общее”, открывающаяся при нажатии на баннер (может содержать как внешние ссылки http:// так и внутренние в виде form://[form_id])
процентная ставка по вкладу, которая отображается в списке продуктов на главной странице приложения (только редизайн)
—
commonNotificationText
string
1..1
текст уведомления баннера на вкладке “Общее”
commonNotificationStyle
string
1..1
цвет фона баннера на вкладке “Общее”
commonNotificationIconLeftUrl
string
1..1
ссылка на иконку слева баннера на вкладке “Общее”
commonNotificationIconRightUrl
string
1..1
ссылка на иконку справа баннера на вкладке “Общее”
commonNotificationUrl
string
1..1
ссылка для баннера на вкладке “Общее”, открывающаяся при нажатии на баннер (может содержать как внешние ссылки http:// так и внутренние в виде form://[form_id])
—
additionalNotificationText
string
1..1
текст уведомления баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationStyle
string
1..1
цвет фона баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationIconLeftUrl
string
1..1
ссылка на иконку слева баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationIconRightUrl
string
1..1
ссылка на иконку справа баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationUrl
string
1..1
ссылка для баннера на всех вкладках, кроме вкладки “Общее”, открывающаяся при нажатии на баннер (может содержать как внешние ссылки http:// так и внутренние в виде form://[form_id])
тип формы для переходов или идентификатор (может быть не уникальный)
hasNext
bool
1..1
признак наличия следующей формы. Если значение поля равно TRUE, то при заполнении данной формы клиент запросит с сервера следующую форму вместо запроса на осуществление платежа
requiresCommission
bool
0..1
признак необходимости запроса комиссии с сервера с помощью метода requestCommission
кастомное действие CustomAction для элемента формы
horizontalView
bool
0..1
признак горизонтального расположения дочерних элементов поля
visible
bool
0..1
признак видимости поля
searchEnabled
bool
0..1
признак наличия у списка строки поиска. Применимо для полей класса ACTION_LIST
basicFilter
bool
0..1
признак того, что поле также является
dropDownList
bool
0..1
признак того, что список является выпадающим. Применимо для полей класса ACTION_LIST
copyValueAllowed
bool
0..1
признак наличия у поля кнопки копирования значения поля
FieldClass
key
type
comment
SOURCE_ACCOUNT
string
список идентификаторов продуктов в виде ComboBoxValueDTO выбора 1..*
TARGET_ACCOUNT
string
список идентификаторов продуктов в виде ComboBoxValueDTO выбора 1..*
SINGLE_LINE_TEXT
string
однострочный текст
MULTI_LINE_TEXT
string
многострочный текст
CHECK_BOX
bool
чекбокс {true, false} (поддерживает в name ссылку в формате <a href="http://www.idamob.ru">iDa Mobile</a>)
PASSWORD
string
однострочный текст маскированный при вводе
MONTH_YEAR
string
UNIXTIME в милисекундах
DATE
int
UNIXTIME в милисекундах (например 1394582400000)
COMBO_BOX
string
список строк для comboBoxValues выбора 1..*
AMOUNT
int
ddddd (умноженное на 100) с валютой и проверкой на остаток средств из SOURCE_ACCOUNT
MONEY
int
ddddd (умноженное на 100) с валютой из SOURCE_ACCOUNT
PHONE
int
номер телефона (например 71231231212)
PRINTED_TEXT
string
текст пояснение без возможности редактирования пользователем
PHOTO_CARD
string
ввода номера карты с элементом фотографирования карты библиотекой card.io и маской **** **** **** ****, так же в дополнение для поля используется проверка алгоритмом Луна
число с любой дробной частью (например 1382432.93342)
DYNAMIC
string
поле при вводе 2х символов делает запрос getDynamicFieldValues и в случае признака необходимости обновления текущей формы делает запрос getCurrentForm
QRCODE_GENERATOR
string
поле сенерирует QR-коде из значения value
STORED_FILE
base64 string
файл, хранимый в Resource Server
SWITCH
bool
двухпозиционный переключатель (тумблер)
RADIO_BUTTON
string
радио-кнопка, работающая по принципу COMBO_BOX
TRACK_BAR
int
ползунок, позволяющий выбрать значение из диапазона minLimit и maxLimit
CARD_VIEW
string
представление карты для отображения на форме
PIN_CODE
string
компонент для ввода цифрового пин-кода
LIST_BOX
string
открытый список, работающий по принципу COMBO_BOX
SEARCH_BOX
string
список, фильтрующийся по мере ввода текста пользователем
ACTION_BUTTON
string
кнопка, позволяющая осуществить переход по какой то URL или к заданной форме
FILE
string
компонент для асинхронной загрузки пользовательского файла
DOCUMENT_FILE
string
компонент для асинхронной загрузки пользовательского файла, а так же автоматизированного распознавания полей документа (паспорт, снилс) с использованием библиотеки SmartEngines
SOURCE_CARD
string
компонент для ввода источника - номера карты или выбора своей карты
TARGET_CARD
string
компонент для ввода получателя - номера карты или выбора своей карты
CREDIT_HEADER
string
представление кредита для отображения на форме
DIAGRAM
string
горизонтальная диаграмма - несколько наложенных друг на друга шкал (максимум 4 штуки)
INFO_PANEL
string
компонент панели, на которой выводятся показатели в виде ключ (слева) — значение (справа). Содержимое панели можно свернуть (по умолчанию — блок свернут)
TABLE_VIEW
string
компонент для представления данных в табличном виде
BUTTON
string
компонент кнопки
ACTION_LIST
string
список, в котором при нажатии на каждый элемент осуществляется переход на следующую или заданную форму
FILTER_CHIPS_GROUP
string
компонент группы чипов на форме расширенного фильтра
FILTER_AMOUNT_GROUP
string
компонент группы полей сумм на форме расширенного фильтра
FILTER_PERIOD_GROUP
string
компонент группы полей периода фильрации на форме расширенного фильтра
BUTTON
string
компонент кнопки
LABEL_BUTTON
string
компонент кнопки в виде простого лейбла
PAGER
string
компонент с постраничной выдачей информации с переключателем
CustomAction
key
type
comment
SUBMIT
string
отправка данных на сервер
CLOSE
string
закрытие формы
MAIN_SCREEN
string
переход на главный экран приложения
PUSH_NOTIFICATION_TRIGGER
string
включение/отключение подписки на push-уведомления
SBP_LINK
string
передача tokenIntent на сервер банка (функционал СБП)
ссылка на иконку справа баннера на вкладке “Общее”
commonNotificationUrl
string
1..1
ссылка для баннера на вкладке “Общее”, открывающаяся при нажатии на баннер (может содержать как внешние ссылки http:// так и внутренние в виде form://[form_id])
—
additionalNotificationText
string
1..1
текст уведомления баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationStyle
string
1..1
цвет фона баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationIconLeftUrl
string
1..1
ссылка на иконку слева баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationIconRightUrl
string
1..1
ссылка на иконку справа баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationUrl
string
1..1
ссылка для баннера на всех вкладках, кроме вкладки “Общее”, открывающаяся при нажатии на баннер (может содержать как внешние ссылки http:// так и внутренние в виде form://[form_id])
URL для доступа к логотипу распознает параметр для удобства расположения на сервере и оптимизации размеров - http://…/${image.type}/name.png и будет автоматически в зависимости от платформы подменять его на ios-small или android-small
size
.type
comment
64х64
small
картинка для списка форм
90х60
small
картинка логотипа карты (VISA, MasterCard…) отображаемая на карте и в списке продуктов
640х380
big
картинка фона пластиковой карты
640х320
big
картинка баннера в форме
640х320
small
картинка баннера в новостях
640х128
big
картинка фона формы (используется в SPECIAL_ORDERS) для большей наглядности
наличие раздела в боковом меню с именем String, в который собираются формы с признаком PRODUCT_ORDER
FINANCIAL_REPORTS
string
наличие в меню раздела финансовой аналитики, запрос на аналитику идет через getTransactionsByDateRange с полем id продукта FINANCIAL_REPORTS
PERSONAL_NEWS
string
наличие в меню раздела персональных новостей или уведомлений о событиях
QR_CODE_SCANNER_FORM_ID
string
id формы сканирования QR кодов, отвечает за наличие в платежном разделе иконки быстрого перехода на форму сканирования QR кодов
IS_MERGE_PROFILE_AVAILABLE
bool
активизирует кликабельность зоны с ФИО пользователя и открывает форму редактирования данных клиента
AUTO_PAYMENTS
string
наличие функционала “Автоплатежи”
ADD_ACCOUNT_TO_SBPAY_FORM_ID
string
id формы привязки счета к СБПэй
READ_ONLY
string
id формы настройки доступа клиента
DISPLAY_EXCHANGE_RATES
bool
отображение курсов валют на главной странице (только в версии с редизайном)
CURRENCY_RATES_EXCHANGE
string
группа для форм курсов обмена валют (только для функционала обмена валют)
CURRENCY_RATE_TEMPLATE_SAVE
string
наличие функции “Сохранить как шаблон” на форме обмена валюты (только для функционала обмена валют)
CURRENCY_RATE_NO_ACCOUNTS_MSG
string
сообщение, которое отображается пользователю при отсутствии счетов в выбранной валюте (только для функционала обмена валют)
IS_CHAT_EDNA_AVAILABLE
bool
наличие иконки чата Edna в нижнем баре после авторизации
CURRENCY_RATE_FROM_MENU
string
отображения пункта “Обмен валюты” в боеовом меню приложения (только для функционала обмена валют, только для старого дизайна приложения)
APP_UPDATE_ANDROID_VERSION
string
версия обновления для Android
APP_UPDATE_IOS_VERSION
string
версия обновления для iOS
APP_UPDATE_TYPE
string
режим обновления приложения. Возможные значения: SOFT, HARD, null (пусто)
APP_UPDATE_MESSAGE
string
текст сообщения об обновлении приложения
FAVORITE_SECTION_ADDITIONAL
string
группа для блока “Дополнительные опции” на экране настройки мини разделов “Добавить сервис” (только в версии с редизайном)
FAVORITE_SECTION_TRANSFER_OTHER_BANK
string
группа для раздела “Перевод в другой банк” блока “Переводы” на экране настройки мини разделов “Добавить сервис” (только в версии с редизайном)
FAVORITE_SECTION_POINTS
string
группа для раздела “Использовать баллы” блока “Дополнительные опции” на экране настройки мини разделов “Добавить сервис” (только в версии с редизайном)
SETTINGS_ADVANCED
string
группа для блока “Дополнительные опции” на экране “Настройки” (только в версии с редизайном)
SETTINGS_SYSTEM
string
группа для блока “Системные настройки” на экране “Настройки” (только в версии с редизайном)
SERVICES
string
группа для блока “Сервисы” на главном экране приожения (только в версии с редизайном)
PAYMENTS_PAY
string
группа для блока “Оплатить” на экране “Платежи” (только в версии с редизайном)
PAYMENTS_TRANSFER
string
группа для блока “Перевести” на экране “Платежи” (только в версии с редизайном)
CONTACT_WITH_BANK
string
группа для раздела “Связь с банком” блока “Сервисы” на главном экране приложения (только в версии с редизайном)
INVESTMENTS.SHOW
bool
наличие раздела “Инвестиции”
INVESTMENTS.LOGO_URL
string
URL иконки для кнопки “Инвестиции” на главной странице приложения (только редизайн)
ANALYTICS.MAX_PERIOD
int
максимальный период построения аналитики для круговой диаграммы, в месяцах
ANALYTICS.SHOW_WIDGET
bool
настройка отображения виджета аналитики на главной странице приложения
ANALYTICS.ACCOUNT_AVAILABLE
bool
настройка доступности функционала аналитики для счетов
ANALYTICS.CARD_ANALYTICS4CARD_ACCOUNT
bool
настройка отображения аналитики по карте для карточного счета
ANALYTICS.SETTINGS_AVAILABLE
bool
отображение настроек аналитики на экране “Настройки”
AccountDTO, CardDTO, DepositDTO, LoanDTO support MarkerDTO:
<tagstype="MarkerDTO"><key>BUTTON_1_TEXT</key><value>Payments</value></tags><tagstype="MarkerDTO"><key>BUTTON_1_TARGET</key><value>payment_short</value></tags><tagstype="MarkerDTO"><key>BUTTON_2_TEXT</key><value>Transfer by phone</value></tags><tagstype="MarkerDTO"><key>BUTTON_2_TARGET</key><value>form</value></tags>
ссылка на иконку справа баннера на вкладке “Общее”
commonNotificationUrl
string
1..1
ссылка для баннера на вкладке “Общее”, открывающаяся при нажатии на баннер (может содержать как внешние ссылки http:// так и внутренние в виде form://[form_id])
—
additionalNotificationText
string
1..1
текст уведомления баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationStyle
string
1..1
цвет фона баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationIconLeftUrl
string
1..1
ссылка на иконку слева баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationIconRightUrl
string
1..1
ссылка на иконку справа баннера на всех вкладках, кроме вкладки “Общее”
additionalNotificationUrl
string
1..1
ссылка для баннера на всех вкладках, кроме вкладки “Общее”, открывающаяся при нажатии на баннер (может содержать как внешние ссылки http:// так и внутренние в виде form://[form_id])
ссылка, которая должна быть открыта при выборе данного действия
PersonalNewsDTO
<details><entry><key>logo_url</key><value>http://www.idamob.ru/ic.png</value></entry><entry><key>push_description</key><value>Текстовый блок с некоторым описанием</value></entry><entry><key>name</key><value>Заголовок сообщения</value></entry><entry><key>currency</key><value>100000000</value></entry><entry><key>fxAmount</key><value>RUR</value></entry><entry><key>Период</key><value>3 года</value></entry><entry><key>Процент</key><value>3%</value></entry></details>
Открыть файл .war при помощи ZIP-архиватора и перейти в подпапку “.war\WEB-INF\classes\META-INF”
Открыть файл persistence.xml и внести соответствующие правки, необходимые для подключения к БД (параметры: hibernate.connection.url, hibernate.connection.username, hibernate.connection.password).
Заменить в *.war файле persistence.xml на тот, который был отредактирован в п.3
Запустить Apache Tomcat (в случае с linux - ./tomcat/bin/startup.sh, в случае с windows вомпользоваться специальной системной службой)
Установка iDa Pro
В подпапке pro.war\WEB-INF\classes\config открыть конфигурационный файл банка (Например, bank.properties) и проверить корректность значений параметров proxy.wsdl, proxy.service, proxy.endpoint а так же проверить доступность значения параметра proxy.wsdl с машины, на которой будет запущен iDa Pro. В случае внесения изменений в файл *.properties - сохранить новую версию этого файла в pro.war
Скопировать файл pro.war в папку /tomcat/webapps и дождаться пока будет автоматически создана подпапка /Pro
Открыть через pgAdmin требуемую БД и проверить, что в схеме proschema добавились таблицы
Проверить работоспособность приложения с помощью настроенного мобильного клиента
Порядок обновления серверной части iDa Mobile (*.war)
Получить новую сборку в виде файла *.war
Открыть файл .war при помощи ZIP-архиватора и перейти в подпапку “.war\WEB-INF\classes\META-INF”
Открыть файл persistence.xml и внести соответствующие правки, необходимые для подключения к БД (параметры: hibernate.connection.url, hibernate.connection.username, hibernate.connection.password).
Заменить в *.war файле persistence.xml на тот, который был отредактирован в п.3
Убедится, что серверй приложений Tomcat запущен (в linux - ps -ef|grep tomcat</code>). Если не запущен - запустить его (в linux - ./tomcat/bin/startup.sh).
Перейти в папку tomcat/webapps
В случае наличия в ней старой версии iDa - удалить файл *.war и дождаться пока папка обновляемого приложения удалится автоматически (~ 15 секунд)
Скопировать в папку /tomcat/webapps/ полученный в п.4 файл *.war
Дождаться пока в папке /tomcat/webapps появится папка с наименованием приложения (~ 15 секунд)
Осуществить проверку работы приложения при помощи настроенного мобильного клиента
Рекомендация по развертыванию нескольких серверов на одной машине
Повторно выполнить шаги 3, 4, 5 из раздела ‘Порядок установки серверной части iDa Mobile’ для создания ещё одной копии схемы БД
В Apache TomCat задеплоить копии pro.war и light.war предварительно переименовав их, например в pro_new.war и light_new.war
Установить фронт-серверное приложение, например, nginx или Apache HTTPD
Настроить дополнительный домен, например, если у вас используется домен ida.mybank.com для мобильных приложений, то нужно создать домен ida_new.mybank.com, который так-же будет ссылаться на IP настраиваемого сервера
Произвести настройку фронт-сервера таким образом, что бы траффик для домена ida.mybank.com перенаправлялся на localhost:8080/pro (8080 - порт TomCat по умолчанию), а траффик ida_new.mybank.com направлялся на localhost:8080/pro_new. Пример подобной настройки nginx
Все настройки сервиса задаются через файл конфигурирования, который расположен по адресу pro.war\WEB-INF\classes\config\bank.properties путём добавления следующих параметров:
key
type
comment
smarttransactions.enabled
bool
наличие модуля SmartTransactions
proxy.timeout
int
время ожидания отвера сервера из бэка, в милесекундах (должно быть так же установлено в мобильной апликации)
proxy.login.case.insensitive
bool
признак чуствительности к регистру для логина
-
proxy.wsdl
string
${bank.proxy.wsdl}
proxy.service
string
IdaMobProxyServiceFacade
proxy.endpoint
string
IdaMobProxyServiceFacadeHttpSoap12Endpoint
-
security.password.hash
bool
наличие запроса хэш пароля и алгоритм как он был получен requestHashedPassword. на сервере pro происходит проверка совпадают ли хеши полученные с клиента и с сервера банка
security.password.encrypt
bool
расшифровывать пароль, зашифрованный на мобильном криенте
security.verification.encrypt
bool
расшифровывать код из запроса confirmTransfer, зашифрованный на мобильном криенте
security.incorrect_login_attempts
int
количество неверных попыток ввода ПИН кода
-
pigeon.url
string
сервер пушей http://dev.idamob.ru/pigeon
pigeon.enabled
bool
наличие связки с сервером пуш сообщений PiGeon
pigeon.twoFactorAuth
bool
наличие процесса двухфакторной аутентификации при подписке пользователя на пуш уведомления
Все настройки базы задаются через файл конфигурирования, который расположен по адресу pro.war/WEB-INF/classes/META-INF/persistence.xml путём добавления следующих параметров:
key
type
comment
hibernate.connection.url
string
адрес расположения базы банных
hibernate.connection.username
string
логин к базе
hibernate.connection.password
string
пароль к базе
Удаление сессий пользователя
В случае если у пользователя сменился логин, но не поменялся bankClientId, вход под новым логином будет невозможен. Для того что бы очистить данные по старому логну LOGIN нужно выполнить скрипт в proschema:
select id from proschema.bank_user usr where usr.login = 'LOGIN'
от результата этого запроса подставьте вместо #ID# нижеследующих запросах
delete from proschema.secret_key sc where sc.session_id in (select id from proschema.user_session ses where ses.user_id = '#ID#')
delete from proschema.user_session ses where ses.user_id = '#ID#'
delete from proschema.device_verification_code dvc where dvc.user_id = '#ID#'
delete from proschema.device_verification_code_salt dvc where dvc.user_id = '#ID#'
delete from proschema.bank_user usr where usr.id = '#ID#'