PashaPay — финтех-компания
3 200 000
Финансы, страхование, инвестиции
Азербайджан, Баку
Декабрь 2022
m10 - это мобильный цифровой кошелёк для оплаты товаров и услуг, а также для мгновенных переводов в Азербайджане без комиссий. Кошелёк был запущен в 2022 году платёжной экосистемой PashaPay.
Клиент обратился к нам с просьбой разработать кроссплатформенное мобильное приложение онлайн-кошелька для пользователей из Азербайджана. Запрос был на команду команду из пяти flutter-разработчиков, которые могли бы c нуля спроектировать архитектуру приложения и запустить процесс разработки.
Приложение должно было выдерживать высокую нагрузку, так как ожидалось, что им будут пользоваться более миллиона пользователей. Приложение должно было включать в себя интеграции с системами терминалов и банком для ввода и вывода денег из системы.
• Разработали кроссплатформенное мобильное приложение (Flutter, высокая производительность, поддержка iOS и Android).
• Спроектировали архитектуру клиентской части (BLoC, Freezed, Retrofit, DotEnv, Dio).
• Реализовали процесс регистрации и авторизации (подтверждение по SMS, ввод персональных данных, PIN-код, биометрия).
• Настроили главный экран приложения (разделы “QR”, “Отправить”, “Счета”). • Реализовали историю транзакций (детализация операции, фильтры, поиск, отображение ошибок).
• Добавили пополнение баланса (привязанная банковская карта, терминалы MilliOn с отображением ближайших точек).
• Добавили снятие наличных (генерация кода для банкомата без карты).
• Внедрили финансовые сервисы (оформление кредита, рассрочки, открытие накопительных счетов и депозитов).
• Реализовали сканирование QR-кодов (библиотека qr_code_scanner, проверка корректности данных, переход на форму перевода).
• Настроили генерацию QR-кодов для переводов внутри системы (формат данных, создание и отображение).
• Организовали Scrum-процесс (спринты по 2 недели, работа в малых группах, регулярные демо для клиента).
• Создали документацию для передачи in-house команде (архитектура, библиотеки, схемы интеграций, рекомендации по развитию).
• Предоставили техническую поддержку и тимлида для найма и обучения in-house разработчиков (собеседования, менторство, адаптация).
Клиент пришёл к нам уже с готовым дизайном приложения и готовой серверной частью; с нашей стороны необходимо было разработать клиентскую часть приложения. Для этого был выбран фреймворк Flutter, так как он позволяет создавать кроссплатформенные приложения, что значительно сокращает время и затраты, необходимые для разработки приложения.Над проектом работала команда из пяти Flutter разработчиков. Архитектура проекта и стейт-менеджер, который был выбран лидером нашей команды, определили выбор основных библиотек, используемых в проекте. Среди них были BLoC, Freezed, Retrofit, DotEnv и Dio.Работа велась в соответствии с принципами методологии Scrum. Команда была поделена сначала на две, а затем на три небольшие группы. В каждую группу входили два бэкенд-разработчика, два мобильных разработчика и продукт-менеджер со стороны заказчика.А конце каждого двухнедельного спринта все команды демонстрировали свои наработки заказчику. Каждая группа работала над отдельным функционалом.
Регистрация / авторизация
В процессе регистрации пользователю необходимо ввести свой номер телефона, который будет использоваться в качестве идентификатора. Далее на указанный номер телефона отправляется SMS с кодом подтверждения. После подтверждения номера телефона пользователь должен заполнить персональные данные, такие как имя, фамилия, дата рождения и т.д.
После заполнения всех данных пользователю необходимо создать PIN-код для входа в приложение и подтверждения транзакций. Также возможна настройка дополнительных уровней безопасности, таких как использование биометрических данных (отпечаток пальца или распознавание лица).Для авторизации в приложение необходимо ввести созданный в процессе регистрации PIN-код или, если настроена биометрическая аутентификация, пользователь может воспользоваться отпечатком пальца или распознаванием лица для входа в приложение.

Главный экран
На главном экране приложения, после авторизации, пользователь может переключаться между разделами “QR”, “Отправить”, “Счета”.

История транзакций и баланс
Каждая транзакция представлена отдельной строкой, содержащей информацию о переводе. Если перевод не удалось выполнить, тогда отдельной строкой отображается ошибка.
При нажатии на строку транзакции пользователь может получить более детальную информацию о ней, такую как точное время, уникальный идентификатор транзакции, использованный метод оплаты и т.д. Также для пользователей доступна возможность фильтрации транзакций по типу, дате или сумме, а также поиск по ключевым словам.Пользователь может пополнить баланс с привязанной банковской карты или через терминалы MilliOn. После нажатия на данную опцию приложение предоставит информацию о ближайших терминалах и инструкциях по пополнению.Также пользователь может снять наличные денежные средства с баланса через банкомат. После нажатия на данную опцию приложение предоставляет инструкции и генерирует код для снятия денег без карты.Кроме того, с помощью приложения можно воспользоваться различными финансовыми услугами: оформить кредит или рассрочку, открыть накопительный счёт или депозит.

Сканирование и генерация QR
Для реализации функционала сканирования QR-кодов в приложении M10 была выбрана библиотека qr_code_scanner, которая является одной из наиболее популярных и надёжных библиотек для этой задачи в экосистеме Flutter.
Генерация QR-кодов для переводов внутри системы включала несколько этапов, начиная от проектирования формата данных, которые будут закодированы в QR-код, и заканчивая реализацией функции генерации QR-кодов и их отображения в приложении.После успешного сканирования QR-кода осуществлялась передача данных на дальнейшую обработку, данные проверялись на корректность и соответствие ожидаемому формату.Если данные были валидны, ползователеь перенаправлялся на страницу с формой перевода денег, где адресат и сумма были уже предварительно заполнены. Пользователю оставалось только нажать кнопку для подтверждения операции (транзакции), это включало в себя взаимодействие с серверной частью приложения для выполнения транзакции. После выполнения операции пользователю отображалось соответствующее сообщение об успешном переводе или возникшей ошибке.
За три месяца мы запустили первый мобильный банк в Азербайджане. После soft launch клиент обратился к нам с просьбой помочь набрать команду flutter специалистов к ним в штат и передать экспертизу по приложению их будущей inhouse команде. С нашей стороны был предоставлен тимлид мобильной разработки для проведения технических собеседований.Для облегчения передачи проекта in-house команде была создана подробная документация, включающая описание архитектуры, используемых библиотек, схемы интеграций и рекомендации по дальнейшему развитию.В течение первых нескольких месяцев после завершения проекта была предоставлена техническая поддержка, что позволило оперативно решать возникающие вопросы и проблемы.Постоянное взаимодействие с клиентом и новой командой разработчиков обеспечило плавный переход и непрерывность работы над проектом.На данный момент в Google Play приложение m10 установили более 1 миллиона раз. Рейтинг приложения в обоих сторах составляет 4,9 из 5, основываясь на 90 тысячах оценок в Google и 936 отзывов в App Store.