Professional Documents
Culture Documents
SmartPosAndroidSDK EMV - V2.0.0 - 20190312
SmartPosAndroidSDK EMV - V2.0.0 - 20190312
EMV
接
口
说
明
深圳中磁计算机技术有限公司
1
深圳中磁计算机技术有限公司 EMV 接口说明
版本修订历史记录:
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();
输入参数
输出参数
返回 EMV 内核版本号
数据结构
备注
输入参数
输出参数
返回
数据结构
备注
示例
5
深圳中磁计算机技术有限公司 EMV 接口说明
输入参数
输出参数
返回
数据结构
备注
示例
2.4. 获取 AID 总数
输入参数
输出参数
返回 AID 列表总数
数据结构
备注
示例
2.5. 获取 Capk 总数
输入参数
输出参数
6
深圳中磁计算机技术有限公司 EMV 接口说明
返回 Capk 总数
数据结构
备注
示例
输出参数
返回 一串 TLV 格式的 AID 数据
=null,获取错误
数据结构
备注
输出参数
返回 一串 TLV 格式的 Capk 数据
=null,获取错误
数据结构
示例
7
深圳中磁计算机技术有限公司 EMV 接口说明
描述 追加一条 AID
数据结构
备注
输出参数
返回
数据结构
备注
8
深圳中磁计算机技术有限公司 EMV 接口说明
emvHandler.addApp(emvHandler .
hexStringToBytes
("9F0605A0000000659F220109DF05
083230303931323331DF060101DF07
0101DF028180B72A8FEF5B27F2B55
0398FDCC256F714BAD497FF56094
B7408328CB626AA6F0E6A9DF8388
EB9887BC930170BCC1213E90FC07
0D52C8DCD0FF9E10FAD36801FE93
FC998A721705091F18BC7C98241C
ADC15A2B9DA7FB963142C0AB640
D5D0135E77EBAE95AF1B4FEFAD
CF9C012366BDDA0455C1564A6881
0D7127676D493890BDDF040103DF
03144410C6D51C2F83ADFD92528F
A6E38A32DF048D0A")
输出参数
返回
数据结构
备注
示例
9
深圳中磁计算机技术有限公司 EMV 接口说明
输出参数
返回
数据结构
备注
示例
0x95 终端验证结果
0x9B 交易状态信息
0x9F34 CVM 结果
0xDF31 发卡行脚本处理结果
0x57 二磁道数据
0x5F34 卡片序列号
0x5A 银行卡号
0x5F24 有效期
0x8A 授权响应码
输出参数
返回 获取 tag 的值
=null,获取错误
数据结构
备注
示例
10
深圳中磁计算机技术有限公司 EMV 接口说明
value 值
输出参数
返回 EmvResult 对象的值
数据结构
备注
示例
输出参数
返回 TLV 格式数据
=null,获取错误
数据结构
备注
示例
11
深圳中磁计算机技术有限公司 EMV 接口说明
value 值
返回
数据结构
备注
示例
数据结构
备注
示例
12
深圳中磁计算机技术有限公司 EMV 接口说明
数据结构
备注
示例
输出参数
返回
数据结构
备注
2.19. 非接交易预处理
输出参数
返回 EmvResult 对象的值
数据结构
备注
示例
13
深圳中磁计算机技术有限公司 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. 余额查询
KERNAL_EMV_PBOC =
0; //接触式 EMV&PBOC
KERNAL_CONTACTLESS_ENTRY_
14
深圳中磁计算机技术有限公司 EMV 接口说明
POINT = 1; //非接统一入口
0x01 时为没有获取到余额
返回 EmvResult 对象的值
数据结构
备注
示例
2.22. 读交易日志
KERNAL_EMV_PBOC =
0; //接触式 EMV&PBOC
KERNAL_CONTACTLESS_ENTRY_
POINT = 1; //非接统一入口
返回
emvTransLog 交易日志对象数组,定义时数组大小
最好为 10
返回 EmvResult 对象的值
数据结构
备注
示例
15
深圳中磁计算机技术有限公司 EMV 接口说明
2.23. 获取二磁道信息和银行卡号
输入参数
输出参数 track2 二磁道数据,数据在 track2[0]返回
返回 EmvResult 对象的值
数据结构
备注
示例
输入参数
输出参数
返回 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.26. 解析联机响应数据
请置
authRespCode={0x30,0x30,0x00};没
17
深圳中磁计算机技术有限公司 EMV 接口说明
有应答码,请置 authRespCode=
{0x00})
issuerResp 发卡行响应数据,55 域
issuerRespLen 发卡行响应数据长度
输出参数
EmvResult 对象的以下值:
= 0; //OK
EMV_ONLINE_FAILED = -20;
返回
//联机不成功,连接主机失败
18
深圳中磁计算机技术有限公司 EMV 接口说明
3. OnEmvListener 回调类
获取 OnEmvListener 类的对象:
OnEmvListener onEmvListener = new OnEmvListener() {
//……
}
描述 发送接收 APDU,
只有在 EMV 终端参数和内核初始化 kernelInit()时,将
APDU),会回调此方法
输出参数
返回 响应的 APDU 数据,
通讯错误或无响应或响应超时请返
回 null
数据结构
备注
3.2. 选择应用回调
19
深圳中磁计算机技术有限公司 EMV 接口说明
非接不执行此回调
输出参数
返回 EmvResult 对象的以下值:
= 0; //OK
EMV_USER_CANCEL = -7;
//交易取消
EMV_TIME_OUT = -8;
//用户操作超时
数据结构
备注
3.3. 确认卡号回调
EMV/PBOC 交易,读应用记录完成时得到卡号时回调;
非接不执行此回调
输出参数
返回 EmvResult 对象的以下值:
= 0; //OK
EMV_USER_CANCEL = -7;
//交易取消
20
深圳中磁计算机技术有限公司 EMV 接口说明
EMV_TIME_OUT = -8;
//用户操作超时
数据结构
备注
3.4. 输入 PIN 回调
如果是非接交易,需调用 getCvmType()得到持卡人验证类型是否为联机
联机 PIN,则不用此判断
OFFLINE_ENCIPHERED_PIN =
输出参数
返回 EmvResult 对象的以下值:
= 0; //OK
21
深圳中磁计算机技术有限公司 EMV 接口说明
EMV_USER_CANCEL = -7;
//交易取消
EMV_TIME_OUT = -8;
//用户操作超时
EMV_NO_PASSWORD = -32;
//没有密码或未输入密码
数据结构
备注
3.5. 持卡人证件验证回调
EMV/PBOC 交易,当需要执行持卡人证件时验证回调;
非接不执行此回调
0x00:身份证
0x01:军官证
0x02:护照
0x03:入境证
0x04:临时身份证
0x05:其它
certNo 证件号
输出参数
返回 EmvResult 对象的以下值:
= 0; //OK
22
深圳中磁计算机技术有限公司 EMV 接口说明
EMV_USER_CANCEL = -7;
//交易取消
EMV_TIME_OUT = -8;
//用户操作超时
数据结构
备注
3.6. 联机处理回调
当联机返回发卡行数据时,需要调用 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. 终端参数类
25
深圳中磁计算机技术有限公司 EMV 接口说明
4.1. 交易参数类
26
深圳中磁计算机技术有限公司 EMV 接口说明
27
深圳中磁计算机技术有限公司 EMV 接口说明
4.4. 交易日志类
28
深圳中磁计算机技术有限公司 EMV 接口说明
package com.zcs.sdk.emv;
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