You are on page 1of 31

深圳中磁计算机技术有限公司 EMV 接口说明

EMV




深圳中磁计算机技术有限公司

1
深圳中磁计算机技术有限公司 EMV 接口说明

版本修订历史记录:

版本号 作者 参与者 发布日期 备注


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

2
深圳中磁计算机技术有限公司 EMV 接口说明

目录
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. EMV 返回结果类...................................................................................................................23

3
深圳中磁计算机技术有限公司 EMV 接口说明

1. EMV 交易流程图

4
深圳中磁计算机技术有限公司 EMV 接口说明

2. EMV 类

获取 EMV 类的对象:
EmvHandler emvHandler = EmvHandler.getInstance();

2.1. 获取 EMV 内核版本号

方法名 public String getKernelVersion()


描述 读取 EMV 内核版本号

输入参数
输出参数
返回 EMV 内核版本号

数据结构
备注

2.2. 删除所有 AID

方法名 public void delAllApp()


描述 删除所有 AID

输入参数
输出参数
返回
数据结构
备注

示例

5
深圳中磁计算机技术有限公司 EMV 接口说明

2.3. 删除所有 CAPK

方法名 public void delAllCapk()


描述 删除所有 CAPK

输入参数

输出参数
返回

数据结构
备注
示例

2.4. 获取 AID 总数

方法名 public int getAppNum()


描述 获取 AID 总数

输入参数
输出参数
返回 AID 列表总数

数据结构
备注
示例

2.5. 获取 Capk 总数

方法名 public int getAppCapk()


描述 获取 Capk 总数

输入参数
输出参数

6
深圳中磁计算机技术有限公司 EMV 接口说明

返回 Capk 总数

数据结构
备注
示例

2.6. 根据索引号获取一条 AID

方法名 public byte[] getApp(int index)


描述 根据索引号获取一条 AID

输入参数 index 索引号(从 0 开始)

输出参数
返回 一串 TLV 格式的 AID 数据
=null,获取错误
数据结构
备注

2.7. 根据索引号获取一条 Capk

方法名 public byte[] getCapk(int index)


描述 根据索引号获取一条 Capk

输入参数 index 索引号(从 0 开始)

输出参数
返回 一串 TLV 格式的 Capk 数据
=null,获取错误
数据结构
示例

2.8. 追加一条 AID

方法名 public int addApp(byte[] aid)

7
深圳中磁计算机技术有限公司 EMV 接口说明

描述 追加一条 AID

输入参数 aid AID T LV 结构列表 如:


