Разработка NFC приложений для Android / Блог компании Intel / Хабр

Что такое бесконтактная оплата телефоном

Технология НФС является высокочастотной связью между устройствами и применяется для обмена данными. От всем известного блютуза она отличается малым радиусом действия, не превышающим 10 см. Одной из полезных функций данной технологии, является возможность бесконтактных платежей через телефон, без непосредственного использования банковской карты.

К основным преимуществам NFC можно отнести быстрое соединение и невозможность перехвата передаваемой информации. Не требуется носить с собой множество карточек – все они привязаны в приложении и находятся в одном месте. При оплате товара можно выбрать любую из них и произвести расчет. Самое главное – наличие в телефоне модуля NFC.

Введение в разработку nfc под android

Android поддерживает NFC с помощью двух пакетов: android.nfc и android.nfc.tech.


Основными классами в android.nfc являются:

NfcManager: Устройства под Android могут быть использованы для управления любыми обнаруженными NFC адаптерами, но поскольку большинство Android устройств поддерживают только один NFC адаптер, NfcManager обычно вызывается с getDefaultAdapter для доступа к конкретному адаптеру.

NfcAdapter работает как NFC агент, подобно сетевому адаптеру на ПК. С его помощью телефон получает доступ к аппаратной части NFC для инициализации NFC соединения.

NDEF: Стандарты NFC определяют общий формат данных, называемый NFC Data Exchange Format (NDEF), способный хранить и передавать различные типы объектов, начиная с MIME и заканчивая ультра-короткими RTD-документами, такими как URL. NdefMessage и NdefRecord – два типа NDEF для определенных NFC форумом форматов данных, которые будут использоваться в коде-примере.

Tag: Когда устройство Android обнаруживает пассивный объект типа ярлыка, карты и т.д., он создает объект типа «метка», помещая его далее в целевой объект и в заключении пересылая в соответствующий процесс.

Пакет android.nfc.tech также содержит множество важных подклассов. Эти подклассы обеспечивают доступ к функциям работы с метками, включающими в себя операции чтения и записи. В зависимости от используемого типа технологий, эти классы разбиты на различные категории, такие как NfcA, NfcB, NfcF, MifareClassic и так далее.

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

Здесь мы используем целевой фильтр для работы со всеми типами информации начиная с TECH_DISCOVERED до ACTION_TECH_DISCOVERED. Файл nfc_tech_filter.xml используется для всех типов, определенных в метке. Подробности можно найти в

. Рисунок ниже показывает схему действий при обнаружении метки.

‎nfc tools

NFC Tools, позволит вам считывать и создавать собственные NFC-теги.

NFC Tools считывает и записывает Ваши NFC-метки через простой и удобный интерфейс.
Поднося своё устройства к NFC-метке, Вы можете считывать её содержимое и взаимодействовать с этими данными.

функция “Чтение” предоставляет Вам следующую информацию:

– производитель метки
– тип метки (например: Mifare Ultralight, NTAG213)
– стандарт метки (например: NFC Forum Type 2)
– технология (например: NFC A)
– серийный номер (например: 04:85:c8:5a:40:2b:80)
– размер метки и данные на ней
– возможны ли запись на метку
– все данные на метке (формат NDEF)

NFC Tools может записывать стандартную информацию, совместимую с любым NFC-устройством, на Ваши теги.
К примеру, Вы можете хранить запись VCARD и легко делиться своими контактами, открывать ссылки, передавать телефонные номера или местоположение.

функция “Запись” позволяет Вам записать стандартизированные данные, такие как:
– простой текст
– ссылка на веб-сайт
– адрес электронной почты
– контакт
– номер телефона
– заготовка текстового сообщения
– адрес или местоположение
– конфигурация Wi-Fi или Bluetooth
– персонализированные данные

Функция записи позволяет Вам добавлять любые данные, какие Вы только пожелаете.
Таким образом, Вы можете записывать самую разнообразную информацию на Вашу метку.

Также это приложение позволяет Вам сохранить содержимое Вашей метки для последующего доступа.

NFC Tools был протестирован со следующими NFC-метками:
– NTAG 203, 210, 210u, 212, 213, 213TT, 215, 216, 413 DNA, 424 DNA
– Ultralight, Ultralight C, Ultralight EV1
– ICODE SLI, SLI-S, SLIX, SLIX-S, SLIX-L, SLIX2, DNA
– DESFire EV1, EV2, EV3
– ST25TV, ST25TA
– Felica

Если у Вас возникли какие-либо проблемы, не стесняйтесь обращаться ко мне.

Примечания:
– Совместимо с iPhone 7 (и выше) и iOS 13.

Архитектура технологии nfc

NFC основана на RFID технологии с частотой 13.56 МГц и рабочей дистанцией до 10 см. Скорость обмена данными составляет до 424 кб/сек. По сравнению с другими коммуникационными технологиями, основным преимуществом NFC является быстрота и простота использования. На рисунке ниже видно расположение NFC среди других коммуникационных технологий.

Технология NFC имеет три режима: эмуляция NFC-карты, пиринговый режим и режим чтения/записи.

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

Загрузка карты в телефон и управление

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

Банковская карта должна быть совместимой с платежным приложением. Для добавления нужно выполнить следующие действия:

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

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

Как платить с nfc

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

При наличии нескольких карт нужно заранее выбрать ту, которая будет использоваться для оплаты. При сумме свыше 1000 рублей потребуется ввести пин-код. Значок НФС рекомендуется занести в шторку уведомлений, чтобы иметь быстрый доступ к данной функции.

Как работает бесконтактная оплата смартфоном

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

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

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

