Как добавить карту Тройка в Apple Pay. Инструкция.

Возможна ли оплата в метро с айфона

Платежная система Эппл Пэй появилась в России в 2020 году. Но возможность оплаты проезда в метро с ее помощью стала доступной пользователям только в апреле 2020 года. И то, с некоторыми ограничениями:

  • расплачиваться через Apple Pay можно только в метрополитене Москвы и Санкт-Петербурга;
  • оплату поддерживают только турникеты с датчиками квадратной формы.

Но это в любом случае большой шаг вперед. Кроме того, ограничения с лихвой нивелируются преимуществами использования платежного сервиса:

  • расчет с помощью Apple Pay можно производить не только на турникетах, но и в кассах и терминалах метрополитена;
  • необходимые для пользования Эппл Пэй устройства установлены на всех станциях метрополитена;
  • при покупке билета данным способом действует 20%-я скидка на проезд.

В ближайшем будущем планируется введение поддержки эппловского платежного сервиса в метрополитенах Екатеринбурга и Новосибирска. На момент написания статьи (начало 2020 года) такой возможности нет, но советуем жителям этих городов следить за новостями.

Оплата метро Apple Pay происходит точно так же, как и оплата любой другой покупки с помощью этого платежного сервиса. Если вы пользуетесь айфоном или айпадом, алгоритм действий будет таким:

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

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

Все скуд неудобные

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

В некоторых случаях сложные СКУД необходимы: в крупных зданиях с множеством зон доступа, турникетами, охраной, временными пропусками.

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

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

Действие 2. привязка карты

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

При нажатии на нее открываются сканер и надпись «Ввести данные вручную», т.е. можно привязать карту двумя способами: забить вручную данные или отсканировать карту и в приложении появятся все данные автоматически. Только желательно проверить введённые автоматически данные, информация может быть не совсем  правильная.

При вводе данных вручную нужно написать номер карты, срок её действия и код безопасности (CVV). Затем система запросит номер телефона, на который придет проверочный код. После того, как вы ввели одноразовый пароль, нужно нажать кнопку «Сохранить». На главной странице появится изображение добавленной карты.

Как записать билеты на карту «тройка»

Проездные абонементы записываются через представителей перевозчика.

Пункты их записи зависят от конкретного билета:

  • Билет Единый: кассы метро, киоски Мосгортранса;
  • 90 минут – кассы метро, Мосгортранса;
  • ТАТ – киоски Мосгортранса.

Для записи билета нужна карта или иной носитель информации. Необходимо обратиться к кассиру с просьбой записать выбранный абонемент, и оплатить его стоимость. Билет будет моментально зачислен на карту. Комиссии в этом случае нет. В ином варианте можно использовать терминал Элекснет.

Инструкция записи билета в этом случае будет выглядеть так:

  • Нужно приложить пластик к считывающему устройству (оно представляет собой желтый круг).
  • На дисплее отобразится информация о существующих билетах. Нужно выбрать подходящий и оплатить его через купюроприемник.
  • Срок записи билета составляет 10-15 секунд, комиссии нет.

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

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

Как зарегистрировать карту «тройка» в программе лояльности «город»

Эта система создана в 2020 году и предназначена для накопления скидок и бонусов. Их впоследствии можно потратить на оплату услуг в кафе и ресторанах, магазинах, театрах и даже на стойках велопроката. На данный момент программа «Город» насчитывает более 300 онлайн-партнеров и 5000 магазинов в Москве и МО.

Пройти регистрацию в системе можно через ее официальный портал или приложение, доступное в AppStore и Google Play Market.

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

Технические требования к приложению:

  • Apple – iOS старше 10.0. Возможна установка на iPhone, iPad, iPod Touch.
  • Android – версия системы выше 5.0.

Принцип взаимодействия с приложением «Город»:

  1. После запуска и представления основных возможностей (предъявление в магазинах, соотношение бонусов и рублей) появится кнопка «Регистрация» – нажимайте на нее.
  2. Для проведения процедуры потребуется ввести 10-значный номер «Тройки». Также внизу доступен вариант входа через имеющийся аккаунт.
  3. Для проведения привязки (подтверждения законного использования карты) на следующем шаге появится окно с просьбой указать 2 станции метро, посещенных в последнем месяце. После их введения внизу появится кнопка «Далее».Как привязать карту «Тройка» к телефону
  4. Для привязки карты также потребуется номер телефона – на него придет проверочный код. Сюда же будет приходить пароль во время обмена бонусов на скидку при покупке или оплате услуги.
  5. Дальше заполняются обычные персональные данные: ФИО, дата рождения, пол. Обязательно указывается и актуальная электронная почта. Как привязать карту «Тройка» к телефону
  6. После этого программа предложит создать 4-значный пароль. Он же будет использоваться для входа в личный кабинет на официальном портале «Города».

Как оплачивать проезд телефоном вместо карты «тройка»

