Банковское приложение

Мобильное приложение для крупного банка с иностранным капиталом
Содержание

О клиенте

Крупный европейский банк с представительством в России. Является одним из системообразующих отечественных банков. Называть его мы не можем по условиям NDA.

Задача

Разработать мобильное приложение и помочь банку уйти от коробочного решения

У банка уже было мобильное приложение для физических лиц. Но оно было реализовано на основе коробочного продукта. Такое решение не позволяло кастомизировать приложение под потребности банка и очень ограничивало в его развитии и добавлении новых возможностей. 

Банк решил создать собственное приложение, чтобы в дальнейшем отказаться от «коробки» и получить более гибкий инструмент для развития.

Особенности проекта

Банку нужно было:

  • Создать с нуля собственное мобильное приложение и интегрировать его с существующим бэкендом. Его первая версия не должна была уступать по функциональным возможностям коробочному решению.
  • Уйти от коробочного решения и получить гибкий инструмент для развития приложения.
  • Актуализировать дизайн, сделать его более гибким и интуитивно понятным.
  • Внедрить пользовательскую аналитику, чтобы лучше понимать потребности клиентов и им соответствовать.
  • Реализовать для клиентов новые возможности: интеграцию с СБП, ГИС ГМП, Know Your Customer (KYC), онлайн-заявку на кредит и кредитную карту.
  • Повысить безопасность приложения.

Что получилось?

У банка появились нативные мобильные приложения для iOS и Android с современным дизайном и удобным интерфейсом. Теперь он не зависит от ограничений коробочного продукта и может развивать приложение и подстраивать его под свои бизнес-процессы — а не наоборот.

В приложении клиентам доступны все базовые банковские операции: можно открывать и закрывать счета, делать платежи, оформить заявку на кредит и т.д. Также банк внедрил в нем оплату через СБП и интеграцию с ГИС ГМП. 

При помощи пользовательской аналитики банк может анализировать ключевые воронки: заявки на кредит, выпуск карты, перевод денег через СБП — и вносить изменения, если видит, что на каком-то этапе у клиентов возникают сложности. Кроме того, в новом приложении банку доступна сводная обезличенная информация о клиенте: из какого он города и какие продукты у него открыты.

Как мы это сделали?

Проектирование и дизайн

Нам достался UI-дизайн от другого подрядчика. Он был согласован с европейским офисом компании и соответствовал брендбуку — единой концепции дизайна приложений банка по всему миру.

Мы предложили банку свой концепт. Его высоко оценила команда клиента в России, но в работу он не пошел: в первом релизе решили не тратить ресурсы на переработку дизайна. Сфокусировались на разработке приложения, чтобы выполнить основную задачу: уйти от коробочного решения.

Дизайн такого сложного продукта — это непрерывный процесс, который идет бок о бок с разработкой и все время совершенствуется. Так он постепенно превращается из простого набора экранов в сложную дизайн-систему. 

За два года разработки мы развили и улучшили исходный дизайн, проработали узкие места и неучтенные юзкейсы. Например, на главном экране, кроме продуктов банка, добавили баннеры с индивидуальными предложениями для клиента: банк мог разместить туда предложение по  кредиту или вкладу с выгодными условиями. 

Слева — исходный концепт от другого подрядчика, справа — после наших доработок

Аналитика — важнейшая часть разработки банковского приложения

Бизнес-аналитики проверили возможности бэкенда и убедились, что дизайн можно реализовать. 

Это важный этап работы: команды дизайнеров, разработчиков и бизнес-аналитиков плотно взаимодействуют, чтобы учесть все нюансы и технические возможности. Не всегда можно воплотить в реальность красивую картинку — иногда нужно дорабатывать API или переделывать дизайн под возможности бэкенда.

Мы составили ТЗ, в котором описали нюансы поведения приложения, не очевидные из дизайна и документации к API.

Разработка приложения и интеграция с банковскими системами

Мы разработали нативные приложения на Swift для iOS и Kotlin для Android. Архитектура стандартная: SurfMVP для iOS, MVI и MVP для Android. Используем ее во всех проектах Surf.

Наши подходы хорошо задокументированы: это позволяет легко подключать к проекту новых разработчиков или забрать проект инхаус.

В процессе разработки много времени и сил потратили на интеграцию с бэкендом. Собственного бэка у банка не было, они работали с подрядчиком. Кроме того, взаимодействие между нами и бэком происходило через еще одного подрядчика: он выступал агрегатором, в который стягивалась вся информация с бэка и из внутренних систем банка (например, из справочников), адаптировал и передавал наши запросы друг к другу. Такая схема работы потребовала от команды проекта много усилий на то, чтобы реализовать приложение, которое работало с учетом всей специфики бэкенда и внутренних банковских систем.

Тестирование — обязательная часть проверки надежности кода и безопасности приложения

Надежность кода и безопасность важны для всех приложений, но для банковских — особенно. Чтобы обеспечить высокое качество продукта, мы проводим тщательное тестирование.

Код приложений для банка покрыт тестами на 100%. Мы достигли такого показателя благодаря использованию автотестов: без них тестирование занимало бы слишком много времени.

