NFC

1. В AndroidManifest.xml следует добавить инструкции:

<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.CCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.NFC"/>

...в раздел разрешений и..

<service android:name="ua.pb.iapiLib.iapiWrapper.nfc.HostService" android:exported="true" android:permission="android.permission.BIND_NFC_SERVICE"> <intent-filter>       <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/> </intent-filter> <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/apduservice"/> </service>

...в тег application.

2. Также следует создать файл

res/xml/apduservice.xml

и записать в него:

<?xml version="1.0" encoding="utf-8"?> <host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"       android:description="@string/your_app_description"       android:requireDeviceUnlock="true"       android:apduServiceBanner="@drawable/your_app_icon"> <aid-group android:description="@string/your_app_subscription"       android:category="payment"> <aid-filter android:name="A0000000041010"/> <aid-filter android:name="325041592E5359532E4444463031"/>

3. Библиотека подключается к Android-приложению как обычный *.jar файл. Получить его можно по этой ссылке.

4. В момент старта приложения нужно выполнить инициализацию библиотеки:

import ua.pb.iapiLib.iapiWrapper.IFasade; import ua.pb.iapiLib.iapiWrapper.IReqFactory;
….
IFasade fasade = IFasade.getInstance(this, appkey);
….

this - ссылка на контекст (например экземпляр текущего Activity)

appkey - строка, идентифицирующая ваше приложение, выдаётся вам индвидуально.

5. Далее перед совершением оплаты нужно получить статические данные NFC-карты:

….

fasade.updateNfcStaticData(IReqFactory.getStaticData(), new IFasade.NfcStaticDataCallback() { @Override public void onDataUpdated(final boolean status) { runOnUiThread(new Runnable() { @Override public void run() { if (!status) Toast.makeText(MainActivity.this, "Static data not received. Try login again", Toast.LENGTH_LONG).show(); setProgressBarIndeterminateVisibility(false); } }); } });

….

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

Необходимое условие: У клиента должна быть paypass-карта.