IDTECH NEO2 Manual

Apple ios sdk guide
Hide thumbs Also See for NEO2:
Table of Contents

Advertisement

Quick Links

Apple iOS SDK Guide
for NEO2
#80152802-001
Rev. A

Advertisement

Table of Contents
loading

Summary of Contents for IDTECH NEO2

  • Page 1 Apple iOS SDK Guide for NEO2 #80152802-001 Rev. A...
  • Page 2 Revision History Revision Description and Reason for Change Date Initial Release - Manual;User;NEO2;SDK;iOS 1/29/2018 #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 3: Table Of Contents

    CONTENTS Contents IDTech iOS SDK Reference Guide for NEO2 Connecting to NEO2 BLE Version Important Security Notice Applicability ..........
  • Page 4 ........#80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 5 ........IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 6 ..111 13.7.2.64 felica_authentication:(NSData key) ......112 #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 7 ........122 IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 8 ........132 #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 9 ........139 Index IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 11 Chapter 1 IDTech iOS SDK Reference Guide for NEO2 IDTech.framework is an Apple Framework that will be provided by IDTech as the main interface between iOS appli- cations, the NEO2 and payment processing solutions. The purpose of this document is to describe the requirements of the frameworks as well as the interface definitions and requirements needed for any iOS applications wishing to deploy with the payment application.
  • Page 12 (IDT_NEO2) The very first time a NEO2 is used with a particular iOS device, it must be located by it's friendly name (as the device identifier hasn't been calculated by the iOS). If there are multiple NEO2's in range, it will stop at the first one located.
  • Page 13: Important Security Notice

    Windows XP, you are required to turn off Windows XP System Restore Points. 3.2 What Does PA-DSS Mean to You? The following table provides opening points to cover in any discussion with merchants on data storage. IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 14: Third Party Applications

    3.4 PA-DSS Guidelines The following PA-DSS Guidelines are being provided by IDTech as a convenience to its customers. Customers should not rely on these PA-DSS Guidelines, but should instead always refer to the most recent PCI DSS Program Guide published by PCI SSC.
  • Page 15 2.3 Render PAN, at a minimum, unreadable anywhere it is stored, (including data on portable digital media, backup media, and in logs) by using any of the following approaches: • One-way hashes based on strong cryptography with associated key management processes and procedures • Truncation IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 16 PCI Data Security Standard Requirement 10.1 4.2 Payment application must implement an automated audit trail to track and monitor access. PCI Data Security Standard Requirements 10.2 and 10.3 5. Develop secure payment applications #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 17 • Management sign-off by appropriate parties • Testing functionality to verify the new change(s) does not adversely impact the security of the system. Remove all testing configurations, samples, and data before finalizing the product for production. IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 18 10. Facilitate secure remote software updates 10.1 If payment application updates are delivered securely via remote access into customers systems, software vendors must tell customers to turn on remote-access technologies only when needed for downloads from vendor #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 19: More Information

    3.5 More Information IDTech Systems, Inc. highly recommends that merchants contact the card association(s) or their processing com- pany and find out exactly what they mandate and/or recommend. Doing so may help merchants protect themselves from fines and fraud.
  • Page 20 Important Security Notice • http://www.pcisecuritystandards.org • http://www.visa.com/cisp • http://www.sans.org/resources • http://www.microsoft.com/security/default.asp • https://sdp.mastercardintl.com/ • http://www.americanexpress.com/merchantspecs CAPN questions: capninfocenter@aexp.com #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 21: Neo2 Main Transaction Commands

    If there was a communication error with host, you must still finish the EMV transaction by passing "FALSE" for isSuccess, and nil for tags. Terminal Configuration emv_retrieveTerminalData: (IDT_NEO2) emv_removeTerminalData (IDT_NEO2) emv_setTerminalData: (IDT_NEO2) ctls_setTerminalData: (IDT_NEO2) ctls_setConfigurationGroup: (IDT_NEO2) IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 22 (IDT_NEO2) icc_exchangeAPDU:response: (IDT_NEO2) Allows the direct sending of APDU packets to ICC. Pass through mode must first be enabled. Then Power On needs to complete successfully. Then APDU packet exchange can take place #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 23: Msr/Ctls Msd

    Both methods perform identical operation. Enables MSR to receive Swipe and CTLS to receive tap. If swipe captured, returns IDTMSRData instance to deviceDelegate::swipeMSRData:(). If CTLS captured, returns TEMVData to deviceDelegate::emvTransactionData:() Cancel Swipe msr_cancelMSRSwipe (IDT_NEO2) ctls_cancelTransaction (IDT_NEO2) Both methods perform identical operation. Cancels the Swipe/Tap request. IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 24: Sending Direct Commands

    Chapter 5 Sending Direct Commands The main purpose of IDTech.framework for NEO2 is to expedite integration to the device by providing the connec- tivity and communication protocols. It also provides the main functions to get device info, perform contact EMV Transactions, perform swipe/Tap transactions, and to modify contact EMV data files.
  • Page 25: Core Implementation Neo2: Objective-C

    Chapter 6 Core Implementation NEO2: Objective-C IDTech Framework includes class libraries to interface with the NEO2. This guide assume a fair understanding of Xcode 5.0+ and general Apple iOS programming knowledge. 6.1 Integrating with IDTech framework • Import the necessary framework/libraries •...
  • Page 26 Core Implementation NEO2: Objective-C On the Choose Frameworks screen, click "Add Other" in the lower left Navigate to the IDTech.framework folder, and click "Open" #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 27 6.2 Import the necessary framework/libraries Link the ExternalAccessory framework. On the Choose Frameworks screen, type "exter" into the search bar, select ExternalAccesssory.framework and click "Open" IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 28 Repeat process for MediaPlayer.framework, AVFoundation.framework, AudioToolbox.framework, and CFNetwork. framework Link another library. Under Copy Bundle, click the Add (+) button, click "Add Other", navigate to and select the IDTech.bundle file and click "Open" #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 29 6.2 Import the necessary framework/libraries IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 30 Core Implementation NEO2: Objective-C The Build Phases should now include the required frameworks/libraries for the NEO2 #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 31: Add Import Statements To Utilize Frameworks

    In the header files of the classes that will access IDTech Devices, use import statement utilize the frameworks: #import <IDTech/IDTech.h> 6.4 Amend the view controller interface to include the framework delegate classes: In the header files of the classes that will be a delegate of IDTech.framework, include the reference to the framework delegate class name: @interface ViewController : UIViewController <IDT_NEO2_Delegate>...
  • Page 32: Call The Singleton Instance Of The Idt_Neo2 Framework Object

    [[IDT_NEO2 sharedController] device_enableBLEDeviceSearch:nil]; 6.7 Sample Project Tutorial Using Xcode 6.4, we will create a sample project that will interface with the NEO2 and will perform the following activities: • Auto-Connect and display connection status • Get Device Firmware •...
  • Page 33: Step 2: Import Frameworks

    6.7.2 Step 2: Import Frameworks Import the necessary framework/libraries 6.7.3 Step 3: Design Interface Design the User Interface by editing the iPhone storyboard file Open your storyboard and add items to so it contains the following buttons/fields: IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 34: Step 4: Configure Header File

    • Add a label to the top that will signify connection/disconnection status. • Add text views to communicate data from the NEO2 and for EMV LCD display information. Remove the Editable behavior if you don't want the keyboard to pop up if you accidentally select it.
  • Page 35 <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode=" scaleToFill" editable="NO" text="LCD DISPLAY INFO" textAlignment="center" translatesAutoresizingMaskIntoConstraints=" NO" id="XfN-t5-Cxv"> <rect key="frame" x="16" y="256" width="378" height="128"/> IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 36 <constraints> <constraint firstAttribute="height" constant="26" id="vhA-Zy-E5Q"/> </constraints> <fontDescription key="fontDescription" type="system" pointSize="14"/> <state key="normal" title="Start Transaction"> <color key="titleColor" red="0.068003949080000001" green=" 0.072250786509999998" blue="0.44422978940000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1 #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 37 <constraint firstItem="IhF-UM-clE" firstAttribute="trailing" secondItem=" U0Y-vt-9An" secondAttribute="trailing" id="3xN-DP-18G"/> <constraint firstItem="KML-Tf-QdE" firstAttribute="top" secondItem="QvK-Hw-R0Z" secondAttribute="bottom" constant="8" symbolic="YES" id="7nF-2H-I4g"/> <constraint firstItem="IhF-UM-clE" firstAttribute="top" secondItem="KML-Tf-QdE" secondAttribute="bottom" constant="8" symbolic="YES" id="ATt-74-bel"/> <constraint firstItem="KML-Tf-QdE" firstAttribute="leading" secondItem=" IhF-UM-clE" secondAttribute="leading" id="BWn-nl-dRE"/> IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 38: Step 5: Configure Method File

    Reference: Call the Singleton instance of the IDT_NEO2 framework object - (void)viewDidLoad [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [[IDT_NEO2 sharedController] setDelegate:self]; #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 39 [self appendMessageToResults:[NSString stringWithFormat:@"Encrypt Type: %@", @"UNKNOWN" break; [self appendMessageToResults:[NSString stringWithFormat:@"Full card data: %@", cardData. cardData]]; [self appendMessageToResults:[NSString stringWithFormat:@"Track 1: %@", cardData.track1]]; [self appendMessageToResults:[NSString stringWithFormat:@"Track 2: %@", cardData.track2]]; [self appendMessageToResults:[NSString stringWithFormat:@"Track 3: %@", cardData.track3]]; IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 40 EVENT_MSR_ENTER_KEY: [self appendMessageToResults:[NSString stringWithFormat:@"(Event) MSR Enter Key received: %@", cardData.encTrack1]]; return; break; case EVENT_MSR_UNKNOWN: [self appendMessageToResults:[NSString stringWithFormat:@"(Event) MSR unknown event, data: %@", cardData.encTrack1]]; return; break; case EVENT_MSR_TIMEOUT: [self appendMessageToResults:@"(Event) MSR TIMEOUT"]; return; default: #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 41 0x01: case 0x02: case 0x08:{ [[IDT_NEO2 sharedController] emv_callbackResponseLCD:mode selection:(unsigned char)1];; break; default: break; • Implement the button press methods -(IBAction) getFirmware:(id)sender{ NSString * result; logTextView.text = @""; RETURN_CODE rt = [[IDT_NEO2 sharedController] device_getFirmwareVersion:&result]; IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 42 RETURN_CODE rt = [[IDT_NEO2 sharedController] emv_completeOnlineEMVTransaction:true hostResponseTags:[IDTUtility hexToData:@"8A023030"] returnTags:nil]; (RETURN_CODE_DO_SUCCESS == rt) [self appendMessageToResults: @"Complete Transaction Command Accepted"]; -(IBAction) cancelTransaction:(id)sender{ logTextView.text = @""; RETURN_CODE rt = [[IDT_NEO2 sharedController] ctls_cancelTransaction]; if(RETURN_CODE_DO_SUCCESS == rt){ [self appendMessageToResults:@"CancelMSR/CTLS: OK."]; #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 43: Core Implementation Neo2: Swift

    Chapter 7 Core Implementation NEO2: Swift IDTech Framework includes class libraries to interface with the NEO2. This guide assume a fair understanding of Xcode 7.3+ and general Apple iOS programming knowledge. 7.1 Integrating with IDTech framework • Import the Necessary Framework/Libraries •...
  • Page 44 Core Implementation NEO2: Swift On the Choose Frameworks screen, click "Add Other" in the lower left Navigate to the IDTech.framework folder, and click "Open" #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 45 7.2 Import the Necessary Framework/Libraries Link the ExternalAccessory framework. On the Choose Frameworks screen, type "exter" into the search bar, select ExternalAccesssory.framework and click "Add" IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 46 Repeat process for MediaPlayer.framework, AVFoundation.framework, AudioToolbox.framework, and CFNetwork. framework Link another library. Under Copy Bundle, click the Add (+) button, click "Add Other", navigate to and select the IDTech.bundle file and click "Open" #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 47 7.2 Import the Necessary Framework/Libraries IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 48 Core Implementation NEO2: Swift The Build Phases should now include the required frameworks/libraries for the NEO2 #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 49: Create A Bridging Header File

    7.3 Create a Bridging Header File 7.3 Create a Bridging Header File Using the NEO2 SDK with Swift requires a bridging header to allow the application to have a mixed-language codebase First, you will need to create a header file. Right click on your project directory and click "New File...".
  • Page 50 Core Implementation NEO2: Swift On the file creation screen, select Header File and click "Next" #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 51 7.3 Create a Bridging Header File On the following screen, choose a name for your header file and click "Create" IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 52 Core Implementation NEO2: Swift The bridging header file is now created #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 53 Type "bridging" into the search bar and double click the Objective-C Bridging Header setting to get an input box Type the relative path to your project directory and the name of the bridging header file and then click enter to save the setting IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 54: Add Import Statement To The Bridging Header File

    #ifndef Swift_Bridging_Header_h #define Swift_Bridging_Header_h #import <IDTech/IDTech.h> #endif 7.5 Amend the View Controller Interface In the view controller classes that will be a delegate of IDTech.framework, include the reference to the framework delegate class name: class ViewController: UIViewController, IDT_NEO2_Delegate 7.6 Implement Optional Delegate Protocols...
  • Page 55: Allocate/Initialize Idt_Neo2 Object

    // Do any additional setup after loading the view, typically from a nib. IDT_NEO2.sharedController().delegate self 7.8 Sample Project Tutorial Using Xcode 7.3.1, we will create a sample project that will interface with the NEO2 and will perform the following activities: • Auto-Connect and display connection status • Get Device Firmware •...
  • Page 56: Step 1: Create New Project

    Core Implementation NEO2: Swift 7.8.1 Step 1: Create New Project Create a new Single View Application in Xcode #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 57: Step 2: Import Frameworks

    7.8 Sample Project Tutorial 7.8.2 Step 2: Import Frameworks Import the Necessary Framework/Libraries 7.8.3 Step 3: Design Interface Design the User Interface by editing the Main.storyboard file IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 58: Step 4: Configure The Bridging Header And View Controller Files

    • Add a label to the top that will signify connection/disconnection status. • Add text views to communicate data from the NEO2 and for EMV LCD display information. Remove the Editable and Selectable behaviors if you don't want the keyboard to pop up if you accidentally select it.
  • Page 59 </label> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZFI-2h-07z"> <rect key="frame" x="0.0" y="84" width="600" height="114"/> <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="midd translatesAutoresizingMaskIntoConstraints="NO" id="tU5-uw-pz7"> <rect key="frame" x="8" y="8" width="112" height="30"/> <constraints> <constraint firstAttribute="width" constant="112" id=" ewS-6U-IbJ"/> IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 60 <constraint firstAttribute="trailing" secondItem="wSh-X8-jQA" secondAttribute="trailing" constant="8" id="F76-HQ-FNU"/> <constraint firstAttribute="trailing" secondItem="hio-sJ-hC4" secondAttribute="trailing" constant="8" id="Fdc-pe-qvL"/> <constraint firstItem="HHZ-Uc-sT9" firstAttribute="centerX" secondItem= "ZFI-2h-07z" secondAttribute="centerX" id="SzC-4b-OJj"/> <constraint firstItem="TGp-e1-4bO" firstAttribute="top" secondItem=" tU5-uw-pz7" secondAttribute="bottom" constant="8" id="f3n-e6-UUG"/> #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 61 "Y4B-gd-hVo" secondAttribute="centerX" id="A1H-Xc-KUF"/> <constraint firstItem="RTX-Hq-mMT" firstAttribute="top" secondItem=" G5K-IS-8cP" secondAttribute="bottom" constant="8" id="CB4-g5-bKw"/> <constraint firstItem="G5K-IS-8cP" firstAttribute="centerX" secondItem= "Y4B-gd-hVo" secondAttribute="centerX" id="DUq-Oc-RKU"/> <constraint firstItem="MFI-aU-Awe" firstAttribute="top" secondItem=" 8IP-lE-FQE" secondAttribute="bottom" constant="8" id="EIn-ER-enh"/> <constraint firstAttribute="trailing" secondItem="RTX-Hq-mMT" secondAttribute="trailing" constant="8" id="H04-dI-fGz"/> IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 62: Step 5: Finalize The View Controller File

    BLE, enter the friendly name of the device Reference: Allocate/Initialize IDT_NEO2 Object override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. IDT_NEO2.sharedController().delegate self IDT_NEO2.sharedController().device_setBLEFriendlyName("VP-2722"); //set to device ble name IDT_NEO2.sharedController().device_enableBLEDeviceSearch(nil); #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 63 3: " + (cardData.track3 == nil ? "N/A" : cardData.track3)) appendMessageToLog("Length Track 1: " + cardData.track1Length.description) appendMessageToLog("Length Track 2: " + cardData.track2Length.description) appendMessageToLog("Length Track 3: " + cardData.track3Length.description) appendMessageToLog("Encoded Track 1: " + (cardData.encTrack1 == nil ? "N/A" : cardData.encTrack1. hexEncodedString())) IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 64 IDTEMVData!, errorCode error: Int32) { NSLog("EMV_RESULT_CODE_V2_response = " + String(describing: error)) appendMessageToLog("EMV transaction data response: " + IDT_NEO2. sharedController().device_getResponseCodeString(error)) emvData == nil { appendMessageToLog("EMV TRANSACTION ERROR. Refer to EMV_RESULT_CODE_V2_response = " + error. #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 65 { str += s as! String str += " n" switch mode { case 0x10: lcdTextView.text = "" case 0x03: lcdTextView.text = str case 0x01, 0x02, 0x08: IDT_NEO2.sharedController().emv_callbackResponseLCD(mode, selection: 1) default: break IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 66 Transaction Command Accepted") else displayReturnError("Complete ICC EMV", rt: rt) @IBAction func cancelTransaction(_ sender: UIButton) { let rt = IDT_NEO2.sharedController(). ctls_cancelTransaction() logTextView.text = "" RETURN_CODE_DO_SUCCESS == rt { appendMessageToLog("Canceled transaction") else displayReturnError("Cancel transaction", rt: rt) #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 67: Neo2 Error Code Reference

    Incorrect Parameter EE06 Parameter Not Supported EE07 Mal-formatted Data EE08 Timeout EE0A Failed / NACK EE0B Command not Allowed EE0C Sub-Command not Allowed EE0D Buffer Overflow (Data Length too large for reader buffer) IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 68 Write Flash Error EE63 Ok and Have Next Command EE80 Cannot start Contact EMV transaction EE81 CTLS/MSR cancelled due to card insertion EE90 Account DUKPT Key not exist EE91 Account DUKPT Key KSN exhausted #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 69: Enumeration Reference

    CAPTURE_ENCODE_TYPE_JIS_II=5, CAPTURE_ENCODE_TYPE_JIS_I=6, CAPTURE_ENCODE_TYPE_MANUAL_ENTRY=7 } CAPTURE_ENCODE_TYPE; typedef enum{ CAPTURE_ENCRYPT_TYPE_TDES=0, CAPTURE_ENCRYPT_TYPE_AES=1 } CAPTURE_ENCRYPT_TYPE; IDTCommon typedef enum{ POWER_ON_OPTION_IFS_FLAG=1, POWER_ON_OPTION_EXPLICIT_PPS_FLAG=2, POWER_ON_OPTION_AUTO_PPS_FLAG=64, POWER_ON_OPTION_IFS_RESPONSE_CHECK_FLAG=128 }POWER_ON_OPTION; typedef enum{ LANGUAGE_TYPE_ENGLISH=1, LANGUAGE_TYPE_PORTUGUESE, LANGUAGE_TYPE_SPANISH, LANGUAGE_TYPE_FRENCH }LANGUAGE_TYPE; typedef enum{ PIN_KEY_TDES_MKSK_extp=0x00, PIN_KEY_TDES_DUKPT_extp=0x01, PIN_KEY_TDES_MKSK_intl=0x10, PIN_KEY_TDES_DUKPT_intl=0x11, }PIN_KEY_Types; IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 70 EVENT_NEO2_EMV_FALLBACK_DATA }EVENT_MSR_Types; typedef enum{ EVENT_ACTIVE_TRANSACTION = 51 }EVENT_CTLS_Types; typedef enum RETURN_CODE_DO_SUCCESS = 0, RETURN_CODE_ERR_DISCONNECT, RETURN_CODE_ERR_CMD_RESPONSE, RETURN_CODE_ERR_TIMEDOUT, RETURN_CODE_ERR_INVALID_PARAMETER, RETURN_CODE_SDK_BUSY_MSR, RETURN_CODE_SDK_BUSY_PINPAD, RETURN_CODE_SDK_BUSY_CTLS, RETURN_CODE_ERR_OTHER, RETURN_CODE_FAILED, RETURN_CODE_NOT_ATTACHED, RETURN_CODE_MONO_AUDIO, RETURN_CODE_CONNECTED, RETURN_CODE_LOW_VOLUME, RETURN_CODE_CANCELED, RETURN_CODE_EMV_AUTHORIZATION_ACCEPTED = 0x0E00, RETURN_CODE_EMV_AUTHORIZATION_UNABLE_TO_GO_ONLINE = 0x0E01, #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 71 EMV_RESULT_CODE_V2_SERVICE_NOT_ALLOWED = 0X5021, EMV_RESULT_CODE_V2_NO_TAG_FOUND = 0X5022, EMV_RESULT_CODE_V2_CARD_BLOCKED = 0X5023, EMV_RESULT_CODE_V2_LEN_INCORRECT = 0X5024, EMV_RESULT_CODE_V2_CARD_COM_ERROR = 0X5025, EMV_RESULT_CODE_V2_TSC_NOT_INCREASED = 0X5026, EMV_RESULT_CODE_V2_HASH_INCORRECT = 0X5027, EMV_RESULT_CODE_V2_ARC_NOT_PRESENCED = 0X5028, EMV_RESULT_CODE_V2_ARC_INVALID = 0X5029, EMV_RESULT_CODE_V2_COMM_NO_ONLINE = 0X5030, EMV_RESULT_CODE_V2_TRAN_TYPE_INCORRECT = 0X5031, IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 72 EMV_RESULT_CODE_V2_CVM_CODE_IS_NOT_SUPPORTED = 0X6005, EMV_RESULT_CODE_V2_CVM_COND_CODE_IS_NOT_SUPPORTED = 0X6006, EMV_RESULT_CODE_V2_CVM_NO_MORE = 0X6007, EMV_RESULT_CODE_V2_PIN_BYPASSED_BEFORE = 0X6008 } EMV_RESULT_CODE_V2_Types; typedef enum{ EMV_AUTHORIZATION_RESULT_ACCEPTED = 0X00, EMV_AUTHORIZATION_RESULT_UNABLE_TO_GO_ONLINE = 0X01, EMV_AUTHORIZATION_RESULT_TECHNICAL_ISSUE = 0X02, EMV_AUTHORIZATION_RESULT_DECLINED = 0X03, EMV_AUTHORIZATION_RESULT_ISSUER_REFERAL = 0X04 } EMV_AUTHORIZATION_RESULT; #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 73: Emv Tag Reference

    READ RECORD Response Message Template Issuer Script Template 1 Issuer Script Template 2 Directory Discretionary Template Response Message Template Format 2 Response Message Template Format 1 Amount, Authorised (Binary) Application Interchange Profile (AIP) IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 74 Issuer Action Code - Online 9F10 Issuer Application Data (IAD) 9F11 Issuer Code Table Index 9F12 Application Preferred Name 9F13 Last Online Application Transaction Counter (ATC) Register 9F14 Lower Consecutive Offline Limit 9F15 Merchant Category Code #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 75 Dynamic Data Authentication Data Object List (DDOL) 9F4A Static Data Authentication Tag List (SDA) 9F4B Signed Dynamic Application Data (SDAD) 9F4C ICC Dynamic Number 9F4D Log Entry 9F4E Merchant Name and Location 9F4E Merchant Name and Location IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 76 Unprotected Data Envelope 3 9F78 Unprotected Data Envelope 4 9F79 Unprotected Data Envelope 5 9F7A VLP Terminal Support Indicator 9F7B VLP Terminal Transaction Limit 9F7C Customer Exclusive Data (CED) 9F7D DS Summary 1 #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 77 Default DDOL (1-Enable, 0-Disable) DF26 Revocation List Support (Default: Enable - 1) DF27 Exception File Support (Default: Disable - 0) DF28 Default TDOL DF29 Terminal Capabilities - CVM Required DF2A Threshold Value for Biased Random Selection(Interac) IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 78 CB Display Offline Funds Indicator (same block as DF05) DF65 Serial heartbeat Required DF66 SVN Number DF66 CB Terminal Type (same block as 9F35) DF66 Display Unsupported Card DF68 Enable/Disable STOP command processing DF69 ConfigureProprietaryTags #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 79 MSR Track Data DFEE24 Force Acceptance (Default: 00) DFEE25 ICC Response Code DFEE26 Encryption StatusInformation DFEE27 MSR Control DFEF1A TLV available DFEF1A Encrypted Sensitive Tags DFEF1A Auto Authenticate DFEF20 MAC option in reponse data IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 80 DFEF54 SmartTap AID Index DFEF55 Kernel Specific Features DFEF56 Retry Limit DFEF57 PPSE Terminate Flags DFEF59 Terminal Data Setting - Default Amount DFEF5A Terminal Data Setting - Tags to Return Mask for Tag5A #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 81 VIUDS Scheme ID Selection Criteria FFE0 Registered Application Provider Identifier (RID) FFE1 Partial Selection Allowed FFE2 Application Flow FFE3 Selection Features - GR 1.2.10 FFE4 Group Number / Fallback Group FFE5 Max AID Length FFE6 AID Disabled IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 82 Torn Transaction Log Clean Interval (minutes) FFF7 Burst Mode FFF8 UI Scheme FFF9 LCD Font Size FFFA LCD Delay Time FFFB Language Option for LCD FFFC Force MagStripe 9F33 Terminal Capabilities Byte 1 #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 83 Print, cardholder Display, attendant Display, cardholder Code table 10 Code table 9 Byte 5 Meaning Code table 8 Code table 7 Code table 6 Code table 5 Code table 4 Code table 3 IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 84 Terminal action code can be deleted or disable Default Action code processing before 1st GAC Default Action code processing after 1st GAC TAC/IAC default process when unable to go online (Skipped) TAC/IAC default process when unable to go online (Normal) #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 85 Byte 8 Meaning DFEE22 Driver (Menu, Get PIN, Get MSR) Timeout. (Unit: Sec) Byte1: Timeout Menu. (Default: 30 S) Byte2: Timeout Get PIN. (Default: 60 S) Byte3: Timeout Get MSR. (Default: 60 S) IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 86: Hierarchical Index

    TerminalData ..........#80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 87: Class Index

    ..........IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 88: Class Documentation

    AID Entry - Used to populate array in IDT_BTPay::emv_retrieveAIDList:() IDT_UniPay::emv_retrieveAIDList:(). The documentation for this struct was generated from the following file: • Source_iOS/IDTCommon.h 13.2 APDUResponse Class Reference #import APDUResponse.h Inheritance diagram for APDUResponse: NSObject APDUResponse Instance Methods • (void) - clear #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 89: Detailed Description

    13.3 ApplicationID Struct Reference #include IDTCommon.h Public Attributes • unsigned char acquirerIdentifier Indicates which acquirer/processor processes the corresponding AID. Tag 9F01. • unsigned char [16] AID value as per payment networks. Tag 9F06. IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 90 Dynamic Data Object List length. • unsigned char transactionCurrencyCode AID’s currency. Example: For Canada, {0x01,0x24}. Tag 5F2A. • unsigned char transactionCurrencyExponent Transaction Currency Exponent. Example: Amount 4.53$ is managed as 453. Tag 5F36. #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 91: Detailed Description

    Used as parameter in IDT_BTPay::emv_retrieveCAPK:response:(), IDT_BTPay::emv_removeCAPK:(), IDT_B TPay::emv_setCAPK:(), IDT_UniPay::emv_retrieveCAPK:response:(), IDT_UniPay::emv_removeCAPK:(), IDT_ UniPay::emv_setCAPK:() Used as return value in IDT_BTPay::emv_retrieveCAPK:response:() IDT_UniPay::emv_retrieveCAPK:response:() The documentation for this struct was generated from the following file: • Source_iOS/IDTCommon.h 13.5 CRLEntry Struct Reference #include IDTCommon.h IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 92: Detailed Description

    True = Magnetic data present, False = No Magnetic Data. 13.6.1 Detailed Description Structure used to return response from IDT_BTPay::icc_getICCReaderStatus() and IDT_UniPay::icc_getICC ReaderStatus() The documentation for this struct was generated from the following file: • Source_iOS/IDTCommon.h #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 93: Idt_Neo2 Class Reference

    • (RETURN_CODE) - device_sendIDGCommand:subCommand:data:response: • (RETURN_CODE) - device_setPassThrough: • (RETURN_CODE) - device_setBurstMode: • (RETURN_CODE) - device_setPollMode: • (RETURN_CODE) - emv_authenticateTransaction: • (RETURN_CODE) - emv_callbackResponseLCD:selection: • (RETURN_CODE) - emv_callbackResponsePIN:KSN:PIN: • (RETURN_CODE) - emv_completeOnlineEMVTransaction:hostResponseTags: IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 94 • (RETURN_CODE) - pin_captureAmountInput:maxPIN:message:signature: • (RETURN_CODE) - pin_captureNumericInput:minPIN:maxPIN:message:signature: Class Methods • (NSString ) + SDK_version • (IDT_NEO2 sharedController Properties • id IDT_NEO2_Delegate delegate 13.7.1 Detailed Description Class to drive the IDT_NEO2 device #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 95 RETURN_CODE: Return codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with device_getResponseCodeString: 13.7.2.5 - (RETURN_CODE) ctls_getConfigurationGroup: (int) group response:(NSDictionary ) response Get Configuration Group Retrieves the Configuration for the specified Group. Group 0 = terminal settings. IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 96 Removes the CAPK for CTLS as specified by the RID/Index Parameters capk 6 byte CAPK = 5 bytes RID + 1 byte INDEX Returns RETURN_CODE: Return codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with device_getResponseCodeString: #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 97 RETURN_CODE: Return codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with device_getResponseCodeString: 13.7.2.12 - (RETURN_CODE) ctls_retrieveCAPK: (NSData ) capk key:(NSData ) key Retrieve Certificate Authority Public Key Retrieves the CAPKfor CTLS as specified by the RID/Index passed as a parameter. IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 98 Retrieve Terminal Data Retrieves the Terminal Data for CTLS. This is configuration group 0 (Tag DFEE2D - DFEE2D0100). The terminal data can also be retrieved by ctls_getConfigurationGroup(0). Parameters Response returned as a TLV #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 99 • Modulus: This is the modulus field of the public key. Its length is specified in the field above. Returns RETURN_CODE: Values can be parsed with errorCode.getErrorString() 13.7.2.17 - (RETURN_CODE) ctls_setConfigurationGroup: (NSData ) tlv Set Configuration Group IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 100 RETURN_CODE: Return codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with device_getResponseCodeString: NOTE ON INTERFACE SELECTION: For the NEO2, tag DFEF37 is used to determine which interfaces to use for the transaction: #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 101 Number of characters after decimile point type Transaction type (tag value 9C). timeout Timeout value in seconds. transTags Any other transaction tags to be included in the request (excluding Apple VAS and SmartTap) IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 102 RETURN_CODE: Return codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with device_getResponseCodeString: NOTE ON INTERFACE SELECTION: For the NEO2, tag DFEF37 is used to determine which interfaces to use for the transaction: • 01 = MSR Only...
  • Page 103 If successful, polling was in progress and has stopped. If unsuccessful, BLE Device Search was not in progress. NOTE: BLE only scans when there are no devices currently connected. After the SDK connects to any IDTech device, the scanning will pause automatically.
  • Page 104 Get Transaction Results Gets the transaction results when the reader is functioning in "Auto Poll" mode Parameters result The transaction results Returns RETURN_CODE: Values can be parsed with errorCode.getErrorString(). When no data is available, return code = RETURN_CODE_NO_DATA_AVAILABLE 13.7.2.27 - (NSString ) device_getBLEFriendlyName Get BLE Friendly Name #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 105 RETURN_CODE: Values can be parsed with errorCode.getErrorString() 13.7.2.30 - (NSString ) device_getResponseCodeString: (int) errorCode Get Response Code String Interpret a response code and return string description. Parameters errorCode Error code, range 0x0000 - 0xFFFF, example 0x0300 IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 106 Sets the default friendly name to be used when discovering any BLE devices 13.7.2.34 - (RETURN_CODE) device_setBurstMode: (int) mode Send Burst Mode Sets the burst mode forthe device. Parameters mode 0 = OFF, 1 = Always On, 2 = Auto Exit #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 107 • 0x0100 through 0xFFFF refer to IDT_Device::getResponseCodeString:() 13.7.2.37 - (RETURN_CODE) device_setPollMode: (int) mode Send Poll Mode Sets the poll mode forthe device. Auto Poll keeps reader active, Poll On Demand only polls when requested by terminal IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 108 RETURN_CODE: Return codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with device_getResponseCodeString: NOTE ON INTERFACE SELECTION: For the NEO2, tag DFEF37 is used to determine which interfaces to use for the transaction: • 01 = MSR Only •...
  • Page 109 • 0x02 Normal Display get Function Key supply either 0x43 ('C') for Cancel, or 0x45 ('E') for Enter/accept • 0x08 Language Menu Display selection Line number in hex (0x01, 0x02), or 'C'/'E' of function key IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 110 • TRUE: Online processing with the host (issuer) was completed • FALSE: Online processing could not be completed due to connection error with the host (issuer). No further data (tags) required. tags Host response tag (see below) #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 111 Parameters disable FALSE = auto authenticate ENABLED, TRUE = auto authenticate DISABLED 13.7.2.45 - (RETURN_CODE) emv_getEMVL2Version: (NSString ) response Polls device for EMV L2 Version Parameters response Response returned of Level 2 Version IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 112: 0X0001: Disconnect: No Response From Reader - Return_Code_Err_Disconnect

    ALL application data Returns RETURN_CODE: • 0x0000: Success: no error - RETURN_CODE_DO_SUCCESS • 0x0001: Disconnect: no response from reader - RETURN_CODE_ERR_DISCONNECT • 0x0002: Invalid Response: invalid response data - RETURN_CODE_ERR_CMD_RESPONSE #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 113: 0X0003: Timeout: Time Out For Task Or Cmd - Return_Code_Err_Timedout

    • 0x0005: MSR Busy: SDK is doing MSR or ICC task - RETURN_CODE_SDK_BUSY_MSR • 0x0006: PINPad Busy: SDK is doing PINPad task - RETURN_CODE_SDK_BUSY_PINPAD • 0x0007: Unknown: Unknown error - RETURN_CODE_ERR_OTHER • 0x0100 through 0xFFFF refer to IDT_UniPayII::device_getResponseCodeString:() IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 114 • 0x0100 through 0xFFFF refer to BTPay::device_getResponseCodeString:() 13.7.2.52 - (RETURN_CODE) emv_retrieveApplicationData: (NSString ) AID response:(NSDictionary ) responseAID Retrieve Application Data by AID Retrieves the configuration information for a provided AID name, if that AID file exists on the terminal. #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 115: 0X0100 Through 0Xffff Refer To Idt_Device::getresponsecodestring:()

    • 1 byte Index • 1 byte Hash Algorithm • 1 byte Encryption Algorithm • 20 bytes HashValue • 4 bytes Public Key Exponent • 2 bytes Modulus Length • Variable bytes Modulus IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 116 ) response Retrieve the Certificate Revocation List Returns all the RID in the CRL. Parameters response Response returned as an NSArray of NSData objects 9-bytes each: • 5-bytes RID, 1-byte Index, 3-byte Serial Number #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 117 The TLV data returned as a NSDictionary, with the Key being the tag name as a NSString representation of the tag hex value (example "5A"), and the Object being the Value as NSData (example 0x41359276429372938). IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 118 • 0x0000: Success: no error - RETURN_CODE_DO_SUCCESS • 0x0001: Disconnect: no response from reader - RETURN_CODE_ERR_DISCONNECT • 0x0002: Invalid Response: invalid response data - RETURN_CODE_ERR_CMD_RESPONSE • 0x0003: Timeout: time out for task or CMD - RETURN_CODE_ERR_TIMEDOUT #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 119 Sets the CRL list Parameters data CRLEntries as a repeating occurance of CRL: CRL1 CRL2 . . . CRLn. CRL format is • 5Bytes RID • 1Byte CA public key Index • 3Bytes Certificate Serial Number IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 120 • 0x0001: Disconnect: no response from reader - RETURN_CODE_ERR_DISCONNECT • 0x0002: Invalid Response: invalid response data - RETURN_CODE_ERR_CMD_RESPONSE • 0x0003: Timeout: time out for task or CMD - RETURN_CODE_ERR_TIMEDOUT • 0x0004: Invalid Parameter: wrong parameter - RETURN_CODE_ERR_INVALID_PARAMETER #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 121 Tag DFEE1A can be used to specify tags to be returned in response, in addition to the default tags. Example DFEE1A049F029F03 will return tags 9F02 and 9F03 with the response IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 122 Indicate if it supports fallback to MSR Returns RETURN_CODE: Values can be parsed with errorCode.getErrorString() NOTE ON INTERFACE SELECTION: For the NEO2, tag DFEF37 is used to determine which interfaces to use for the transaction: • 01 = MSR Only •...
  • Page 123 13.7.2.68 - (RETURN_CODE) felica_write: (NSData ) serviceCode blockList:(NSData ) blockList data:(NSData ) data statusFlag:(NSData ) statusFlag FeliCa Write Writes a block NOTE: The reader must be in Pass Through Mode for FeliCa commands to work. IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 124 Unencrypted/encrypted parsed APDU response Returns RETURN_CODE: Return codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with device_getResponseCodeString: 13.7.2.71 - (RETURN_CODE) icc_getICCReaderStatus: (ICCReaderStatus ) readerStatus Get Reader Status Returns the reader status #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 125 Response returned. If Success, ATR String. If Failure, ASCII encoded data of error string Returns RETURN_CODE: Return codes listed as typedef enum in IDTCommon:RETURN_CODE. 13.7.2.74 - (bool) isConnected Check if device is connected IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 126 Plaintext display="" message ="" ” 2. Using RSAPSS algorithm calculate the Hash to be 256 bytes Raw Data 3. Using Numeric Private Key to sign the Raw Data to be 256 bytes signature #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 127 3. Using Numeric Private Key to sign the Raw Data to be 256 bytes signature Results returned to pinpadData delegate Returns RETURN_CODE: Values can be parsed with errorCode.getErrorString() 13.7.2.81 - (RETURN_CODE) pin_capturePin: (int) type PAN:(NSString ) PAN minPIN:(int) minPIN maxPIN:(int) maxPIN message:(NSString ) message Capture PIN IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 128 Instance of IDT_NEO2 13.7.3 Property Documentation 13.7.3.1 - (id IDT_NEO2_Delegate ) delegate [read] [write] [atomic] [strong] • Reference to IDT_NEO2_Delegate. The documentation for this class was generated from the following file: • Source_iOS/IDT_NEO2.h #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 129 • FALSE indicates data being sent to the device. 13.8.2.2 - (void) deviceMessage: (NSString ) message [optional] Receives messages from the framework Parameters message String message transmitted by framework IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 130 IDT_VP3300::pin_getAmount:maxLength:messageID:language:() or IDT_VP3300::pin_getNumeric:minLength:maxLength:messageID:language:(). PINblock returned from IDT_VP3300::pin_getEncryptedPIN:keyType:line1:line2:line3:() Key Serial Number returned from IDT_VP3300::pin_getEncryptedPIN:keyType:line1:line2:line3:(), IDT_VP3300::pin_getCardAccount:max:line1:line2:() or IDT_VP3300::pin_getEncryptedData:minLength:maxLength:messageID:language:() event EVENT_PINPAD_Types PINpad event that solicited the data capture typedef enum{ EVENT_PINPAD_UNKNOWN = 11, EVENT_PINPAD_ENCRYPTED_PIN, #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 131 Indicates if tacDefault value should be used. • unsigned char useTACOnline Indicates if tacDefault value should be used. • unsigned char applicationSelectionIndicator Indicates if partial AID matching is allowed. 0x01 = allowed DF62. IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 132 Terminal Configuration File - 45 bytes Used as parameter in setTerminalData: (IDTechEMV) Used as return value in setTerminalData: (IDTechEMV) The documentation for this struct was generated from the following file: • Source_iOS/IDTechEMV.h #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 133 • (void) - cancelTransaction • (void) - startEMVTransaction:timeout:transactionType:additionalTags: • (void) - accelerateRead: • (void) - sendSystemError Class Methods • (IDTechEMV sharedController Properties • id IDTechEMV_Delegate delegate 13.11.1 Detailed Description Class to drive the IDTechEMV device IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 134 Selection:() will receive an array with all the available applications to choose from. The selected index of the application must be passed back to this method to continue the EMV transaction flow Parameters index The index of the selected app from the application array passed back from confirmApplicationSelection:() #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 135 13.11.2.9 - (NSString ) getEMVKernelChecksum Returns SDK EMV Kernel Checksum Returns response Response returned of Kernel Version 13.11.2.10 - (NSString ) getEMVKernelVersion Returns SDK EMV Kernel Version Returns response Response returned of Kernel Version IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 136 Class Documentation 13.11.2.11 - (NSData ) getTag: (NSString ) tagName Get Tag Retrieves an EMV tag from the inserted card. Only available after the card has been processed after executing IDTechEMV::startEMVTransaction:timeout:additionalTags:() #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 137 If aidLen = 0, then requested AID was not found. Parameters Name of ApplicationID in ASCII, example "A0000000031020". Must be between 5 and 16 characters Returns responseAID The AID returned from the method IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 138 Sets the Terminal Data as specified by the IDTech_TerminalData structure passed as a parameter Parameters data TerminalData configuration file 13.11.2.21 + (IDTechEMV ) sharedController Singleton Instance Establishes an singleton instance of IDTechEMV class. #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 139 [emvTags setObject:@"0C552B9364D55CE5" forKey:@"9F26"]; return emvTags; 13.11.3 Property Documentation 13.11.3.1 - (id IDTechEMV_Delegate ) delegate [read] [write] [atomic] [strong] • Reference to IDTechEMV_Delegate. The documentation for this class was generated from the following file: IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 140 Flag to indicate requirement to display "Try Again" along with application selection. 13.12.2.2 - (void) emvTransactionData: (IDTEMVData ) emvData errorCode:(int) error performReversal:(BOOL) reversal [optional] EMV Transaction Data This protocol will receive results from IDT_Device::startEMVTransaction:otherAmount:timeout:cashback :additionalTags:() #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 141 1-4 languages stored in order of preference, each represented by 2 alphabetical characters according to ISO 639. The documentation for this protocol was generated from the following file: • Source_iOS/IDTechEMV.h 13.13 IDTEMVData Class Reference #import IDTEMVData.h Inheritance diagram for IDTEMVData: NSObject IDTEMVData IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 142 Card data returned from fallback or non-icc swipe during emv transaction. 13.13.1 Detailed Description Encapsulating data class for EMV data capture 13.13.2 Method Documentation 13.13.2.1 - (void) clear clears all IDTEMVData properties 13.13.2.2 + (IDTEMVData ) sharedController Singleton instance of IDTEMVData #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 143 EMV_RESULT_CODE_V2_AFL_NOT_RECEIVEDE = 0X5011, EMV_RESULT_CODE_V2_AFL_LEN_OUT_OF_RANGE = 0X5012, EMV_RESULT_CODE_V2_SFI_OUT_OF_RANGE = 0X5013, EMV_RESULT_CODE_V2_AFL_INCORRECT = 0X5014, EMV_RESULT_CODE_V2_EXP_DATE_INCORRECT = 0X5015, EMV_RESULT_CODE_V2_EFF_DATE_INCORRECT = 0X5016, EMV_RESULT_CODE_V2_ISS_COD_TBL_OUT_OF_RANGE = 0X5017, EMV_RESULT_CODE_V2_CRYPTOGRAM_TYPE_INCORRECT = 0X5018, EMV_RESULT_CODE_V2_PSE_BY_CARD_NOT_SUPPORTED = 0X5019, EMV_RESULT_CODE_V2_USER_LANGUAGE_SELECTED = 0X5020, EMV_RESULT_CODE_V2_SERVICE_NOT_ALLOWED = 0X5021, IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 144 Complete unparsed swipe data as received from MSR. • NSString track1 Track 1 masked if encryption enabled or cleartext if encryption disabled. • NSString track2 Track 2 masked if encryption enabled or cleartext if encryption disabled. • NSString track3 #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 145 Masked card data provided via TLV. 13.14.1 Detailed Description Encapsulating data class for MSR data capture 13.14.2 Method Documentation 13.14.2.1 - (void) clear clears all IDTMSRData properties 13.14.2.2 + (IDTMSRData ) sharedController Singleton instance of IDTMSRData IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 146 • Bit 5: 1=Track 3 sampling data exists, 0=Track 3 sampling data does not exist • Bit 6: reserved for future use • Bit 7: reserved for future use The documentation for this class was generated from the following file: • Source_iOS/IDTMSRData.h #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 147 The documentation for this struct was generated from the following file: • Source_iOS/IDTCommon.h 13.16 PowerOnStructure Struct Reference #include IDTCommon.h Public Attributes • BOOL sendIFS Send S(IFS) request if T=1 protocolError: Reference source not found. • BOOL explicitPPS IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 148 Indicates whether or not Batch messages are supported by Terminal. 0x00 or 0x01. • unsigned char adviceManaged Indicates whether or not Advice messages are supported by Terminal (only if needed by Level3 implementation). 0x00 or 0x01. • unsigned char #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 149 13.17.1 Detailed Description device Terminal Configuration File - 44 bytes Used as parameter in IDT_BTPay::setTerminalData:() Used as return value in IDT_BTPay::emv_retrieveTerminalData:() The documentation for this struct was generated from the following file: • Source_iOS/IDTCommon.h IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 150 Index IDT_NEO2_Delegate , ctls_retrieveAIDList: IDTechEMV_Delegate , IDT_NEO2, ctls_retrieveApplicationData:response: AIDEntry, IDT_NEO2, APDUResponse, ctls_retrieveCAPK:key: clear, IDT_NEO2, sharedController, ctls_retrieveCAPKList: accelerateRead: IDT_NEO2, IDTechEMV, ctls_retrieveTerminalData: ApplicationID, IDT_NEO2, ctls_setApplicationData: CAKey, IDT_NEO2, CRLEntry, ctls_setCAPK: cancelTransaction IDT_NEO2, IDTechEMV, ctls_setConfigurationGroup: captureEncodeType IDT_NEO2, IDTMSRData, ctls_setTerminalData: captureEncryptType IDT_NEO2, IDTMSRData, ctls_startTransaction:type:timeout:tags: clear IDT_NEO2, APDUResponse, ctls_startTransaction:type:timeout:transTags:VAS:...
  • Page 151 IDTechEMV, emv_removeTerminalData getEMVKernelChecksum IDT_NEO2, IDTechEMV, emv_retrieveAIDList: getEMVKernelVersion IDT_NEO2, IDTechEMV, emv_retrieveApplicationData:response: getTag: IDT_NEO2, IDTechEMV, emv_retrieveCAPKFile:index:response: ICCReaderStatus, IDT_NEO2, emv_retrieveCAPKList: IDT_NEO2, IDT_NEO2, close, emv_retrieveCRLList: config_getSerialNumber:, config_setBluetoothParameters:oldPW:newPW:, IDT_NEO2, emv_retrieveTerminalData: IDT_NEO2, ctls_cancelTransaction, emv_retrieveTransactionResult:retrievedTags: ctls_getConfigurationGroup:response:, IDT_NEO2, ctls_removeAllCAPK, emv_setApplicationData:configData: ctls_removeApplicationData:, IDTech iOS SDK Guide for NEO2 #80152802-001...
  • Page 152 IDTech_ApplicationID, emv_removeTerminalData, IDTech_TerminalData, emv_retrieveAIDList:, IDTechEMV_Delegate-p emv_retrieveApplicationData:response:, confirmApplicationSelection:retry:, emv_retrieveCAPKFile:index:response:, emvTransactionData:errorCode:performReversal:, emv_retrieveCAPKList:, emv_retrieveCRLList:, emvTransactionMessage:, emv_retrieveTerminalData:, languagePreference:, emv_retrieveTransactionResult:retrievedTags:, emv_setApplicationData:configData:, IDTechEMV, emv_setCAPKFile:, accelerateRead:, emv_setCRLEntries:, cancelTransaction, #80152504-001 IDTech iOS SDK Guide for NEO2...
  • Page 153 IDT_NEO2, languagePreference: IDTEMVData, IDTechEMV_Delegate-p, IDTMSRData, lcdDisplay:lines: IDTechEMV, IDT_NEO2_Delegate-p, startEMVTransaction:timeout:transactionType:additional Tags: MaskAndEncryption, IDTechEMV, encryptionOption, swipeMSRData: maskOption, IDT_NEO2_Delegate-p, maskOption MaskAndEncryption, TerminalData, msr_cancelMSRSwipe IDT_NEO2, msr_startMSRSwipe IDT_NEO2, pin_cancelPin IDT_NEO2, pin_captureAmountInput:maxPIN:message:signature: IDT_NEO2, pin_captureFunctionKey IDT_NEO2, pin_captureNumericInput:minPIN:maxPIN:message :signature: IDT_NEO2, pin_capturePin:PAN:minPIN:maxPIN:message: IDTech iOS SDK Guide for NEO2 #80152802-001...

Table of Contents