3.5.0 • Published 4 years ago

jumio-cordova v3.5.0

Weekly downloads
9
License
-
Repository
github
Last release
4 years ago

Plugin for Apache Cordova

Official Jumio Mobile SDK plugin for Apache Cordova

This plugin is compatible with version 3.5.0 of the Jumio SDK. If you have questions, please reach out to your Account Manager or contact Jumio Support at support@jumio.com or https://support.jumio.com

Compatibility

With this release, we only ensure compatibility with the latest Cordova versions and plugins. At the time of this release, the following minimum versions are supported:

  • Cordova: 9.0.0
  • Cordova Android: 8.1.0
  • Cordova iOS: 5.0.1

Setup

Create Cordova project and add our plugin

cordova create MyProject com.my.project "MyProject"
cd MyProject
cordova platform add ios
cordova platform add android
cordova plugin add https://github.com/Jumio/mobile-cordova.git#v3.5.0

Integration

iOS

Manual integration or dependency management via cocoapods possible, please see the official documentation of the Jumio Mobile SDK for iOS

Android

Add the Jumio repository:

repositories {
    maven { url 'http://mobile-sdk.jumio.com' }
    maven { url 'https://maven.google.com/' }
}

Add a parameter for your SDK_VERSION into the ext-section:

ext {
    SDK_VERSION = "3.5.0"
}

Add required permissions for the products as described in chapter Permissions

Open the android project of your cordova project located in /platforms/android and insert the dependencies from the products you require to your build.gradle file. (Module: android)

Due to the outdated Cordova platform that is not yet updated for Android API version 28 and AndroidX, it's necessary to adapt your project to support the proper build environment for the native Jumio Android component. Take a look at the Demo App build.gradle how to upgrade to API level 28. The FAQ section at the bottom covers common build issues and how to fix them. Open your Cordova Android project in Android Studio to get IDE auto-suggestions and support for all the required changes.

Usage

Netverify / Fastfill

To initialize the SDK, perform the following call.

Jumio.initNetverify(<API_TOKEN>, <API_SECRET>, <DATACENTER>, {configuration});

Datacenter can either be US, EU or SG.

Configure the SDK with the configuration-Object.

ConfigurationDatatypeDescription
enableVerificationBooleanEnable ID verification
callbackUrlStringSpecify an URL for individual transactions
enableIdentityVerificationBooleanEnable face match during the ID verification for a specific transaction
preselectedCountryBooleanSpecify the issuing country (ISO 3166-1 alpha-3 country code)
customerInternalReferenceStringAllows you to identify the scan (max. 100 characters)
reportingCriteriaStringUse this option to identify the scan in your reports (max. 100 characters)
userReferenceStringSet a customer identifier (max. 100 characters)
sendDebugInfoToJumioBooleanSend debug information to Jumio.
dataExtractionOnMobileOnlyBooleanLimit data extraction to be done on device only
cameraPositionStringWhich camera is used by default. Can be FRONT or BACK.
preselectedDocumentVariantStringWhich types of document variants are available. Can be PAPER or PLASTIC
documentTypesString-ArrayAn array of accepted document types: Available document types: PASSPORT, DRIVER_LICENSE, IDENTITY_CARD, VISA
enableWatchlistScreeningStringEnables Jumio Screening. Can be ENABLED, DISABLED or DEFAULT (when not specified reverts to DEFAULT)
watchlistSearchProfileStringSpecifies specific profile of watchlist

Initialization example with configuration.

Jumio.initNetverify("API_TOKEN", "API_SECRET", "US", {
    requireVerification: false,
    userReference: "USERREFERENCE",
    preselectedCountry: "USA",
    cameraPosition: "BACK",
    documentTypes: ["DRIVER_LICENSE", "PASSPORT", "IDENTITY_CARD", "VISA"],
    enableWatchlistScreening: "ENABLED",
    watchlistSearchProfile: "YOURPROFILENAME"
});

Android eMRTD scanning

If you are using eMRTD scanning, following lines are needed in your Manifest file:

-keep class net.sf.scuba.smartcards.IsoDepCardService {*;}
-keep class org.jmrtd.** { *; }
-keep class net.sf.scuba.** {*;}
-keep class org.bouncycastle.** {*;}
-keep class org.ejbca.** {*;}

-dontwarn java.nio.**
-dontwarn org.codehaus.**
-dontwarn org.ejbca.**
-dontwarn org.bouncycastle.**

Add the needed dependencies following this chapter of the android integration guide.

Enable eMRTD by using the following method in your native android code:

netverifySDK.setEnableEMRTD(true);

As soon as the sdk is initialized, the sdk is started by the following call.