Здесь есть 2 варианта:

  • Обычная банковская карта и Apple Pay или Google Pay. Работает пока не везде, только на терминалах с квадратным элементом вместо круглого (обычно они стоят с краю). Минус – цена проезда будет выше, чем по «Тройке».
  • Услуга «Мобильный билет» от любого из 4 ведущих операторов связи. Полностью заменяет «Тройку», стоимость проезда выходит аналогичной, но действует не на всех смартфонах. Полный список есть на офсайте каждого из операторов: МТС, Билайн, МегаФон, Теле 2.

Чтобы воспользоваться «Мобильным билетом», приложите смартфон к валидатору и дождитесь зеленого индикатора, чтобы пройти через турникет. Деньги будут списаны с виртуальной карты на симке, стоимость проезда – как по «Тройке» (тариф «Кошелек»).

Когда баланс транспортной карты станет меньше 90 руб., на него автоматически зачисляются 150 руб. со счета телефона. Управление услугой доступно через официальный сайт оператора (раздел – «Мобильный билет»), SMS-запросы.

Как пополнить «тройку» с телефона

Начальный этап процедуры работает абсолютно на любых устройствах, а с записью проведенного платежа могут возникнуть проблемы. Разработчики советуют в первый раз выделить на это минут 5–10.

Алгоритм:

  1. Запустите приложение «Тройка. Проверка и пополнение баланса», приложите карту к задней крышке лицевой стороной. Потребуется около 20 секунд на считывание данных, если модуль NFC был найден верно. Если нет – переместите карту и попробуйте еще раз.
  2. Когда чтение произойдет, на экране появится вся доступная информация о «Тройке»: сверху отображается номер, по центру – варианты билетов. Внизу расположена зеленая кнопка «Пополнить». Как привязать карту «Тройка» к телефону
  3. После нажатия на нее приложение определяет, какую сумму можно положить на счет, и показывает ее. Минимальная – 10 рублей.
  4. После того, как будет введена желаемая сумма пополнения «Тройки», можно выбрать билет, который требуется купить: для этого над кнопкой «Оплатить» есть строка «Выбрать другой билет». Загрузится список доступных вариантов.
  5. Нажмите на тот, который нужен, и следом на кнопку «Оплатить». Как привязать карту «Тройка» к телефону
  6. В следующем окне вбейте реквизиты банковской карты, с которой должны списаться деньги. Эти данные можно сохранить для последующих более быстрых пополнений «Тройки». На электронную почту придет чек о совершенной операции. Также можно просто приложить банковскую карту к модулю NFC (магнитной лентой), чтобы считать её данные.
  7. Снова нажимайте кнопку «Оплатить». Не отнимайте «Тройку» от задней крышки телефона, чтобы произошла запись билета. Об успешном завершении процедуры оповестит соответствующее сообщение. Дальше можно проводить новую оплату или просмотреть детали текущей.

По отзывам пользователей, официальный софт работает нестабильно даже на телефонах, которые его поддерживают (аппаратно совместимы). Разработчики рекомендуют найти правильную точку прикладывания карты к аппарату, потому что во всех смартфонах расположение модуля NFC разное и именно от этого зависит, как происходит запись билета.

Как привязать карту «тройка» к телефону

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

Единственный сервис, в который нужно интегрировать «Тройку» – это «Мобильный билет», который предлагают все 4 основных оператора связи в России. Для него необходимо приобрести специальную сим-карту, поддерживающую NFC. На ней создается отдельный счет, благодаря чему она способна выполнять те же функции, что и «Тройка». Для замены сим-карты обратитесь в офис своего оператора. Услуга бесплатная, номер сохраняется.

Дальнейшие действия:

  1. Вставьте сим-карту в телефон, дождитесь смс от Мосгортранса (с номера 3210).
  2. Отправьте в ответ «1» для подключения услуги. С баланса будет списано 150 руб. – они упадут на счет транспортной карты телефона.

Принцип управления услугой у каждого оператора свой. На МТС это можно делать не только через сайт, но и через приложение «МТС Деньги». У МегаФон – через SIM-меню или смс-команды.

В приложении «Мой умный город» (бывшее – «Мой проездной») тоже предполагается привязка транспортной карты и последующая интеграция с Google Pay, но пока точных сроков нет.

Как проверить баланс счета

Принцип действий здесь точно такой же, как при пополнении, только шагов будет значительно меньше. Обновление информации идет в режиме реального времени, поэтому уже после поездки, совершенной 1–2 минуты назад, можно запрашивать остаток.

Алгоритм:

  1. Запустите приложение. На экране появится подсказка о дальнейших действиях: нужно приложить карту к задней панели телефона, чтобы максимально уменьшилась дистанция с NFC-модулем. На некоторых аппаратах его расположение четко указано (так делает Samsung). «Тройка» прикладывается лицевой стороной. Как привязать карту «Тройка» к телефону
  2. В зависимости от качества аппаратного обеспечения и скорости обработки данных информация на экране появится через 2–20 секунд. В верхней половине отображается номер «Тройки», в нижней – остаток средств, дата и время последней поездки. Также здесь можно просматривать информацию для разных билетов: «Кошелек», «Единый», «ТАТ».