emvHandler.addApp(emvHandler .hex
StringToBytes("9F0607A00000000430
60DF0101009F08020002DF1105FC50
58A000DF1205F85058F800DF13050
4000000009F1B0400000000DF15040
0000000DF160199DF170199DF14039
F3704DF180101DF200600099999999
9"));
输出参数
返回

数据结构
备注

2.9. 追加一条 AID

方法名 public int addApp(EmvApp emvApp)


描述 追加一条 AID

输入参数 emvApp 应用列表对象

输出参数
返回

数据结构
备注

2.10. 追加一条 Capk

方法名 public int addCapk(byte[] capk)


描述 追加一条 Capk

8
深圳中磁计算机技术有限公司 EMV 接口说明

输入参数 capk capk T LV 结构列表,如

emvHandler.addApp(emvHandler .

hexStringToBytes

("9F0605A0000000659F220109DF05

083230303931323331DF060101DF07

0101DF028180B72A8FEF5B27F2B55

0398FDCC256F714BAD497FF56094

B7408328CB626AA6F0E6A9DF8388

EB9887BC930170BCC1213E90FC07

0D52C8DCD0FF9E10FAD36801FE93

FC998A721705091F18BC7C98241C

ADC15A2B9DA7FB963142C0AB640

D5D0135E77EBAE95AF1B4FEFAD

CF9C012366BDDA0455C1564A6881

0D7127676D493890BDDF040103DF

03144410C6D51C2F83ADFD92528F

A6E38A32DF048D0A")

输出参数
返回

数据结构
备注
示例

2.11. 追加一条 Capk

方法名 public int addCapk(EmvCapk emvCapk)


描述 追加一条 CAPK

输入参数 emvCapk Capk 对象

9
深圳中磁计算机技术有限公司 EMV 接口说明

输出参数
返回

数据结构
备注
示例

2.12. 从内核获取 tag 的值

方法名 public byte[] getTlvData(int tag)


描述 从内核获取 tag 的值

输入参数 tag tag,如常用 EMV 交易 tag:

0x95 终端验证结果

0x9B 交易状态信息

0x9F34 CVM 结果

0xDF31 发卡行脚本处理结果

0x57 二磁道数据

0x5F34 卡片序列号

0x5A 银行卡号

0x5F24 有效期

0x8A 授权响应码

输出参数
返回 获取 tag 的值

=null,获取错误

数据结构
备注
示例

10
深圳中磁计算机技术有限公司 EMV 接口说明

2.13. 设置 tag 的值到内核

方法名 public int setTlvData(int tag,byte[] value)


描述 设置 tag 的值到内核

输入参数 tag tag:如 0x9F02

value 值

输出参数
返回 EmvResult 对象的值

数据结构
备注
示例

2.14. 从内核获取 tag 的值,并打包 TLV 格式的数

方法名 public byte[] packageTlvFormKernel(int tag)


描述 从内核获取 tag 数据,打包 TLV 格式的数据

输入参数 tag tag

输出参数
返回 TLV 格式数据

=null,获取错误

数据结构
备注
示例

2.15. 根据 tag 和 value,打包 TLV 格式的数据

方法名 public byte[] packageTlv(int tag,byte[] value)

11
深圳中磁计算机技术有限公司 EMV 接口说明

描述 根据 tag 和 value,打包 TLV 格式的数据

输入参数 tag tag

value 值

输出参数 TLV 格式数据

返回

数据结构
备注
示例

2.16. 打包 TLV 列表数据

方法名 public byte[] packageTlvList(int[] tags)


描述 根据 tag 数组,打包 TLV 列表数据,如 55 域数据

输入参数 tags tag 数组


输出参数
返回 TLV 列表数据,如 55 域数据

数据结构
备注
示例

2.17. 根据 TLV 列表数据,查找指定的 TAG 的值

方法名 public byte[] findTagValue(byte[] tlvList,int findTag)


描述 根据 TLV 列表数据,查找指定的 TAG,得到 Tag 的值

tlvList TLV 列表数据,如 55 域返回数据


输入参数
findTag 指定的 tag
输出参数
Tag 的值,
返回
=null,未找到或解析错误

12
深圳中磁计算机技术有限公司 EMV 接口说明

数据结构
备注
示例

2.18. EMV 内核初始化

方法名 public void kernelInit(EmvTermParam emvTermparam)


描述 EMV 终端参数和内核初始化

输入参数 emvTermparam 终端参数

输出参数
返回
数据结构
备注

2.19. 非接交易预处理

方法名 public int qTransProProc(byte[] amountAuth)


描述 非接交易预处理,在输入金额后执行(只在快速支付界面下执行)

输入参数 amountAuth 交易金额

输出参数
返回 EmvResult 对象的值

数据结构
备注
示例

2.20. 执行 EMV 交易(包括非接交易)

方法名 public int emvTrans(EmvTransParam


emvTransParam,OnEmvListener emvListener,byte[] isEcTrans,

13
深圳中磁计算机技术有限公司 EMV 接口说明

byte[] balance, byte[] transResult)


描述 EMV 交易完整流程(包括非接交易)

emvTransParam 交易参数
输入参数
emvListener Emv 回调类
当 isEcTrans[0]=0x01, 为电子现金交
isEcTrans
易(包含接触与非接)
余额 BCD 码,6 字节,当 balance[0] =
balance
0x01 时为没有获得到余额

交易结果,在 transResult[0]返回,为
输出参数 EmvData 对象以下值
public static final byte
APPROVE_M =
transResult
0x40; //批准
public static final byte
DECLINE_M =
0x00; //拒绝
返回 EmvResult 对象的值

数据结构
备注
示例

2.21. 余额查询

方法名 public int balanceQuery(int transKernalType,OnEmvListener


emvListener,byte[] balance)
描述 余额查询,接触式和非接式电子现金

输入参数 transKernalType 交易内核类型,EmvData 对象以下值:

public static final byte

KERNAL_EMV_PBOC =

0; //接触式 EMV&PBOC

public static final byte

KERNAL_CONTACTLESS_ENTRY_

14
深圳中磁计算机技术有限公司 EMV 接口说明

POINT = 1; //非接统一入口

emvListener Emv 回调类

输出参数 balance 余额 BCD 码,6 字节,当 balance[0] =

0x01 时为没有获取到余额

返回 EmvResult 对象的值

数据结构
备注
示例

2.22. 读交易日志

方法名 public int readTransLog(int transKernalType,OnEmvListener


emvListener,byte[] transLogNum,EmvTransLog[] emvTransLog)
描述 读交易日志

输入参数 transKernalType 交易内核类型,EmvData 对象以下值:

public static final byte

KERNAL_EMV_PBOC =

0; //接触式 EMV&PBOC

public static final byte

KERNAL_CONTACTLESS_ENTRY_

POINT = 1; //非接统一入口

emvListener Emv 回调类

输出参数 transLogNum 交易日志笔数,在 transLogNum[0]中

返回

emvTransLog 交易日志对象数组,定义时数组大小

最好为 10

返回 EmvResult 对象的值

数据结构
备注
示例

15
深圳中磁计算机技术有限公司 EMV 接口说明

2.23. 获取二磁道信息和银行卡号

方法名 public int getTrack2AndPAN(String[] track2,String[] pan)


描述 获取二磁道数据和银行卡号
EMV/PBOC 交易在(确认卡号及以后的过程)获取

非接交易在脱机执行完成后获取或返回联机输入 PIN 时获取

输入参数
输出参数 track2 二磁道数据,数据在 track2[0]返回

pan 银行卡号, 数据在 pan[0]返回

返回 EmvResult 对象的值

数据结构
备注
示例

2.24. 获取 CVM 类型(非接专用)

方法名 public byte getCvmType()


描述 获取 CVM 类型,用于非接交易结果为联机,得到 CVM 的执行类型

输入参数
输出参数
返回 EmvData 对象以下值:
public static final byte
RD_CVM_NO
=
0x00; //无
public static final
byte RD_CVM_ONLINE_PIN
= (byte)0x80;
16
深圳中磁计算机技术有限公司 EMV 接口说明

//联机 PIN
public static final
byte RD_CVM_SIG
=
0x40; //签名
数据结构
备注
示例

2.25. 将 PIN BLOCK 设置到内核

方法名 public void setPinBlock(byte[] pinBlock)


描述 执行输入联机 PIN 后,将 PIN BLOCK 设置到内核

输入参数 pinBlock 8 字节 PIN BLOCK


输出参数
返回
数据结构
备注
示例

2.26. 解析联机响应数据

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


方法名
issuerResp,int issuerRespLen)
描述 解析联机响应数据

输入参数 authRespCode 39 域应答码(如授权码为{0x30,0x30},

请置

authRespCode={0x30,0x30,0x00};没

17
深圳中磁计算机技术有限公司 EMV 接口说明

有应答码,请置 authRespCode=

{0x00})

issuerResp 发卡行响应数据,55 域

issuerRespLen 发卡行响应数据长度

输出参数
EmvResult 对象的以下值:

public static final int EMV_OK

= 0; //OK

public static final int

EMV_ONLINE_FAILED = -20;
返回
//联机不成功,连接主机失败

public static final int


EMV_ONLINE_NORESP_MAC_OR_R
ECV_ERR = -38; //联机不成功,联
机无响应或返回 MAC 错误或接收数
据错误,冲正
数据结构
备注
示例

18
深圳中磁计算机技术有限公司 EMV 接口说明

3. OnEmvListener 回调类

获取 OnEmvListener 类的对象:
OnEmvListener onEmvListener = new OnEmvListener() {
//……
}

3.1. 发送接收 APDU 回调

方法名 byte[] onExchangeApdu(byte[] send);

描述 发送接收 APDU,
只有在 EMV 终端参数和内核初始化 kernelInit()时,将

EmvTermParam.useCallbackApdu 设置为 0x01(使用回调函数发送接收

APDU),会回调此方法

输入参数 send 发送的 APDU 命令

输出参数
返回 响应的 APDU 数据,

通讯错误或无响应或响应超时请返

回 null

数据结构
备注

3.2. 选择应用回调

方法名 int onSelApp(String[] appLabelList);


描述 选择应用列表,
EMV/PBOC 交易,有多个应用时会执行此回调;

19
深圳中磁计算机技术有限公司 EMV 接口说明

非接不执行此回调

输入参数 appLabelList 应用标签数组

输出参数
返回 EmvResult 对象的以下值:

public static final int EMV_OK

= 0; //OK

public static final int

EMV_USER_CANCEL = -7;

//交易取消

public static final int

EMV_TIME_OUT = -8;

//用户操作超时

数据结构
备注

3.3. 确认卡号回调

方法名 int onConfirmCardNo(String cardNo);


描述 确认卡号,

EMV/PBOC 交易,读应用记录完成时得到卡号时回调;
非接不执行此回调

输入参数 cardNo 银行卡号

输出参数
返回 EmvResult 对象的以下值:

public static final int EMV_OK

= 0; //OK

public static final int

EMV_USER_CANCEL = -7;

//交易取消

public static final int

20
深圳中磁计算机技术有限公司 EMV 接口说明

EMV_TIME_OUT = -8;

//用户操作超时

数据结构
备注

3.4. 输入 PIN 回调

方法名 int onInputPIN(byte pinType);


描述 输入 PIN 回调,

需调在输入联机 PIN 后,调用 setPinBlock()方法将 PIN BLOCK 设置到内核;

如果是非接交易,如要输入 PIN,需调用 getTrack2AndPAN()得到卡号;

如果是非接交易,需调用 getCvmType()得到持卡人验证类型是否为联机

PIN(EmvData. RD_CVM_ONLINE_PIN),来执行输入联机 PIN,如果要强制输入

联机 PIN,则不用此判断

输入参数 pinType PIN 类型:


EmvData 对象的以下值
public static final byte
ONLINE_ENCIPHERED_PIN =
0x00; //联机密文PIN
public static final byte
OFFLINE_PLAINTEXT_PIN =
0x01; //脱机明文PIN
public static final byte

OFFLINE_ENCIPHERED_PIN =

0x02; //脱机密文 PIN

输出参数
返回 EmvResult 对象的以下值:

public static final int EMV_OK

= 0; //OK

public static final int

21
深圳中磁计算机技术有限公司 EMV 接口说明

EMV_USER_CANCEL = -7;

//交易取消

public static final int

EMV_TIME_OUT = -8;

//用户操作超时

public static final int

EMV_NO_PASSWORD = -32;

//没有密码或未输入密码

数据结构
备注

3.5. 持卡人证件验证回调

方法名 int onCertVerify(int certType,String certNo);


描述 持卡人证件验证回调,

EMV/PBOC 交易,当需要执行持卡人证件时验证回调;

非接不执行此回调

输入参数 certType 证件类型(0~5),对应以下值

0x00:身份证

0x01:军官证

0x02:护照

0x03:入境证

0x04:临时身份证

0x05:其它

certNo 证件号

输出参数
返回 EmvResult 对象的以下值:

public static final int EMV_OK

= 0; //OK

public static final int

22
深圳中磁计算机技术有限公司 EMV 接口说明

EMV_USER_CANCEL = -7;

//交易取消

public static final int

EMV_TIME_OUT = -8;

//用户操作超时

数据结构
备注

3.6. 联机处理回调

方法名 int onlineProc();


描述 联机处理,

当联机返回发卡行数据时,需要调用 separateOnlineResp()方法将发卡行数据更

新到内核进行处理;

如联机成功,发卡行授权响应码[8A]返回拒绝,请返回

EMV_ONLINE_RESP_AAC;

输入参数
输出参数
返回 EmvResult 对象的以下值:
public static final int
EMV_OK
= 0; //OK
public static final int
EMV_ONLINE_FAILED =
-20; //联机不成功,连接主
机失败
public static final int
EMV_ONLINE_NORESP_MAC_OR_RECV_
ERR = -38; //联机不成功,联机无
响应或返回MAC错误或接收数据错误,
冲正
public static final int

EMV_ONLINE_RESP_AAC

= -40; //联机成

23
深圳中磁计算机技术有限公司 EMV 接口说明

功,联机授权响应码返回拒绝

数据结构
备注

24
深圳中磁计算机技术有限公司 EMV 接口说明

4. 附录

4.1. 终端参数类

public class EmvTermParam


{
public static String ifd = "12345678"; //9F1E 设备
序列号,ASC 以 0x00 结束 max:8byte
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 商户名,ASC 码以 0x00 结束 max:40byte
public static String merchantCode = "3031";
//9F15 商户分类号 BCD
public static String merchantID = "123456789012345"; //9F16
商户号,应用以 0x00 结束 max:15byte
public static String acquirerID = "1234567890";
//9F01 收单行 BCD
public static String termID = "12345678"; //9F1C 终端
标识(终端号),ASC 以 0x00 结束 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;


//=0 标准,=1BCTC 测试后台

25
深圳中磁计算机技术有限公司 EMV 接口说明

public static byte termSMSupportIndicator = 0x00; // 终


端是否支持 SM 算法 =0 不支持 =1 支持
public static byte termFLmtFlg = 0x01;
//非接读卡器是否支持终端最低限额检查 9F1B (qPBOC 一般为 1) =0 不检查,=1 检

public static byte rfTxnLmtFlg = 0x01;
//非接读卡器是否支持交易限额检查 DF20(qPBOC 一般为 1) =0 不检查,=1 检查
public static byte rfFLmtFlg = 0x01;
//非接读卡器是否支持脱机最低限额检查 DF19(qPBOC 一般为 1) =0 不检查,=1 检查
public static byte rfCVMLmtFlg = 0x01;
//非接读卡器是否支持 CVM 执行限额检查 DF21(qPBOC 一般为 1) =0 不检查,=1 检查

public static byte rfStatusCheckFlg = 0x00;


//非接读卡器是否支持状态检查(qPBOC 一般为 0) =1 若授权金额为 1,则 9F66 要求联
机密文
public static byte rfZeroAmtNoAllowed = 0x01; // 非
接交易 0 金额检查(qPBOC 一般为 0) =0 不检查,=1 检查若授权金额为 0,则 9F66 要求联机密

public static byte printfDebugInfo = 0x01; // 打


印调试信息 =0x0 不打印 =0x01 打印
public static byte useFangba = 0x00; // 启
用闪卡(防拔)功能 =0x0 不启用 =0x01 启用
public static byte emvTest = 0x00; // 特
殊 功 能 =0x00unionPay, =0x01EMV, =0x02PBOC, =0x03qPBOC,
=0x04qUICS,=0x05PayWare,=0x06PayPass
public static byte useCallBackApdu = 0x00; //使
用回调函数发送接收 APDU =0 不启用 =1 启用
public static String emvParamFilePath =
Environment.getExternalStorageDirectory().getPath()+"/emv/";//EMV 参 数 文 件 路

}

4.1. 交易参数类

public class EmvTransParam {


private byte transKernalType = 0x00;
// 本交易走的内核类型(=0接触式EMV/PBOC, =1非接)
private byte terminalSupportIndicator = 0x00;
//9F7A 电子现金终端支持指示器,用于EMV/PBOC中 =0借贷记 =1电子现金
,qPBOC不用设置
private byte isForceOnline = 0x00;

26
深圳中磁计算机技术有限公司 EMV 接口说明

// 是否强制联机, EMV/PBOC =1 强制联机(如余额查询需要);非接


=1 ,如果消费金额<电子现金余额,也执行联机(不走脱机交易)
private byte isSimpleFlow = 0x00;
// 用于EMV/PBOC中 =0完整流程 =1 简易流程(只走到read record)

private String readerTTQ = "26000080";


//9F66 终端交易性能 (如:qPBOC请设置 "26000080")
private String transNo = "00000001";
//9F41 交易流水号(如:"00000001"),用于消费交易,余额查询不用设置
private String transDate = DateToStr(new Date(), "yyMMdd"); //9A
交易日期 YYMMDD (如:"180601")
private String transTime = DateToStr(new Date(), "HHmmss"); //9F21
交易时间 HHMMS (如:"120000")
private String amountAuth = "000000000001";
//9F02 授权金额(交易金额) (如:1元表示为"000000000100")
private String amountOther = "000000000000";
//9F03 其他金额(返现金额) (如:0元表示为"000000000000")

private byte transType;


//9C 交易类型 一般为 0x00 ,返现请设置 0x14
}

4.2. AID 参数类

public class EmvApp {


private String aid; //9F06 应用ID
private byte selFlag; //DF01 应用选择指示符(ASI)(=0
部分匹配,=1完全匹配)
private byte targetPer; //DF17 随机百分比
private byte maxTargetPer; //DF16 随机最大百分比
private int floorLimit; //9F1B 终端最低限额HEX
private byte onLinePINFlag; //DF18 终端联机PIN支持能力(=0不支持,=1
支持)
private int threshold; //DF15 随机选择阀值
private String tacDefault; //DF11 缺省
private String tacDenial; //DF13 拒绝
private String tacOnline; //DF12 联机
private String dDOL; //DF14 缺省DDOL
private String tDOL; //97 缺省TDOL
private String version; //9F09 应用版本号
private String clTransLimit; //DF20 非接最低限额

27
深圳中磁计算机技术有限公司 EMV 接口说明

private String clOfflineLimit; //DF19 非接脱机最低限额


private String clCVMLimit; //DF21 非接CVM最低限额
private String ecTTLVal; //9F7B 电子现金交易限额
}

4.3. Capk 参数类

public class EmvCapk {


private String rid; //9F06 与认证中心公钥索引一起标识认证中
心的公钥
private byte keyID; //9F22 认证中心公钥索引
private byte hashIndicator; //DF06 认证中心公钥哈什算法标识
private byte capkIndicator; //DF07 认证中心公钥算法标识
private String modul; //DF02 认证中心公钥模 变长,最大为248
private String exponent; //DF04 认证中心公钥指数
private String expDate; //DF05 认证中心公钥有效期(yyyymmdd)

private String checkSum; //DF03 认证中心公钥校验值 sha1

4.4. 交易日志类

public class EmvTransLog {


private String cardAMT;// 授权金额 0x9F02
private String otherAMT;// 其他金额 0x9F03
private String cardATC;// 9F36 应用交易计数器(ATC)
private byte transType;// 9C 交易类型
private String termCountry;// 9F1A 终端国家代码
private String transCurrency;// 5F2A 交易货币代码
private String transDate;// 9A 交易日期
private String transTime;// 9F21 交易时间
private String merchantName;// 9F4E 商户名称 HEX 格式(如,0x31,为"31")
}

28
深圳中磁计算机技术有限公司 EMV 接口说明

4.5. EMV 返回结果类

package com.zcs.sdk.emv;

public class EmvResult {


//错误码
public static final int EMV_OK = 0;
//OK
public static final int ICC_CMD_ERR = -1;
//IC卡通讯错误
public static final int EMV_PARAM_ERR = -2;
//EMV参数错误
public static final int ICC_BLOCK = -3;
//IC卡锁卡
public static final int ICC_RSP_ERR = -4;
//IC卡响应错误
public static final int EMV_APP_BLOCK = -5; //
应用已锁
public static final int EMV_NO_APP = -6; //
卡片没有终端支持的应用
public static final int EMV_USER_CANCEL = -7; //
交易取消
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; //
读写EMV文件错误
public static final int EMV_SUM_ERR = -15; //
认证中心公钥校验失败
public static final int EMV_NOT_FOUND = -16; //
读EMV文件没有找到相应的记录
public static final int EMV_DATA_AUTH_FAIL = -17; //

29
深圳中磁计算机技术有限公司 EMV 接口说明

脱机数据认证失败
public static final int EMV_NOT_MATCH = -18; //
两数据不匹配(如2磁的卡号与Tag:5A卡号等)
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;
//GAC中卡片回送6985, 由应用决定是否fallback
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;
//GPO返回6986, 提示持卡人查验手机,立即下电,在1-1.5s提示重新挥卡
public static final int EMV_ONLINE_NORESP_MAC_OR_RECV_ERR = -38; //
联机不成功,联机无响应或返回MAC错误或接收数据错误,冲正
public static final int EMV_NO_ONLINE = -39; //

30
深圳中磁计算机技术有限公司 EMV 接口说明

未联机
public static final int EMV_ONLINE_RESP_AAC = -40;
//联机成功,联机授权响应码返回拒绝
public static final int EMV_PARSING_ERROR = -73; //
解析卡片数据错误
}

31

You might also like