NFC Card Data Extractor Development
Budget: $250 – $750 USD
Project Requirements
Platform: The project should be implemented in Flutter (for cross-platform support) or Java (for native Android).
EMV Standard Compatibility: The solution must follow the EMV standard to ensure compatibility with different card brands.
Data to be extracted:
Card Brand: Identify the card brand.
PAN (Primary Account Number): Card number.
Holder Name: Cardholder's name.
Expiration Date: Card expiration date.
Token: Payment token generated by the card/device.
Cryptogram: Transaction authentication cryptogram.
Implementation Flow
1. Project Setup
Flutter: Configure the project with the flutter_nfc_kit library for NFC communication.
dependencies:
flutter_nfc_kit: ^3.4.0
Java: For native Android implementation, set up NFC permissions and use the IsoDep API for communication.
2. Start NFC Reading Session
Activate the NFC reading session and detect the type of card or device.
Select the payment application AID on the card:
String selectAidVisa = '00A4040007A0000000031010'; // Example for Visa
String selectAidMastercard = '00A4040007A0000000041010'; // Example for Mastercard
3. Send APDU Commands to Retrieve Data
Send APDU commands to select the AID and retrieve transaction information using commands like GET PROCESSING OPTIONS, READ RECORD, etc.
Example commands:
String getProcessingOptions = '80A8000002830000';
String response = await FlutterNfcKit.transceive(getProcessingOptions);
4. Parse TLV (Tag-Length-Value) Data
Implement a function to parse TLV data and extract the required information such as PAN, holder name, expiration date, cryptogram, and token.
Identify specific tags:
Tag 5A: PAN (card number)
Tag 5F20: Holder name
Tag 5F24: Expiration date
Tag 9F26: Cryptogram
Tag 4F or 84: AID to identify the card brand
5. Identify Card Brand
The card brand can be determined from the AID or based on the first digits of the PAN (BIN). Examples:
Visa: A0000000031010
Mastercard: A0000000041010
American Express: A000000025
Discover: A0000001523010
Diners Club: A0000001524010
JCB: A0000000651010
Elo: A0000000410001
UnionPay: A0000003330101
Hipercard: A0000001440001
Platform: The project should be implemented in Flutter (for cross-platform support) or Java (for native Android).
EMV Standard Compatibility: The solution must follow the EMV standard to ensure compatibility with different card brands.
Data to be extracted:
Card Brand: Identify the card brand.
PAN (Primary Account Number): Card number.
Holder Name: Cardholder's name.
Expiration Date: Card expiration date.
Token: Payment token generated by the card/device.
Cryptogram: Transaction authentication cryptogram.
Implementation Flow
1. Project Setup
Flutter: Configure the project with the flutter_nfc_kit library for NFC communication.
dependencies:
flutter_nfc_kit: ^3.4.0
Java: For native Android implementation, set up NFC permissions and use the IsoDep API for communication.
2. Start NFC Reading Session
Activate the NFC reading session and detect the type of card or device.
Select the payment application AID on the card:
String selectAidVisa = '00A4040007A0000000031010'; // Example for Visa
String selectAidMastercard = '00A4040007A0000000041010'; // Example for Mastercard
3. Send APDU Commands to Retrieve Data
Send APDU commands to select the AID and retrieve transaction information using commands like GET PROCESSING OPTIONS, READ RECORD, etc.
Example commands:
String getProcessingOptions = '80A8000002830000';
String response = await FlutterNfcKit.transceive(getProcessingOptions);
4. Parse TLV (Tag-Length-Value) Data
Implement a function to parse TLV data and extract the required information such as PAN, holder name, expiration date, cryptogram, and token.
Identify specific tags:
Tag 5A: PAN (card number)
Tag 5F20: Holder name
Tag 5F24: Expiration date
Tag 9F26: Cryptogram
Tag 4F or 84: AID to identify the card brand
5. Identify Card Brand
The card brand can be determined from the AID or based on the first digits of the PAN (BIN). Examples:
Visa: A0000000031010
Mastercard: A0000000041010
American Express: A000000025
Discover: A0000001523010
Diners Club: A0000001524010
JCB: A0000000651010
Elo: A0000000410001
UnionPay: A0000003330101
Hipercard: A0000001440001
Related categories:
Business, Accounting, Human Resources & Legal
Mobile App Development
Android
iOS Development
Flutter