На проекте 1850 проверок, полное тестирование занимает 36 часов. 65% — автоматизированы, остальные 35% проверяются вручную из-за использования сторонних сервисов.

Смоук тестирование

550 проверок занимает порядка 8 часов.
При максимально продуктивном использовании автотестов можно покрыть порядка 80% всех проверок смоук тестирования.

Это позволяет сократить ручной смоук на 6 часов с учетом разбора результатов автотестов.

Санити тестирование

Всего 1100 проверок. Тестирование занимало бы 18 часов.

Но 700 тест-кейсов автоматизировано. Это 75%. Время тестирования при использовании автотестов сокращается с 18 до 6 часов, учитывая и разбор результатов автотеста.

Автоматизация тестирования позволяет обеспечивать стопроцентное покрытие тестами. Это колоссально экономит время и поднимает качество продукта.

Автотесты пишем на «человеческом» языке — русском диалекте Gherkin. Пример «кода» автотестов:

Использование Gherkin — хорошее решение, если компания заказчика собирается продолжать разработку инхаус. К такому тестированию легко подключить любого тестировщика — даже если он изначально не знаком с технологией.

Пользовательская аналитика — эффективный инструмент анализа поведения пользователей

Для пользовательской аналитики мы применили AppMetrica и Firebase. Чтобы не потеряться в количестве событий и данных, начали с трекинга основных событий: входа в приложение, открытия экранов. Проанализировали старт и завершение ключевых воронок: заявки на кредит, выпуска карты, перевода денег через СБП. Для удобной сегментации аудитории собирали обезличенные данные о клиенте: из какого он города и какие продукты у него открыты.

Это стандартный набор аналитики для банка, который позволяет не утонуть в потоке лишней информации. Если в какой-то воронке выявляются проблемы, можно прицельно добавлять в нее события и разбираться с проблемой глубже.

Новые возможности для клиентов банка

Начали разработку с функциональности, которая повторяла коробочный продукт: платежи, просмотр открытых банковских продуктов и т.д. Но по ходу разработки функциональность расширилась. Добавили возможность полного или частичного погашения кредита, интегрировали приложение с системой лояльности Visa Loyalty Program.

Мы реализовали в приложении:

  • Интеграцию с системой ГИС ГМП (Государственная информационная система о государственных и муниципальных платежах). В ней пользователь может узнать о своих задолженностях перед бюджетом, а через приложение банка — быстро и удобно оплатить их. 
  • Систему быстрых платежей (СБП). СБП позволяет мгновенно переводить деньги по номеру телефона клиенту любого банка.
  • Систему Know Your Customer (KYC). KYC позволяет идентифицировать личность контрагента, прежде чем проводить финансовую операцию.
  • Возможность выпустить цифровую карту вместо пластиковой.

Удобная онлайн-заявка на кредит и кредитную карту

В приложении реализовали сервис для подачи онлайн-заявки на получение кредита и кредитной карты. Для пользователя этот процесс выглядит просто и понятно. Он заполняет анкету и отправляет в банк. Через некоторое время получает ответ. Если заявка одобрена — то с конкретными условиями: сроком, суммой и ставкой кредита. Пользователь может сразу согласиться с этими условиями или попробовать их изменить: увеличить срок, уменьшить размер платежа. После этого он получает окончательный ответ от банка, оформляет кредит и получает деньги на счет или выбирает, в каком офисе заберет кредитную карту. 

Анкету можно сохранить в черновик и редактировать. После отправки в банк заявка появляется в списке «Мои заявки», в нем можно посмотреть актуальный статус. 

С точки зрения банка и мобильного приложения процесс оформления онлайн-заявки требует сложной логики реализации и интеграции со множеством банковских систем. В нем задействованы: 

  • бэкенд банка;
  • справочники, из которых подтягивается информация в анкету;
  • система, в которой хранятся данные о клиентах;
  • система Dadata — сервис обработки базы контактов, где проверяется корректность адреса клиента и информация о его работодателе;
  • отдел рисков, который анализирует информацию и рассчитывает процентную ставку.

Есть много «подводных камней», которые нужно учесть в оформлении заявки. Например, формат передачи данных: как мы будем оформлять дату, чтобы системы банка правильно ее обработали — дд.мм.гг или дд\мм\гг? Какие данные в анкете клиента можно подтягивать из справочника, а какие он должен заполнить самостоятельно? Как уведомить клиента о том, что статус его заявки изменился или о том, что обработка заявки потребует больше времени, чем планировалось? Кроме того, после заполнения пользователем анкеты бэкенду банка уходит json-файл, содержащий около 200 строк с данными пользователя. Его нужно корректно составить, передать и обработать. 

Все эти моменты мы учли и реализовали в логике мобильного приложения. 

В итоге, получился удобный инструмент, где клиент может быстро отправлять заявку на кредит или кредитную карту, редактировать срок или сумму кредита, следить за статусом заявки и оперативно оформлять кредит в случае одобрения. 

Давайте создадим мобильное приложение под ваши задачи вместе
Обсудить проект
Обсудить проект