Настройка nfc для оплаты

Перед началом любых действий, необходимо проверить наличие на смартфоне функции НФС и при необходимости выполнить ее подключение.

Если это выполняется на Андроид, то:

  1. Вначале нужно выполнить вход в главное меню, а уже там зайти в настройки.
  2. Далее – выбираются «Беспроводные сети» и нажимается «Еще».
  3. В открывшемся списке отобразятся все доступные беспроводные соединения, в том числе и NFC при наличии модуля.
  4. Для активации этой функции ставится галочка или же переключатель сдвигается слева направо.

В айфонах аналогичных настроек не требуется. Здесь НФС активирована по умолчанию, нужно лишь выполнить установку программы Apple Pay и привязать банковскую карту.

Об авторах

Songyue Wang и Liang Zhang — инженеры в Intel Software and Service Group, разрабатывающие мобильные приложения, в том числе и для Android, и оптимизирующие их под платформу х86.

Оплата покупок через nfc

Следующим действием после активации НФС будет привязка банковской карты. Без этого невозможны бесконтактные операции через платежный терминал. Все настройки простые и выполняются в следующем порядке:

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

Пиринговый режим

Два NFC устройства могут легко взаимодействовать друг с другом напрямую, обмениваясь небольшими файлами. Для установления Bluetooth/WiFi соединения необходимо обменяться XML файлом специального формата. В этом режиме ЭБ не используется.

Плюсы и минусы оплаты через телефон

К основным положительным качествам бесконтактных платежей через телефон можно отнести следующие:

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

Несмотря на очевидные плюсы, есть и определенные недостатки, присущие этой системе:

  • Не все телефоны оборудованы чипами НФС.
  • Работа модуля осуществляется от батареи, поэтому выключенный или разряженный телефон не годится для бесконтактной оплаты.
  • Не все платежные терминалы оборудованы функцией бесконтактных платежей.

Приложение для бесконтактной оплаты

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

Пример 1. разработка nfc приложения для чтения/записи меток.

Следующий пример показывает функции чтения/записи NFC метки. Для того, чтобы получить доступ к аппаратной части NFC и корректно обрабатывать NFC информацию, объявите эти позиции в файле AndroidManifest.xml.

Минимальную версию SDK, которую должно поддерживать ваше приложение — 10, объявите об этом в файле AndroidManifest.xml


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

@Override
	    protected void onNewIntent(Intent intent){
	        if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())){
	        mytag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);  // get the detected tag
	        Parcelable[] msgs =
	intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
	            NdefRecord firstRecord = ((NdefMessage)msgs[0]).getRecords()[0];
	            byte[] payload = firstRecord.getPayload();
	            int payloadLength = payload.length;
	            int langLength = payload[0];
	            int textLength = payloadLength - langLength - 1;
	            byte[] text = new byte[textLength];
	            System.arraycopy(payload, 1 langLength, text, 0, textLength);
	            Toast.makeText(this, this.getString(R.string.ok_detection) new String(text), Toast.LENGTH_LONG).show();
	                    }
	    }

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

	If (mytag==Null){
	    ……
	}
	else{
	……
	write(message.getText().toString(),mytag);
	……
	}
	    private void write(String text, Tag tag) throws IOException, FormatException {
	        NdefRecord[] records = { createRecord(text) };
	        NdefMessage  message = new NdefMessage(records);
	// Get an instance of Ndef for the tag.
	        Ndef ndef = Ndef.get(tag); // Enable I/O
	        ndef.connect(); // Write the message
	        ndef.writeNdefMessage(message); // Close the connection
	        ndef.close();
	    }

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

Пример 2. разработка nfc-приложения, использующего карты mifareclassic

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

Последний блок в зоне называется трейлером и используется обычно для хранения локального ключа чтения/записи. Он содержит два ключа, А и В, 6 байт длиной каждый, по умолчанию забитые 00 или FF, в зависимости от значения MifareClassic.KEY_DEFAULT.

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

Принцип работы и функции

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

Часто используемые опции:

Настраиваемые задачи оптимизируют работу гаджета. Приложение позволяет управлять:

Режим записи/чтения

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

Режим эмуляции nfc карты

NFC модуль обычно состоит из двух частей: NFC контроллера и элемента безопасности (ЭБ). NFC контроллер отвечает за коммуникации, ЭБ – за шифрацию и дешифрацию чувствительной к взлому информации.

ЭБ подключается к NFC контроллеру посредством шины SWP (Single Wire Protocol) или DCLB (Digital Contactless Bridge). Стандарты NFC определяют логический интерфейс между хостом и контроллером, позволяя им взаимодействовать через RF-поле. ЭБ реализуется с помощью встроенного приложения или компонента ОС.

Существует три варианта реализации ЭБ: можно встроить его в SIM-карту, SD-карту или в NFC чип.

Операторы связи, такие как CMCC (China Mobile Communication Corporation), Vodafone или AT&T обычно используют решение на SIM-карте, поощряя своих абонентов бесплатной заменой старых SIM-карт на новые, оснащенные NFC.

Создание меток nfc

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

Настроенные метки дают толчок смартфону на выполнение определенных действий. Это могут быть звонки конкретным абонентам, отправка писем или СМС, открытие приложений, настройка будильника и т.д.

Программирование меток NFC выполняется в следующем порядке:

  • Приобретается метка НФС.
  • Привязывается к смартфону через приложение.
  • Вносится информация о действиях, требующих выполнения.
  • Запрограммированная метка помещается в любое удобное и доступное место.

При попадании смартфона в зону действия метки, происходит считывание задачи и ее последующее автоматическое выполнение.

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

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