A Java library used to read and extract data from NFC EMV credit cards (Android/PCSC).
Java
Latest commit 68bd2e0 Feb 29, 2016 @devnied Merge pull request #13 from JamieFarrelly/master
Adding checks to sample to see if NFC is available on the device

README.md

EMV NFC Paycard Enrollment Build Status Coverage Status License

Description

Java library used to read and extract public data from NFC EMV credit cards.
Maven Central

Android sample app available on Play store.

Get it on Google Play

Getting started

First you need to create a custom Provider to exchange APDU with an NFC EMV credit card.

public class YourProvider implements IProvider {

  @Override
  public byte[] transceive(final byte[] pCommand) {
     // implement this
  }
}

After that, create an instance of a parser and read the card.

IProvider prov = new YourProvider();
// Create parser (true for contactless false otherwise)
EMVParser parser = new EMVParser(prov, true);
// Read card
EMVCard card = parser.readEmvCard();

card object contains all data read (Aid, card number, expiration date, card type, transactions history)

Screens

Sample demo

Download

Maven

<dependency>
  <groupId>com.github.devnied.emvnfccard</groupId>
  <artifactId>library</artifactId>
  <version>2.1.1</version>
</dependency>

Gradle

dependencies {
    compile 'com.github.devnied.emvnfccard:library:2.1.1'
}

JAR

You can download this library on Maven central or in Github release tab

Dependencies

If you are not using Maven or some other dependency management tool that can understand Maven repositories, the list below is what you need to run EMV-NFC-Paycard-Enrollment.

Runtime Dependencies

  • commons-lang3 3.3.2
  • bit-lib4j 1.4.10
  • commons-io 2.4
  • commons-collections4 4.0

Build

To build the project launch:

mvn clean install

To build the projet and sign the Android app

Add some properties to your settings.xml

<settings>
  ...
  <profiles>
    <profile>
        <id>default</id>
        <properties>
            <android.sdk.path>xxxx</android.sdk.path>
            <sign.keystore>xxx</sign.keystore>
            <sign.alias>xxx</sign.alias>
            <sign.keypass>xxx</sign.keypass>
            <sign.storepass>xxx</sign.storepass>
        </properties>
    </profile>
  </profiles>
</settings>

And use the profile release-apk

mvn clean install -P release-apk

Bugs

Please report bugs and feature requests to the GitHub issue tracker.
Forks and Pull Requests are also welcome.

Author

Millau Julien

Copyright and license

Copyright 2014 Millau Julien.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with the License. You may obtain a copy of the License in the LICENSE file, or at:

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Analytics