You are on page 1of 30

Shenzhen ZCS Technology Co.

, Ltd EMV Interface Description

EMV

Interface Description

Shenzhen ZCS Technology Co., Ltd

1
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

版本修订历史记录:

版本号 作者 参与者 发布日期 Remarks


V1.0 罗成 2018-4-13 初始版本

2
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

目录
1. EMV 类.....................................................................................................................................5
1.1. 读取 EMV 内核版本号............................................................................................5
1.2. 删除所有 AID............................................................................................................5
1.3. 删除所有 CAPK..........................................................................................................5
1.4. 获取 AID 列表总数...................................................................................................6
1.5. 获取 Capk 列表总数.................................................................................................6
1.6. 根据索引号获取一条 AID 列表..............................................................................7
1.7. 根据索引号获取一条 Capk.....................................................................................7
1.8. 追加一条 AID...........................................................................................................7
1.9. 追加一条 Capk.........................................................................................................8
1.10. 追加一条 AID...........................................................................................................9
1.11. 追加一条 Capk.........................................................................................................9
1.12. 从内核获取 tag 的值.............................................................................................10
1.13. 设置 tag 的值到内核.............................................................................................10
1.14. 打包 TLV 结构的数据............................................................................................11
1.15. 从内核获取 tag 数据,打包 TLV 结构的数据.........................................................11
1.16. 打包 TLV 列表数据................................................................................................12
1.17. EMV 内核初始化......................................................................................................12
1.18. 非接交易预处理.....................................................................................................12
1.19. 执行 EMV 交易(包括非接交易)............................................................................13
1.20. 余额查询................................................................................................................13
1.21. 读交易日志............................................................................................................14
1.22. 读二磁道信息和银行卡号.....................................................................................15
1.23. 获取 CVM 类型(非接专用)...................................................................................16
1.24. 将 PIN BLOCK 设置到内核..................................................................................16
1.25. 解析联机响应数据.................................................................................................17
2. OnEmvListener 回调类..........................................................................................................18
2.1. 选择应用回调.........................................................................................................18
2.2. 确认卡号回调.........................................................................................................18
2.3. 输入 PIN 回调........................................................................................................19
2.4. 持卡人证件验证回调.............................................................................................20
2.5. 联机处理回调.........................................................................................................21
3. EMVReturn 结果类................................................................................................................23

3
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

1. EMV transaction flow chart

4
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

2. EMV Class

Get the object of the EMV class:


EmvHandler emvHandler = EmvHandler.getInstance();

2.1. Get the EMV kernel version number

Method public String getKernelVersion()


Description Get the EMV kernel version number
Input
Output
Return EMV kernel version number

Stuct
Remarks

2.2. Delete all AIDs

Method public void delAllApp()


Description Delete all AIDs
Input
Output
Return
Stuct
Remarks

Example

5
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

2.3. Delete all CAPKs

Method public void delAllCapk()


Description Delete all CAPKs
Input

Output
Return

Stuct
Remarks
Example

2.4. Get the total number of AIDs

Method public int getAppNum()


Description Get the total number of AIDs
Input
Output
Return total number of AIDs

Stuct
Remarks
Example

2.5. Get the total number of Capks

Method public int getAppCapk()


Description Get the total number of Capks
Input
Output

6
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

Return total number of Capks

Stuct
Remarks
Example

2.6. Get an AID based on the index number

Method public byte[] getApp(int index)


Description Get an AID based on the index number
Input index Index (starting at 0)

Output
Return A string of AID data in TLV format
=null, get error
Stuct
Remarks

2.7. Get an Capk based on the index number

Method public byte[] getCapk(int index)


Description Get an AID based on the index number
Input index Index (starting at 0)

Output
Return A string of Capk data in TLV format
=null, get error
Stuct
Example

2.8. Append an AID

Method public int addApp(byte[] aid)


Description Append an AID
7
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

Input aid Example:


