Сейчас входит в моду использование бесконтактного способа взаимодействия с банкоматом. И я сам предпочитаю пользоваться именно таким способом. Причем по очень прагматичным соображениям: никто твою карту не зажует и не захватит.
Не то чтобы это со мной часто случалось, или есть причины опасаться захвата карты, но пару раз я сталкивался с длинным таймаутом зависшего банкомата, и стоять несколько минут с надеждой забрать карту больше не хочется.
Впрочем, если у вас токенизированная карта (т.е. запиханная в телефон или часы), то бесконтактный способ взимодействия - единственный, который вам доступен. Телефон в щель кардридера не лезет, можете не проверять.
Сегодня расскажу небольшую деталь, как устроен такой бесконтактный сценарий.
Во всех тех случаях, в которых я сталкивался с бесконтактным банкоматом, все операции были построены по т.н. 2-tap сценарию. Т.е. надо было в ходе работы дважды коснуться кардридера. Хотя возможен и менее защищенный способ построения 1-tap (одно касание). В чем раница и почему лучше два (хотя и менее удобно клиенту)?
Дело вот в чем.
Бесконтактный интерфейс есть только у чиповой, EMV-карты. У карты с магнитной полосой не может быть никакой бесконтакности. А коли карта чиповая, то транзакция с ней - штука весьма непростая. Данные должны быть подписаны картой, а это значит - ей надо эти данные предъявить. Предъявить надо много чего: и данные терминала (банкомата в данном случае), и сумму, и тип операции (снятие, платеж или еще масса вариантов), и PIN для проверки... В общем, целый роман в письмах.
Однако в начале работы сценария мы еще понятия не имеем, какую операцию и на какую сумму будем производить, да и финансовая ли вообще это транзакция. При этом нам нужно как-то начать работу сценария. А банкомат находится, вероятнее всего, в состоянии "Ожидание карты". Чтобы пойти дальше, надо обязательно знать, каков номер карты. Потому что дальше сценарий будет ветвиться в зависимости от начальных цифр номера карты (префикса). Для своих клиентов мы можем предложить больше разных сервисов, чем для чужих. Да и со "своими картами" может быть ветвление. Например, для одних карточных продуктов - больше возможностей, чем для других. В общем, нам не только важно инициировать начало работы сценария, но и жизненно необходимо знать, с какой именно картой (или токеном) мы будем работать.
И именно для этого нам необходим тот самый первый tap (касание картой/телефоном считывателя).
Дальше почти все как обычно - собираем информацию о том, что именно хочет клиент, на какую сумму. Заполняем все необходимые внутренние буферы банкомата. Кстати. Мы, скорее всего, еще так и не отправили в процессинг ни бита информации о том, что мы с клинетом делаем. Сначала надо собрать все необходимые данные.
И вот когда мы все разузнали, знаем сумму транзакции и все такое, то только тут возможно отправить запрос на хост.
Но у нас чиповая карта! Надо получить от нее криптограмму (что-то вроде подписи) - ARQC. Для этого все эти данные надо отправить ей. Вот как раз тут и требуется второй tap. Вас об этом просит новый приглашающий экран. Вы подносите карту, ей передаются данные и запрашивается криптограмма... Получаем... И только теперь отправляем всю эту пачку данных в процессинг - пусть он там попробует сгенерировать транзакцию.
Есть второй вариант, когда мы не запрашиваем подпись карты. Тут возникает сложность, что нет соответствующей подписи и ряд других данных карты. Но есть информация, что платежные системы сквозь пальцы смотрят на этот пробел конкретно для снятия наличных, понимая сложности, связанные с реализацией сценария. Именно в этом случае мы имеем 1-tap сценарий.
Однако случись что - доказательной базы по этой транзакции довольно мало, если сравнивать с полноценной чиповой транзакцией. Нет криптограммы, нет подтверждения того, что операция легитимна. Конечно, так просто эту транзакицю не оспорить, но, строго говоря, не всё было сделано по стандарту. Потому банки избегают однокасательных сценариев. Вас просят приложить карту во второй раз.
Подписывайтесь на канал "Технологии Денег" в Яндекс.Дзен и Телеграм!