Читайте ещё про NFC:  Apple Pay

Как работает карта тройка?

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

Получить карточку можно в кассе метрополитена или любого другого транспорта. Стоимость пластика составляет 50 рублей. Если необходимости в нем больше нет, можно вернуть ее и получить 50 рублей назад. Применять «Тройку», таким образом, могут как жители, так и гости города. В том, как пользоваться тройкой с телефона, нет ничего сложного.

Существует несколько тарифов по карте, определяющихся потребностями пассажира:

  • «Единый» – оплата одной поездки в транспорте.
  • «90 минут» – оплата одной поездки в метро и 90 минут поездок на общественном транспорте.
  • ТАТ – возможность применять любой наземный транспорт.

При утере карты восстановить внесенные на нее средства невозможно. Также нельзя заблокировать их. Если пластик сломался или плохо работает, можно обратиться в кассу общественного транспорта, где мастера по возможности помогут ее исправить.

Нужно учесть еще один момент. Территория города Москвы и области разделяется на две зоны. Применять карточку можно лишь в пределах одной зоны. Он зоны могут зависеть и тарифные планы. Для переезда между зонами нужно будет купить билет «Единый». Есть переходный участок, дающий возможность перемещаться с одной зоны на другую на небольшую дистанцию. Для этого требуется белый билет «Автобус». Он также может быть внесен в карту.

Посредством «Тройки» можно оплатить проезд лишь одному человеку. Повторное использование пластика возможно спустя 5-10 минут. Исключением является метрополитен – там можно оплатить поездки нескольких человек сразу.

Какие устройства поддерживают карту «тройка»

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

Они должны отвечать следующим требованиям:

  • версия операционной системы старше 4.4;
  • поддержка NFC со стандартом Mifare Classic;
  • наличие интернета (для отдельных операций).

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

Подробного списка устройств, на которых софт не работает корректно, не существует. Самые известные проблемы касаются линейки S у Samsung, телефонов Xiaomi, Asus ZenFone Max Pro, но это не единственные аппараты, где возникают ошибки. Если конкретному смартфону официальный софт недоступен, он просто не отобразится в Google Play. Также по всем вопросам можно обратиться в поддержку – она оперативно отвечает.

На Apple-девайсы такого приложения не разработано и в ближайшее время его появление не предвидится. Это связано с особенностями ограничений самой системы iOS. Несмотря на наличие NFC здесь не поддерживается запись протокола, который использован в «Тройке».

В AppStore существует приложение «Тройка», однако выпущенное другими разработчиками. Здесь тоже можно провести пополнение карты, увидеть баланс, просмотреть историю операций, но запись средств придется проводить через желтый терминал.

Карта «тройка» как идентификатор

Карта «Тройка» — пополняемая карта для оплаты проезда на всех видах общественного транспорта Москвы. Это наиболее выгодный и удобный способ оплаты общественного транспорта и некоторых городских услуг: планетарий, каток, зоопарки, Третьяковская галерея, парковка.

Технически карта выполнена на базе чипа Mifare Plus, работающего в режиме SL1 — режим эмуляции Mifare Classic 1K. На обратной стороне карты находится 10-значный номер, который используется для удаленного пополнения баланса карты. Этот номер удобно использовать в качестве идентификатора в СКУД.

Номер карты «Тройка», записан в памяти карты в 32-м блоке 8-го сектора. Для чтения защищенной области памяти необходим шестибайтный ключ, который давно не является таким уж секретным.

Номер карты «Тройка» (не путать c UID чипа) хранится в защищенной памяти в блоке 32 со второго байта по младшие четыре бита седьмого байта. Для чтения этой области памяти необходим А-ключ от сектора 8. Эти ключи давно не являются секретом и легко находятся в интернете вместе с подробным описанием формата хранения данных.

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

Вопросы безопасности такого подхода рассматриваются в FAQ в конце статьи. Примеры кода для чтения номера карты Тройка с помощью Arduino есть в главе «Первый прототип».

В Санкт-Петербурге существует похожая карта «Подорожник». При необходимости её можно также использовать в качестве идентификатора, одновременно с картой «Тройка».

Ключевые особенности считывателя pnr-p03e

  • Программируемый алгоритм чтения карт — возможность загрузки нестандартной прошивки позволяет реализовать любую логику считывания карт, в том числе одновременную поддержку карт EMV, «Тройки» и любых других. Функциональность считывателя может быть расширена обновлением прошивки.
  • Поддержка различных интерфейсов подключения контроллера — считанный идентификатор передается на контроллер по любому из доступных протоколов: Wiegand от 26 до 58 бит, OSDP (RS-485, RS-232), Touch memory (I-Button) и собственный проприетарный протокол Parsec
  • Отделяемый антенный модуль — плата имеет линию перфорации, позволяющую отделить антенну от основного модуля для удобства интеграции в корпус
  • SDK для разработки — библиотеки с примерами кода позволяют интегрировать считыватель в свои проекты