Jumio.startNetverify(successCallback, errorCallback);

Example

Jumio.startNetverify(function(documentData) {
    // YOUR CODE
}, function(error) {
    // YOUR CODE
});

Authentication

To initialize the SDK, perform the following call.

  Jumio.initAuthentication(<API_TOKEN>, <API_SECRET>, <DATACENTER>, {configuration});

To start the SDK, perform the following call.

Jumio.startAuthentication();

Datacenter can either be US, EU or SG.

Configure the SDK with the configuration-Object. (configuration marked with * are mandatory)

In order to connect the Authentication transaction to a specific Netverify user identity the parameter enrollmentTransactionReference must be set. In case an Authentication transaction has been created via the facemap server to server API authenticationTransactionReference should be used. Therefore enrollmentTransactionReference should not be set.

ConfigurationDatatypeDescription
enrollmentTransactionReference*StringThe reference of the enrollment scan to authenticate for
authenticationTransactionReference*StringThe reference of the authentication scan to authenticate for
userReference*StringSet a customer identifier (max. 100 characters)
callbackUrlStringSpecify an URL for callback

Initialization example with configuration:

    initAuthentication: function() {
      // Authentication
      Jumio.initAuthentication(<API_TOKEN>, <API_SECRET>, <DATACENTER>, {
        enrollmentTransactionReference: "EnrollmentTransactionReference",
        //authenticationTransactionReference: "AuthenticationTransactionReference",
        userReference: "UserReference"
        callbackUrl: "URL"
      });
    }

    startAuthentication: function() {
      Jumio.startAuthentication(function(result) {
          alert(JSON.stringify(result));
        }, function(error) {
          alert(JSON.stringify(error));
      });
    }

Document Verification

To initialize the SDK, perform the following call.

Jumio.initDocumentVerification(<API_TOKEN>, <API_SECRET>, <DATACENTER>, {configuration});

Datacenter can either be US, EU or SG.

Configure the SDK with the configuration-Object. (configuration marked with * are mandatory)