emvHandler.addApp(emvHandler .hex
StringToBytes("9F0607A00000000430
60DF0101009F08020002DF1105FC50
58A000DF1205F85058F800DF13050
4000000009F1B0400000000DF15040
0000000DF160199DF170199DF14039
F3704DF180101DF200600099999999
9"));
Output
Return

Stuct
Remarks

2.9. Append an AID

Method public int addApp(EmvApp emvApp)


Description Append an AID
Input emvApp EmvApp Object

Output
Return

Stuct
Remarks

2.10. Append an Capk

Method public int addCapk(byte[] capk)


Description Append an Capk
Input capk Example:

8
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

emvHandler.addApp(emvHandler .

hexStringToBytes

("9F0605A0000000659F220109DF05

083230303931323331DF060101DF07

0101DF028180B72A8FEF5B27F2B55

0398FDCC256F714BAD497FF56094

B7408328CB626AA6F0E6A9DF8388

EB9887BC930170BCC1213E90FC07

0D52C8DCD0FF9E10FAD36801FE93

FC998A721705091F18BC7C98241C

ADC15A2B9DA7FB963142C0AB640

D5D0135E77EBAE95AF1B4FEFAD

CF9C012366BDDA0455C1564A6881

0D7127676D493890BDDF040103DF

03144410C6D51C2F83ADFD92528F

A6E38A32DF048D0A")

Output
Return

Stuct
Remarks
Example

2.11. Append an Capk

Method public int addCapk(EmvCapk emvCapk)


Description Append an Capk
Input emvCapk Capk object

Output

9
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

Return

Stuct
Remarks
Example

2.12. Get the value of the tag from the

kernel

Method public byte[] getTlvData(int tag)


Description Get the value of the tag from the kernel
Input tag tag, Common EMV transaction tags:

0x95 TVR

0x9B TSI

0x9F34 CVM Results

0xDF31 Issuer Script Result

0x57 Track 2 Equivalent Data

0x5F34 PAN Sequence Number

0x5A PAN

0x5F24 Application Expiration Data

0x8A Authorisation Response Code

Output
Return Get the value of the tag

=null, get error

Stuct
Remarks
Example

10
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

2.13. Set the value of the tag to the kernel

Method public int setTlvData(int tag,byte[] value)


Description Set the value of the tag to the kernel
Input tag tag

value value

Output
Return The value of the EmvResult object

Stuct
Remarks
Example

2.14. Get the value of the tag from the kernel

and package the data in TLV format.

Method public byte[] packageTlvFormKernel(int tag)


Description Get the value of the tag from the kernel and package the data in TLV format.
Input tag tag

Output
Return TLV format data

=null, get error

Stuct
Remarks
Example

11
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

2.15. Packing data in TLV format according to

tag and value

Method public byte[] packageTlv(int tag,byte[] value)


Description Packing data in TLV format according to tag and value
Input tag tag

value value

Output TLV format data

Return

Stuct
Remarks
Example

2.16. Pack TLV list data

Method public byte[] packageTlvList(int[] tags)


Description Pack TLV list data, such as 55 domain data, according to the tag array
Input tags Tag array
Output
Return TLV list data, such as 55 domain data

Stuct
Remarks
Example

12
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

2.17. Find the value of the specified TAG

based on the TLV list data

Method public byte[] findTagValue(byte[] tlvList,int findTag)


Description Find the value of the specified TAG based on the TLV list data

tlvList TLV list data, such as 55 domain return


Input data
findTag tag
Output
Tag value,
Return
=null, not found or parsed error

Stuct
Remarks
Example

2.18. EMV kernel initialization

Method public void kernelInit(EmvTermParam emvTermparam)


Description EMV kernel initialization
Input emvTermparam Terminal parameter

Output
Return
Stuct
Remarks

2.19. Contactless transaction preprocessing

Method public int qTransProProc(byte[] amountAuth)


Description Contactless transaction pre-processing, executed after inputting the amount

13
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

(executed only in the fast payment interface)

Input amountAuth Amount of the transaction

Output
Return The value of the EmvResult object

Stuct
Remarks
Example

2.20. Perform EMV transactions (including

contactless transactions)

public int emvTrans(EmvTransParam


Method emvTransParam,OnEmvListener emvListener,byte[] isEcTrans,
byte[] balance, byte[] transResult)
Description Perform EMV transactions (including contactless transactions)
emvTransParam Transaction parameters
Input
emvListener EMV callback class
When isEcTrans[0]=0x01, it is an
electronic cash transaction (including
contact and contactless)
isEcTrans
When isEcTrans[0]=0x00, it is an Emv
transaction (including contact and
contactless)
Balance, BCD code, 6 bytes, when

balance balance[0] = 0x01, no balance is


Output
obtained

The result of the transaction, returned


in transResult[0], is the value of the
EmvData object
transResult Public static final byte APPROVE_M
= 0x40; //Approve
Public static final byte DECLINE_M
= 0x00; //Declined

14
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

Return The value of the EmvResult object

Stuct
Remarks
Example

2.21. Balance inquiry

Method public int balanceQuery(int transKernalType,OnEmvListener


emvListener,byte[] balance)
Description Balance inquiry,Contact and contactless electronic cash
Input transKernalType The transaction kernel type, the

following values for the EmvData

object:

Public static final byte

KERNAL_EMV_PBOC = 0; //Contact

EMV&PBOC

Public static final byte

KERNAL_CONTACTLESS_ENTRY_

POINT = 1; //contactless to the unified

entry

emvListener Emv callback class

Output balance Balance, BCD code, 6 bytes, when

balance[0] = 0x01, no balance is

obtained

Return The value of the EmvResult object

Stuct
Remarks
Example

15
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

2.22. Read transaction log

Method public int readTransLog(int transKernalType,OnEmvListener


emvListener,byte[] transLogNum,EmvTransLog[] emvTransLog)
Description Read transaction log,Emv and contactless
Input transKernalType The transaction kernel type, the

following values for the EmvData

object:

Public static final byte

KERNAL_EMV_PBOC = 0; //Contact

EMV&PBOC

Public static final byte

KERNAL_CONTACTLESS_ENTRY_

POINT = 1; //contactless to the unified

entry

emvListener Emv callback class

Output transLogNum The number of transaction logs,

returned in transLogNum[0]

emvTransLog An array of transaction log objects.

The size of the array is preferably 10

when defined.

Return The value of the EmvResult object

Stuct
Remarks
Example

16
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

2.23. Get track 2 equivalent data and

Application primary account number(PAN)

Method public int getTrack2AndPAN(String[] track2,String[] pan)


Description Get track 2 equivalent data and Application primary account number(PAN)
EMV/PBOC transactions are obtained (confirmed PAN and later process)

Contactless transaction is obtained when the offline execution is completed or

returned to the online input PIN.

Input
Output track2 Track 2 data, the data is returned in

track2[0]

pan PAN, data is returned in pan[0]

Return The value of the EmvResult object

Stuct
Remarks
Example

2.24. Get CVM type (contactless)

Method public byte getCvmType()


Description Get the CVM type for the contactless transaction result to be online, get the
execution type of CVM

Input
Output
Return the following values for the EmvData

object:

public static final byte


RD_CVM_NO

17
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

=
0x00; //NO CVM
public static final
byte RD_CVM_ONLINE_PIN
= (byte)0x80;
//ONLINE PIN
public static final
byte RD_CVM_SIG
=
0x40; //SIGNATURE
Stuct
Remarks
Example

2.25. Setting PIN BLOCK to the kernel

Method public void setPinBlock(byte[] pinBlock)


Description Setting PIN BLOCK to the kernel
Input pinBlock 8 bytes PIN BLOCK
Output
Return
Stuct
Remarks
Example

2.26. Parsing online response data

Method public int separateOnlineResp(byte[] authRespCode,byte[]

18
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

issuerResp,int issuerRespLen)
Description Parsing online response data
39 domain response code (if the

authorization code is {0x30, 0x30},

authRespCode please set authRespCode={0x30, 0x30,

Input 0x00}; if there is no response code,

please set authRespCode= {0x00})

issuerResp Issuer response data, 55 domain

issuerRespLen Issuer response data length

Output
The following values for the
EmvResult object:
Public static final int EMV_OK =
0; //OK
Public static final int
EMV_ONLINE_FAILED = -20;
Return //Unsuccessful online connection failed
Public static final int
EMV_ONLINE_NORESP_MAC_OR
_RECV_ERR = -38; // Online
unsuccessful, no response online or
return MAC error or receive data error,
correct
Stuct
Remarks
Example

19
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

3. OnEmvListener Callback class

Get the object of the OnEmvListener class:


OnEmvListener onEmvListener = new OnEmvListener() {
//……
}

3.1. Sending and receiving APDU callback

Method byte[] onExchangeApdu(byte[] send);

Description Sending and receiving APDU


This method is called back only when the EMV terminal parameter

and the kernel initialize kernelInit(), setting

EmvTermParam.useCallbackApdu to 0x01 (using the callback

function to send and receive APDUs).

Input send APDU command sent

Output
Return The APDU data of the response,

Return null if communication error or

no response or response timeout

Stuct
Remarks

3.2. Select application callback

Method int onSelApp(String[] appLabelList);


Description Select the app list,
EMV/PBOC transactions, which are executed when there are

20
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

multiple applications;
Contactlss do not execute this callback

Input appLabelList Application Label array

Output
Return Public static final int EMV_OK =

0; //OK

Public static final int

EMV_USER_CANCEL = -7;

//transaction cancellation

Public static final int

EMV_TIME_OUT = -8; //user

operation timed out

Stuct
Remarks

3.3. Confirm PAN callback

Method int onConfirmCardNo(String cardNo);


Description Confirm the PAN,
EMV/PBOC transaction, callback when the card number is obtained when the

application record is completed;

Contactless do not execute this callback

Input cardNo PAN

Output
Return Public static final int EMV_OK =

0; //OK

Public static final int

EMV_USER_CANCEL = -7;

//transaction cancellation

Public static final int

21
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

EMV_TIME_OUT = -8; //user

operation timed out

Stuct
Remarks

3.4. Enter PIN callback

Method int onInputPIN(byte pinType);


Description Enter the PIN ,
Need to adjust the input online PIN, call setPinBlock () method to set the PIN

BLOCK to the kernel;

If it is contactless transaction, if you want to enter a PIN, you need to call

getTrack2AndPAN() to get PAN;

If it is a contactless transaction, you need to call getCvmType() to get the

cardholder authentication type as online PIN (EmvData.

RD_CVM_ONLINE_PIN) to execute the input online PIN. If you want to force the

online PIN, you do not need to judge this.

Input pinType PIN type:


The following values for the EmvData

object:

public static final byte


ONLINE_ENCIPHERED_PIN =
0x00;
public static final byte
OFFLINE_PLAINTEXT_PIN =
0x01;
public static final byte

OFFLINE_ENCIPHERED_PIN =

0x02;

Output

22
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

Return The following values for the The

following values for the EmvResult

object:

Public static final int EMV_OK =

0; //OK

Public static final int

EMV_USER_CANCEL = -7;

//transaction cancellation

Public static final int

EMV_TIME_OUT = -8; //user

operation timed out

Public static final int

EMV_NO_PASSWORD = -32; //No

password or no password

Stuct
Remarks

3.5. Cardholder ID verification callback

Method int onCertVerify(int certType,String certNo);


Description Cardholder ID verification ,
EMV/PBOC transactions, verifying callbacks when cardholder credentials need to

be executed;

Contactless do not execute this callback

Input certType ID type (0~5), corresponding to the

following values

0x00: ID card

0x01: Military officer card

0x02: Passport

0x03: Entry permit

23
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

0x04: Temporary ID card

0x05: Other

certNo Certificate number

Output
Return The following values for the

EmvResult object:

Public static final int EMV_OK =

0; //OK

Public static final int

EMV_USER_CANCEL = -7;

//transaction cancellation

Public static final int

EMV_TIME_OUT = -8; //user

operation timed out

Stuct
Remarks

3.6. Online processing callback

Method int onlineProc();


Description Online processing,
When returning the issuer data online, you need to call the separateOnlineResp()

method to update the issuer data to the kernel for processing.

If the connection is successful, the issuing bank authorization response code [8A]

returns the rejection, please return to EMV_ONLINE_RESP_AAC;

Input
Output
Return The following values for the

EmvResult object:
Public static final int EMV_OK

24
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

= 0; //OK

Public static final int

EMV_ONLINE_FAILED = -20;

//Unsuccessful online

connection failed

Public static final int

EMV_ONLINE_NORESP_MAC_OR_RECV_

ERR = -38; // Online

unsuccessful, no response

online or return MAC error or

receive data error, correct

Public static final int

EMV_ONLINE_RESP_AAC = -40;

//Online success, online

authorization response code

returns rejection

Stuct
Remarks

25
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

4. Annex

4.1. Terminal parameter class

public class EmvTermParam


{
public static String ifd = "12345678"; //9F1E
public static String terminalCountry = "0156";
//9F1A
public static byte termType = 0x22;
//9F35
public static String termCapa = "E0E9C8"; //9F33 PBOC:"E0E9C8"
EMV:"E0F8C8"
public static String addTermCapa = "6000F0A001"; //9F40
public static String merchantNameLocation = "SZZCS";
//9F4E max:40byte
public static String merchantCode = "3031";
//9F15
public static String merchantID = "123456789012345"; //9F16
max:15byte
public static String acquirerID = "1234567890";
//9F01
public static String termID = "12345678"; //9F1C
max:8byte
public static byte tranRefCurrExp = 0x02;;
//9F3D =
public static String tranRefCurr = "0156";
//9F3C
public static byte tranCurrExp = 0x02;
//5F36
public static String tranCurrCode = "0156";
//5F2A
public static byte hostType = 0x00;
public static byte termSMSupportIndicator = 0x00;
public static byte termFLmtFlg = 0x01;
//Terminal Floor Limit flag 9F1B (qPBOC is generally 1) =0 no check,
=1 check
public static byte rfTxnLmtFlg = 0x01;

26
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

//Reader Contactless Transaction Limit flag DF20(qPBOC is generally


1) =0 no check, =1 check
public static byte rfFLmtFlg = 0x01;
//Reader Contactless Floor Limit flag DF19(qPBOC is generally 1) =0
no check, =1 check
public static byte rfCVMLmtFlg = 0x01;
//Reader CVM Required Limit flag DF21(qPBOC is generally 1) =0 no
check, =1 check
public static byte rfStatusCheckFlg = 0x00;
//Status Check Support flag(qPBOC is generally 0) =1 If the
authorized amount is 1, then 9F66 requires online ciphertext
public static byte rfZeroAmtNoAllowed = 0x01;
//Zero Amount Allowed flag(qPBOC is generally 0) =0 no check, 1 check
if the authorized amount is 0, then 9F66 requires online ciphertext
public static byte printfDebugInfo = 0x01;
//show debug =0x0 do not show =0x01 show
public static byte useFangba = 0x00; //
public static byte emvTest = 0x00;
//function =0x00unionPay, =0x01EMV, =0x02PBOC, =0x03qPBOC,
=0x04qUICS,=0x05PayWare,=0x06PayPass
public static byte useCallBackApdu = 0x00;
//Callback APDU =0Not enabled =1enabled
public static String emvParamFilePath =
Environment.getExternalStorageDirectory().getPath()+"/emv/";//EMV parameter
file path
}

4.1. Transaction parameter class

public class EmvTransParam {


private byte transKernalType = 0x00;
// kernel type(=0 EMV/PBOC, =1 contactless)
private byte terminalSupportIndicator = 0x00;
private byte isForceOnline = 0x00;
// Whether to force online, =1 yes =0 no
private byte isSimpleFlow = 0x00;
// For EMV/PBOC, =0 complete process, =1 simple process (only go
to read record)
private String readerTTQ = "26000080";
//9F66
private String transNo = "00000001";
//9F41

27
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

private String transDate = DateToStr(new Date(), "yyMMdd"); //9A


YYMMDD
private String transTime = DateToStr(new Date(), "HHmmss"); //9F21
private String amountAuth = "000000000001";
//9F02
private String amountOther = "000000000000";
//9F03
private byte transType;
//9C
}

4.2. AID parameter class

public class EmvApp {


private String aid; //9F06 HEX string
private byte selFlag; //DF01 (=0 partial match, =1
exact match)
private byte targetPer; //DF17
private byte maxTargetPer; //DF16
private int floorLimit; //9F1B HEX
private byte onLinePINFlag; //DF18 (=0 not supported, =1 support)
private int threshold; //DF15
private String tacDefault; //DF11 HEX string
private String tacDenial; //DF13 HEX string
private String tacOnline; //DF12 HEX string
private String dDOL; //DF14 HEX string
private String tDOL; //97 HEX string
private String version; //9F09 HEX string
private String clTransLimit; //DF20 HEX string(6byte)
private String clOfflineLimit; //DF19 HEX string(6byte)
private String clCVMLimit; //DF21 HEX string(6byte)
private String ecTTLVal; //9F7B HEX string(6byte)
}

4.3. CAPK parameter class

public class EmvCapk {


private String rid; //9F06
private byte keyID; //9F22

28
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

private byte hashIndicator; //DF06


private byte capkIndicator; //DF07
private String modul; //DF02 HEX String
private String exponent; //DF04 HEX String
private String expDate; //DF05 HEX String(yyyymmdd)
private String checkSum; //DF03 HEX String sha1
}

4.4. Transaction log class

public class EmvTransLog {


private String cardAMT;//0x9F02 HEX string(6byte)
private String otherAMT;// 0x9F03 HEX string(6byte)
private String cardATC;// 9F36 HEX string
private byte transType;// 9C
private String termCountry;// 9F1A HEX string
private String transCurrency;// 5F2A HEX string
private String transDate;// 9A HEX string(YYMMDD)
private String transTime;// 9F21 HEX string(HHMMSS)
private String merchantName;// 9F4E HEX String format.
}

4.5. EMV Result Class

package com.zcs.sdk.emv;

public class EmvResult {


public static final int EMV_OK = 0;
public static final int ICC_CMD_ERR = -1;
public static final int EMV_PARAM_ERR = -2;
public static final int ICC_BLOCK = -3;
public static final int ICC_RSP_ERR = -4;
public static final int EMV_APP_BLOCK = -5;
public static final int EMV_NO_APP = -6;
public static final int EMV_USER_CANCEL = -7;

29
Shenzhen ZCS Technology Co., Ltd EMV Interface Description

public static final int EMV_TIME_OUT = -8;


public static final int EMV_DATA_ERR = -9;
public static final int EMV_NOT_ACCEPT = -10;
public static final int EMV_KEY_EXP = -12;
public static final int EMV_DATETIME_ERR = -13;
public static final int EMV_FILE_ERR = -14;
public static final int EMV_SUM_ERR = -15;
public static final int EMV_NOT_FOUND = -16;
public static final int EMV_DATA_AUTH_FAIL = -17;
public static final int EMV_NOT_MATCH = -18;
public static final int EMV_NO_TRANS_LOG = -19;
public static final int EMV_ONLINE_FAILED = -20;
public static final int EMV_NOT_ORG_ICC = -21;
public static final int ICC_RSP_6985 = -22;
public static final int EMV_EXCP_FILE = -23;
public static final int EMV_USE_CONTACT = -24;
public static final int EMV_CARD_EXPIRED = -25;
public static final int EMV_TERMINATE = -26;
public static final int EMV_BALANCE_ERR = -27;
public static final int EMV_NOT_PAY = -28;
public static final int EMV_ALREADY_PAY = -29;
public static final int EMV_BALANCE_NOT_ENOUGH = -30;
public static final int EMV_DECLINE = -31;
public static final int EMV_NO_PASSWORD = -32;
public static final int EMV_FANGBA = -33;
public static final int EMV_NO_PINPAD_OR_ERR = -34;
public static final int EMV_NOT_QPBOC = -35;
public static final int EMV_NOT_SUPPORT = -36;
public static final int ICC_RSP_6986 = -37;
public static final int EMV_ONLINE_NORESP_MAC_OR_RECV_ERR = -38;
public static final int EMV_NO_ONLINE = -39;
public static final int EMV_ONLINE_RESP_AAC = -40;

public static final int EMV_PARSING_ERROR = -73;


}

30

You might also like