Блок-схема, иллюстрирующая работу считывателя. При успешном считывании идентификатора, он передается на контроллер по протоколу Wiegand.

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

Контроллер борей

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

Часто контроллеры СКУД состоят из нескольких блоков управления и компьютера с базой данных. Мы принципиально не хотели держать отдельный компьютер и искали компактное решение в виде одного устройства, которым можно управлять через API для интеграции с Telegram-ботом.

Поиск такого устройства занял больше месяца, пока я не наткнулся на старую статью на хабре «Обзор СКУД с бесплатным программным обеспечением». В комментариях пользователь rgmih упомянул, что их компания производит именно такой контроллер.

Так мы нашли контроллер БОРЕЙ от компании ИТРИУМ.

Плата контроллера БОРЕЙ в настенном корпусе

Устройство работает под управлением Linux на базе ARM-процессора.

Основные достоинства устройства, которые редко можно встретить у других контроллеров:

  • Полностью автономный — все функции выполняет одно устройство. Для управления не нужно дополнительных программ или отдельного компьютера. База данных хранится на SD-карте. При отключении интернета контроллер продолжит работать.
  • Web интерфейс и REST API — возможность управлять контроллером через браузер и интегрировать с Telegram-ботом через API. Позволяет управлять пропусками удаленно.
  • Подключение по Ethernet — устройство подключается в IP-сеть. Имеет встроенный коммутатор на 2 порта.
  • Идентификаторы произвольной длины до 64 бит — возможность интегрировать контроллер с нестандартными идентификаторами разной длины. Позволяет иметь гибридную систему с идентификаторами разной длины.

В момент считывания карты, считыватель передает прочитанный идентификатор карты на контроллер по протоколу Wiegand. Контроллер ищет идентификатор в своей базе данных и решает, можно ли этому идентификатору открывать дверь или нет.

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

Если доступ запрещен, контроллер посылает сигнал индикации на считыватель, и тот горит красным цветом и пищит о том, что доступ не разрешен.

Контроллер подключается в сеть c помощью Ethernet-кабеля. Начальная настройка требует только задать IP-адрес устройства. Никакого программного обеспечения, помимо браузера, не требуется.

Учетные записи заводятся в меню «Бюро пропусков». Чтобы не вводить идентификатор карты вручную, его можно поднести к считывателю в момент создания учетной записи.

Создание нового пропуска в веб-интерфейсе контроллера БОРЕЙ

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

Настройка карты в приложении wallet для использования в качестве транспортной экспресс-карты

Подходящую карту можно настроить в приложении Wallet для использования в качестве транспортной экспресс-карты.3 Узнайте, какие карты можно использовать в качестве транспортной экспресс-карты в приложении Wallet, в местном транспортном агентстве.

Настройка новой транспортной карты в приложении wallet

Новую транспортную карту можно настроить для использования в качестве транспортной экспресс-карты с оплатой через Apple Pay в приложении Wallet:

  1. Убедитесь, что на устройстве выбран верный регион.
    • На устройстве iPhone: перейдите в меню «Настройки» > «Основные» > «Язык и регион», затем прокрутите вниз до пункта «Регион».
    • На часах Apple Watch: откройте приложение Watch на iPhone и перейдите на вкладку «Мои часы». Затем выберите раздел «Основные» > «Язык и регион» и проверьте регион.
  2. Откройте приложение Wallet на iPhone.
  3. Нажмите кнопку «Добавить» кнопка «Добавить», затем — «Продолжить».
  4. Выберите транспортную карту вашего города, затем сумму, которую необходимо перевести на карту, и нажмите «Добавить»4.
  5. Следуйте инструкциям по созданию транспортной карты на iPhone.
  6. Включите режим транспортной экспресс-карты для вашей новой транспортной карты.

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

Настройка новой транспортной карты в приложении wallet

Новую транспортную карту можно настроить для использования в качестве транспортной экспресс-карты с оплатой через Apple Pay в приложении Wallet:

  1. Убедитесь, что на устройстве выбран верный регион.
    • На устройстве iPhone: перейдите в меню «Настройки» > «Основные» > «Язык и регион», затем прокрутите вниз до пункта «Регион».
    • На часах Apple Watch: откройте приложение Watch на iPhone и перейдите на вкладку «Мои часы». Затем выберите раздел «Основные» > «Язык и регион» и проверьте регион.
  2. Откройте приложение Wallet на iPhone.
  3. Нажмите кнопку «Добавить» кнопка «Добавить», затем — «Продолжить».
  4. Выберите транспортную карту вашего города, затем сумму, которую необходимо перевести на карту, и нажмите «Добавить»4.
  5. Следуйте инструкциям по созданию транспортной карты на iPhone.
  6. Включите режим транспортной экспресс-карты для вашей новой транспортной карты.

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

