EMV-сервис с удаленным ридером
EMV-сервис — комплекс, предназначенный для проведения оплаты покупок в интернет-магазинах с использованием банковских карт.
Архитектура комплекса Андроид + EMV-сервис
Общие правила проведения оплаты
Коммерсант
У коммерсанта установлен ВЕБ сервер со стандартным интернет магазином. После регистрации коммерсанта в банке, коммерсанту присваивается «ID коммерсанта» и правила оформления кнопки «Оплата CHIP» на сайте.
Кнопка «Оплата CHIP» содержит Java скрипт, знающий об имени приложения «Транспорт запросов».
Пользователь
Пользователь покупает устройство с Андроидом версии 3.1 и выше с USB, покупает карт-ридер из заранее определенного списка.
Пользователь скачивает с Андроид-маркета.и устанавливает модуль для проведения платежей. Модуль состоит структурно из двух программ: «Обработчик ридера» и программа «Транспорт запросов».
Банк
Устанавливает у себя сайт платежной системы «CHIP-овая оплата», «EMV сервис» и обеспечивает через ESB доступ к CORTEX по протоколу ISO-8583 (диалект CORTEX).
Алгоритм проведения оплаты по чиповой карте
Пользователь, используя произвольный браузер, находит в Интернете магазин, совершает процедуру выбора товара. По окончанию нажимает на кнопку «Оплата CHIP». Java-скрипт этой кнопки запускает на устройстве пользователя приложение «Транспорт запросов», передавая ему в качестве параметров ID коммерсанта, ID-терминала, адрес сайта «CHIP-овая оплата», сумму платежа, ID транзакции и прочие параметры операции.
Приложение «Транспорт запросов» через программу «Обработчик ридера» проверяет наличие подключенного ридера и карты в нем. В случае отсутствия карты приложение «Транспорт запросов» выдает сообщение пользователю «Подключите ридер» или «вставьте карту». Программа для выдачи сообщений использует стандартные Андроид функции и не имеет своего отдельного графического интефейса.
После подключения программа открывает SSL канал связи на сайт «CHIPовая оплата» и передает туда сумму, ID коммерсанта, ID-терминала, ID транзакции и прочие параметры операции.
Программа «EMV сервис» на сайте принимает информацию, по ID коммерсанта и ID терминала извлекает из внешней базы данных набор необходимых реквизитов и EMV параметров.
Программа «EMV сервис» передает данные на устройство пользователя в приложение «транспорт запросов». Фактически ответ представляет собой набор APDU команд.
Приложение «Транспорт запросов» выполняет команды по CCID интерфейсу через программу «Обработчик ридера» и отсылает ответ назад в «EMV сервис».
Обмен между программами «Транспорт запросов» и «EMV сервис» осуществляется необходимое количество раз.
В определенный момент программа «EMV сервис» обращается через ESB на хост CORTEX по протоколу ISO-8583 (диалект CORTEX).
По мере исполнения процесса обмена программа «транспорт запросов» может выдавать пользователю сообщения типа «Введите ПИН на клавиатуре ридера» ожидать реакции пользователя, в соответствии со спецификацией протокола «Y».
В результате обмена программа «EMV сервис» принимает решение о факте исполнения транзакции (или необходимости исполнения автоотмены на хосте CORTEX).
После принятия решения о факте оплаты программа «EMV сервис» сообщает об этом решении приложению «транспорт запросов» и оно сообщает пользователю результат операции «Оплата на сумму ХХХХ произведена удачно» и возвращает управление браузеру.
Программа «EMV сервис» через ESB сообщает на сайт магазина результат проведения транзакции, сообщая ID коммерсанта, ID-терминала, ID транзакции и прочие параметры операции, в соответствии с протоколом «R».
При разрыве связи между программой «EMV сервис» и приложением «Транспорт запросов» программа «EMV сервис» может прекратить операцию и по необходимости выполнить операцию автоотмены через хост CORTEX.
Программа «EMV сервис» не производит сверку итогов с хостом CORTEX, поскольку работает в непосредственной близости от хоста (фактически исключены потери транзакций в результате сбоев связи).
Функционал структурных единиц системы
Интерфейс X.
Вызов Java скриптом приложения «Транспорт запросов», с передачей параметров ID коммерсанта, ID транзакции, суммы, адреса сайта «CHIPовая оплата»
Интерфейс Z.
Интерфейс, независимый от типа ридера, реализует CCID, исполнен на уровне классов Java.
Интерфейс S.
Интерфейс обращения к конкретному ридеру. Реализуется на уровне обращения USB классам Андроида и реализует конкретные команды ридера. Интерфейс взаимодействует с картой, передавая APDU команды
Интерфейс Y.
Интерфейс реализован внутри SSL соединения на уровне передачи XML запросов и ответов, которые обеспечивают для программы «EMV сервис» общение через удаленный ридер с ЧИП-овой картой. Дополнительно интерфейс поддерживает передачу сообщений для пользователя, которые необходимы в процессе совершения транзакции.
Интерфейс R.
Интерфейс предназначен для передачи данных коммерсанту о факте совершения (не совершения) платежа. Интерфейс реализован в виде вызова внешней динамической библиотеки с регламентированной функцией, которой в виде параметров передается результат обработки транзакции ID коммерсанта, ID-терминала, ID транзакции, сумму и прочие параметры операции..
Интерфейс V.
Интерфейс предназначен для выборки из базы данных по ID коммерсанта необходимых параметров для исполнения транзакции по карте. Интерфейс реализован в виде вызова внешней динамической библиотеки с регламентированной функцией.
Интерфейс ISO.
Интерфейс предназначен для проведения процесса авторизации на хотсте CORTEX Интерфейс реализован в виде вызова внешней динамической библиотеки с регламентированной функцией.
Программа «EMV сервис».
Данная программа реализует полноценную логику взаимодействия EMV-терминала и EMV-карты, является подобием прогаммного EMV-терминала. Программа поддерживает следующие операции: покупка, выдача наличных, получение баланса карты, автоматическая отмена неуспешной операции. Данные операции инициируются «Трансортом запросов» через интерфейс Y. В процессе исполнения транзакции программа через ESB обращается по ISO протоколу к хосту CORTEX для проведения процесса авторизации. Программа общается с картой через удаленный ЧИП-овый картридер, извлекает параметры обработки транзакции из внешней базы данных через интерфейс «V» и сообщает результат работы не в виде чека, а в виде сообщения для коммерсанта через интерфейс «R». В процессе исполнения транзакции программа может через интерфейс «Y» выдать сообщение пользователю. Например, «На карте недостаточно средств для проведения платежа». Программа реализована в виде сервиса на операционной системе Linux. (Дистрибутивы Fedora, Red Hat, Oracle или ASP. Ядро не ниже 2.6.32.)
Приложение «Транспорт запросов».
Основное назначение программы состоит в обеспечении передачи APDU команд от программы «EMV сервис» на ридер. Программа имеет визуальный интерфейс с пользователем, в котором может сообщить о результатах проведения транзакции и состоянии карты и ридера о необходимости набрать ПИН и другие сообщения. Этот интерфейс пользователя реализован на основе стандартных Андроидовских функций и фактически не требует создания никакого GUI. Программа реализована в виде Java приложения на Андроиде. Программа должна загружаться с Андроид-маркета совместно с программой «Обработчик ридера».
Программа «обработчик ридера».
Программа является JAVA классом и условно представляет собой «драйвер» ридера. Программа предназначена для стандартизации интерфейса Z в сторону программы «Транспорт запросов». Программа поддерживает некий списочный состав ридеров, самостоятельно определяя тип подключенного ридера. Программа выставляет в сторону программы «транспорт запросов» стандартизованный набор классов Java, который фактически реализует CCID. Программа реализована в виде Java приложения, загружаемого с Андроид-маркета совместно с программой «Транспорт запросов». Программа не имеет пользовательского интерфейса.