Главная » Хабрахабр » Как и зачем мы сделали свои банкоматы

Как и зачем мы сделали свои банкоматы

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

Идея автоматизировать процесс выдачи наличных пришла в голову Джону Шеперду-Бэррону (John Shepherd-Barron). В 1967 году этому шотландскому изобретателю удалось убедить руководство лондонского Barclays Bank в том, что пока банк закрыт на выходные, обслуживать клиентов может машина. С тех пор эта идея прижилась повсеместно, а функциональность банкоматов расширилась с простой выдачи денег до большинства банковских операций.

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

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

Несмотря на спешку, мы не хотели использовать стандартные решения, поскольку все они были зажаты рамками протоколов и давно состарившейся ОС Windows XP, которая являлась ядром абсолютного большинства из них.

Итак, мы начали с поиска подходящего «железа».

Аппаратная основа банкомата

Детище Шеперда-Бэррона по конструкции было не многим сложнее, чем торговый автомат, которым вдохновлялся изобретатель. Но современные банкоматы представляют собой компьютерные терминалы, объединяющие в себе самое разное оборудование.

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

Основным требованием к «железной» части будущего банкомата Тинькофф была поддержка функции кеш-ресайклинга. Банкомат с этой опцией работает по замкнутому циклу, принимает и выдает денежные средства из одной кассеты и благодаря этому дольше работает без инкассаторского обслуживания. Кроме того, это устройство должно полноценно поддерживать NFC, считывать QR-коды и обладать большим сенсорным экраном.

Программное обеспечение банкомата

Одновременно с поиском аппаратного решения мы занялись вопросами софта.

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

Они сильно ограничивают гибкость разработки и внедрение новых фич. Для взаимодействия компьютера банкомата с картридером, пин-падом, ресайклером и прочей периферией, а также для организации «общения» с сервером существуют давно разработанные стандарты и протоколы.

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

С ним можно было бы добиться мультиплатформенности. Первоначально мы планировали отказаться от стандарта eXtension For Financial Services (XFS), описывающего логику управления оборудованием банкомата, в пользу собственного решения на основе Linux. Но эту идею пришлось отбросить, поскольку ни один производитель банкоматов не хотел соглашаться на вмешательство в драйвера банкоматного оборудования на столь глубоком уровне.

NET для платежных терминалов. Поэтому к работам по созданию управляющего программного обеспечения, интеграции банкомата с сервером и написания API для создания различных сценариев работы банкомата мы привлекли подрядчика — компанию, у которой был опыт разработки программного обеспечения на .

Свежая ОС давала больше возможностей по реализации визуально привлекательного и отзывчивого интерфейса, который напоминает тот, что реализован в нашем мобильном приложении, как внешне, так и по сценариям использования. Вместо Windows XP, установленной в решениях конкурентов, банкомат получил 64-битную Windows 10.

Эти сценарии и алгоритмы во многом неинтуитивны и неудобны. Всем, кто регулярно пользуется банкоматами, знакомы стандартные меню, которые предлагают выбрать язык, счет и т.д. Они  жестко зашиты в стандартных протоколах NDC/DDC, предназначенных для общения банкомата и сервера (хоста).

Чтобы избавиться от этих атавизмов, пришлось сменить протоколы на оригинальное гибкое и современное решение, которое бы связало банкомат с серверной частью, целиком написанной на Java.

Но время нас уже рассудило. В самом начале коллеги из других компаний говорили нам, что мы сошли с ума, как только мы заикались о том, что хотим уйти от стандартных протоколов NDC/DDC.

Что нового для клиентов

Конечно, почти все эти изменения в недрах ПО клиенту незаметны, однако он легко отличит банкомат Тинькофф от других не только по экрану и меню — переработка программного обеспечения позволила реализовать новые сценарии использования банкомата.

Каждый клиент, чей смартфон или карта поддерживает бесконтактную оплату, может воспользоваться банкоматом, просто приложив свое устройство или карту к считывателю. Прежде всего, речь об авторизации в личном кабинете при помощи NFC. Стараниями наших программистов NFC полноценно работает с платежными системами Google Pay, Apple Pay и Samsung Pay, поддерживает пополнение и снятие денежных средств.

Так мы называем выдачу денег при помощи QR-кода, сгенерированного в личном кабинете через мобильное приложение банка. Еще один, прежде невозможный способ взаимодействия с банкоматом — quick cash. Достаточно просканировать экран смартфона и забрать нужную сумму без всяких очередей и проволочек с поиском карты, вводом PIN-кода и навигацией по меню.

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