Обработка pdol (processing options data object list)

В ответ на запуск платежного приложения карта может затребовать от считывателя PDOL (Processing Options Data Object List). Это набор параметров POS-терминала — поддерживаемые протоколы и стандарты, валюта, в которой будет производиться расчет, дата, случайное число для криптографии, и так далее.

Читайте ещё про NFC:  Vx 820 android pay

Список PDOL может различаться у разных карт. Общее число параметров PDOL — несколько десятков. Полный список параметров PDOL можно посмотреть здесь: eftlab.co.uk/index.php/site-map/knowledge-base/145-emv-nfc-tags.Сложность состоит в том, что список PDOL у разных карт, даже выпущенных одним банком в разное время, может существенно различаться. Некоторые карты запрашивают два-три параметра, другие — десяток.

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

Ответ карты на старт платежного приложения. Содержит запрос PDOL.

'6F 31 84 07 A0 00 00 00 03 10 10 A5 26 9F 38 18 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 37 04 BF 0C 08 9F 5A 05 60 08 40 06 43 90 00'

Пропустим этот ответ через

Видно, что значение PDOL начинается с маркера 9F38 и равно 9F66049F02069F03069F1A0295055F2A029A039C019F3704. Парсер emvlab.org не умеет парсить значения PDOL, поэтому воспользуемся программой для Android-смартфонов Credit Card Reader.

Вот тот же ответ, обработанный более умным парсером. Видно каждый параметр PDOL:

Данный парсер не скрывает байт длины после маркера, как это делает emvlab.org. Поэтому последний байт каждого маркера следует читать как длину.

Разберем запрос PDOL подробнее

9F 38 18 // Маркер начала PDOL. Длина 18 (24 байта) 
 9F 66 (длина 04) // Terminal Transaction Qualifiers (TTQ). Параметры платежного терминала 
  9F 02 (длина 06) // Сумма списания
   9F 03 (длина 06) // вторая сумма
   9F 1A (длина 02) // Код странцы в формате ISO3166-1
   95 (длина 05) // Terminal Verification Results
    5F 2A (длина 02) // Код валюты, в которой работает терминал, в формате ISO4217
     9A (длина 03) // Дата в формате YYMMDD
      9C (длина 01) // Тип транзакции 
       9F 37 (длина 04) // Случайное число для криптографии

Подробное описание всех возможных параметров PDOL можно найти в

Карта ожидает ответ на PDOL в том же порядке, в котором следуют запросы, и ровно той длины, которая указана после каждого параметра PDOL. Если сложить длину всех параметров (последний байт каждого параметра), получится 33 байта. Значит карта ожидает от считывателя PDOL длиной в 33 байта.

Так как мы не собираемся списывать с карты деньги, наша задача — сформировать самый простой из возможных ответ PDOL, который удовлетворит карту. Если наш ответ не понравится карте, она ответит кодом 6985 Conditions of use not satisfied.

Экспериментальным путем я выяснил, что почти на все запросы PDOL можно ответить нолями, кроме Terminal Transaction Qualifiers (TTQ). В случае с VISA, нам нужно убедить карту в том, что терминал соответствует спецификации VCPS 2.1.1. Для этого ответ на TTQ должен выглядеть так:

'F0 00 00 00'

Подробнее про формат TTQ

Карты MasterCard, которые мне довелось испытать, позволяли игнорировать PDOL и отдавали PAN-номер без корректного ответа на PDOL.

Вот как будет выглядеть минимальный рабочий ответ на запрошенный выше PDOL:

'80A80000238321F0000000000000000000000000000000000000000000000000000000000000000000'
 80 A8 00 00 // Команда GET PROCESSING OPTIONS (GPO)
  23 // длина всего запроса (35 байт)
   83 // маркер PDOL-ответ
    21 // длина PDOL-ответа (33 байта)
     F0 00 00 00 // Terminal Transaction Qualifiers (TTQ)
      00 00 00 00 00 00 // Сумма списания
       00 00 00 00 00 00 // Вторая сумма
        00 00 // Код страны считывателя
         00 00 00 00 00 // Terminal Verification Results (TVR)
          00 00 // Валюта
           00 00 00 // дата 
            00 // тип транзакции
             00 00 00 00 // Случайное число 

Если наш ответ удовлетворил карту, мы получим сообщение, начинающееся с маркера

77

с кодом SW2=9000. Этот ответ может содержать нужный нам PAN-номер, а может и не содержать. (офигеть)

Особенности тройки

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

Преимущества:

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

Учитывая все эти факторы, можно понять, почему продукт пользуется спросом. Он удобен в применении и выгоден для клиентов. Можно адаптировать условия под себя, чтобы дополнительно снизить затраты на поездки.

Перенос баланса физической транспортной карты в приложение wallet

