Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1199 from cubettech/master
Card.io phonegap plugin for android, by cubet technologies
- Loading branch information
Showing
5 changed files
with
293 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
|
||
Phonegap Plugins For Android | ||
---------------------------- | ||
|
||
Phonegap plugins for android platform, developed by cubet technologies | ||
|
||
http://www.cubettechnologies.com |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
/** | ||
* CardIOPGPlugin.js | ||
* card.io phonegap plugin | ||
* @Copyright 2013 Cubet Technologies http://www.cubettechnologies.com | ||
* @author Robin <robin@cubettech.com> | ||
* @Since 28 June, 2013 | ||
*/ | ||
|
||
//Your response array contain these fields | ||
// redacted_card_number, card_number, expiry_month,expiry_year, cvv, zip | ||
|
||
//set your configurations here | ||
var cardIOConfig = { | ||
'apiKey': 'YOUR_API_KEY_HERE', | ||
'expiry': true, | ||
'cvv': true, | ||
'zip':false, | ||
}; | ||
|
||
|
||
var CardIOPGPlugin = function() {}; | ||
|
||
CardIOPGPlugin.prototype.scan = function(success, fail) { | ||
return cordova.exec(function(args) { | ||
console.log("card.io scanning completed"); | ||
success(args[0]); | ||
}, function(args) { | ||
console.log("card.io scanning Failed"); | ||
fail(args); | ||
}, "CardIOPGPlugin", "execute", [cardIOConfig]); | ||
}; | ||
|
||
if(!window.plugins) { | ||
window.plugins = {}; | ||
} | ||
if (!window.plugins.CardIOPGPlugin) { | ||
window.plugins.CardIOPGPlugin = new CardIOPGPlugin(); | ||
} | ||
|
||
|
||
//EOF |
91 changes: 91 additions & 0 deletions
91
Android/card.io/com/cubettech/plugins/cardio/CardIOMain.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
/** | ||
* CardIOPGPlugin.js | ||
* card.io phonegap plugin | ||
* @Copyright 2013 Cubet Technologies http://www.cubettechnologies.com | ||
* @author Robin <robin@cubettech.com> | ||
* @Since 28 June, 2013 | ||
*/ | ||
|
||
package com.cubettech.plugins.cardio; | ||
|
||
import org.json.JSONArray; | ||
import org.json.JSONException; | ||
import org.json.JSONObject; | ||
|
||
import com.cubet.pixsellit.R; | ||
|
||
import io.card.payment.CardIOActivity; | ||
import io.card.payment.CreditCard; | ||
import android.app.Activity; | ||
import android.content.Intent; | ||
import android.os.Bundle; | ||
|
||
public class CardIOMain extends Activity { | ||
|
||
private static int MY_SCAN_REQUEST_CODE=10; | ||
|
||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
setContentView(R.layout.activity_main); | ||
|
||
// TODO Auto-generated method stub | ||
Intent scanIntent = new Intent(CardIOMain.this, CardIOActivity.class); | ||
|
||
// required for authentication with card.io | ||
scanIntent.putExtra(CardIOActivity.EXTRA_APP_TOKEN, CardIOPGPlugin.cardIOAPIKey); | ||
|
||
// customize these values to suit your needs. | ||
scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_EXPIRY, CardIOPGPlugin.expiry); | ||
scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_CVV, CardIOPGPlugin.cvv); | ||
scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_ZIP, CardIOPGPlugin.zip); | ||
|
||
// MY_SCAN_REQUEST_CODE is arbitrary and is only used within this activity. | ||
startActivityForResult(scanIntent, MY_SCAN_REQUEST_CODE); | ||
} | ||
|
||
|
||
@Override | ||
protected void onActivityResult(int requestCode, int resultCode, Intent data) { | ||
super.onActivityResult(requestCode, resultCode, data); | ||
|
||
if (requestCode == MY_SCAN_REQUEST_CODE) { | ||
|
||
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 redacted number | ||
JSONArray carddata = new JSONArray(); | ||
JSONObject j = new JSONObject(); | ||
|
||
try { | ||
j.put("card_number",scanResult.cardNumber); | ||
j.put("redacted_card_number", scanResult.getFormattedCardNumber()); | ||
if (scanResult.isExpiryValid()) { | ||
j.put("expiry_month",scanResult.expiryMonth); | ||
j.put("expiry_year",scanResult.expiryYear); | ||
} | ||
|
||
if (scanResult.cvv != null) { | ||
j.put("cvv",scanResult.cvv); | ||
|
||
} | ||
|
||
if (scanResult.zip != null) { | ||
j.put("zip",scanResult.zip); | ||
} | ||
|
||
} catch (JSONException e) { | ||
// TODO Auto-generated catch block | ||
e.printStackTrace(); | ||
} | ||
|
||
carddata.put(j); | ||
CardIOPGPlugin.mCreditcardNumber = carddata; | ||
} | ||
} | ||
CardIOMain.this.finish(); | ||
} | ||
|
||
} |
86 changes: 86 additions & 0 deletions
86
Android/card.io/com/cubettech/plugins/cardio/CardIOPGPlugin.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
/** | ||
* CardIOPGPlugin.js | ||
* card.io phonegap plugin | ||
* @Copyright 2013 Cubet Technologies http://www.cubettechnologies.com | ||
* @author Robin <robin@cubettech.com> | ||
* @Since 28 June, 2013 | ||
*/ | ||
|
||
package com.cubettech.plugins.cardio; | ||
|
||
import io.card.payment.CardIOActivity; | ||
|
||
import org.apache.cordova.api.CallbackContext; | ||
import org.apache.cordova.api.CordovaPlugin; | ||
import org.apache.cordova.api.PluginResult; | ||
import org.json.JSONArray; | ||
import org.json.JSONException; | ||
import org.json.JSONObject; | ||
|
||
|
||
import android.content.Intent; | ||
|
||
|
||
@SuppressWarnings("deprecation") | ||
public class CardIOPGPlugin extends CordovaPlugin { | ||
|
||
public CallbackContext callbackContext; | ||
public static JSONArray mCreditcardNumber=null; | ||
public static String cardIOAPIKey; | ||
public static Boolean expiry; | ||
public static Boolean cvv; | ||
public static Boolean zip; | ||
|
||
|
||
@Override | ||
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) { | ||
// TODO Auto-generated method stub | ||
this.callbackContext = callbackContext; | ||
|
||
try { | ||
//set configurations | ||
JSONObject config = args.getJSONObject(0); | ||
cardIOAPIKey = config.getString("apiKey"); | ||
expiry = config.getBoolean("expiry"); | ||
cvv = config.getBoolean("cvv"); | ||
zip = config.getBoolean("zip"); | ||
|
||
Intent scanIntent = new Intent(cordova.getActivity(), CardIOMain.class); | ||
cordova.getActivity().startActivity(scanIntent); | ||
|
||
PluginResult cardData = new PluginResult(PluginResult.Status.NO_RESULT); | ||
cardData.setKeepCallback(true); | ||
callbackContext.sendPluginResult(cardData); | ||
return true; | ||
|
||
} catch (JSONException e) { | ||
PluginResult res = new PluginResult(PluginResult.Status.JSON_EXCEPTION); | ||
callbackContext.sendPluginResult(res); | ||
return false; | ||
} | ||
|
||
|
||
|
||
} | ||
|
||
@Override | ||
public void onResume(boolean multitasking) { | ||
// TODO Auto-generated method stub | ||
super.onResume(multitasking); | ||
|
||
//send plugin result if success | ||
JSONArray mImagepath = mCreditcardNumber; | ||
if(mImagepath!=null) | ||
{ | ||
PluginResult cardData = new PluginResult(PluginResult.Status.OK, mCreditcardNumber); | ||
cardData.setKeepCallback(false); | ||
callbackContext.sendPluginResult(cardData); | ||
mCreditcardNumber = null; | ||
} else { | ||
PluginResult cardData = new PluginResult(PluginResult.Status.NO_RESULT); | ||
cardData.setKeepCallback(false); | ||
callbackContext.sendPluginResult(cardData); | ||
} | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
Card.io android plug-in for PhoneGap | ||
--------------------------------- | ||
|
||
This plug-in exposes card.io's credit card scanning. (card.io also supports charging cards; that is not yet supported in this plug-in.) | ||
|
||
|
||
Integration instructions | ||
------------------------ | ||
|
||
* Add the card.io library: | ||
* Sign up for an account at https://www.card.io/, create an app, and take note of your `app_token`. | ||
* Download the Android SDK at https://www.card.io/integrate/android. | ||
* Follow the instructions there to add the requisite classes, jars to your project. | ||
|
||
* Add this plug-in: | ||
|
||
* Register the plugin in the `res/xml/config.xml` file. | ||
|
||
``` <plugin name="CardIOPGPlugin" value="com.cubettech.plugins.cardio.CardIOPGPlugin"/>``` | ||
|
||
* Add activity entry in `AndroidManifext.xml` | ||
|
||
``` <activity android:name="com.cubettech.plugins.cardio.CardIOMain" />``` | ||
|
||
* Add the package `com.cubettech.plugins.cardio` to your project's `src` folder. i.e, simply copy the `com` folder in your `src` directory | ||
* Copy `CardIOPGPlugin.js` to your project's www folder. | ||
* Add e.g. `<script type="text/javascript" charset="utf-8" src="CardIOPGPlugin.js"></script>` to your html. | ||
* In `config.xml`, add an entry to `ExternalHosts` with value `*.card.io`, ignore this if you have set `<access origin=".*"/>`. | ||
* See `CardIOPGPlugin.js` for detailed usage information. | ||
* Sample `scan` usage: `window.plugins.CardIOPGPlugin.scan(onCardIOComplete, onCardIOCancel);` | ||
* Your required fields & API key can be configure by modifying the array `cardIOConfig` in `CardIOPGPlugin.js` | ||
|
||
### Sample HTML + JS | ||
|
||
```html | ||
<h1>Scan Example</h1> | ||
<p><button id='scanBtn'>Scan now</button></p> | ||
<script type="text/javascript"> | ||
//Your response array contain these fields | ||
// redacted_card_number, card_number, expiry_month,expiry_year, cvv, zip | ||
var onCardIOComplete = function(response) { | ||
console.log("card.io scan completed"); | ||
console.log(JSON.stringify(response)); | ||
}; | ||
var onCardIOCancel = function() { | ||
console.log("card.io scan cancelled"); | ||
}; | ||
$('#scanBtn').click(function() { | ||
window.plugins.CardIOPGPlugin.scan(onCardIOComplete, onCardIOCancel); | ||
}); | ||
</script> | ||
``` | ||
|
||
License | ||
------- | ||
* This plug-in is released under the MIT license: http://www.opensource.org/licenses/MIT | ||
|
||
Notes | ||
----- | ||
* Generic Phone Gap plug-in installation instructions are available at https://build.phonegap.com/docs/plugins-using | ||
|
||
Questions? Contact `info@cubettech.com`. |