Оптимизация бэк-офисных процессов

При создании новых банкоматов мы уделили много внимания оптимизации бэк-офисных процессов: менеджменту, мониторингу, системе распространения обновлений, сервисному обслуживанию и инкассации.

Эти решения не поддаются кастомизации и тонкой настройке. Конечно, для всех этих операций существуют стандартные решения, но в них заложены те же недостатки, что и в протоколах NDC/DDC. Они попросту неудобны.

Инкассация

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

От него больше не требуется делать подсчетов, вводить в банкомат дополнительные данные. В решениях Тинькофф Банка взаимодействие инкассатора с банкоматом сведено к минимуму. Уменьшив число действий, выполняемых инкассатором, мы сократили количество человеческих ошибок и ускорили процесс инкассации. Процесс управляется с хоста, а на экране банкомата отображаются инструкции для работника, осуществляющего замену кассет с деньгами.

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

Рано или поздно возникает необходимость в инкассации. В теории Recycle-банкомат может не инкассироваться вовсе, но на деле в зависимости от местоположения банкомата, времени года и праздников из него могут забирать больше наличности или, напротив, пополнять кассеты быстрее, чем они опустошаются.

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

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

Регулярное обновление ПО

Еще мы решили проблему с обновлением внутреннего ПО. Релизы выходят у нас раз в две недели и накатываются автоматически, в то время как у большинства банков на рынке обновление ПО происходит в лучшем случае раз в год. А сам процесс достаточно хлопотный.

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

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

Тестирование прототипа: первые шишки

Для получения сертификатов от платежных систем VISA и MasterCard пришлось выделить отдельную команду, и все же в июне 2017 года прототип нашего банкомата был готов. С учетом того, что начали мы в январе, получилось весьма оперативно.

В тестовую доводку активно включилась команда тестировщиков. Затем банкомат был установлен в бизнес-центре, и доступ к нему получили все наши сотрудники. Хотя тестировщики проделали важную работу, выловив большинство критических багов, некоторые ошибки начали всплывать лишь на этапе внутреннего тестирования. Причем заранее предугадать появление тех или иных проблем было практически невозможно.

Просмотр логов операций ничего не дал, баг не воспроизводился. Так, в одном случае не срабатывал сценарий внесения в банкомат наличных. Выяснить в чем дело удалось лишь после просмотра записей с камер видеонаблюдения.

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

Например выяснилось, что люди имеют обыкновение игнорировать инструкции и действовать машинально. И если с этой проблемой справится было несложно (путем обновления ПО), то случаи, в которых играет роль человеческий фактор, так легко не исправляются. Так он попадает в диалог, где предлагается выбрать в какую из популярных систем электронных переводов или на счет какого сотового оператора следует перевести средства. В качестве примера приведем случай, в котором клиент, желающий пополнить счет Тинькофф Банка без карты по номеру договора, вместо того, чтобы нажать кнопку «пополнить», выбирает «оплатить». Причем Qiwi такой перевод принимает и кладет деньги на какие-то свои технические счета для дальнейших разбирательств. Клиент выбирает пункт Qiwi и вводит в поле, предназначенное для телефона, номер счета в Тинькофф банке.

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

Сказка будет впереди

Сами мы считаем, что наша история с банкоматами только началась. По сути у нас получился абсолютно уникальный продукт только благодаря тому, что мы не стали слушать возгласов типа «да как вы вообще будете жить без стандартных протоколов NDC/DDC». Хотя всевозможные трудности, конечно, были.

Карта банкоматов

В ближайшее время их количество удвоится, причем далее мы планируем наращивать темп. Пока в нашей сети немногим более 200 банкоматов, которые позволили нам быстро отточить все узлы этого сложного «организма», включая центр управления. И если вам интересны технические детали или кейсы по этому направлению, в последующих постах мы с радостью поделимся тем опытом, который нам удалось накопить.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

[recovery mode] .NET гуру Дино Эспозито: «Не будь пассажиром поезда, идущего под откос»

Дино приезжал в Минск лишь однажды, и нам удалось пообщаться с ним между лекциями, которые он давал для .Net-чиков. Мы решили не быть банальными и поговорили с Дино не только о работе, но и о книгах, о будущем и о ...

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

Верстать и тестировать адаптивные письма с интерактивом (например, с формами и слайдерами) — боль в квадрате. Верстать электронные письма — это боль. В статье расскажу об email-фреймворках — MJML и Foundation for Emails — и моих любимых ресурсах для тестирования ...