. NFC + «Тройка» = «Мой проездной»
NFC + «Тройка» = «Мой проездной»

NFC + «Тройка» = «Мой проездной»

Доводилось ли вам слышать на эскалаторе объявление о том, что можно заблаговременно приобретать проездные билеты для того, чтобы не стоять в очередях у окошек, в которых служащие метрополитена продают проездные билеты?

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

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

Разработка готового приложения заняла немного времени, так как мы оперативно создали прототип, и больше времени потребовалось для кастомизации решения для нормальной работы на различных моделях телефонов.

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

Что умеет «Мой проездной»

Работает это следующим образом – если в вашем Android-смартфоне есть NFC-модуль (а здесь заранее стоит отметить тот факт, что не все смартфоны с поддержкой NFC аппаратно поддерживают бесконтактные чипы, использующиеся в «Тройке» – список проверенных устройств будет ниже), то с помощью «Моего проездного» вы сможете купить и записать на «Тройку» любой билет действующего тарифного меню: «Единый», «ТАТ» на 1-60 поездок, «90 минут» или проездной на 30, 90 и 365 дней.

Естественно – все покупки не облагаются никакой комиссией.

Помимо этого можно с банковской карты напрямую пополнить баланс Электронного кошелька, а также прочитать текущий баланс билетов ГУП «Мосгортранс» (наземный транспорт) и ГУП «Московский метрополитен» (метро), которые записаны на вашу «Тройку».

Само приложение, уже доступное в магазине Google Play, является дальнейшим развитием «Единой платежной платформы» Банка Москвы. Уже сейчас в эту экосистему входят приложения «БМmobile.Кошелёк», «Переводы» и «Квартплата», а также городское приложение «Парковки Москвы». При этом используется единая учётная запись пользователя для всех приложений, что удобно не только в том случае, если вы являетесь клиентом непосредственно банка.

Поэтому и регистрация требуется только в том случае, если у вас ещё нет учётной записи в одном из вышеупомянутых приложений. А сделав её один раз, вы сможете использовать привычные вам логин и пароль в других приложениях Банка Москвы. Согласитесь – это удобно.

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

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

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

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

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

📎📎📎📎📎📎📎📎📎📎