Реалізація NFC-оплати (HCE) через Android-додаток

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація NFC-оплати (HCE) через Android-додаток
Складний
~5 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Реалізація NFC-оплати (HCE) через Android-приложення

Host-based Card Emulation — технологія, яка дозволяє Android-приложенню прикидатися бесконтактною карткою без фізичного SE (Secure Element). Звучить просто. На справі — це реалізація ISO/IEC 7816-4 поверх NFC з APDU-командами, керування життєвим циклом сервісу, реєстрація AID та прходження сертифікації платіжної системи. Більшість команд типу SELECT AID та GET PROCESSING OPTIONS потрібно реалізовувати вручну.

Головна сложність: APDU-діалог з терміналом

Коли терміналом POS «бачить» телефон, він відправляє серію APDU-команд. Стандартний сценарій EMV Contactless починається з:

00 A4 04 00 07 A0 00 00 00 03 10 10 — SELECT PPSE

Приложення повинне відповісти коректним FCI з ім'ям AID. Далі терміналом вибирає конкретне приложення (SELECT AID), запитує параметри трансакції через GET PROCESSING OPTIONS, читає записи через READ RECORD. Кожний відповідь — суворо по EMV Book 3 та Book C-2.

Помилка в одному байті TLV-структури — терміналом видає «Картка не прийнята» без яких-будь подробиць у логах приложення. Відлаговуватиі потрібно через NFC-снифер (наприклад, ACR122U + libnfc + Wireshark) або апаратний аналізатор протоколу.

Реєстрація AID та конфлікти

Кожне HCE-приложення реєструє AID в AndroidManifest.xml через <host-apdu-service>. Якщо на пристрої кілька приложень з одним AID — Android показує disambiguation dialog. Для проприетарних AID це керовано. Для стандартних (Visa: A0000000031010, Mastercard: A0000000041010) виникає конфлік з банківськими приложеннями — користувачу доведеться вибирати кожного разу.

Рішення — реєструвати власний проприетарний AID у діапазоні F0xx..., узгоджувати його з процесором та налаштовувати терміналіну сторону на приймання. Або використовувати HCE_PAYMENT категорію з попередньоустановленим AID та коректно обробляти конфлікти через CardEmulation.setPreferredService().

Архітектура HCE-сервісу

HostApduService — це Service, який Android запускає при появленні NFC-поля. Головний метод — processCommandApdu(), який викликається в основному потоці. Блокувати його неможна: якщо відповідь не прийде за ~500 мс, терміналом розриває з'єднання.

Типова структура:

class PaymentHceService : HostApduService() {

    private val apduProcessor = ApduProcessor()

    override fun processCommandApdu(commandApdu: ByteArray, extras: Bundle?): ByteArray {
        return apduProcessor.process(commandApdu)
    }

    override fun onDeactivated(reason: Int) {
        apduProcessor.reset()
        // reason: DEACTIVATION_LINK_LOSS або DEACTIVATION_DESELECTED
    }
}

ApduProcessor — кінцевий автомат, який тримає стан поточної трансакції: виділений ли PPSE, виділений ли AID, у якому стані GPO. Стан скидається в onDeactivated. Це критично: якщо не скинути після DEACTIVATION_LINK_LOSS, наступна трансакція почнеться з неправильного стану.

Безпека токенів

Реальні PAN-дані зберігати в приложенні неможна. Сучасна схема — динамічні токени: сервер видає single-use cryptogram для кожної трансакції. Приложення запитує токен заздалегідь (при відкритті платіжного екрана), зберігає в зашифрованому виді в EncryptedSharedPreferences або Android Keystore, передає терміналу у відповіді на READ RECORD.

Термін життя токена — зазвичай 30–60 хвилин або одна трансакція. При isterphannya — приложення запитує новий до початку наступної трансакції, а не у момент processCommandApdu (там немає часу на мережевий запит).

Тестування без реального POS-терміналу

Для розробки та CI використовуємо:

  • ACR122U + PC/SC — USB NFC-рідер, емулює терміналом на ПК, можна скриптувати APDU-послідовності
  • Mastercard PayPass Test Tool — офіційний інструмент для валідації EMV-відповідей
  • EMV-Co contactless test cases — набір сценаріїв для сертифікації

Без прохождення тест-кейсів EMV-Co отримати допуск до реальних терміналів Visa/Mastercard не отримаємо. Це окремий етап проекту.

Процес та терміни

Робота розбивається на кілька фаз: проектування APDU-діалогу під конкретний процесор → реалізація HCE-сервісу → інтеграція з бекендом токенізації → тестування на реальних терміналах → підготовка документації для сертифікації.

Мінімальний PoC з кастомним AID — 2–3 тижні. Повнофункціональна інтеграція з EMV-сертифікацією — від 2 місяців. Точні терміни після вивчення вимог процесора та схеми токенізації.