Для начала убедитесь, что на устройстве выбран верный регион.

  • На устройстве iPhone: перейдите в меню «Настройки» > «Основные» > «Язык и регион», затем прокрутите вниз до пункта «Регион».
  • На часах Apple Watch: откройте приложение Watch на iPhone и перейдите на вкладку «Мои часы». Затем выберите раздел «Основные» > «Язык и регион» и проверьте регион.

После выбора региона выполните следующие шаги.

На часах apple watch

  1. Откройте приложение Apple Watch на iPhone.
  2. Прокрутите вниз и нажмите «Wallet и Apple Pay».
  3. Нажмите «Добавить карту», а затем «Продолжить».
  4. Выберите имя транспортной карты, которую необходимо добавить.
  5. Нажмите «Перевести баланс с имеющейся карты».
  6. Следуйте инструкциям по переводу баланса.

При переносе баланса в приложение Wallet физическая карта может перестать работать. Если необходимая транспортная карта не отображается, возможно, она недоступна в вашем регионе.

Если отображается сообщение «карта не обнаружена» или «сбой добавления карты»

Если на iPhone надет чехол, снимите его, также удалите все металлические предметы, которые могут располагаться между iPhone и физической картой. Затем попробуйте снова перенести карту в приложение Wallet. Убедитесь, что верхняя часть iPhone располагается на физической карте и неподвижна.

Поиск pan-номера

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

PAN-номер может содержаться в трех местах:

APDU-команды (что они значат вообще? Хз, нужно прочитать)

'00 b2 01 1c 00'
'00 b2 01 0c 00'
'00 b2 02 0c 00'
'00 b2 01 14 00'
'00 b2 02 14 00'
'00 b2 04 14 00'

И парсим все ответы на предмет маркеров

57 13

либо

5A 08

. Найденные 8 байт карты можно дополнительно чекнуть на контрольную сумму с помощью

Если номер валидный, берем его последние десять цифр.

В итоге наш примитивный алгоритм чтения PAN-номера можно изобразить в виде блок-схемы

Пополнение карты тройка через nfc-соединение: пошаговая инструкция

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

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

В частности, для обычных смартфонов на базе Андроид алгоритм выглядит так:

  • зайти в «Параметры» или «Настройки»;
  • выбрать раздел «Подключение устройств»;
  • нажать на клавишу «NFC».

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

После включения модуля происходит непосредственное пополнение. Понадобится:

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

Старт платежного приложения — select aid

В ответ на SELECT PPSE карта должна вернуть FCI (File Control Information) со списком приложений, существующих на карте. Помимо платежных приложений (VISA, MasterCard, AmericanExpress) карта может содержать неплатежные приложения, используемые для других нужд.

Ответ карты VISA на SELECT PPSE

'6F 23 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 11 BF 0C 0E 61 0C 4F 07 A0 00 00 00 03 10 10 87 01 01 90 00'

Для удобства проанализируем ответ с помощью онлайн-парсера формата TVL

. Тот же ответ карты VISA, обработанный парсером:

Из всего этого нас интересует только идентификатор платежного приложения (AID). В данном случае, это значение A0000000031010, означающее Visa International.

AID помечается маркером 4F. Вторым битом после маркера следует длина данных, в нем содержащихся. Несмотря на то, что длина AID может варьироваться от 5 до 16 байт, в большинстве случаев она равна 7 байтам. Поэтому для простоты поиска AID в ответе, мы будем искать маркер 4F 07 и считать 7 байт после него как AID.

Такой подход очень примитивный и может не работать в случаях, если длина AID будет другой, но для нашей задачи это не важно, так мы скорее всего никогда не столкнемся с картами, отличными от Visa и MasterCard. Поэтому наш самодельный парсер PPSE-ответа можно упростить до такой логики: если ответ начинается с 6F, заканчивается на 90 00 и содержит внутри последовательность 4F 07, ответ считается корректным.

Полный список AID: eftlab.co.uk/knowledge-base/211-emv-aid-rid-pix

Некоторые популярные AID

A0000000031010 Visa International
A0000000032020 Visa International
A0000000041010 Mastercard International
A0000000043060 Mastercard International United States Maestro (Debit)

Получив значение AID, его нужно запустить командой SELECT. В данном случае мы запускаем приложение Visa International, полученное из ответа на PPSE SELECT

APDU-команда SELECT AID

'00 A4 04 00 07 A0 00 00 00 03 10 10'
  00 A4 04 00 // команда select 
   07 // длина command data (7 байт)
    A0 00 00 00 03 10 10 // AID Visa International

Частые вопросы о карте «тройка»

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

