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 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.
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...
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...
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.
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...
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...
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.
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...
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>...
[[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 •...
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...
• 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.
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...
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...
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...
#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...
// 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 •...
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...
• 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.
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...
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...
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 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...
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...
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...
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...
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 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...
• 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 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 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...