IDevice
cancelTransaction
This function cancels a transaction. A transaction can only be cancelled before a card is presented.
boolean IDevice.cancelTransaction();Return Value: Returns true if cancelled. Otherwise, returns false.
getCapabilities
This function retrieves the capabilities of the device.
IDeviceCapabilities IDevice.getCapabilities();Return Value: Returns IDeviceCapabilities
getConnectionInfo
This function retrieves the connection information of the device.
ConnectionInfo IDevice.getConnectionInfo();Return Value: Returns ConnectionInfo
getConnectionState
This function retrieves the connection state of the device.
Return Value: Returns CaptureType
This enum refers to the type of customer information to capture.
Unavailable
Capture unavailable
PhoneNumber
Capture the phone number
SocialSecurityNumber
Capture the social security number
ZipCode
Capture the zip code
EmployeeID
Capture Employee ID number
BirthDate
Capture birth date in USA format
ConnectionState
getDeviceConfiguration
This function allows the host to get an IDeviceConfiguration to configure the device.
Return Value: Returns IDeviceConfiguration.
getDeviceControl
This function retrieves the device control interface to the device.
Return Value: Returns IDeviceControl
getDeviceInfo
This function returns an information class of the device.
Return Value: Returns DeviceInfo.
Name
This function returns the name of the device assigned from createDevice().
String IDevice.Name();
Return Value: Returns the name of the device.
requestPAN
This function prompts the user to present their card and enter a PIN. A card is presented so that the device can retrieve the PAN, which is used for Format blocks requiring a PAN. The encrypted PIN block (EPB) will be returned in the event OnEvent. The data byte array may be passed to builder function PANDataBuilder.GetPANData();
For DynaFlex devices, this function starts a PIN session on the first call and shall be called again to send the PIN status to the device for completing the PIN session.
PANRequest
Timeout
byte
Wait time in seconds.
PaymentMethods
List of PaymentMethod
List of the PaymentMethod enumeration. MSR = For magnetic stripe cards. Contact = For EMV chip cards. Contactless = For NFC contactless cards. ManualEntry = Manually entry, no card. When set, other payment methods must not be included. Barcode = For barcode. BarcodeEncrypted = For barcode with encrypted response. AppleVAS = For Apple VAS. GoogleVAS = For Google Wallet VAS. NFC = For NFC tag.
PINRequest
Timeout
byte
Wait time in seconds.
PINMode
byte
PIN mode. Usage: 0x00 - Enter PIN 0x01 - Enter PIN Amount 0x02 - Reenter PIN Amount 0x03 - Reenter PIN 0x04 - Verify PIN For DynaFlex devices this is the User Interface Sequence: 0x01 - Present Card / Enter PIN (start session) 0x04 - Present Card / Enter PIN / Enter PIN Again (start session) On the second call to requestPAN(), send the PIN status: 0xFD - Cancel PIN Session (end session) 0xFE - PIN Entry Failed (end session) 0xFF - PIN Entry Successful (end session)
MinLength
byte
Minimum length of accepted PIN (>= 4).
MaxLength
byte
Maximum length of accepted PIN (=< 12).
Tone
byte
Tone to play when prompting for the PIN. Usage: 0x00 - No sound 0x01 - One beep 0x02 - Two beeps
Format
byte
ISO format for the PIN block.
PAN
String
First 12 digits of the Primary Account Number. Leave blank if not required by the ISO format for the PIN block.
Return Value: Returns true if successful. Otherwise, returns false.
requestPIN
This function prompts the user to enter a PIN. The host must supply the PAN if the Format block selected requires a PAN. The encrypted PIN block (EPB) will be returned in the event OnEvent. The data byte array may be passed to builder function PINDataBuilder.GetPINData();
For DynaFlex devices, this function starts a PIN session on the first call and shall be called again to send the PIN status to the device for completing the PIN session.
PINRequest
Timeout
byte
Wait time in seconds.
PINMode
byte
PIN mode. Usage: 0x00 - Enter PIN 0x01 - Enter PIN Amount 0x02 - Reenter PIN Amount 0x03 - Reenter PIN 0x04 - Verify PIN For DynaFlex devices this is the User Interface Sequence: 0x00 - Enter PIN (start session) 0x02 - PIN Incorrect, Try Again (continue session) 0x03 - Enter PIN / Enter PIN Again (start session) 0x05 - Enter PIN Again (continue session) On the second call to requestPIN(), send the PIN status: 0xFD - Cancel PIN Session (end session) 0xFE - PIN Entry Failed (end session) 0xFF - PIN Entry Successful (end session)
MinLength
byte
Minimum length of accepted PIN (> 4).
MaxLength
byte
Maximum length of accepted PIN (< 12).
Tone
byte
Tone to play when prompting for the PIN. Usage: 0x00 - No sound 0x01 - One beep 0x02 - Two beeps
Format
byte
ISO format for the PIN block.
PAN
String
First 12 digits of the Primary Account Number. Leave blank if not required by the ISO format for the PIN block.
Return Value: Returns true if successful. Otherwise, returns false.
requestSignature
This function prompts the user to enter a signature. The response data will be returned in the event OnEvent.
Return Value: Returns true of successful. Otherwise, returns false.
sendAuthorization
This function sends the Authorization Response Code (ARPC) blob to the device. The response data will be returned in the event OnEvent. See EMV Transaction Flow for how to process an EMV transaction.
Parameter
data
Contains ARPC blob.
Return Value: Returns true if successful. Otherwise, returns false.
sendClassicNFCCommand
This function sends a command to a NFC Mifare Classic Tag type 2. The NFC tag must first be activated by calling startTransaction() with NFC enabled.
Parameter
data
Command to send to the NFC tag. For details of the command see NFC Classic commands table below or D998200383 DynaFlex Family Programmer’s Manual (COMMANDS) section NFC/Mifare Pass Through Commands
lastCommand
Determines if this is the last NFC command to complete the operation. true = This is the last command. Device will provide a single beep after receiving a successful response from the NFC tag. To send subsequent commands, the NFC tag must be activated by calling startTransaction() with NFC enabled. false = Expect more commands (Default). Either set to true or false, if the NFC tag command fails, device will provide a double beep.
encrypt
Determines if data returned is to be encrypted. true = Encrypt data false = Do not encrypt data (Default)
Return Value: Returns true if successful. Otherwise, returns false.
NFC Classic Commands
Mifare Read
11
Byte 0 – 0x30 – Read Command Byte 1 – Sector Number to Read Byte 2 – Start Block Number Byte 3 – End Block Number Byte 4 – Key Type, 0 = A, 1 = B Byte 5 to 10 = 6 Byte Key
Mifare Write
var
Byte 0 – 0xA0 – Write Command Byte 1 – Sector Number to Write Byte 2 – Start Block Number Byte 3 – End Block Number Byte 4 – Key Type 0 = A, 1 = B Byte 5 to 10 = 6 Byte Key Byte 11 to x = Variable length Byte Data (16 bytes per block)
Mifare Increment
14
Byte 0 – 0xC1 – Increment Command Byte 1 – Source Sector Number Byte 2 – Source Block number Byte 3 – Key Type 0 = A, 1 = B Byte 4 to 9 = 6 Byte Key Byte 10 to 13 = 4 Byte Operand
Mifare Decrement
14
Byte 0 – 0xC0 – Decrement Command Byte 1 – Source Sector Number Byte 2 – Source Block number Byte 3 – Key Type 0 = A, 1 = B Byte 4 to 9 = 6 Byte Key Byte 10 to 13 = 4 Byte Operand
Mifare Restore
10
Byte 0 – 0xC2 – Restore Command Byte 1 – Source Sector Number Byte 2 – Source Block number Byte 3 – Key Type 0 = A, 1 = B Byte 4 to 9 = 6 Byte Key
Mifare Transfer
10
Byte 0 – 0xB0 – Write the value from the Transfer Buffer into destination block number Byte 1 – Destination Sector Number Byte 2 – Destination Block number Byte 3 – Key Type 0 = A, 1 = B Byte 4 to 9 = 6 Byte Key
Response Data For NFC Classic Tag
81
var
Tag Response Code Byte 0 = 0x00 = Success Byte 0 = 0x01 = I/O Failed Byte 0 = 0x02 Authentication Failed Byte 1 = 0x01 = Block that Failed (optional)
82
var
Encryption Control Payload
If unencrypted:
FC
var
NFC Data Container
/DF7A
var
NFC Data
If encrypted:
/DFDF59
var
Encrypted Data Primitive to be decrypted.
/DFDF50
var
Encrypted Data KSN
/DFDF51
01
Encrypted Data Encryption Type
Example Unencrypted Payload
Example Encrypted Payload for Fast Read
sendDESFireNFCCommand
This function sends a command to an NFC Mifare DESFire Tag Type 4. The NFC tag must first be activated by calling startTransaction() with NFC enabled.
Parameter
data
Command to send to the NFC tag. See DESFire Data Sheet (MF2DLHX0). Should follow ISO 7816-4 APDU format. For details of the command see D998200383 DynaFlex Family Programmer’s Manual (COMMANDS) section NFC/Mifare Pass Through Commands_
lastCommand
Determines if this is the last NFC command to complete the operation. true = This is the last command. Device will provide a single beep after receiving a successful response from the NFC tag. To send subsequent commands, the NFC tag must be activated by calling startTransaction() with NFC enabled. false = Expect more commands (Default). Either set to true or false, if the NFC tag command fails, device will provide a double beep.
encrypt
Determines if data returned is to be encrypted. true = Encrypt data false = Do not encrypt data (Default)
Return Value: Returns true if successful. Otherwise, returns false.
Response Data For NFC Mifare DESFire Tag Type 4
81
02
Tag Response (SW1 SW2). See DESFire Data Sheet (MF2DLHX0). Should follow ISO 7816-4 APDU format.
· SW1 and SW2 of R-APDU
If card is not able to respond: SW1 = 0x64, SW2 = 0x00
Tag
Len
Value / Description
---
---
---
821
var
Encryption Control Payload tag data.
· Data of R-APDU**(see tables below)**
ECP if unencrypted
FC
var
NFC Data Container
/DF7A
var
NFC Data
ECP if encrypted:
/DFDF59
var
Encrypted Data Primitive to be decrypted.
/DFDF50
var
Encrypted Data KSN
/DFDF51
01
Encrypted Data Encryption Type
Example Unencrypted Payload
Example Encrypted Payload for Fast Read
sendPlusNFCCommand
This function send a user selection to the device.
Parameter for data
Byte 0
Status of User Selection: 0x00 = User Selection Request completed, see Selection Result 0x01 = User Selection Request aborted, cancelled by user 0x02 = User Selection Request aborted, timeout
Byte 1
The menu item selected by the user. This is a single byte zero based binary value.
Return Value: Returns true if successful. Otherwise, returns false.
sendSelection
This function send a user selection to the device.
Parameter for data
Byte 0
Status of User Selection: 0x00 = User Selection Request completed, see Selection Result 0x01 = User Selection Request aborted, cancelled by user 0x02 = User Selection Request aborted, timeout
Byte 1
The menu item selected by the user. This is a single byte zero based binary value.
Return Value: Returns true if successful. Otherwise, returns false.
startTransaction
This function starts a transaction. This function will automatically handle the opening and closing of a device. The transaction will be processed through multiple calls to the event OnEvent. See EMV Transaction Flow for how to process an EMV transaction.
Parameter
transaction
An interface that holds the parameters for the transaction.
Return Value: Returns true if the transaction started successfully. Otherwise, returns false.
subscribeAll
This function allows the host to be notified of all events sent by the device.
Parameter
eventCallback
Name of a class or structure that implements the IEventSubscriber Delegate interface event.
Return Value: Returns true if successful.
unsubscribeAll
This function allows the host to no longer receive any events sent by the device.
Parameter
eventCallback
Name of a class or structure that implements the interface event.
Return Value: Returns true if successful.

