Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/card-io/card.io-android-sdk
card.io provides fast, easy credit card scanning in mobile apps
https://github.com/card-io/card.io-android-sdk
android card-scanning credit-card ocr sdk
Last synced: 13 days ago
JSON representation
card.io provides fast, easy credit card scanning in mobile apps
- Host: GitHub
- URL: https://github.com/card-io/card.io-android-sdk
- Owner: card-io
- License: other
- Archived: true
- Created: 2013-06-11T17:27:45.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2017-03-17T19:04:47.000Z (almost 8 years ago)
- Last Synced: 2024-11-22T00:30:41.801Z (2 months ago)
- Topics: android, card-scanning, credit-card, ocr, sdk
- Language: Java
- Size: 125 MB
- Stars: 1,992
- Watchers: 177
- Forks: 534
- Open Issues: 67
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
[![Build Status](https://travis-ci.org/card-io/card.io-Android-SDK.svg)](https://travis-ci.org/card-io/card.io-Android-SDK)
card.io SDK for Android
========================[card.io](https://www.card.io/) provides fast, easy credit card scanning in mobile apps.
Stay up to date
---------------Please be sure to keep your app up to date with the latest version of the SDK.
All releases follow [semantic versioning](http://semver.org/).The latest version is available via `mavenCentral()`. Just add the following dependency:
```
compile 'io.card:android-sdk:5.5.1'
```You can receive updates about new versions via a few different channels:
* Follow [@cardio](https://twitter.com/cardio) (also great to send us feedback)
* Subscribe to our [card-io-sdk-announce](https://groups.google.com/forum/#!forum/card-io-sdk-announce) list.
* "Watch" this GitHub repositoryAlso be sure to check and post to the [Stack Overflow card.io tag](http://stackoverflow.com/questions/tagged/card.io).
Integration instructions
------------------------The information in this guide is enough to get started. For additional details, see our **[javadoc](http://card-io.github.io/card.io-Android-SDK/)**.
*(Note: in the past, developers needed to sign up at the [card.io site](https://www.card.io) and obtain an* `app token`. *This is no longer required.)*
### Requirements for card scanning
* Rear-facing camera.
* Android SDK version 16 (Android 4.1) or later.
* armeabi-v7a, arm64-v8, x86, or x86_64 processor.A manual entry fallback mode is provided for devices that do not meet these requirements.
### Setup
Add the dependency in your `build.gradle`:
```
compile 'io.card:android-sdk:5.5.0'
```### Sample code (See the SampleApp for an example)
First, we'll assume that you're going to launch the scanner from a button,
and that you've set the button's `onClick` handler in the layout XML via `android:onClick="onScanPress"`.
Then, add the method as:```java
public void onScanPress(View v) {
Intent scanIntent = new Intent(this, CardIOActivity.class);// customize these values to suit your needs.
scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_EXPIRY, true); // default: false
scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_CVV, false); // default: false
scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_POSTAL_CODE, false); // default: false// MY_SCAN_REQUEST_CODE is arbitrary and is only used within this activity.
startActivityForResult(scanIntent, MY_SCAN_REQUEST_CODE);
}
```Next, we'll override `onActivityResult()` to get the scan result.
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);if (requestCode == MY_SCAN_REQUEST_CODE) {
String resultDisplayStr;
if (data != null && data.hasExtra(CardIOActivity.EXTRA_SCAN_RESULT)) {
CreditCard scanResult = data.getParcelableExtra(CardIOActivity.EXTRA_SCAN_RESULT);// Never log a raw card number. Avoid displaying it, but if necessary use getFormattedCardNumber()
resultDisplayStr = "Card Number: " + scanResult.getRedactedCardNumber() + "\n";// Do something with the raw number, e.g.:
// myService.setCardNumber( scanResult.cardNumber );if (scanResult.isExpiryValid()) {
resultDisplayStr += "Expiration Date: " + scanResult.expiryMonth + "/" + scanResult.expiryYear + "\n";
}if (scanResult.cvv != null) {
// Never log or display a CVV
resultDisplayStr += "CVV has " + scanResult.cvv.length() + " digits.\n";
}if (scanResult.postalCode != null) {
resultDisplayStr += "Postal Code: " + scanResult.postalCode + "\n";
}
}
else {
resultDisplayStr = "Scan was canceled.";
}
// do something with resultDisplayStr, maybe display it in a textView
// resultTextView.setText(resultDisplayStr);
}
// else handle other activity results
}
```### Hints & Tips
* [Javadocs](http://card-io.github.io/card.io-Android-SDK/) are provided in this repo for a complete reference.
* Note: the correct proguard file is automatically imported into your gradle project from the `aar` package. Anyone not using gradle will need to extract the proguard file and add it to their proguard config.
* card.io errors and warnings will be logged to the "card.io" tag.
* If upgrading the card.io SDK, first remove all card.io libraries so that you don't accidentally ship obsolete or unnecessary libraries. The bundled libraries may change.
* Processing images can be memory intensive.
* [Memory Analysis for Android Applications](http://android-developers.blogspot.com/2011/03/memory-analysis-for-android.html) provides some useful information about how to track and reduce your app's memory useage.
* card.io recommends the use of [SSL pinning](http://blog.thoughtcrime.org/authenticity-is-broken-in-ssl-but-your-app-ha) when transmitting sensitive information to protect against man-in-the-middle attacks.Contributing
------------Please read our [contributing guidelines](CONTRIBUTING.md) prior to submitting a Pull Request.
License
-------Please refer to this repo's [license file](LICENSE).