Вопрос Ответ
Через приложение пополняется только пластиковая «Тройка» или в виде браслетов и брелков тоже можно? Формат карты не играет роли: внутренний чип везде одинаковый.
Как пополнять «Тройку» на айфонах, если официального приложения нет? Если вопрос только в переводе денег на карту, то с этим справляются другие приложения: «МосМетро», «Московский Транспорт», «Город», «Яндекс.Метро». Но записывать билет придется через терминал.
Можно ли внести «Тройку» в Wallet? Пока нет. В 2020 про это шла речь, но даже в середине 2020 года функция не реализована: привязывать можно только банковские карты. По ним цена проезда в 1 сторону составляет 44 рубля (51 – для пригородной зоны). «Тройку» можно внести в Wallet через приложение «Город», однако это только для покупок в магазинах и получения бонусов. Об оплате проезда речи не идет.
Положила деньги на «Тройку», а они не записались: терминал показывает, что баланс не пополнен, в кассе говорят, что карта неисправна. Что делать? Обращаться на горячую линию по номеру (495) 539 54 54. Скорее всего придется ехать в сервисный центр и сдавать карту на экспертизу: она занимает 10 дней, временный билет не выдается, но срок записанных будет продлен.
Читайте ещё про NFC:  Часто задаваемые вопросы о картах с Samsung Pay

Читаем emv-карты на коленке

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

Чтобы изготовить прототип считывателя, мне потребовалось бегло изучить протокол EMV. Под спойлером — краткий разбор протокола EMV с примерами чтения на Arduino и компьютере.

Читаем банковские карты на коленке с примерами. (Много текста)

Для чтения EMV карт подойдут такие устройства:

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

Для изучения протокола EMV рекомендуется читать официальную документацию, которую я, к своему стыду, почти не читал.

Приведенные APDU-команды будут одинаковыми не зависимо от выбранного оборудования. Однако в случае с PC/SC ридером не нужно заботиться о низкоуровневых командах, настраивать модуляцию и т.д.

Я буду использовать программу SmartCard Scripter, в связке с PC/SC-ридером HiD Omnikey. Программа SmartCard Scripter имеет наиболее компактный pascal-подобный синтаксис из всего что я видел. Краткое описание синтаксиса infintuary.org/scs_tut.php

Для того чтобы послать произвольную APDU команду на карту, достаточно такого когда:

// Программа для чтения UID карты
begin
  APDU('FF CA 00 00 00');
end.

Начало коммуникации — команда select (ppse)

Официальное описание: EMV Contactless Specifications — PPSE and Application Management for Secure Element

Начало общения с EMV-картой всегда происходит с чтения файла PPSE (Payment System Environment) командой SELECT.

APDU-команда SELECT PPSE

'00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00'
  00 A4 04 00 // команда select 
   0E // длина command data (14 байт)
    32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 // command data 2PAY.SYS.DDF01
    00 // завершающий маркер

Старт платежного приложения — select aid

В ответ на SELECT PPSE карта должна вернуть FCI (File Control Information) со списком приложений, существующих на карте. Помимо платежных приложений (VISA, MasterCard, AmericanExpress) карта может содержать неплатежные приложения, используемые для других нужд.

Ответ карты VISA на SELECT PPSE

'6F 23 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 11 BF 0C 0E 61 0C 4F 07 A0 00 00 00 03 10 10 87 01 01 90 00'

Для удобства проанализируем ответ с помощью онлайн-парсера формата TVL

emvlab.org/tlvutils/

. Тот же ответ карты VISA, обработанный парсером:

Из всего этого нас интересует только идентификатор платежного приложения (AID). В данном случае, это значение A0000000031010, означающее Visa International.

AID помечается маркером 4F. Вторым битом после маркера следует длина данных, в нем содержащихся. Несмотря на то, что длина AID может варьироваться от 5 до 16 байт, в большинстве случаев она равна 7 байтам. Поэтому для простоты поиска AID в ответе, мы будем искать маркер 4F 07 и считать 7 байт после него как AID. Такой подход очень примитивный и может не работать в случаях, если длина AID будет другой, но для нашей задачи это не важно, так мы скорее всего никогда не столкнемся с картами, отличными от Visa и MasterCard. Поэтому наш самодельный парсер PPSE-ответа можно упростить до такой логики: если ответ начинается с 6F, заканчивается на 90 00 и содержит внутри последовательность 4F 07, ответ считается корректным.

Полный список AID: eftlab.co.uk/knowledge-base/211-emv-aid-rid-pix

Некоторые популярные AID

A0000000031010 Visa International
A0000000032020 Visa International
A0000000041010 Mastercard International
A0000000043060 Mastercard International United States Maestro (Debit)

Получив значение AID, его нужно запустить командой SELECT. В данном случае мы запускаем приложение Visa International, полученное из ответа на PPSE SELECT

APDU-команда SELECT AID

'00 A4 04 00 07 A0 00 00 00 03 10 10'
  00 A4 04 00 // команда select 
   07 // длина command data (7 байт)
    A0 00 00 00 03 10 10 // AID Visa International

Обработка pdol (processing options data object list)

В ответ на запуск платежного приложения карта может затребовать от считывателя PDOL (Processing Options Data Object List). Это набор параметров POS-терминала — поддерживаемые протоколы и стандарты, валюта, в которой будет производиться расчет, дата, случайное число для криптографии, и так далее.

