Java library that can parse magnetic stripes from a bank issued credit card.
:star: Star it :arrowheadingup: if you love it!
Magnetic Track Parser
Magnetic Track Parser is a Java library that can parse magnetic track data from a bank issued credit card, such as might be returned from a USB magnetic card stripe reader.
Magnetic Track Parser depends on the Credit Card Number library.
**The goal of this project is to use publicly and freely available documentationto create a reliable Java library to provide information about credit cards.**
Resources
Some resources consulted are:
- Magnetic stripe card on Wikipedia for information about the format of track data.
Design Principles
- All classes are immutable and thread-safe
- Secure data follows standards in the
- The standard
toString()function formats data in a readable form - Internationalization of card numbers is supported
- Validity is enforced by JUnit 5 tests
- Java 17 or newer is required
- Android friendly
Download and Use in Projects
You can download the jar on the Maven Central Repository. The download page has instructions on how to use the library in your Maven or Gradle build.
Examples
How to Parse Magnetic Track Data
To parse a magnetic track, use code like:
BankCardMagneticTrack track = BankCardMagneticTrack.from("%B5350290149345177^FATEHI/SUALEH^16042010000000000000000000000000000567001000?;5350290149345177=16042010000056700100?"); System.out.println(track); and you will get this output: TRACK 1: %B5350290149345177^FATEHI/SUALEH^16042010000000000000000000000000000567001000? Primary Account Number: 5350290149345177 Name: Sualeh Fatehi Expiration Date: 2016-04 Service Code: 201 Discretionary Data: 0000000000000000000000000000567001000 TRACK 2: ;5350290149345177=16042010000056700100? Primary Account Number: 5350290149345177 Expiration Date: 2016-04 Service Code: 201 Discretionary Data: 0000056700100 TRACK 3: Not Available.
Bank Card Information: Raw Account Number: 5350290149345177 Primary Account Number: 5350290149345177 Major Industry Identifier: 5 - Banking and financial Issuer Identification Number: 53502901 Card Brand: MasterCard Last Four Digits: 5177 Passes Luhn Check? Yes Is Primary Account Number Valid? Yes Name: Sualeh Fatehi Expiration Date: 2016-04 Is Expired? Yes Service Code: 2 - Interchange: International interchange. Technology: Integrated circuit card. 0 - Authorization Processing: Normal. 1 - Allowed Services: No restrictions. PIN Requirements: None.
Who Uses
- Dmitry Holodov's excellent Android app, SwipeYours uses magnetictrackparser_. See details in SetCardActivity.java. This Android app helps developers understand the new Android Host Card Emulation feature for payments, and is written with open source, in the same spirit as magnetictrackparser_.