ConfigurationDatatypeDescription
type*StringSee the list below
userReference*StringSet a customer identifier (max. 100 characters)
country*StringSet the country (ISO-3166-1 alpha-3 code)
customerInternalReference*StringAllows you to identify the scan (max. 100 characters)
reportingCriteriaStringUse this option to identify the scan in your reports (max. 100 characters)
callbackUrlStringSpecify an URL for individual transactions
documentNameStringOverride the document label on the help screen
customDocumentCodeStringSet your custom document code (set in the merchant backend under "Settings" - "Multi Documents" - "Custom"
cameraPositionStringWhich camera is used by default. Can be FRONT or BACK.
enableExtractionboolEnable/disable data extraction for documents.

Possible types:

  • BS (Bank statement)
  • IC (Insurance card)
  • UB (Utility bill, front side)
  • CAAP (Cash advance application)
  • CRC (Corporate resolution certificate)
  • CCS (Credit card statement)
  • LAG (Lease agreement)
  • LOAP (Loan application)
  • MOAP (Mortgage application)
  • TR (Tax return)
  • VT (Vehicle title)
  • VC (Voided check)
  • STUC (Student card)
  • HCC (Health care card)
  • CB (Council bill)
  • SENC (Seniors card)
  • MEDC (Medicare card)
  • BC (Birth certificate)
  • WWCC (Working with children check)
  • SS (Superannuation statement)
  • TAC (Trade association card)
  • SEL (School enrolment letter)
  • PB (Phone bill)
  • USSS (US social security card)
  • SSC (Social security card)
  • CUSTOM (Custom document type)

Initialization example with configuration.

Jumio.initDocumentVerification("API_TOKEN", "API_SECRET", "US", {
    type: "BC",
    userReference: "USERREFERENCE",
    country: "USA",
    customerInternalReference: "YOURSCANREFERENCE",
    cameraPosition: "BACK"
});

As soon as the SDK is initialized, the SDK is started by the following call.

Jumio.startDocumentVerification(successCallback, errorCallback);

Example

Jumio.startDocumentVerification(function(documentData) {
    // YOUR CODE
}, function(error) {
    // YOUR CODE
});

BAM Checkout

To Initialize the SDK, perform the following call.

Jumio.initBAM(<API_TOKEN>, <API_SECRET>, <DATACENTER>, {configuration});

Datacenter can either be US, EU or SG.

Configure the SDK with the configuration-Object.

ConfigurationDatatypeDescription
cardHolderNameRequiredBoolean
sortCodeAndAccountNumberRequiredBoolean
expiryRequiredBoolean
cvvRequiredBoolean
expiryEditableBoolean
cardHolderNameEditableBoolean
merchantReportingCriteriaStringOverwrite your specified reporting criteria to identify each scan attempt in your reports (max. 100 characters)
vibrationEffectEnabledBoolean
enableFlashOnScanStartBoolean
cardNumberMaskingEnabledBoolean
offlineTokenStringIn your Jumio merchant backend on the "Settings" page under "API credentials" you can find your Offline token. In case you use your offline token, you must not set the API token and secret
cameraPositionStringWhich camera is used by default. Can be FRONT or BACK.
cardTypesString-ArrayAn array of accepted card types. Available card types: VISA, MASTER_CARD, AMERICAN_EXPRESS, CHINA_UNIONPAY, DINERS_CLUB, DISCOVER, JCB

Initialization example with configuration.

Jumio.initBAM("API_TOKEN", "API_SECRET", "US", {
    cardHolderNameRequired: false,
    cvvRequired: true,
    cameraPosition: "BACK",
    cardTypes: ["VISA", "MASTER_CARD"]
});

As soon as the sdk is initialized, the sdk is started by the following call.

Jumio.startBAM(successCallback, errorCallback);

Example

Jumio.startBAM(function(cardInformation) {
    // YOUR CODE
}, function(error) {
    // YOUR CODE
});

Customization

Android

Netverify

The Netverify SDK can be customized to the respective needs by following this customization chapter.

BAM Checkout

The Netverify SDK can be customized to the respective needs by following this customization chapter.

Document Verification

The Netverify SDK can be customized to the respective needs by following this customization chapter.

iOS

The SDK can be customized to the respective needs. You can pass the following customization options to the initializer:

Customization keyTypeDescription
disableBlurBOOLDeactivate the blur effect
backgroundColorSTRINGChange base view's background color
foregroundColorSTRINGChange base view's foreground color
tintColorSTRINGChange the tint color of the navigation bar
barTintColorSTRINGChange the bar tint color of the navigation bar
textTitleColorSTRINGChange the text title color of the navigation bar
documentSelectionHeaderBackgroundColorSTRINGChange the background color of the document selection header
documentSelectionHeaderTitleColorSTRINGChange the title color of the document selection header
documentSelectionHeaderIconColorSTRINGChange the icon color of the document selection header
documentSelectionButtonBackgroundColorSTRINGChange the background color of the document selection button
documentSelectionButtonTitleColorSTRINGChange the title color of the document selection button
documentSelectionButtonIconColorSTRINGChange the icon color of the document selection button
fallbackButtonBackgroundColorSTRINGChange the background color of the fallback button
fallbackButtonBorderColorSTRINGChange the border color of the fallback button
fallbackButtonTitleColorSTRINGChange the title color of the fallback button
positiveButtonBackgroundColorSTRINGChange the background color of the positive button
positiveButtonBorderColorSTRINGChange the border color of the positive button
positiveButtonTitleColorSTRINGChange the title color of the positive button
negativeButtonBackgroundColorSTRINGChange the background color of the negative button
negativeButtonBorderColorSTRINGChange the border color of the negative button
negativeButtonTitleColorSTRINGChange the title color of the negative button
scanBackgroundColor (NV only)STRINGChange the background color of the scan overlay
scanOverlayStandardColor (NV only)STRINGChange the standard color of the scan overlay
scanOverlayValidColor (NV only)STRINGChange the valid color of the scan overlay
scanOverlayInvalidColor (NV only)STRINGChange the invalid color of the scan overlay
scanOverlayTextColor (BAM only)STRINGChange the text color of the scan overlay
scanOverlayBorderColor (BAM only)STRINGChange the border color of the scan overlay

All colors are provided with a HEX string with the following format: #ff00ff.

Customization example

Jumio.initNetverify("API_TOKEN", "API_SECRET", "US", {
    requireVerification: false,
    ...
}, {
    disableBlur: true,
    backgroundColor: "#ff00ff",
    barTintColor: "#ff1298"
);

Callback

To get information about callbacks, Netverify Retrieval API, Netverify Delete API and Global Netverify settings and more, please read our page with server related information.

The JSONObject with all the extracted data that is returned for the specific products is described in the following subchapters:

Netverify & Fastfill

NetverifyDocumentData:

ParameterTypeMax. lengthDescription
selectedCountryString3ISO 3166-1 alpha-3 country code as provided or selected
selectedDocumentTypeString16PASSPORT, DRIVER_LICENSE, IDENTITY_CARD or VISA
idNumberString100Identification number of the document
personalNumberString14Personal number of the document
issuingDateDateDate of issue
expiryDateDateDate of expiry
issuingCountryString3Country of issue as (ISO 3166-1 alpha-3) country code
lastNameString100Last name of the customer
firstNameString100First name of the customer
dobDateDate of birth
genderString1m, f or x
originatingCountryString3Country of origin as (ISO 3166-1 alpha-3) country code
addressLineString64Street name
cityString64City
subdivisionString3Last three characters of ISO 3166-2:US state code
postCodeString15Postal code
mrzDataMRZ-DATAMRZ data, see table below
optionalData1String50Optional field of MRZ line 1
optionalData2String50Optional field of MRZ line 2
placeOfBirthString255Place of Birth
extractionMethodString12MRZ, OCR, BARCODE, BARCODE_OCR or NONE

MRZ-Data

ParameterTypeMax. lengthDescription
formatString8MRP, TD1, TD2, CNIS, MRVA, MRVB or UNKNOWN
line1String50MRZ line 1
line2String50MRZ line 2
line3String50MRZ line 3
idNumberValidBOOLTrue if ID number check digit is valid, otherwise false
dobValidBOOLTrue if date of birth check digit is valid, otherwise false
expiryDateValidBOOLTrue if date of expiry check digit is valid or not available, otherwise false
personalNumberValidBOOLTrue if personal number check digit is valid or not available, otherwise false
compositeValidBOOLTrue if composite check digit is valid, otherwise false

BAM Checkout

BAMCardInformation

ParameterTypeMax. lengthDescription
cardTypeString16VISA, MASTER_CARD, AMERICAN_EXPRESS, CHINA_UNIONPAY, DINERS_CLUB, DISCOVER, JCB or STARBUCKS
cardNumberString16Full credit card number
cardNumberGroupedString19Grouped credit card number
cardNumberMaskedString19First 6 and last 4 digits of the grouped credit card number, other digits are masked with "X"
cardExpiryMonthString2Month card expires if enabled and readable
CardExpiryYearString2Year card expires if enabled and readable
cardExpiryDateString5Date card expires in the format MM/yy if enabled and readable
cardCVVString4Entered CVV if enabled
cardHolderNameString100Name of the card holder in capital letters if enabled and readable, or as entered if editable
cardSortCodeString8Sort code in the format xx-xx-xx or xxxxxx if enabled, available and readable
cardAccountNumberString8Account number if enabled, available and readable
cardSortCodeValidBOOLTrue if sort code valid, otherwise false
cardAccountNumberValidBOOLTrue if account number code valid, otherwise false

Document Verification

No data returned.

FAQ

This is a list of common Android build issues and how to resolve them:

  • Gradle plugin 4.X not supported, please install 5.X

    	-> Change the version in the gradle-wrapper.properties file
  • MinSdkVersion/TargetSdkVersion not supported in AndroidManifest.xml

    	-> Remove both versions from AndroidManifest.xml as suggested by Android Studio (as they are taken from build.gradle only since Gradle 5)
  • Command "compile" is obsolete, use implementation instead

    	-> Change all dependency declarations to use "implementation" instead of "compile" to support the latest gradle changes - https://github.com/Jumio/mobile-cordova/blob/master/demo/platforms/android/build.gradle#L291
  • Theme.Netverify/Bam/DocumentVerification/Authentication cannot be resolved

    	-> Add the Jumio dependencies as proposed here: https://github.com/Jumio/mobile-cordova/blob/master/demo/platforms/android/build.gradle#L95
  • Ressources from styles.xml "cornerRadius" and others not found

    -> Build tools and support library are not at version 28. Change compileSdk and buildToolsVersion as described here -> https://github.com/Jumio/mobile-cordova/blob/master/demo/platforms/android/build.gradle#L222

  • Device-ready not fired after X seconds

    -> The plugin definition in "YOURPROJECT/platforms/android/platform_www/plugins/cordova-plugin-jumio-mobilesdk/www" might be duplicated/corrupted due to the issue mentioned in this Stackoverflow post - https://stackoverflow.com/questions/28017540/cordova-plugin-javascript-gets-corrupted-when-added-to-project/28264312#28264312 , please fix the duplicated "cordova.define()" call in these files as mentioned in the post.

Support

Contact

If you have any questions regarding our implementation guide please contact Jumio Customer Service at support@jumio.com or https://support.jumio.com. The Jumio online helpdesk contains a wealth of information regarding our service including demo videos, product descriptions, FAQs and other things that may help to get you started with Jumio. Check it out at: https://support.jumio.com.

Licenses

The software contains third-party open source software. For more information, please see Android licenses and iOS licenses

This software is based in part on the work of the Independent JPEG Group.

Copyright

© Jumio Corp. 268 Lambert Avenue, Palo Alto, CA 94306