public class EMVJNIInterface
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
static IFuntionListener |
functionListener |
Constructor and Description |
---|
EMVJNIInterface() |
Modifier and Type | Method and Description |
---|---|
static void |
cardEventOccured(int eventType) |
static void |
close_reader(int reader)
close reader
|
static int |
emv_aidparam_add(byte[] data,
int dataLength) |
static int |
emv_aidparam_clear()
Clear AID parameters
|
static void |
emv_anti_shake_finish(int flag)
anti_shake_finish
|
static int |
emv_capkparam_add(byte[] data,
int dataLength) |
static int |
emv_capkparam_clear()
Clear CAPK parameters
|
static int |
emv_contactless_aidparam_add(byte[] data,
int dataLength) |
static int |
emv_contactless_aidparam_clear() |
static int |
emv_exception_file_add(byte[] exceptFile)
Add Exception File
|
static int |
emv_exception_file_clear()
Clear Exception File
|
static int |
emv_generate_pseudo_track1(byte[] data,
int dataLength)
generate pseudo track1
|
static int |
emv_generate_pseudo_track2(byte[] data,
int dataLength)
generate pseudo track2
|
static int |
emv_get_candidate_list_tlv(byte[] data,
int dataLength)
Get candidate application list with TLV Format
|
static int |
emv_get_candidate_list(byte[] data,
int dataLength)
Get candidate application list
|
static int |
emv_get_card_record(byte[] data,
int dataLength)
Read transaction record from the card
|
static int |
emv_get_config_checksum(byte[] data,
int dataLength)
Get Configuration checksum
|
static int |
emv_get_contactless_card_state() |
static int |
emv_get_kernel_checksum(byte[] data,
int dataLength)
Get Kernel checksum
|
static int |
emv_get_kernel_id()
get contactless kernel id
|
static int |
emv_get_kernel_type() |
static int |
emv_get_offlinepin_times()
return the times of offline pin entry
|
static int |
emv_get_offlinepin_try_counter()
return the try counter of offline pin from the card
|
static int |
emv_get_process_type()
get process type of contactless card
|
static int |
emv_get_tag_data(int tag,
byte[] data,
int dataLength)
get the data for the tag
|
static int |
emv_get_tag_list_data(int[] tagList,
int tagCount,
byte[] data,
int dataLength)
get the data for the tag list
|
static int |
emv_get_version_string(byte[] data,
int dataLength)
Get EMV Kernel version
|
static int |
emv_is_need_advice()
Is needed advice the transaction
|
static int |
emv_is_need_signature()
Is needed sign the transaction
|
static int |
emv_is_tag_present(int tag)
check the existence of data for the tag
|
static void |
emv_kernel_initialize()
EMV kernel init, execute only one time when start application
|
static int |
emv_log_file_clear() |
static int |
emv_offlinepin_verified()
is offline verified
|
static int |
emv_preprocess_qpboc() |
static int |
emv_process_next()
emv process next, execute this function to notify emv kernel to continue performing transaction
|
static int |
emv_revoked_cert_add(byte[] revokedCert)
Add revoked Certificate
|
static int |
emv_revoked_cert_clear()
Clear Revoked Certicates
|
static void |
emv_set_anti_shake(int flag) |
static int |
emv_set_bypass_pin(int flag)
Set acceptance for Bypass Offline PIN
|
static int |
emv_set_candidate_list_result(int index)
Set the selected index for application selection
|
static int |
emv_set_currency_symbol(byte[] data,
int dataLength) |
static int |
emv_set_fastest_qpboc_process(int result) |
static int |
emv_set_force_aac(int flag)
Set the transaction Force AAC for first generate AC
|
static int |
emv_set_force_online(int flag)
Set the transaction force online
|
static int |
emv_set_id_check_result(int result)
Set the result for cardholder ID check
ID Type(9F62)、ID Number(9F61)
|
static int |
emv_set_kernel_attr(byte[] data,
int dataLength) |
static int |
emv_set_kernel_type(byte kernelType) |
static int |
emv_set_online_pin_entered(int result)
Set the result for Online PIN
|
static int |
emv_set_online_result(int result,
byte[] respCode,
byte[] issuerRespData,
int issuerRespDataLength)
Set the result for online certification
|
static int |
emv_set_other_amount(byte[] amount)
Set other amount
|
static int |
emv_set_pinpad_title(byte[] data,
int dataLength)
set custom pinpad gui for pinpad title
|
static int |
emv_set_tag_data(int tag,
byte[] data,
int dataLength)
set the data for the tag
|
static int |
emv_set_trans_amount(byte[] amount)
Set transaction amount
|
static int |
emv_set_trans_type(byte transType)
Set transaction type before start
|
static int |
emv_set_virtual_keypad_type(int flag) |
static int |
emv_stop_process()
emv stop process, execute this function to notify emv kernel to stop the transaction
|
static int |
emv_terminal_param_set_drl(byte[] TerminalParam,
int paramLength) |
static int |
emv_terminal_param_set_tlv(byte[] TerminalParam,
int paramLength)
Set EMV terminal parameters by TLV
|
static void |
emv_trans_initialize()
Init transaction data, execute this function every time before performing a emv transaction
|
static void |
emvOfflinePinCallback(int nCount,
int nExtra) |
static void |
emvProcessCallback(byte[] data) |
static byte |
exitEMVKernel() |
static int |
get_card_atr(byte[] atr)
get card ATR
|
static int |
get_card_type()
get current card type
|
static byte |
loadEMVKernel(byte[] libDir,
int DirLength)
Load libEMVKernal.so from corresponding path
|
static int |
open_reader_ex(int reader,
int extraParam) |
static int |
open_reader(int reader)
open reader and wait card
|
static int |
poweron_card() |
static int |
query_contact_card_presence() |
static void |
registerFunctionListener(IFuntionListener afunctionListener) |
static void |
set_contactless_detach_enable(int enable) |
static int |
set_display_language(int flag) |
static int |
setEmvOfflinePinCallbackHandler(com.cloudpos.jniinterface.PinPadCallbackHandler handler) |
static int |
setPinpadKeyEventCallback() |
static int |
transmit_card(byte[] cmd,
int cmdLength,
byte[] respData,
int respDataLength)
APDU command
|
public static IFuntionListener functionListener
public static void registerFunctionListener(IFuntionListener afunctionListener)
public static void emvProcessCallback(byte[] data)
public static void cardEventOccured(int eventType)
public static int setEmvOfflinePinCallbackHandler(com.cloudpos.jniinterface.PinPadCallbackHandler handler)
public static void emvOfflinePinCallback(int nCount, int nExtra)
public static int setPinpadKeyEventCallback()
public static byte loadEMVKernel(byte[] libDir, int DirLength)
libDir
- full path of the libDirLength
- length of the libDirpublic static byte exitEMVKernel()
public static int open_reader(int reader)
reader
- 0 - all of readers
1 - only contact reader
2 - only contactlesspublic static int open_reader_ex(int reader, int extraParam)
public static void close_reader(int reader)
reader
- 0 - all of readers
1 - only contact reader
2 - only contactless readerpublic static int poweron_card()
public static int get_card_type()
public static int get_card_atr(byte[] atr)
atr
- the value of ATRpublic static int transmit_card(byte[] cmd, int cmdLength, byte[] respData, int respDataLength)
cmd
- APDU commandcmdLength
- the length of APDU commandrespData
- the value of card responserespDataLength
- accepted max length of card reasponsepublic static int query_contact_card_presence()
public static void set_contactless_detach_enable(int enable)
enable
- 0 - don't detach card when close contactless reader;
1 - waiting detach card when close contactless reader
2 - do not controlpublic static int emv_get_contactless_card_state()
public static void emv_kernel_initialize()
public static int emv_is_tag_present(int tag)
tag
- tag name
return value < 0 : the data not exist
>= 0 : the length of datapublic static int emv_get_tag_data(int tag, byte[] data, int dataLength)
tag
- tag namedata
- the value of the datadataLength
- accepted max length of the datapublic static int emv_get_tag_list_data(int[] tagList, int tagCount, byte[] data, int dataLength)
tagList
- the list of the tagstagCount
- the count of the tagsdata
- the values of the data(TLV format)dataLength
- accepted max length of the datapublic static int emv_set_tag_data(int tag, byte[] data, int dataLength)
tag
- tag namedata
- the value of the datadataLength
- the length of the datapublic static int emv_preprocess_qpboc()
public static void emv_trans_initialize()
public static int emv_get_version_string(byte[] data, int dataLength)
data
- the value of emv kernel versiondataLength
- accepted max length of emv kernel versionpublic static int emv_set_trans_amount(byte[] amount)
amount
- ascii character bytes and '\0' as ending markpublic static int emv_set_other_amount(byte[] amount)
amount
- ascii character bytes and '\0' as ending markpublic static int emv_set_trans_type(byte transType)
transType
- TRANS_GOODS_SERVICE 0x00
TRANS_CASH 0x01
TRANS_INQUIRY 0x04
TRANS_TRANSFER 0x05
TRANS_PAYMENT 0x06
TRANS_ADMIN 0x07
TRANS_CASHBACK 0x09
TRANS_CARD_RECORD 0x0Apublic static int emv_set_kernel_type(byte kernelType)
kernelType
- 1 EMV Contact Kernel
2 EMV Contactless Kernel
3 UPCASH Kernel for China Union Paypublic static int emv_get_kernel_type()
public static int emv_process_next()
public static int emv_stop_process()
public static int emv_is_need_advice()
public static int emv_is_need_signature()
public static int emv_set_force_online(int flag)
flag:
- flag=1 Yes, flag = 0 Nopublic static int emv_get_card_record(byte[] data, int dataLength)
data
- transaction recorddataLength
- accepted max length for the transaction recordpublic static int emv_get_candidate_list(byte[] data, int dataLength)
data
- application list as "LV" formatdataLength
- accepted max length for application listpublic static int emv_get_candidate_list_tlv(byte[] data, int dataLength)
data
- application list with "TLV" format
Tag 4F: AID, It is the start of candidate record
Tag 50: Application Label
Tag 9F12: Application Preferred NamedataLength
- accepted max length for application listpublic static int emv_set_candidate_list_result(int index)
index
- the selected index (started by 0)public static int emv_set_id_check_result(int result)
result
- 0: check Fail, 1:check successpublic static int emv_set_online_pin_entered(int result)
result
- 0: Online PIN not input, 1:Online PIN inputtedpublic static int emv_set_bypass_pin(int flag)
flag
- 0: Disable bypass pin
1: Allowed bypass pinpublic static int emv_set_online_result(int result, byte[] respCode, byte[] issuerRespData, int issuerRespDataLength)
result
- -1:communication failed, 0: host refused, 1: host acceptedrespCode
- 2 bytes response code from the hostissuerRespData
- the emv data from the hostissuerRespDataLength
- the length of the emv data from the hostpublic static int emv_aidparam_clear()
public static int emv_aidparam_add(byte[] data, int dataLength)
data
- see form below,format is TLV
----------------------------------------------------------------------------------------------------------------------
| tag Format length(byte) name
----------------------------------------------------------------------------------------------------------------------
| 9F06 b 5-16 AID
| DF01 b 1 Application selection Indicator(ASI)
| 9F08 b 2 Application version number
| DF11 b 5 TAC-Default
| DF12 b 5 TAC-Online
| DF13 b 5 TAC-Denial
| 9F1B b 4 Terminal floor limit
| DF15 b 4 Threshold value for Biased Random Selection
| DF16 cn 1 Maximum Target Percentage to be used for Biased Random Selection
| DF17 cn 1 Target Percentage to be used for Random Selection
| DF14 b Var. Default DDOL
| DF18 b 1 Ability for Online PIN
| 50 an 1-16 Application Label
| 9F12 an 1-16 Application Preferred Name
| 87 b 1 Application Priority Indicator
| 9F16 an 15 Merchant Identifier
| 9F01 n 6-11 Acquirer Identifier
| 9F15 n 4 MCC
| 9F3C n 3 Transaction Reference Currency Code
| 9F3D n 1 Transaction Reference Currency Exponent
| DF22 b Var. Default TDOL
| DF19 n 6 Contactless Floor Limit
| DF20 n 6 Contactless Limit
| DF21 n 6 CVM Limit
| DF810C n 1 Kernel ID
| DF8118 b 1 C2: CVM Capability – CVM Required
| DF8119 b 1 C2: CVM Capability – No CVM Required
| DF811B b 2 C2: kernel configuration
| DF811E b 1 C2: Mag-stripe CVM Capability – CVM Required
| DF8124 n 6 C2: Reader Contactless transaction limit (No On-device CVM)
| DF8125 n 6 C2: Reader Contactless transaction limit (On-device CVM)
| DF812C b 1 C2: Mag-stripe CVM Capability – No CVM Required
| EF07 n 1 Is US Common Debit AID 0 – No; 1 - Yes
| EF08 n 1 Is apply to NSICCS (Indonesia) 0 - No; 1 - Yes
----------------------------------------------------------------------------------------------------------------------
* C2 – Only for Mastercard PaypassdataLength
- the length of the datapublic static int emv_contactless_aidparam_clear()
public static int emv_contactless_aidparam_add(byte[] data, int dataLength)
public static int emv_capkparam_clear()
public static int emv_capkparam_add(byte[] data, int dataLength)
data
- see form below,format is TLV
----------------------------------------------------------------------------------------------------------------------
| tag Format length(byte) Name
----------------------------------------------------------------------------------------------------------------------
| 9F06 b 5 RID
| 9F22 b 1 Certification Authority Public Key Index
| DF05 n8 8 Certification Authority Public Key Expiration Date
| DF06 b 1 Certification Authority Public Key hash Algorithm Indicator
| DF07 b 1 Certification Authority Public Key Algorithm Indicator
| DF02 b Var. Certification Authority Public Key Modulus
| DF04 b 1 or 3 Certification Authority Public Key Exponent
| DF03 b Var. Certification Authority Public Key Checksum
----------------------------------------------------------------------------------------------------------------------dataLength
- the length of the datapublic static int emv_terminal_param_set_tlv(byte[] TerminalParam, int paramLength)
TerminalParam
- see the table for tlv
------------------------------------------------------------------------------------------------------------------------
| Supported Tag Description
| ----------------------------------------------------------------------------------------------------------------------
| 5F2A Transaction Currency Code
| 5F36 Transaction Currency Exponent
| 9F16 Merchant Identification
| 9F1A Terminal Country Code
| 9F1C Terminal Identification
| 9F1E IFD Serial Number
| 9F33 Terminal Capabilities
| 9F35 Terminal Type
| 9F40 Additional Terminal Capabilities
| 9F4E Merchant Name and Location
| 9F66 TTQ first byte
| DF19 Contactless floor limit
| DF20 Contactless transaction limit
| DF21 CVM limit
| DF8104 Balance Read Before Gen AC (C2)
| DF8105 Balance Read After Gen AC (C2)
| DF811C Max Lifetime of Torn Transaction Log Record (C2)
| DF811D Max Number of Torn Transaction Log Records (C2)
| DF812D Message Hold Time (C2)
| DF8132 Minimum Relay Resistance Grace Period (C2)
| DF8133 Maximum Relay Resistance Grace Period (C2)
| DF8134 Terminal Expected Transmission Time For Relay Resistance C-APDU (C2)
| DF8135 Terminal Expected Transmission Time For Relay Resistance R-APDU (C2)
| DF8136 Relay Resistance Accuracy Threshold (C2)
| DF8137 Relay Resistance Transmission Time Mismatch Threshold (C2)
| EF01 Status check support: 0 – No; 1 – Support
| EF02 Zero check support: 0 – No; 1 – Support
| EF03 Authorization Type For American Expresspay(C4): 0-Immediate; 1-Delayed
| EF04 CDCVM support: 0 – No; 1 – Support
| EF05 Extended Selection: 0 – No; 1 – Support
| EF06 Priority of US Common Debit AID:0 – The priority of US Common Debit AID is lower than Global AID; 1 – The priority of US Common Debit AID is higher than Global AID
----------------------------------------------------------------------------------------------------------------------paramLength
- the length of the datapublic static int emv_terminal_param_set_drl(byte[] TerminalParam, int paramLength)
public static int emv_exception_file_clear()
public static int emv_exception_file_add(byte[] exceptFile)
exceptFile
- 20 bytes byte-array, 19 bytes card number and 1 byte Pan Sequencepublic static int emv_revoked_cert_clear()
public static int emv_revoked_cert_add(byte[] revokedCert)
revokedCert
- 6 bytes byte-array, 5 bytes RID and 1 byte CAPK-indexpublic static int emv_log_file_clear()
public static int emv_set_kernel_attr(byte[] data, int dataLength)
data
- is less or equal 2 bytes,
Byte 1:
bit 8 Enable auto perform UPCASH for contact card.
bit 7 Force select CUP application.
bit 6 Force check app version in FDDA for CUP contactless.
bit 5 Force online with Cash & CashBack for Visa contacltess.
bit 4 Subsequent Bypass PIN entry
bit 3 Disable PayWave AUC check.
bit 2 RFU
bit 1 RFU
Byte 2:
bit 8 Enable contactless AID select.
bit 7 RFU
bit 6 RFU
bit 5 RFU
bit 4 RFU
bit 3 RFU
bit 2 RFU
bit 1 RFUpublic static int emv_set_currency_symbol(byte[] data, int dataLength)
public static int emv_set_fastest_qpboc_process(int result)
public static void emv_set_anti_shake(int flag)
public static void emv_anti_shake_finish(int flag)
flag
- 0 - Not found Contact or Mag card, continue contactless transaction
1 - found Contact or Mag card, terminate contactless transactionpublic static int emv_get_kernel_checksum(byte[] data, int dataLength)
data
- the value of emv kernel checksumdataLength
- accepted max lengthpublic static int emv_get_config_checksum(byte[] data, int dataLength)
data
- the value of configuration checksumdataLength
- accepted max lengthpublic static int emv_set_force_aac(int flag)
flag
- flag=1 Yes, flag = 0 Nopublic static int emv_generate_pseudo_track1(byte[] data, int dataLength)
data
- value to save preudo track1dataLength
- data lengthpublic static int emv_generate_pseudo_track2(byte[] data, int dataLength)
data
- value to save preudo track2dataLength
- data lengthpublic static int emv_get_kernel_id()
public static int emv_get_process_type()
public static int emv_offlinepin_verified()
public static int emv_get_offlinepin_times()
public static int emv_get_offlinepin_try_counter()
public static int set_display_language(int flag)
flag
- 0 English, 1 Spanish, 2 - Russianpublic static int emv_set_virtual_keypad_type(int flag)
flag
- 0 small keypad, 1 big keypadpublic static int emv_set_pinpad_title(byte[] data, int dataLength)
data
- buffer of pinpad title
dataLength The length of pinpad title