IDTech iOS Framework Guide  1.1.088
API reference for UniPay
IDTCommon.h
1 //
2 // IDTCommon.h
3 // IDTech
4 //
5 // Created by Randy Palermo on 5/4/15.
6 // Copyright (c) 2015 IDTech Products. All rights reserved.
7 //
8 
9 
10 
13 typedef struct {
14  bool iccPower;
15  bool cardSeated;
16  bool latchClosed;
17  bool cardPresent;
20 
21 
25 typedef struct {
26  BOOL sendIFS;
27  BOOL explicitPPS;
30  unsigned char* pps;
31  unsigned char ppsLength;
33 #ifndef UNIPAY_SHOULD_SKIP_THIS
34 
42 typedef struct {
43  unsigned char hashAlgorithm;
44  unsigned char encryptionAlgorithm;
45  unsigned char rid[5];
46  unsigned char index;
47  unsigned char exponentLength;
48  unsigned char keyLength;
49  unsigned char exponent[3];
50  unsigned char key[248];
51 
52 } CAKey;
53 
54 
58 typedef struct {
59  unsigned char aid[16];
60  unsigned char aidLen;
61 } AIDEntry;
62 
66 typedef struct {
67  unsigned char prePANClear;
68  unsigned char postPANClear;
69  unsigned char maskChar;
70  unsigned char displayExpDate;
71  unsigned char baseKeyType;
72  unsigned char encryptionType;
73  unsigned char encryptionOption;
74  unsigned char maskOption;
79 } MaskAndEncryption;
83 
84 
92 typedef struct {
93  unsigned char acquirerIdentifier[6];
94  unsigned char aid[16];
95  unsigned char aidLen;
96  unsigned char applicationSelectionIndicator;
97  unsigned char applicationVersionNumber[2];
98  unsigned char XAmount[3];
99  unsigned char YAmount[3];
100  unsigned char skipTACIACDefault;
101  unsigned char tac;
102  unsigned char floorlLimitChecking;
103  unsigned char randomTransactionSelection;
104  unsigned char velocitiyChecking;
105  unsigned char tACDenial[5];
106  unsigned char tACOnline[5];
107  unsigned char tACDefault[5];
108  unsigned char terminalFloorLimit[3];
109  unsigned char targetPercentage;
110  unsigned char thresholdValue[3];
111  unsigned char maxTargetPercentage;
112  unsigned char defaultTDOL;
113  unsigned char tdolValue[252];
114  unsigned char tdolLen;
115  unsigned char defaultDDOL;
116  unsigned char ddolValue[252];
117  unsigned char ddolLen;
118  unsigned char transactionCurrencyCode[2];
119  unsigned char transactionCurrencyExponent;
120 
121 } ApplicationID;
122 
123 
131 typedef struct {
132  unsigned char terminalCountryCode[2];
133  unsigned char provideCardholderConfirmation;
134  unsigned char terminalType;
135  unsigned char emvContact;
136  unsigned char terminalCapabilities[3];
137  unsigned char additionalTerminalCapabilities[5];
138  unsigned char emvContactless;
139  unsigned char magstripe;
140  unsigned char pinTimeOut;
141  unsigned char batchManaged;
142  unsigned char adviceManaged;
143  unsigned char pse;
144  unsigned char autoRun;
145  unsigned char predefinedAmount[3];
146  unsigned char pinByPass;
147  unsigned char referalManaged;
148  unsigned char defaultTAC;
149  unsigned char defaultTACDenial[5];
150  unsigned char defaultTACOnline[5];
151  unsigned char defaultTACDefault[5];
152  unsigned char notRTS;
153  unsigned char notVelocity;
154  unsigned char cdaType;
155 } TerminalData;
156 
163 typedef struct {
164  unsigned char rid[5];
165  unsigned char index;
166  unsigned char serialNumber[3];
167 } CRLEntry;
168 
169 #endif
170 //Versioning
171 
173 typedef enum _CAPTURE_ENCODE_TYPE{
174  CAPTURE_ENCODE_TYPE_ISOABA=0,
175  CAPTURE_ENCODE_TYPE_AAMVA=1,
176  CAPTURE_ENCODE_TYPE_Other=3,
177  CAPTURE_ENCODE_TYPE_Raw=4,
178  CAPTURE_ENCODE_TYPE_JIS_II=5,
179  CAPTURE_ENCODE_TYPE_JIS_I=6,
180  CAPTURE_ENCODE_TYPE_MANUAL_ENTRY=7
181 } CAPTURE_ENCODE_TYPE;
182 
184 typedef enum{
185  CAPTURE_ENCRYPT_TYPE_TDES=0,
186  CAPTURE_ENCRYPT_TYPE_AES=1,
187  CAPTURE_ENCRYPT_TYPE_NO_ENCRYPTION=99
188 } CAPTURE_ENCRYPT_TYPE;
189 
190 typedef enum{
191  POWER_ON_OPTION_IFS_FLAG=1,
192  POWER_ON_OPTION_EXPLICIT_PPS_FLAG=2,
193  POWER_ON_OPTION_AUTO_PPS_FLAG=64,
194  POWER_ON_OPTION_IFS_RESPONSE_CHECK_FLAG=128
195 }POWER_ON_OPTION;
196 
197 typedef enum{
198  LANGUAGE_TYPE_ENGLISH=1,
199  LANGUAGE_TYPE_PORTUGUESE,
200  LANGUAGE_TYPE_SPANISH,
201  LANGUAGE_TYPE_FRENCH
202 }LANGUAGE_TYPE;
203 
204 typedef enum{
205  PIN_KEY_TDES_MKSK_extp=0x00, //external plain text
206  PIN_KEY_TDES_DUKPT_extp=0x01, //external plain text
207  PIN_KEY_TDES_MKSK_intl=0x10, //internal BTPay
208  PIN_KEY_TDES_DUKPT_intl=0x11, //internal BTPay
209  PIN_KEY_TDES_MKSK2_intl=0x20, //internal UniPayII
210  PIN_KEY_TDES_DUKPT2_intl=0x21, //internal UniPayII
211 }PIN_KEY_Types;
212 
213 #define EVENT_IDLE 0
214 #define EVENT_ASYNC_DATA 0x0100
215 #define EVENT_SDK_BUSY 0x0200
216 
217 typedef enum{
218  EVENT_PINPAD_UNKNOWN = 11,
219  EVENT_PINPAD_ENCRYPTED_PIN,
220  EVENT_PINPAD_NUMERIC,
221  EVENT_PINPAD_AMOUNT,
222  EVENT_PINPAD_ACCOUNT,
223  EVENT_PINPAD_ENCRYPTED_DATA,
224  EVENT_PINPAD_CANCEL,
225  EVENT_PINPAD_TIMEOUT,
226  EVENT_PINPAD_FUNCTION_KEY,
227  EVENT_PINPAD_DATA_ERROR
228 }EVENT_PINPAD_Types;
229 
230 typedef enum{
231  IDT_DEVICE_BTPAY_IOS = 0,
232  IDT_DEVICE_BTPAY_OSX_BT,
233  IDT_DEVICE_BTPAY_OSX_USB,
234  IDT_DEVICE_UNIPAY_IOS,
235  IDT_DEVICE_UNIPAY_OSX_USB,
236  IDT_DEVICE_UNIPAYII_IOS,
237  IDT_DEVICE_UNIPAYII_OSX_USB,
238  IDT_DEVICE_IMAG_IOS,
239  IDT_DEVICE_UNIPAYIII_IOS,
240  IDT_DEVICE_UNIPAYIII_OSX_USB,
241  IDT_DEVICE_UNIMAG,
242  IDT_DEVICE_BTMAG_IOS,
243  IDT_DEVICE_BTMAG_OSX_BT,
244  IDT_DEVICE_BTMAG_OSX_USB,
245  IDT_DEVICE_UNIPAYI_V_IOS,
246  IDT_DEVICE_UNIPAYI_V_OSX_USB
247 
248 }IDT_DEVICE_Types;
249 
250 
251 
252 typedef enum{
253  EVENT_MSR_UNKNOWN = 31,
254  EVENT_MSR_CARD_DATA,
255  EVENT_MSR_CANCEL_KEY,
256  EVENT_MSR_BACKSPACE_KEY,
257  EVENT_MSR_ENTER_KEY,
258  EVENT_MSR_DATA_ERROR,
259  EVENT_MSR_ICC_START,
260  EVENT_BTPAY_CARD_DATA,
261  EVENT_UNIPAYII_EMV_NO_ICC_MSR_DATA,
262  EVENT_UNIPAYII_EMV_FALLBACK_DATA,
263  EVENT_UNIPAY_KEYLOADING,
264  EVENT_MSR_TIMEOUT
265 }EVENT_MSR_Types;
266 
267 typedef enum{
268  EVENT_ACTIVE_TRANSACTION = 51
269 }EVENT_CTLS_Types;
270 
271 typedef enum{
272  UNIMAG_COMMAND_DEFAULT_GENERAL_SETTINGS,
273  UNIMAG_COMMAND_ENABLE_ERR_NOTIFICATION,
274  UNIMAG_COMMAND_DISABLE_ERR_NOTIFICATION,
275  UNIMAG_COMMAND_ENABLE_EXP_DATE,
276  UNIMAG_COMMAND_DISABLE_EXP_DATE,
277  UNIMAG_COMMAND_CLEAR_BUFFER,
278  UNIMAG_COMMAND_RESET_BAUD_RATE
279 }UNIMAG_COMMAND_Types;
280 
281 typedef enum {
282  RETURN_CODE_DO_SUCCESS = 0,
283  RETURN_CODE_ERR_DISCONNECT = 0xFF01,
284  RETURN_CODE_ERR_CMD_RESPONSE = 0xFF02,
285  RETURN_CODE_ERR_TIMEDOUT = 0xFF03,
286  RETURN_CODE_ERR_INVALID_PARAMETER = 0xFF04,
287  RETURN_CODE_SDK_BUSY_MSR = 0xFF05,
288  RETURN_CODE_SDK_BUSY_PINPAD = 0xFF06,
289  RETURN_CODE_SDK_BUSY_CTLS = 0xFF07,
290  RETURN_CODE_ERR_OTHER = 0xFF08,
291  RETURN_CODE_FAILED = 0xFF09,
292  RETURN_CODE_NOT_ATTACHED = 0xFF0A,
293  RETURN_CODE_MONO_AUDIO = 0xFF0B,
294  RETURN_CODE_CONNECTED = 0xFF0C,
295  RETURN_CODE_LOW_VOLUME = 0xFF0D,
296  RETURN_CODE_CANCELED = 0xFF0E,
297  RETURN_CODE_INVALID_STR = 0xFF0F,
298  RETURN_CODE_NO_FILE = 0xFF10,
299  RETURN_CODE_INVALID_FILE = 0xFF11,
300  RETURN_CODE_HOST_UNREACHABLE = 0xFF12,
301  RETURN_CODE_RKI_FAILURE = 0xFF13,
302  RETURN_CODE_SDK_BUSY_CMD = 0xFF14,
303 
304 
305 
306  RETURN_CODE_EMV_AUTHORIZATION_ACCEPTED = 0x0E00,
307  RETURN_CODE_EMV_AUTHORIZATION_UNABLE_TO_GO_ONLINE = 0x0E01,
308  RETURN_CODE_EMV_AUTHORIZATION_TECHNICAL_ISSUE = 0x0E02,
309  RETURN_CODE_EMV_AUTHORIZATION_DECLINED = 0x0E03,
310  RETURN_CODE_EMV_AUTHORIZATION_ISSUER_REFERRAL = 0x0E04,
311 
312  RETURN_CODE_EMV_APPROVED = 0x0F00,
313  RETURN_CODE_EMV_DECLINED = 0x0F01,
314  RETURN_CODE_EMV_GO_ONLINE = 0x0F02,
315  RETURN_CODE_EMV_FAILED = 0x0F03,
316  RETURN_CODE_EMV_SYSTEM_ERROR = 0x0F05,
317  RETURN_CODE_EMV_NOT_ACCEPTED = 0x0F07,
318  RETURN_CODE_EMV_FALLBACK = 0x0F0A,
319  RETURN_CODE_EMV_CANCEL = 0x0F0C,
320  RETURN_CODE_EMV_TIMEOUT = 0x0F0D,
321  RETURN_CODE_EMV_OTHER_ERROR = 0x0F0F,
322  RETURN_CODE_EMV_OFFLINE_APPROVED = 0x0F10,
323  RETURN_CODE_EMV_OFFLINE_DECLINED = 0x0F11,
324 
325 
326 
327  RETURN_CODE_EMV_NEW_SELECTION = 0x0F21,
328  RETURN_CODE_EMV_NO_AVAILABLE_APPS = 0x0F22,
329  RETURN_CODE_EMV_NO_TERMINAL_FILE = 0x0F23,
330  RETURN_CODE_EMV_NO_CAPK_FILE = 0x0F24,
331  RETURN_CODE_EMV_NO_CRL_ENTRY = 0x0F25,
332  RETURN_CODE_BLOCKING_DISABLED = 0x0FFE,
333  RETURN_CODE_COMMAND_UNAVAILABLE = 0x0FFF,
334 
335  //IDG Return Codes
336  RETURN_CODE_NEO_SUCCESS = 0xEE00,
337  RETURN_CODE_NEO_INCORRECT_HEADER_TAG = 0xEE01,
338  RETURN_CODE_NEO_UNKNOWN_COMMAND = 0xEE02,
339  RETURN_CODE_NEO_UNKNOWN_SUB_COMMAND = 0xEE03,
340  RETURN_CODE_NEO_CRC_ERROR_IN_FRAME = 0xEE04,
341  RETURN_CODE_NEO_INCORRECT_PARAMETER = 0xEE05,
342  RETURN_CODE_NEO_PARAMETER_NOT_SUPPORTED = 0xEE06,
343  RETURN_CODE_NEO_MAL_FORMATTED_DATA = 0xEE07,
344  RETURN_CODE_NEO_TIMEOUT = 0xEE08,
345  RETURN_CODE_NEO_FAILED_NAK = 0xEE0A,
346  RETURN_CODE_NEO_COMMAND_NOT_ALLOWED = 0xEE0B,
347  RETURN_CODE_NEO_SUB_COMMAND_NOT_ALLOWED = 0xEE0C,
348  RETURN_CODE_NEO_BUFFER_OVERFLOW = 0xEE0D,
349  RETURN_CODE_NEO_USER_INTERFACE_EVENT = 0xEE0E,
350  RETURN_CODE_NEO_COMM_TYPE_NOT_SUPPORTED = 0xEE11,
351  RETURN_CODE_NEO_SECURE_INTERFACE_NOT_FUNCTIONAL = 0xEE12,
352  RETURN_CODE_NEO_DATA_FIELD_NOT_MOD8 = 0xEE13,
353  RETURN_CODE_NEO_PADDING_UNEXPECTED = 0xEE14,
354  RETURN_CODE_NEO_INVALID_KEY_TYPE = 0xEE15,
355  RETURN_CODE_NEO_CANNOT_RETRIEVE_KEY = 0xEE16,
356  RETURN_CODE_NEO_HASH_CODE_ERROR = 0xEE17,
357  RETURN_CODE_NEO_CANNOT_STORE_KEY = 0xEE18,
358  RETURN_CODE_NEO_FRAME_TOO_LARGE = 0xEE19,
359  RETURN_CODE_NEO_RESEND_COMMAND = 0xEE1A,
360  RETURN_CODE_NEO_EEPROM_NOT_INITALIZED = 0xEE1B,
361  RETURN_CODE_NEO_PROBLEM_ENCODING_APDU = 0xEE1C,
362  RETURN_CODE_NEO_UNSUPPORTED_INDEX = 0xEE20,
363  RETURN_CODE_NEO_UNEXPECTED_SEQUENCE_COUNTER = 0xEE21,
364  RETURN_CODE_NEO_IMPROPER_BITMAP = 0xEE22,
365  RETURN_CODE_NEO_REQUEST_ONLINE_AUTHORIZATION = 0xEE23,
366  RETURN_CODE_NEO_RAW_DATA_READ_SUCCESSFUL = 0xEE24,
367  RETURN_CODE_NEO_MESSAGE_NOT_AVAILABLE = 0xEE25,
368  RETURN_CODE_NEO_VERSION_INFORMATION_MISMATCH = 0xEE26,
369  RETURN_CODE_NEO_NOT_SENDING_COMMANDS = 0xEE27,
370  RETURN_CODE_NEO_TIMEOUT_ILM = 0xEE28,
371  RETURN_CODE_NEO_ILM_NOT_AVAILABLE = 0xEE29,
372  RETURN_CODE_NEO_OTHER_LANG_NOT_SUPPORTED = 0xEE2A,
373  RETURN_CODE_NEO_KEY_ERROR_41 = 0xEE41,
374  RETURN_CODE_NEO_KEY_ERROR_42 = 0xEE42,
375  RETURN_CODE_NEO_KEY_ERROR_43 = 0xEE43,
376  RETURN_CODE_NEO_KEY_ERROR_44 = 0xEE44,
377  RETURN_CODE_NEO_KEY_ERROR_45 = 0xEE45,
378  RETURN_CODE_NEO_KEY_ERROR_46 = 0xEE46,
379  RETURN_CODE_NEO_KEY_ERROR_47 = 0xEE47,
380  RETURN_CODE_NEO_KEY_ERROR_48 = 0xEE48,
381  RETURN_CODE_NEO_KEY_ERROR_49 = 0xEE49,
382  RETURN_CODE_NEO_KEY_ERROR_4A = 0xEE4A,
383  RETURN_CODE_NEO_KEY_ERROR_4B = 0xEE4B,
384  RETURN_CODE_NEO_KEY_ERROR_4C = 0xEE4C,
385  RETURN_CODE_NEO_KEY_ERROR_4D = 0xEE4D,
386  RETURN_CODE_NEO_KEY_ERROR_4E = 0xEE4E,
387  RETURN_CODE_NEO_KEY_ERROR_4F = 0xEE4F,
388  RETURN_CODE_NEO_AUTO_SWITCH_OK = 0xEE50,
389  RETURN_CODE_NEO_AUTO_SWITCH_FAILED = 0xEE51,
390  RETURN_CODE_DATA_DOES_NOT_EXIST = 0xEE60,
391  RETURN_CODE_DATA_FULL = 0xEE61,
392  RETURN_CODE_WRITE_FLASH_ERROR = 0xEE62,
393  RETURN_CODE_OK_NEXT_COMMAND = 0xEE63,
394  RETURN_CODE_ACCT_DUKPT_KEY_NOT_EXIST = 0xEE90,
395  RETURN_CODE_ACCT_DUKPT_KEY_EXHAUSTED = 0xEE91,
396 
397  RETURN_CODE_NO_SERIAL_NUMBER = 0x6200,
398  RETURN_CODE_INVALID_COMMAND = 0x6900,
399  RETURN_CODE_NO_ADMIN_DUKPT_KEY = 0x5500,
400  RETURN_CODE_DUKPT_KEY_STOP = 0x5501,
401  RETURN_CODE_DUKPT_KEY_KSN_IS_ERROR = 0x5502,
402  RETURN_CODE_GET_AUTH_CODE1_FAILED = 0x5503,
403  RETURN_CODE_VALIDATE_AUTH_CODE_ERROR = 0x5504,
404  RETURN_CODE_DECRYPT_DATA_FAILED = 0x5505,
405  RETURN_CODE_NOT_SUPPORT_NEW_KEY_TYPE = 0x5506,
406  RETURN_CODE_NEW_KEY_INDEX_IS_ERROR = 0x5507,
407  RETURN_CODE_STEP_ERROR = 0x5508,
408  RETURN_CODE_TIMED_OUT = 0x5509,
409  RETURN_CODE_MAC_CHECKING_ERROR = 0x550A,
410  RETURN_CODE_KEY_USAGE_ERROR = 0x550B,
411  RETURN_CODE_MODE_OF_USE_ERROR = 0x550C,
412  RETURN_CODE_ALGORITHM_ERROR = 0x550D,
413  RETURN_CODE_OTHER_ERROR = 0x550F,
414 
415  RETURN_CODE_CANNOT_AUTHORIZE_RKI = 0x8001,
416  RETURN_CODE_NO_KEY_INJECTION_ESTABLISHED = 0x8101,
417  RETURN_CODE_FAILED_TO_ENCRYPT_CHALLENGE = 0x8102,
418  RETURN_CODE_CHALLENGE_LENGTH_INCORRECT = 0x8103,
419  RETURN_CODE_INCORRECT_CHALLENGE_DATA_STEP1 = 0x8104,
420  RETURN_CODE_RESPONSE_LENGTH_INCORRECT = 0x8105,
421  RETURN_CODE_FIRMWARE_RESPOND_NAK_STEP1 = 0x8106,
422  RETURN_CODE_KEY_ID_NOT_FOUND_IN_DB = 0x8201,
423  RETURN_CODE_KEY_SLOT_DOES_NOT_EXIST = 0x8202,
424  RETURN_CODE_NO_FUTURE_KSI_FROM_SERVER = 0x8203,
425  RETURN_CODE_NO_TR31_DATA_BLOCK = 0x8204,
426  RETURN_CODE_TR31_BLOCK_LENGTH_INCORRECT = 0x8205,
427  RETURN_CODE_INCORRECT_CHALLENGE_DATA_STEP2 = 0x8206,
428  RETURN_CODE_FIRMWARE_RESPOND_NAK_STEP2 = 0x8207,
429  RETURN_CODE_NO_KEY_INJECTION_RECORD = 0x8301,
430  RETURN_CODE_RKI_FAILED = 0x8302,
431  RETURN_CODE_INCORRECT_RESPONSE_FORM = 0x8303,
432  RETURN_CODE_FIRMWARE_RESPOND_NAK_STEP3 = 0x8304
433 
434 } RETURN_CODE;
435 
436 
437 typedef enum {
438  DUKPT_KEY_MSR = 0x00,
439  DUKPT_KEY_ICC = 0x01,
440  DUKPT_KEY_Admin = 0x10,
441  DUKPT_KEY_Pairing_PinPad = 0x20,
442 } DUKPT_KEY_Type;
443 
444 
445 
446 typedef enum{
447  EMV_RESULT_CODE_NO_RESPONSE = -1,
448  EMV_RESULT_CODE_APPROVED = 0X00,
449  EMV_RESULT_CODE_DECLINED = 0X01,
450  EMV_RESULT_CODE_GO_ONLINE = 0X02,
451  EMV_RESULT_CODE_FAILED = 0X03,
452  EMV_RESULT_CODE_SYSTEM_ERROR = 0X05,
453  EMV_RESULT_CODE_NOT_ACCEPT = 0X07,
454  EMV_RESULT_CODE_FALLBACK = 0X0A,
455  EMV_RESULT_CODE_CANCEL = 0X0C,
456  EMV_RESULT_CODE_OTHER_ERROR = 0X0F,
457  EMV_RESULT_CODE_TIME_OUT = 0X0D,
458  EMV_RESULT_CODE_OFFLINE_APPROVED = 0X10,
459  EMV_RESULT_CODE_OFFLINE_DECLINED = 0X11,
460  EMV_RESULT_CODE_REFERRAL_PROCESSING = 0X12,
461  EMV_RESULT_CODE_ERROR_APP_PROCESSING = 0X13,
462  EMV_RESULT_CODE_ERROR_APP_READING = 0X14,
463  EMV_RESULT_CODE_ERROR_DATA_AUTH = 0X15,
464  EMV_RESULT_CODE_ERROR_PROCESSING_RESTRICTIONS = 0X16,
465  EMV_RESULT_CODE_ERROR_CVM_PROCESSING = 0X17,
466  EMV_RESULT_CODE_ERROR_RISK_MGMT = 0X18,
467  EMV_RESULT_CODE_ERROR_TERM_ACTION_ANALYSIS = 0X19,
468  EMV_RESULT_CODE_ERROR_CARD_ACTION_ANALYSIS = 0X1A,
469  EMV_RESULT_CODE_ERROR_APP_SELECTION_TIMEOUT = 0X1B,
470  EMV_RESULT_CODE_ERROR_NO_CARD_INSERTED = 0X1C,
471  EMV_RESULT_CODE_ERROR_APP_SELECTING = 0X1D,
472  EMV_RESULT_CODE_ERROR_READING_CARD_APP = 0X1E,
473  EMV_RESULT_CODE_ERROR_POWER_CARD_ERROR = 0X1F,
474  EMV_RESULT_CODE_ERROR_NO_RESULT_CODE_PROVIDED_FOR_COMPLETION = 0X20,
475  EMV_RESULT_CODE_APPROVED_WITH_ADVISE_NO_REASON = 0X21,
476  EMV_RESULT_CODE_APPROVED_WITH_ADVISE_IA_FAILED = 0X22,
477  EMV_RESULT_CODE_ERROR_AMOUNT_NOT_SPECIFIED = 0X23,
478  EMV_RESULT_CODE_ERROR_CARD_COMPLETION = 0X24,
479  EMV_RESULT_CODE_ERROR_DATA_LEN_INCORRECT = 0X25,
480  EMV_RESULT_CODE_CALL_YOUR_BANK = 0X26,
481  EMV_RESULT_CODE_NO_ICC_ON_CARD = 0X27,
482  EMV_RESULT_CODE_NEW_SELECTION = 0X28,
483  EMV_RESULT_CODE_START_TRANSACTION_SUCCESS = 0X29
484 } EMV_RESULT_CODE_Types;
485 
486 
487 typedef enum{
488  EMV_RESULT_CODE_V2_NO_RESPONSE = -1,
489  EMV_RESULT_CODE_V2_APPROVED_OFFLINE = 0x0000,
490  EMV_RESULT_CODE_V2_DECLINED_OFFLINE = 0x0001,
491  EMV_RESULT_CODE_V2_APPROVED = 0x0002,
492  EMV_RESULT_CODE_V2_DECLINED = 0x0003,
493  EMV_RESULT_CODE_V2_GO_ONLINE = 0x0004,
494  EMV_RESULT_CODE_V2_CALL_YOUR_BANK = 0x0005,
495  EMV_RESULT_CODE_V2_NOT_ACCEPTED = 0x0006,
496  EMV_RESULT_CODE_V2_USE_MAGSTRIPE = 0x0007,
497  EMV_RESULT_CODE_V2_TIME_OUT = 0x0008,
498  EMV_RESULT_CODE_V2_START_TRANS_SUCCESS = 0x0010,
499  EMV_RESULT_CODE_V2_MSR_SUCCESS = 0x0011,
500  EMV_RESULT_CODE_V2_FILE_ARG_INVALID = 0x1001,
501  EMV_RESULT_CODE_V2_FILE_OPEN_FAILED = 0x1002,
502  EMV_RESULT_CODE_V2_FILE_OPERATION_FAILED = 0X1003,
503  EMV_RESULT_CODE_V2_MEMORY_NOT_ENOUGH = 0x2001,
504  EMV_RESULT_CODE_V2_SMARTCARD_FAIL = 0x3001,
505  EMV_RESULT_CODE_V2_SMARTCARD_INIT_FAILED = 0x3003,
506  EMV_RESULT_CODE_V2_FALLBACK_SITUATION = 0x3004,
507  EMV_RESULT_CODE_V2_SMARTCARD_ABSENT = 0x3005,
508  EMV_RESULT_CODE_V2_SMARTCARD_TIMEOUT = 0x3006,
509  EMV_RESULT_CODE_V2_MSR_CARD_ERROR = 0x3007,
510  EMV_RESULT_CODE_V2_PARSING_TAGS_FAILED= 0X5001,
511  EMV_RESULT_CODE_V2_CARD_DATA_ELEMENT_DUPLICATE = 0X5002,
512  EMV_RESULT_CODE_V2_DATA_FORMAT_INCORRECT = 0X5003,
513  EMV_RESULT_CODE_V2_APP_NO_TERM = 0X5004,
514  EMV_RESULT_CODE_V2_APP_NO_MATCHING = 0X5005,
515  EMV_RESULT_CODE_V2_AMANDATORY_OBJECT_MISSING = 0X5006,
516  EMV_RESULT_CODE_V2_APP_SELECTION_RETRY = 0X5007,
517  EMV_RESULT_CODE_V2_AMOUNT_ERROR_GET = 0X5008,
518  EMV_RESULT_CODE_V2_CARD_REJECTED = 0X5009,
519  EMV_RESULT_CODE_V2_AIP_NOT_RECEIVED = 0X5010,
520  EMV_RESULT_CODE_V2_AFL_NOT_RECEIVEDE = 0X5011,
521  EMV_RESULT_CODE_V2_AFL_LEN_OUT_OF_RANGE = 0X5012,
522  EMV_RESULT_CODE_V2_SFI_OUT_OF_RANGE = 0X5013,
523  EMV_RESULT_CODE_V2_AFL_INCORRECT = 0X5014,
524  EMV_RESULT_CODE_V2_EXP_DATE_INCORRECT = 0X5015,
525  EMV_RESULT_CODE_V2_EFF_DATE_INCORRECT = 0X5016,
526  EMV_RESULT_CODE_V2_ISS_COD_TBL_OUT_OF_RANGE = 0X5017,
527  EMV_RESULT_CODE_V2_CRYPTOGRAM_TYPE_INCORRECT = 0X5018,
528  EMV_RESULT_CODE_V2_PSE_BY_CARD_NOT_SUPPORTED = 0X5019,
529  EMV_RESULT_CODE_V2_USER_LANGUAGE_SELECTED = 0X5020,
530  EMV_RESULT_CODE_V2_SERVICE_NOT_ALLOWED = 0X5021,
531  EMV_RESULT_CODE_V2_NO_TAG_FOUND = 0X5022,
532  EMV_RESULT_CODE_V2_CARD_BLOCKED = 0X5023,
533  EMV_RESULT_CODE_V2_LEN_INCORRECT = 0X5024,
534  EMV_RESULT_CODE_V2_CARD_COM_ERROR = 0X5025,
535  EMV_RESULT_CODE_V2_TSC_NOT_INCREASED = 0X5026,
536  EMV_RESULT_CODE_V2_HASH_INCORRECT = 0X5027,
537  EMV_RESULT_CODE_V2_ARC_NOT_PRESENCED = 0X5028,
538  EMV_RESULT_CODE_V2_ARC_INVALID = 0X5029,
539  EMV_RESULT_CODE_V2_COMM_NO_ONLINE = 0X5030,
540  EMV_RESULT_CODE_V2_TRAN_TYPE_INCORRECT = 0X5031,
541  EMV_RESULT_CODE_V2_APP_NO_SUPPORT = 0X5032,
542  EMV_RESULT_CODE_V2_APP_NOT_SELECT = 0X5033,
543  EMV_RESULT_CODE_V2_LANG_NOT_SELECT = 0X5034,
544  EMV_RESULT_CODE_V2_TERM_DATA_NOT_PRESENCED = 0X5035,
545  EMV_RESULT_CODE_V2_CVM_TYPE_UNKNOWN = 0X6001,
546  EMV_RESULT_CODE_V2_CVM_AIP_NOT_SUPPORTED = 0X6002,
547  EMV_RESULT_CODE_V2_CVM_TAG_8E_MISSING = 0X6003,
548  EMV_RESULT_CODE_V2_CVM_TAG_8E_FORMAT_ERROR = 0X6004,
549  EMV_RESULT_CODE_V2_CVM_CODE_IS_NOT_SUPPORTED = 0X6005,
550  EMV_RESULT_CODE_V2_CVM_COND_CODE_IS_NOT_SUPPORTED = 0X6006,
551  EMV_RESULT_CODE_V2_CVM_NO_MORE = 0X6007,
552  EMV_RESULT_CODE_V2_PIN_BYPASSED_BEFORE = 0X6008
553 } EMV_RESULT_CODE_V2_Types;
554 
555 
556 
557 
558 typedef enum{
559  EMV_AUTHORIZATION_RESULT_ACCEPTED = 0X00,
560  EMV_AUTHORIZATION_RESULT_UNABLE_TO_GO_ONLINE = 0X01,
561  EMV_AUTHORIZATION_RESULT_TECHNICAL_ISSUE = 0X02,
562  EMV_AUTHORIZATION_RESULT_DECLINED = 0X03,
563  EMV_AUTHORIZATION_RESULT_ISSUER_REFERAL = 0X04
564 } EMV_AUTHORIZATION_RESULT;
BOOL disableAutoPPS
No auto pps for negotiate mode.
Definition: IDTCommon.h:28
unsigned char ppsLength
lenght of pps data
Definition: IDTCommon.h:31
bool latchClosed
Determines if Card Latch is engaged. If device does not have a latch, value is always FALSE...
Definition: IDTCommon.h:16
Definition: IDTCommon.h:13
bool iccPower
Determines if ICC has been powered up.
Definition: IDTCommon.h:14
BOOL sendIFS
Send S(IFS) request if T=1 protocolError: Reference source not found.
Definition: IDTCommon.h:26
Definition: IDTCommon.h:25
BOOL disableResponseCheck
No check on response of S(IFS) request.
Definition: IDTCommon.h:29
BOOL explicitPPS
Explicit PPSError: Reference source not found.
Definition: IDTCommon.h:27
bool cardSeated
Determines if card is inserted.
Definition: IDTCommon.h:15
unsigned char * pps
pps is used to set the Protocol and Parameters Selection between card and reader, only Di <= 4 are su...
Definition: IDTCommon.h:30
bool magneticDataPresent
True = Magnetic data present, False = No Magnetic Data.
Definition: IDTCommon.h:18
bool cardPresent
If device has a latch, determines if the card is present in device. If the device does not have a lat...
Definition: IDTCommon.h:17