Тройка и Apple Pay: можно ли привязать карту “Тройка” и пополнить

Nfc «тройка» = «мой проездной»

При решении задач, связанных с разработкой интеграционного слоя между смартфоном и бесконтактной картой, нами использовались стандартные системные библиотеки, лицензированные владельцем технологии – компанией «NXP Semiconductors». Основной проблемой стало собственно определение типа NFC-контроллера.

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

Вообще, читая отзывы на маркете, начинаешь понимать несущественные на первый взгляд упущения. Так, например, многие думают, что бумажные билеты и карта «Тройка» – это одно и то же, и сильно удивляются, почему их карту приложение «Яндекс.Метро» читает, а приложение «Мой проездной» – нет. На самом деле, это совсем не так, «бумажные» билеты реализованы на носителях стандарта «Mifare Ultralight», а карта «Тройка» (на самом деле многоразовый носитель) использует стандарт «Mifare Classic», а это две большие разницы. Мы, кстати, в ближайших релизах поддержим чтение баланса «бумажных» билетов.

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

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

Как включить nfc на iphone?

15.06.2022

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

Установленная NFC на iPhone расширит возможности телефона и сделает жизнь владельца намного легче. Остаётся только убедиться, что она есть в вашем смартфоне и научиться её использовать.

Итак, что же такое NFC и как проверить NFC на iPhone?

Near Field Communication – технология, позволяющая передавать данные на малые расстояния беспроводным путём. Презентована она была в 2004 году. Смартфон, имеющий эту технологию, может использоваться как банковская карта, для оплаты, проверки баланса и пополнения, и, даже, как ключ безопасности для дверей.

Технические параметры.

NFC-чип в iPhone – круглая или квадратная плоская микросхема небольшого размера. Изготовлен он из гибкого и тонкого материала, за счёт чего может размещаться даже в ультратонком корпусе смартфона.

Технические параметры чипа:

1.расстояние взаимодействия — 0,5-20 см;

2.способ кодирования – манчестерский;

3.скорость сигнала — 424 кбод;

4.рабочая частота — 13,56 МГц;

5.режимы связи:

– активный, предусматривающий приём и передачу данных;

– пассивный, допускающий только приём;

6.вид сети — точка-точка;

7.время установления соединения — 0,1 сек.

Возможности NFC.

В iPhone  возможности NFC не столь широкие, как у смартфонов на Android. Пользователи моделей 6 или 7 могут использовать данную технологию только для совершения бесконтактной оплаты в приложении

Apple Pay.

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

Оно называется NFC Writer IOS, его можно купить за 3.99 доллара США. Аналогично обстоит ситуация с моделями iPhone XR и XS.

Технология NFC считается безопасным способом передачи данных из-за высокой скорости соединения и малого радиуса действия.

Как настроить NFC?

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

Чтобы включить модуль NFC, нужно настроить Apple Pay. Для этого нужно:

1.открыть приложение Wallet;

2.коснуться иконки с изображением плюса в правом верхнем углу экрана.

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

3.в новом окне нажать кнопку “Дальше”;

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

5.в следующем окне указать свои имя и фамилию, а также проверить правильность номера карты.

6.нажать “Далее”;

7.в открывшемся окне заполнить поля со сроком действия карты и CVV-кодом (трехзначным номером, который можно найти на обратной стороне карты).

8.щелкнуть “Далее”;

9.дождаться результатов проверки карты. Если при вводе данных ошибок допущено не было, карта привязывается к iPhone

После привязки карты можно проверить работоспособность NFC.

Это довольно просто сделать: нужно зайти в магазин на территории РФ, который принимает банковские карты. Сообщить кассиру, что хотите воспользоваться безналичным расчётом, чтобы он предоставил вам терминал. Запустить Apple Pay одним из способов:

1.Дважды нажать кнопку «домой» В этом случае после запуска Apple Pay потребуется подтверждение транзакции кодом-паролем, отпечатком пальца или опцией распознавания лица.

2.С помощью приложения Wallet. Пользователь при этом должен коснуться изображения банковской карты, которой он намерен рассчитаться, и подтвердить транзакцию через Touch ID, Face ID или код-пароль.

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

Таким образом, вы проверите, что технология работает исправно.

Если после того, как вы включили NFC на iPhone, платеж не проходит, причиной этому могут быть:

1.неисправности в терминале. Чтобы убедиться, что дело не в смартфоне, можно повторить попытку на другом терминале;

2.помехи, создаваемые аксессуарами. Если на вашем iPhone слишком плотный чехол или магнитный держатель, то эти принадлежности могут мешать прохождению сигнала;

3.проблемы с ОС. Можно попробовать перезагрузить устройство и выполнить повторную оплату;

