BAM Checkout Mobile Implementation Guide for ios



Similar documents
Netswipe Mobile Implementation Guide for ios

Credit Card Retrieval API Implementation Guide This guide illustrates how to implement the Credit Card Retrieval API.

Customize Mobile Apps with MicroStrategy SDK: Custom Security, Plugins, and Extensions

Authorize.net modules for oscommerce Online Merchant.

FRAUD TECHNIQUE: IDENTITY DOCUMENT VERIFICATION

Citrix Worx App SDK Overview

PaperCut Payment Gateway Module - PayPal Payflow Link - Quick Start Guide

How to Pay Fees in Municity Android January 2, 2015

ADITION ios Ad SDK Integration Guide for App Developers

PaperCut Payment Gateway Module - PayPal Payflow Link - Quick Start Guide

Stripe. Chapters. Copyright. Authors. Stripe modules for oscommerce Online Merchant. oscommerce Online Merchant v2.3

Brainshark/Salesforce.com Integration Installation Procedures

Software Development Kit for ios and Android

MA-WA1920: Enterprise iphone and ipad Programming

Connecting Software Connect Bridge - Mobile CRM Android User Manual

Hosting Controller 7C Gateway Open API Manual

Sophos Mobile Control Administrator guide. Product version: 3

Sophos Mobile Control Installation guide. Product version: 3

Sophos Mobile Control Administrator guide. Product version: 3.6

VMware Horizon FLEX User Guide

Pcounter Mobile Guide

The Wells Fargo Payment Gateway Business Center. User Guide

Cofred Automated Payments Interface (API) Guide

YubiKey & OATH- TOTP Verification

DocuSign Connect for Salesforce Guide

Dell OpenManage Mobile Version 1.4 User s Guide (Android)

Microsoft Tag Scanning SDK for iphone & Android Apps

Corporate and Payment Card Industry (PCI) compliance

Guide for Setting Up Your Multi-Factor Authentication Account and Using Multi-Factor Authentication. Mobile App Activation

Tag Specification Document

eggon SDK for ios 7 Integration Instructions

WEB TERMINAL AND RECURRING BILLING

Deltek Touch Time & Expense for Vision 1.3. Release Notes

Merchant Interface Online Help Files

Sophos Mobile Control Installation guide

Contents. 2 Welcome. 20 Settings. 3 Activation Steps. 4 Introduction. 4 Purpose. 20 Offline Mode Change Password. 5 Key Features

Sophos Mobile Encryption Help. Product version: 1.0 Document date: April 2012

Fairsail REST API: Guide for Developers

Error Code Quick Reference Guide Updated 01/28/2015

Greater Giving Online Software. Go Time. Quick Start Guide PRE-EVENT

User Guide. Version R91. English

This documentation is made available before final release and is subject to change without notice and comes with no warranty express or implied.

Practice Fusion API Client Installation Guide for Windows

ithenticate User Manual

PaperCut Payment Gateway Module PayPal Website Payments Standard Quick Start Guide

ios App for Mobile Website! Documentation!

Alpha e-pay v2 Merchant User Manual (v1.9)

PaperCut Payment Gateway Module - RBS WorldPay Quick Start Guide

Netswipe Processing Implementation

CHARGE Anywhere. Mobile POS. User s Guide

Shipbeat Magento Module. Installation and user guide

ABTO Software VoIP SIP SDK for iphone Developer Manual

MasterPass Service Provider Onboarding & Integration Guide Fileand API-Based Merchant Onboarding Version 6.10

ithenticate User Manual

Please note that this SDK will only work with Xcode or above. If you need an SDK for an older Xcode version please support.

Copyright 2014 Jaspersoft Corporation. All rights reserved. Printed in the U.S.A. Jaspersoft, the Jaspersoft

BlackBerry Enterprise Service 10. Universal Device Service Version: Administration Guide

WatchDox Administrator's Guide. Application Version 3.7.5

1. Application Overview System Requirements Installation Splash Screen Registration Screen...

White Label ios Application Installation and Customization Guide

Pay with Amazon Integration Guide

Smart Card Authentication. Administrator's Guide

Datatrans ios Payment Library

TABLE OF CONTENTS. ipay / Magento Implementation Guide 2 Copyright 2012 Planet Payment, Inc. All Rights Reserved.