Список PDOL может различаться у разных карт. Общее число параметров PDOL — несколько десятков. Полный список параметров PDOL можно посмотреть здесь: eftlab.co.uk/index.php/site-map/knowledge-base/145-emv-nfc-tags.
Сложность состоит в том, что список PDOL у разных карт, даже выпущенных одним банком в разное время, может существенно различаться. Некоторые карты запрашивают два-три параметра, другие — десяток.

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

Ответ карты на старт платежного приложения. Содержит запрос PDOL.

'6F 31 84 07 A0 00 00 00 03 10 10 A5 26 9F 38 18 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 37 04 BF 0C 08 9F 5A 05 60 08 40 06 43 90 00'

Пропустим этот ответ через

парсер

:

Видно, что значение PDOL начинается с маркера 9F38 и равно 9F66049F02069F03069F1A0295055F2A029A039C019F3704. Парсер emvlab.org не умеет парсить значения PDOL, поэтому воспользуемся программой для Android-смартфонов Credit Card Reader.

Вот тот же ответ, обработанный более умным парсером. Видно каждый параметр PDOL:

Данный парсер не скрывает байт длины после маркера, как это делает emvlab.org. Поэтому последний байт каждого маркера следует читать как длину.

Разберем запрос PDOL подробнее

9F 38 18 // Маркер начала PDOL. Длина 18 (24 байта) 
 9F 66 (длина 04) // Terminal Transaction Qualifiers (TTQ). Параметры платежного терминала 
  9F 02 (длина 06) // Сумма списания
   9F 03 (длина 06) // вторая сумма
   9F 1A (длина 02) // Код странцы в формате ISO3166-1
   95 (длина 05) // Terminal Verification Results
    5F 2A (длина 02) // Код валюты, в которой работает терминал, в формате ISO4217
     9A (длина 03) // Дата в формате YYMMDD
      9C (длина 01) // Тип транзакции 
       9F 37 (длина 04) // Случайное число для криптографии

Подробное описание всех возможных параметров PDOL можно найти в

EMV Contactless Specifications Book C-1/2/3 Kernel 1/2/3 Specification.

Карта ожидает ответ на PDOL в том же порядке, в котором следуют запросы, и ровно той длины, которая указана после каждого параметра PDOL. Если сложить длину всех параметров (последний байт каждого параметра), получится 33 байта. Значит карта ожидает от считывателя PDOL длиной в 33 байта.

Так как мы не собираемся списывать с карты деньги, наша задача — сформировать самый простой из возможных ответ PDOL, который удовлетворит карту. Если наш ответ не понравится карте, она ответит кодом 6985 Conditions of use not satisfied.

Экспериментальным путем я выяснил, что почти на все запросы PDOL можно ответить нолями, кроме Terminal Transaction Qualifiers (TTQ). В случае с VISA, нам нужно убедить карту в том, что терминал соответствует спецификации VCPS 2.1.1. Для этого ответ на TTQ должен выглядеть так:

'F0 00 00 00'

Подробнее про формат TTQ

здесь

.

Карты MasterCard, которые мне довелось испытать, позволяли игнорировать PDOL и отдавали PAN-номер без корректного ответа на PDOL.

Вот как будет выглядеть минимальный рабочий ответ на запрошенный выше PDOL:

'80A80000238321F0000000000000000000000000000000000000000000000000000000000000000000'
 80 A8 00 00 // Команда GET PROCESSING OPTIONS (GPO)
  23 // длина всего запроса (35 байт)
   83 // маркер PDOL-ответ
    21 // длина PDOL-ответа (33 байта)
     F0 00 00 00 // Terminal Transaction Qualifiers (TTQ)
      00 00 00 00 00 00 // Сумма списания
       00 00 00 00 00 00 // Вторая сумма
        00 00 // Код страны считывателя
         00 00 00 00 00 // Terminal Verification Results (TVR)
          00 00 // Валюта
           00 00 00 // дата 
            00 // тип транзакции
             00 00 00 00 // Случайное число 

Если наш ответ удовлетворил карту, мы получим сообщение, начинающееся с маркера

77

с кодом SW2=9000. Этот ответ может содержать нужный нам PAN-номер, а может и не содержать. (офигеть)

Поиск pan-номера

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

PAN-номер может содержаться в трех местах:

APDU-команды (что они значат вообще? Хз, нужно прочитать)

'00 b2 01 1c 00'
'00 b2 01 0c 00'
'00 b2 02 0c 00'
'00 b2 01 14 00'
'00 b2 02 14 00'
'00 b2 04 14 00'

И парсим все ответы на предмет маркеров

57 13

либо

5A 08

. Найденные 8 байт карты можно дополнительно чекнуть на контрольную сумму с помощью

Алгоритма Луна

.

Если номер валидный, берем его последние десять цифр.

В итоге наш примитивный алгоритм чтения PAN-номера можно изобразить в виде блок-схемы

Добавить комментарий

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

Adblock
detector