4.ошибка при подключении карты. Банковская карта могла не привязаться к смартфону. В этом случае нужно удалить её из приложения Wallet, после чего выполнить повторную привязку;

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

  1. выход из строя NFC-чипа.

Как отключить модуль NFC?

Отключить NFC в iPhone можно двумя способами:

  1. Удалить из приложения Wallet сведения о банковских картах и счетах.
  2. Извлечь чип из мобильного устройства. Для этого потребуется открутить два болта возле кабельного разъема, снять экран и плату, под которыми можно будет увидеть квадратный модуль черного цвета. Чип нужно аккуратно извлечь, после чего собрать устройство в обратном порядке.

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

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

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

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

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

В ином варианте можно использовать терминал Элекснет.

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

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

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

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

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

Эта система создана в 2021 году и предназначена для накопления скидок и бонусов. Их впоследствии можно потратить на оплату услуг в кафе и ресторанах, магазинах, театрах и даже на стойках велопроката. На данный момент программа «Город» насчитывает более 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-значный пароль. Он же будет использоваться для входа в личный кабинет на официальном портале «Города».

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

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

  1. Желтый терминал.

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

  2. Официальные приложения от разработчиков: «Тройка Проверка баланса», «Транспортные карты Москвы», «Мой проездной».

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

  3. Опция «Мобильный билет».

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

  4. SMS-сообщение. Мобильные операторы МТС, Билайн и Мегафон ввели для своих абонентов специальный короткий номер для проверки баланса и оставшегося количества поездок по действующему абонементу. На номер 3210 посылается СМС со словом – баланс – после чего абонент получает интересующие сведения в ответном SMS-сообщении.

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

Колхоз одобряет. как подружить брелок «тройка» с айфоном

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

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

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

  • фен
  • крепкий твердый пинцет
  • острый канцелярский нож
  • 5 минут.

1. Берем канцелярский нож и брелок «Тройка».

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

3. 20-30 секунд нагревайте феном одну сторону брелока.

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

5. Крепким пинцетом или руками тяните на себя оболочку: уверенно, с силой, но медленно.

6. Если оболочка дальше не поддается, повторите нагрев феном.

7. Как только снимете одну сторону оболочки, повторите всё заново с п.3, но с другой стороной брелока.

Всё. Брелок готов. Теперь положите его под чехол айфона – вертикально и в нижнюю его часть, чтобы точно не мешал работе Apple Pay.

Лучше всего подойдут оригинальные чехлы Apple, они мягкие и полностью скрывают брелок под ними. Хуже всего подойдут очень тугие пластиковые кейсы, особенно с AliExpress. Ну и в прозрачных чехлах будет так себе выглядеть.

Если кто-то боится, что брелок поцарапает заднюю панель iPhone, положите его в тонкий полиэтиленовый пакет или наклейте защитную пленку на корпус (ужас).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обработка 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

здесь

https://www.youtube.com/watch?v=EnjW6MHVgso

Карты 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 // Случайное число 

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

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

Оплата проезда

Транспортная карта «Тройка» — электронная карта для оплаты проезда на городском транспорте и услуг городских сервисов. Залоговая стоимость «Тройки» — 50 рублей. Залог можно вернуть при возврате карты в кассу.

Также выпущены объединённые транспортные карты «Тройка» с приложением «Стрелка» и транспортные карты «Стрелка» с приложением «Тройка». Используя данные карты, пассажиры могут быстро и без очередей оплачивать проезд в общественном транспорте Москвы и Московской области.

troika.jpg

Карту «Тройка» с транспортным приложением «Стрелка» можно получить в кассах ГУП «Московский метрополитен». Карта «Стрелка» с установленным приложением «Тройка» доступна в кассах ГУП МО «Мострансавто». Карты с объединённым функционалом имеют ту же залоговую стоимость, что и обычные карты.

Пополнить баланс объединённой транспортной карты можно с помощью агентской сети пополнения карты «Тройка» и карты «Стрелка», например, в салонах связи «Связной» и «Евросеть», терминалах «Элекснет», кассах и терминалах ОАО «Центральная ППК» и других. Полный список точек пополнения объединённых транспортных карт опубликован на Едином Транспортном Портале и на Официальном сайте транспортной карты «Стрелка».

На объединённую транспортную карту, как и на обычные транспортные карты «Тройка» и «Стрелка», можно записать билет или абонемент для проезда на пригородных электричках по всем железнодорожным направлениям.