Icons: 1024x1024, 512x512, 180x180, 120x120, 114x114, 80x80, 60x60, 58x58, 57x57, 40x40, 29x29

Policy Based Encryption Z. Administrator Guide

Sophos Mobile Control Startup guide. Product version: 3

Magento module Documentation

AppPulse Mobile. Whitepaper: Overhead, Privacy, and Security. March 2016

Sophos Mobile Control User guide for Apple ios. Product version: 4

How To Login To The Mft Internet Server (Mft) On A Pc Or Macbook Or Macintosh (Macintosh) With A Password Protected (Macbook) Or Ipad (Macro) (For Macintosh) (Macros

Klarna Magento module

Cloud Services MDM. ios User Guide

U S E R S G U I D E Last Modified: 12/06/2012 1

Salesforce Opportunities Portlet Documentation v2

Kofax Export Connector for Microsoft SharePoint

EMC Documentum Webtop

DroboAccess User Manual

Merchant Integration Guide

Merchant Integration Guide

Sophos Mobile Control as a Service Startup guide. Product version: 3.5

Akin Gump Strauss Hauer & Feld LLP Remote Access Resources (DUO)

Using Authorize.net for Credit Card Processing in YogaReg

Game Center Programming Guide

Mobile Device Management Version 8. Last updated:

PaperCut Payment Gateway Module CyberSource Quick Start Guide

E-Commerce Installation and Configuration Guide

Employee Active Directory Self-Service Quick Setup Guide

DocuSign for Salesforce Administrator Guide v6.1.1 Rev A Published: July 16, 2015

Centrify Mobile Authentication Services

Sophos Mobile Control Startup guide. Product version: 3.5

Turnitin Sakai Integration Administrator Installation Guide

How To Use Titanium Studio

HP Service Manager. Software Version: 9.40 For the supported Windows and Linux operating systems. Request Management help topics for printing

Connecting Software. CB Mobile CRM Windows Phone 8. User Manual

MySagePay. User Manual. Page 1 of 48

Amazon Payments Implementation Guide. Support for ZenCart

Nintex Forms 2013 Help

Transcription:

BAM Checkout Mobile Implementation Guide for ios This is a reference manual and configuration guide for the BAM Checkout Mobile product. It illustrates how to embed credit card and optional ID scanning into your app. Copyright: 1

Jumio Inc. 268 Lambert Avenue, Palo Alto, CA 94306 Contents BAM Checkout Mobile Implementation Guide for ios... 1 Contents... 2 Release notes... 3 Contact... 3 Credit card scanning... 4 Setup... 4 Integration... 5 Initializing the SDK... 5 Configuring the SDK... 6 Localizing labels... 8 Customizing look and feel... 8 Displaying the SDK... 8 Retrieving information... 9 Credit Card Retrieval API... 11 Two-factor authentication... 11 ID scanning... 12 Setup... 12 Integration... 13 Initializing the SDK... 13 Configuring the SDK... 14 Localizing labels... 15 Customizing look and feel... 15 Displaying the SDK... 16 Retrieving information (Fastfill)... 16 Two-factor authentication... 19 2

Release notes The current version of the Jumio SDK is 1.8.0. Visit BAM Checkout Mobile Release Notes to see additions, changes and fixes included in each release. 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. 3

Credit card scanning Setup The minimum requirements for the SDK are: ios 7.0 and higher Internet connection The following architectures are supported in the SDK: armv7, armv7s and arm64 for devices i386 and x86_64 for ios simulator Make sure that the setting "Link Frameworks Automatically" is set to YES. Add the following linker flags to your Xcode Build Settings: Note: Added automatically if using CocoaPods. -lc++ -ObjC (recommended) or -all_load The new ios 9 feature app thinning (app slicing, bitcode and on-demand resources) is supported within the SDK. For app slicing, the image resources are moved to an xcassets collection. For manual integration, the xcassets collection needs to be added to the app project or framework (as already being done for the resource bundle). 4

Integration Use the SDK in your Xcode project (app, framework or library) by including either the downloaded JumioCore.framework, JumioEncryption.framework, Netswipe.framework and the Netswipe folder with resources. Note: If you use credit card and ID scanning in your app, make sure to include JumioCore.framework and JumioEncryption.framework only once. or the CocoaPods repository with the following Podfile configuration: source 'http://mobile-sdk.jumio.com/distribution.git' pod 'JumioMobileSDK/Netswipe', '1.8.0' Note: If you use credit card and ID scanning in your app, use the following instead: pod 'JumioMobileSDK', '1.8.0' Note: Developing a Swift app using Xcode 7.1 and integrating the SDK via CocoaPods currently leads to a build error. Follow these steps to resolve it: 1. Remove the Modules folder containing module.modulemap from the Netswipe.framework 2. Create a bridging header file in your Swift app, containing #import statements for the Netswipe component 3. Remove any potentially used @import statements from your Swift implementation files Applications implementing the SDK should apply ios secure coding guidelines and shall not run on jailbroken devices 1. Perform a self-devised check to prevent usage of SDK scanning functionality on jailbroken devices. Check the Xcode sample project to learn the most common use. Initializing the SDK Make sure initialization and presentation are timely within one minute NetswipeConfiguration *config = [NetswipeConfiguration new]; config.merchantapitoken = @"YOURAPITOKEN"; config.merchantapisecret = @"YOURAPISECRET"; config.delegate = self; NetswipeViewController *netswipeviewcontroller = [[NetswipeViewController alloc] initwithconfiguration:config]; 1 In case of doubt, please consult a PCI QSA (Qualified Security Assessor). 5

Make sure that your merchant API token and API secret are correct, specify your delegate object that implements the NetswipeViewControllerDelegate protocol. Note: Log into your Jumio merchant backend, and you can find your merchant API token and API secret on the "Settings" page under "API credentials". We strongly recommend to store credentials outside your app. You can update the NetswipeConfiguration-object when the NetswipeViewController is dismissed and not visible. [netswipeviewcontroller updateconfiguration:configuration]; Custom scan view Before initializing the SDK, set your delegate that implements the NetswipeCustomScanOverlayViewControllerDelegate protocol in your NetswipeCustomScanOverlayViewController. To change the vertical card frame offset in portrait orientation, set property verticalcardframeoffset (default = 0). Configuring the SDK Set these optional properties before passing the NetswipeConfiguration-object to the NetswipeViewController. If your merchant account is in the EU data center, use JumioDataCenterEU instead. config.datacenter = JumioDataCenterEU; Overwrite your specified reporting criteria to identify each scan attempt in your reports (max. 100 characters). config.merchantreportingcriteria = @"YOURREPORTINGCRITERIA"; To restrict supported card types, pass a bitmask of NetswipeCreditCardTypes to the property supportedcreditcardtypes. NetswipeCreditCardTypes cardtypes = NetswipeCreditCardTypeAmericanExpress NetswipeCreditCardTypeMasterCard NetswipeCreditCardTypeVisa; config.supportedcreditcardtypes = cardtypes; You can enable the recognition of card holder name, sort code and account number. Manual entry, expiry recognition and CVV entry are enabled by default and can be disabled. The user can edit the recognized expiry date if setexpiryeditable is enabled. config.cardholdernamerequired = YES; config.sortcodeandaccountnumberrequired = YES; config.manualentryenabled = NO; config.expiryrequired = NO; 6

config.cvvrequired = NO; config.expiryeditable = YES; Use name to pass first and last name for name match if card holder recognition is enabled. The user can edit the recognized card holder name if cardholdernameeditable is enabled. Note: Levenshtein distance is used for name match. You can obtain the match result in the NetswipeCardInformation class. config.name = @"FIRSTNAME LASTNAME"; config.cardholdernameeditable = YES; You can set a short vibration (only on iphone) and sound effect to notify the user that the card has been detected. config.vibrationeffectenabled = YES; config.soundeffect = @"YOURSOUNDFILE.aif"; Use cameraposition to configure the default camera (front or back). config.cameraposition = JumioCameraPositionFront; To enable flashlight after SDK is started, use the following method. config.enableflashonscanstart = YES; To show the unmasked card number during the user journey, disable the following setting. config.cardnumbermaskingenabled = NO; You can add custom fields to "Manual entry" and the confirmation view (keyboard entry or predefined values). [config addcustomfield: @"idzipcode" title: @"Zip code" hint: @"94306" keyboardtype: UIKeyboardTypeNumberPad regularexpression: @"[0-9]{5}"]; [config addcustomfield: @"idstate" title: @"State" hint: @"Choose state" values: yourarray required: NO resetvaluetext: @"-- no value --"]; Specify an instance of your class which extends NetswipeCustomScanOverlayViewController to use the custom scan view with a plain card scanning user interface. config.customoverlay = yourcustomscanoverlayviewcontroller; Use the following method to support the Adyen client-side-encryption. To successfully create an encrypted data object, enable expiry date, CVC and card holder name. Note: Transmission of the encrypted object to the Adyen payment gateway is not part of the SDK. config.adyenpublickey = @"ADYENPUBLICKEY"; 7

Localizing labels All label texts and button titles can be changed and localized using the Localizable- Netswipe.strings file. Just adapt the values to your required language. Note: If using CocoaPods, the file is located under /Pods/JumioMobileSDK and needs to be added to your app. Customizing look and feel The SDK can be customized to fit your application s look and feel via the UIAppearance pattern. Navigation bar: title image, title color, tint color and bar tint color Info bar: background color (inherited from navigation bar tint color) Submit button: title color and background color Displaying the SDK To show the SDK, call the method below within your ViewController. [self presentviewcontroller: netswipeviewcontroller animated: YES completion: nil]; Note: On ipads any orientation can be applied, as the SDK is using the presentation style UIModalPresentationFormSheet. Custom scan view Once viewdidappear is called within your NetswipeCustomScanOverlayViewController, you can perform the following actions: Get location and dimension of card frame Check if front and back camera available Get camera position (front or back) Switch between front and back camera Check if flash available Check if flash enabled Switch flash mode (on or off) Restart card scanning if retry possible upon error Stop card scanning - (CGRect) cardframe; - (BOOL) hasmultiplecameras; - (JumioCameraPosition) currentcameraposition; - (void) switchcamera; - (BOOL) hasflash; - (BOOL) isflashon; - (void) toggleflash; - (void) retryscan; - (void) stopscan; 8

Retrieving information Implement the following delegate methods for scan attempts, successful scans and user cancellation notifications. Dismiss the SDK view in your app once you received the result. You receive a Jumio scan reference for each try, if the Internet connection is available. For offline scans the parameter scanreference will be nil. - (void) netswipeviewcontroller: (NetswipeViewController *) controller didstartscanattemptwithscanreference: (NSString *) scanreference { // NSString *scanreference = scanreference; // YOURCODE } Upon success, the parameter cardinformation will be returned. Call clear after processing the card information to make sure no sensitive data remains in the device's memory. - (void) netswipeviewcontroller: (NetswipeViewController *) controller didfinishscanwithcardinformation: (NetswipeCardInformation *) cardinformation scanreference: (NSString *) scanreference { // OBTAIN PARAMETERS HERE // YOURCODE // [cardinformation clear]; } The parameter error contains the user cancellation reason. Note: The error codes 200, 210, 220, 240, 250, 260 and 310 will be returned. Using the custom scan view, the error codes 260 and 310 will be returned. - (void) netswipeviewcontroller: (NetswipeViewController *) controller didcancelwitherror: (NSError *) error { // NSInteger errorcode = error.code; // NSString *errormessage = error.localizeddescription; // YOURCODE } Custom scan view Implement the following delegate methods for extraction and error notifications. Note: The error codes 200, 210, 220, 240, 300 and 320 will be returned. - (void) netswipeextractionstarted { // YOURCODE like showing a progress indicator } - (void) netswipeextractionfinished { // YOURCODE } - (void) netswipestoppedwitherror: (NSError *) error retrypossible: (BOOL) retrypossible { // NSInteger errorcode = error.code; // NSString *errormessage = error.localizeddescription; // YOURCODE } 9

Class NetswipeCardInformation Parameter Type Max. length cardtype NetswipeCreditCa rdtype Description NetswipeCreditCardTypeAmerican Express, NetswipeCreditCardTypeChinaUni onpay, NetswipeCreditCardTypeDiners, NetswipeCreditCardTypeDiscover, NetswipeCreditCardTypeJCB, NetswipeCreditCardTypeMasterCa rd, NetswipeCreditCardTypePrivateL abel or NetswipeCreditCardTypeVisa cardnumber NSMutableString 16 Full credit card number cardnumbergrouped NSMutableString 19 Grouped credit card number cardnumbermasked NSMutableString 19 First 6 and last 4 digits of the grouped credit card number, other digits are masked with "X" cardnumbermanuallyentered BOOL True if manual entry, otherwise false cardexpirymonth NSMutableString 2 Month card expires if enabled and readable cardexpiryyear NSMutableString 2 Year card expires if enabled and readable cardexpirydate NSMutableString 5 Date card expires in the format MM/yy if enabled and readable cardcvv NSMutableString 4 Entered CVV if enabled cardholdername NSMutableString 100 Name of the card holder in capital letters if enabled and readable, or as entered if editable cardsortcode NSMutableString 8 Sort code in the format xx-xx-xx or xxxxxx if enabled, available and readable cardaccountnumber NSMutableString 8 Account number if enabled, available and readable cardsortcodevalid BOOL True if sort code valid, otherwise false cardaccountnumbervalid BOOL True if account number code valid, otherwise false namematch BOOL True if successful name match (namedistance <= 20 % of name length), otherwise false namedistance NSInteger Levenshtein distance for name match, otherwise -1 encryptedadyenstring NSString Encrypted ADYEN string Method Parameter type Return type Description clear - - Clear card information getcustomfield NSString NSString Get entered value for added custom field Error codes Code Message Description 200 Authentication failed API credentials invalid, retry impossible 10

210 220 240 Scanning not available at this time, please contact the app vendor Resources cannot be loaded, retry impossible 250 Canceled by end-user No error occurred 260 The camera is currently not available Camera cannot be initialized, retry impossible 280 Certificate not valid anymore. Please update your application. End-to-end encryption key not valid anymore, retry impossible 300 Your card type is not accepted Retry possible 310 Background execution is not supported Cancellation triggered automatically 320 Your card is expired Retry possible Credit Card Retrieval API You can implement RESTful HTTP GET APIs to retrieve credit card image and data for a specific scan. Find the Implementation Guide at the link below. http://www.jumio.com/implementation-guides/credit-card-retrieval-api/. Two-factor authentication If you want to enable two-factor authentication for your Jumio merchant backend please contact support@jumio.com. Once enabled, users will be guided through the setup upon their first login to obtain a security code using the "Google Authenticator" app. 11

ID scanning Setup The minimum requirements for the SDK are: ios 7.0 and higher Internet connection The following architectures are supported in the SDK: armv7, armv7s and arm64 for devices i386 and x86_64 for ios simulator Make sure that the setting "Link Frameworks Automatically" is set to YES. Add the following linker flags to your Xcode Build Settings: Note: Added automatically if using CocoaPods. -lc++ -ObjC (recommended) or -all_load The new ios 9 feature app thinning (app slicing, bitcode and on-demand resources) is supported within the SDK. For app slicing, the image resources are moved to an xcassets collection. For manual integration, the xcassets collection needs to be added to the app project or framework (as already being done for the resource bundle). 12

Integration Use the SDK in your Xcode project (app, framework or library) by including either the downloaded JumioCore.framework, JumioEncryption.framework, Microblink.framework, Netverify.framework and the Netverify folder with resources. Note: If you use Netverify and BAM Checkout in your app, make sure to include JumioCore.framework and JumioEncryption.framework only once. or the CocoaPods repository with the following Podfile configuration: source 'http://mobile-sdk.jumio.com/distribution.git' pod 'JumioMobileSDK/Netverify', '1.8.0' Note: If you use Netverify and BAM Checkout in your app, use the following instead: pod 'JumioMobileSDK', '1.8.0' Note: Developing a Swift app using Xcode 7.1 and integrating the SDK via CocoaPods currently leads to a build error. Follow these steps to resolve it: 1. Remove the Modules folder containing module.modulemap from the Netverify.framework 2. Create a bridging header file in your Swift app, containing #import statements for the Netverify component 3. Remove any potentially used @import statements from your Swift implementation files Check the Xcode sample project to learn the most common use. Initializing the SDK Make sure initialization and presentation are timely within one minute NetswipeConfiguration *config = [NetswipeConfiguration new]; config.merchantapitoken = @"YOURAPITOKEN"; config.merchantapisecret = @"YOURAPISECRET"; config.delegate = self; NetswipeViewController *netswipeviewcontroller = [[NetswipeViewController alloc] initwithconfiguration:config]; Make sure that your merchant API token and API secret are correct and specify your delegate object that implements the NetverifyViewControllerDelegate protocol. 13

Note: Log into your Jumio merchant backend, and you can find your merchant API token and API secret on the "Settings" page under "API credentials". We strongly recommend you to store credentials outside your app. You can update the configuration when the NetverifyViewController is dismissed and not visible. [netverifyviewcontroller updateconfiguration:configuration]; Configuring the SDK Set these optional properties before passing the NetverifyConfiguration-object to the NetverifyViewController. If your merchant account is in the EU data center, use JumioDataCenterEU instead. config.datacenter = JumioDataCenterEU; Use the following property to pass first and last name for name match. Note: Levenshtein distance is used for name match. You can obtain the match result in the NetverifyDocumentData class. config.name = @"FIRSTNAME LASTNAME"; User journey You can specify issuing country (ISO 3166-1 alpha-3 country code), ID type and/or document variant to skip their selection during the scanning process. Note: Fastfill does not support paper IDs, except German ID cards. config.preselectedcountry = @"AUT"; config.preselecteddocumenttypes = NetverifyDocumentTypePassport NetverifyDocumentTypeVisa; config.preselecteddocumentvariant = NVDocumentVariantPlastic; To hide the country flag on the info bar, disable the following setting. config.showflagoninfobar = NO; Use cameraposition to configure the default camera (front or back). config.cameraposition = JumioCameraPositionFront; Transaction identifiers The merchant scan reference allows you to identify the scan (max. 100 characters). Note: Must not contain sensitive data like PII (Personally Identifiable Information) or account login. config.merchantscanreference = @"YOURSCANREFERENCE"; 14

Use the following property to identify the scan in your reports (max. 100 characters). config.merchantreportingcriteria = @"YOURREPORTINGCRITERIA"; You can also set a customer identifier (max. 100 characters). Note: The customer ID should not contain sensitive data like PII (Personally Identifiable Information) or account login. config.customerid = @"CUSTOMERID"; Fastfill only To limit data extraction to be done on device only, enable dataextractiononmobileonly. config.dataextractiononmobileonly = YES; ID verification Enable ID verification to receive a verification status and verified data positions. A callback URL can be specified for individual transactions. This setting overrides your Jumio merchant settings. Note: Not possible for accounts configured as Fastfill only. config.requireverification = YES; config.callbackurl = @"YOURCALLBACKURL"; You can enable face match during the ID verification for a specific transaction. This setting overrides your default Jumio merchant settings. config.requirefacematch = YES; Localizing labels All label texts and button titles can be changed and localized using the Localizable- Netverify.strings file. Just adapt the values to your required language. Note: If using CocoaPods, the file is located under /Pods/JumioMobileSDK and needs to be added to your app. Customizing look and feel The SDK can be customized to fit your application s look and feel via the UIAppearance pattern. Navigation bar: title image, title color, tint color and bar tint color Background: image Info bar: title color and background color (inherited from navigation bar tint color) Positive button (Submit): title color and background 15

Negative button (Cancel): title color and background Fallback button (Detection not working): title color and background Help button: title color Submission view: text color Displaying the SDK To show the SDK, call the method below within your ViewController. [self presentviewcontroller: netverifyviewcontroller animated: YES completion: nil]; Note: On ipads any orientation can be applied, as the SDK is using the presentation style UIModalPresentationFormSheet. Retrieving information (Fastfill) Implement the following delegate methods for SDK initialization, successful scans and user cancellation notifications. Dismiss the SDK view in your app once you received the result. - (void) netverifyviewcontrollerdidfinishinitializing: (NetverifyViewController *) netverifyviewcontroller { // YOURCODE } - (void) netverifyviewcontroller: (NetverifyViewController *) netverifyviewcontroller didfinishwithdocumentdata: (NetverifyDocumentData *) documentdata scanreference: (NSString *) scanreference { // OBTAIN PARAMETERS HERE // YOURCODE } - (void) netverifyviewcontroller: (NetverifyViewController *) netverifyviewcontroller didcancelwitherror: (NSError *) error scanreference: (NSString *) scanreference { // NSString *scanreference = scanreference; // NSInteger errorcode = error.code; // NSString *errormessage = error.localizeddescription; // YOURCODE } Class NetverifyDocumentData Parameter Type Max. length Description selectedcountry NSString 3 ISO 3166-1 alpha-3 country code as provided or selected selecteddocumenttype NetverifyDocumen NetverifyDocumentTypeP ttype assport, NetverifyDocumentTypeD riverlicense, NetverifyDocumentTypeI dentitycard or NetverifyDocumentTypeV Extraction (*1) 16

isa as provided or selected idnumber NSString 100 Identification number of the document MRZ, bar code, OCR personalnumber NSString 14 Personal number of the MRZ (MRP) document issuingdate NSDate Date of issue Bar code, OCR expirydate NSDate Date of expiry MRZ, bar code, OCR issuingcountry NSString 3 Country of issue as ISO 3166-1 alpha-3 country code MRZ, bar code, OCR lastname NSString 100 Last name of the customer MRZ, bar code, OCR firstname NSString 100 First name of the customer MRZ, bar code, OCR middlename NSString 100 Middle name of the customer Bar code, OCR dob NSDate Date of birth MRZ, bar code, OCR gender NVGender Gender M, F or Unknown MRZ, bar code, OCR originatingcountry NSString 3 Country of origin as ISO 3166- MRZ 1 alpha-3 country code street NSString 100 Street name Bar code, OCR (except passport) city NSString 64 City Bar code, OCR (except passport) state NSString 3 Last two characters of ISO 3166-2:US state code 17 Bar code, OCR (except passport) postalcode NSString 15 Postal code Bar code, OCR (except passport) mrzdata NetverifyMrzData MRZ data, see table below MRZ optionaldata1 NSString 50 Optional field of MRZ line 1 MRZ (TD1) optionaldata2 NSString 50 Optional field of MRZ line 2 MRZ (TD1, TD2, MRV_A, MRV_B) namematch BOOL True if successful name match (namedistance <= 20 % of name length), otherwise false namedistance NSInteger Levenshtein distance for name match, otherwise -1 livenessdetected BOOL True if face match enabled for ID verification and liveness detected successfully during scanning, otherwise false (*1) Global Netverify settings like accepted/supported IDs and data settings do not apply. Fastfill supported IDs: http://www.jumio.com/fastfill/supported-countries/ MRZ: Value is returned if available on the ID

if readable as readable (can be invalid) Bar code: Value is returned if available within the specific bar code OCR: Value is returned if available on the ID if readable as readable (can be invalid) if on the ID's front side, except plastic German ID cards if the region of the selected country fits to the region of the ID (United States, Australia, Asia, Canada, America, Europe, Africa) Class NetverifyMrzData Parameter Type Max. Description Extraction length format NVMRZFormat NVMRZFormatMRP, NVMRZFormatTD1, NVMRZFormatTD2, NVMRZFormatCNIS, NVMRZFormatMRVA or NVMRZFormatMRVB, line1 NSString 50 MRZ line 1 MRP, TD1, TD2, CNIS, MRV_A, MRV_B line2 NSString 50 MRZ line 2 MRP, TD1, TD2, CNIS, MRV_A, MRV_B line3 NSString 50 MRZ line 3 TD1 idnumbervalid BOOL True if ID number check digit is valid, otherwise false MRP, TD1, TD2, CNIS, MRV_A, MRV_B dobvalid BOOL True if date of birth check digit is valid, otherwise false expirydatevalid BOOL True if date of expiry check digit is valid or not available, otherwise false personalnumbervalid BOOL True if personal number check digit is valid or not available, otherwise false compositevalid BOOL True if composite check digit is valid, otherwise false MRP, TD1, TD2, CNIS, MRV_A, MRV_B MRP, TD1, TD2, MRV_A, MRV_B MRP MRP, TD1, TD2, CNIS 18

Error codes Code Message Description 100 We have encountered a network communication problem Retry possible, user decided to cancel 110 120 130 140 150 160 200 210 Authentication failed API credentials invalid, retry impossible 220 230 No Internet connection available Retry possible, user decided to cancel 240 Scanning not available this time, please contact the app vendor Resources cannot be loaded, retry impossible 250 Cancelled by end-user No error occurred 260 The camera is currently not available Camera cannot be initialized, retry impossible 270 Saving instance is not supported App is in the background and persisted 280 Certificate not valid anymore. Please update your application. End-to-end encryption key not valid anymore, retry impossible Two-factor authentication If you want to enable two-factor authentication for your Jumio merchant backend please contact support@jumio.com. Once enabled, users will be guided through the setup upon their first login to obtain a security code using the "Google Authenticator" app. 19