Guava Pay

iOS, Android
Август 2021 - Март 2022

Guava Pay – это компания, которая разрабатывает единую платежную систему на основе новейших технологий.

Мы занимались тем, что сделали приложение для оплаты банковскими картами для терминалов PAX A50, A920 и Verifone Carbon Mobile 5 на базе Android, а также мобильные приложения на базе Android и iOS.

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

По проекту был выполнен полный цикл разработки от предпроектного исследования до поддержки в открытой эксплуатации. Первым этапом была полноценная проектировка проекта. После делали дизайн. Параллельно с дизайном шла разработка бекенда. Потом работали непосредственно с фронтом и мобильными операционными системами. Сделали интеграцию с процессингом платежей BPC для проведения карточных транзакций на основе стандарта ISO 8583. В рамках проекта также прошли сертификации процессинга BPC, PA DSS, EMV.

При разработке использовали следующий стэк: 

Android - Kotlin
iOS - Swift
Backoffice - ReactJS 
Backend - Node.js
Кэш - Redis

Что делали? 

Интеграцию с процессингом BPC (банковский процессинговый центр) делали следующим образом:

• сначала считывали данные карты клиента с помощью терминалов PAX и Verifone или вводили их вручную

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

• после отправляли данные зашифрованными в BPC

Сложность возникла с интеграцией BPC. Пришлось потратить время на изучение шифрования и интеграцию по Bluetooth пинпада с приложением на iOS. 

Разработка SDK велась в два этапа.

Первый этап – работа с хостом процессинга (BPC хостом), который проводит все банковские транзакции. 

Задача была сложная. Необходимо было с нуля изучить документацию по стандарту ISO 8583 и информацию по процессу обмена данных с банковскими картами. Это заняло много времени. Решение нашлось после подключения к этому вопросу поддержки самого BPC, где специалист объяснил настройку соединения и прочие нюансы.

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

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

Второй этап – работа с терминалом.

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

Банковские карточки работают по протоколу обмена данных с помощью специальных команд. То есть описывается команда, и карточка возвращает данные. С карт мы собрали все данные по алгоритму: из карточного приложения с уникальным идентификатором Application ID  (приложения MasterCard, Visa, Union Pay, МИР), процессинг карты (набор информации, необходимый для работы с картой). 

Получив их, считали записи карточки, которые вынули из определенного тега на карте, сгенерировали Application Cryptogram и закончили на этом этап считывания карты.

После сбора всех данных отправили запрос на BPC хост в процессинг. Как оказалось, хост может вернуть в ответ необходимые скрипты, которые нужно отправить на карточку. Соответственно мы ждали ответ от хоста. Если был ответ – отправляли на карту скрипты, если не было – ничего не делали.

В какой-то момент мы дополнительно реализовали оффлайн проверку пин-кода карты через специальную команду.

С терминалом Verifone все оказалось проще. Он был высокоуровневый. На экране предлагалось ввести карту и пин-код, а весь процесс обмена данных с карточным приложением терминал реализовывал сам, в том числе на выходе отдавал все необходимые данные для BPC.

При работе с Android мы справились быстро. Считывание карт легко происходит с помощью чипа NFC. Любой телефон Android с NFC может считать банковскую карточку, собрать все нужные данные и отправить их на хост. Однако Android подходит только для бесконтактной оплаты. Терминалы PAX и Verifone работают с магнитной полоской, а также с чиповыми транзакциями, когда карту надо вставить.

Таким образом мы реализовали приложение по оплате картой через терминалы PAX и Verifone, а также через мобильные приложения на базе Android и iOS. 

Главное преимущество перед стандартными терминалами в том, что превратить в условный терминал можно практически любое устройство, у которого есть чип NFC. При необходимости клиент может сэкономить на покупке терминала и приобрести простой планшет, куда установит приложение. Подобная технология давно распространена в странах Европы и в Великобритании.

Связаться с нами

Guava Pay

iOS, Android
Август 2021 - Март 2022
I want the same