Карты «Тройка» с транспортным приложением «Стрелка» можно приобрести в кассах метрополитена на станциях: «Юго-западная», «Теплый стан», «Бульвар Дмитрия Донского», «Южная», «Выхино», «Котельники», «Косино», «Новокосино», «Новогиреево», «Партизанская», «Щелковская», «ВДНХ», «Медведково», «Тимирязевская», «Речной вокзал», «Ховрино», «Белорусская» Замоскворецкой линии, «Белорусская» Кольцевой линии, «Планерная», «Сходненская», «Тушинская», «Курская» Арбатско-Покровской линии, «Курская» Кольцевой линии, «Павелецкая» Замоскворецкой линии, «Комсомольская» Сокольнический линии, «Комсомольская» Кольцевой линии «Домодедовская», «Кантемировская», «Киевская» Арбатско-Покровской линии, «Киевская» Кольцевой линии, «Парк Победы» Арбатско-Покровской линии.

Билеты, реализуемые на бумажных носителях, также могут быть записаны на карту «Тройка»!

Тарифы МЦД

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

Порядок использования проездных билетов.

Пополнение баланса билета «Кошелёк» карты «Тройка» доступно напрямую из официального мобильного приложения «Метро Москвы»*

* — на мобильных устройствах с поддержкой технологии NFC.

Дает право на совершение поездок в пределах зачисленной суммы по фиксированным тарифам. Карту можно пополнить на сумму до 3 000 руб.

Тариф «90 минут» активируется автоматически при пересадке на другой транспорт. По нему можно совершить одну поездку на метро, монорельсе, МЦК или МЦД и неограниченное количество поездок на наземном транспорте.

Бесплатная пересадка при поездках на МЦД – только на метро, монорельс и МЦК (и обратно). Пересадка на наземный транспорт – платная.

На наземном транспорте бесплатная пересадка возможна в течение 90 минут с начала поездки между разными маршрутами автобуса, электробуса или трамвая.

Пересесть бесплатно в наземном транспорте можно по карте «Тройка», привязанной к личному кабинету в приложении «Метро Москвы» или на сайте nfcexpert.ru.
Как это сделать?

Одна поездка на метро, монорельсе, МЦК, МЦД зона «Центральная» или неограниченное количество поездок на наземном транспорте в течение 90 минут42
Поездка на метро, монорельсе, МЦК и МЦД зоны «Центральная», «Пригород»50
Поездка на метро, монорельсе, МЦК, МЦД зона «Центральная» неограниченное число пересадок на наземном транспорте в течение 90 минут65

Тройка и apple pay: можно ли привязать карту “тройка” и пополнить

На сегодняшний день, с помощью Apple Pay можно не только оплачивать покупки без наличии пластика в кармане и совершать денежные переводы через Apple Pay Cash.
Приложение Wallet работает в паре с самим платежным сервисов. Благодаря чему, в Соединенных Штатах и некоторых других странах пользователи могут использовать электронную версию проездных на метро, билетов на мероприятия и т.п.
В России таких возможности на продукции с IOS не было, но и нашу страну ждут изменения.

До конца года заработает цифровая версия транспортной карты «Тройка» в Apple Pay. С помощью нее вы сможете оплачивать проезд на общественном транспорте Москвы и области — достаточно иметь при себе смартфон.

Тройка и Apple Pay: можно ли привязать карту "Тройка" и пополнить

Чтобы добавить карту «Тройка» в Apple Pay, достаточно внести ее в само приложение для оплаты и подтвердить личность отпечатком пальца/Face ID, приложив телефон к турникету.

«Тройка» на IOS заработает официально до конца 2022 года, там уже и можно будет ответить на вопросы: как именно добавить карту «Тройка» в Apple Pay, как пополнить «Тройку» и когда подобные решения будут приняты не только для столицы.
Разработчики не планируют ограничиваться лишь пользователями Apple. Поддержку электронных транспортных карт получат и Google Pay вместе с Samsung Pay.
Таким образом, можно будет не носить с собой карту, а платить за проезд точно так же, как в магазине.

Возможно, создатели ждут выхода IOS 13, чтобы пользователи Iphone могли сами оцифровывать «Тройку». Известно, что с выходом обновления ОС будет возможность для модуля ближнего поля. С ним просто нужно будет отсканировать транспортную карту с помощью NFS и сохранить в приложении Wallet.

Нововведения сэкономят жителям Москвы их и без того ценное время, особенно, касательно транспорта.
А вам удобнее платить за проезд со смартфона/часов или вы привыкли по старинке?

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

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

https://www.youtube.com/watch?v=K_jd5UuhfYM

Чтобы изготовить прототип считывателя, мне потребовалось бегло изучить протокол 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, обработанный парсером:

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

Из всего этого нас интересует только идентификатор платежного приложения (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'

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

парсер

:

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

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

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

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

Данный парсер не скрывает байт длины после маркера, как это делает 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-номера можно изобразить в виде блок-схемы

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

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

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