public class EMVL2Process extends Object
轻 EMV L2 内核,以下简称轻内核,区别于传统 EMVL2 内核,通过整体设计,接口优化,将复杂的 EMV 交易流程集成固化在轻内核中, 由专业内核开发人员维护。同时轻内核又开放出足够的窗口以实现各类应用开发的个性化和差异化。轻内核是一套更简单,更快捷, 更灵活的 EMV 应用开发内核。
| 限定符和类型 | 类和说明 |
|---|---|
static interface |
EMVL2Process.EMVL2ProcessHandler
EMVL2过程处理器,用于处理流程中要求应用处理的步骤
|
class |
EMVL2Process.ProcessListener
qPBOC交易过程监听器
|
static interface |
EMVL2Process.StepResult
步骤结果
|
| 限定符和类型 | 字段和说明 |
|---|---|
static int |
DOL_ACTION_GET
DOL动作标识 - 获取DOL值
|
static int |
DOL_ACTION_SET
DOL动作标识 - 设置DOL值
|
static int |
DOL_TYPE_DDOL
DOL类型 - DDOL
|
static int |
DOL_TYPE_TDOL
DOL类型 - TDOL
|
static int |
DOL_TYPE_UDOL
DOL类型 - UDOL
|
static int |
EMV_ACTION_AAC
行为分析类型(AC Type) - 拒绝交易
|
static int |
EMV_ACTION_ARQC
行为分析类型(AC Type) - 请求联机
|
static int |
EMV_ACTION_TC
行为分析类型(AC Type) - 批准交易
|
static int |
EMV_CVMFLAG_CCV
持卡人验证类型(CVM Flag) - Confirmation Code Verified(PayPass)
|
static int |
EMV_CVMFLAG_CDV
持卡人验证类型(CVM Flag) - Consumer Device Verification(qVSDC/qPBOC)
|
static int |
EMV_CVMFLAG_CERTIFICATE
持卡人验证类型(CVM Flag) - 证件验证(证件类型: 00-身份证 01-军官证 02-护照 03-入境证 04-临时身份证 05-其他)
|
static int |
EMV_CVMFLAG_ECASHPIN
持卡人验证类型(CVM Flag) - 电子现金充值 PIN
|
static int |
EMV_CVMFLAG_NOCVM
持卡人验证类型(CVM Flag) - 无需CVM验证
|
static int |
EMV_CVMFLAG_OFFLINEPIN
持卡人验证类型(CVM Flag) - 脱机PIN
|
static int |
EMV_CVMFLAG_OLPIN_SIGN
持卡人验证类型(CVM Flag) - 联机PIN加签名
|
static int |
EMV_CVMFLAG_ONLINEPIN
持卡人验证类型(CVM Flag) - 联机PIN
|
static int |
EMV_CVMFLAG_SIGNATURE
持卡人验证类型(CVM Flag) - 签名
|
static int |
EMV_FLAG_ADD
动作标识(Action Flag) - 添加
|
static int |
EMV_FLAG_CLEAR
动作标识(Action Flag) - 清除所有
|
static int |
EMV_FLAG_DELETE
动作标识(Action Flag) - 删除
|
static int |
EMV_FLAG_EXECUTE_CDCVM
寻卡回调参数标识 - CDCVM 未执行,提示用户根据手机提示操作,并重新挥卡
|
static int |
EMV_FLAG_ISS_SCRIPT_UPDATE
寻卡回调参数标识 - 提示再次出卡,但不显示金额
|
static int |
EMV_FLAG_NORMAL
寻卡回调参数标识 - 正常交易的寻卡标志
|
static int |
EMV_FLAG_SHOW_CARD_AGAIN
寻卡回调参数标识 - 重新激活卡片
|
static int |
EMV_FLOWTYPE_A_XP2_EMV
交易流程标识(FlowType) - AMEX ExpressPay Card EMV Mode
|
static int |
EMV_FLOWTYPE_A_XP2_MS
交易流程标识(FlowType) - AMEX ExpressPay Card Magstripe Mode
|
static int |
EMV_FLOWTYPE_A_XPM_EMV
交易流程标识(FlowType) - AMEX ExpressPay Mobile EMV Mode
|
static int |
EMV_FLOWTYPE_A_XPM_MS
交易流程标识(FlowType) - AMEX ExpressPay Mobile EMV Mode
|
static int |
EMV_FLOWTYPE_D_DPAS_EMV
交易流程标识(FlowType) - Discover D-PAS EMV Mode
|
static int |
EMV_FLOWTYPE_D_DPAS_MS
交易流程标识(FlowType) - Discover D-PAS Magstripe Mode
|
static int |
EMV_FLOWTYPE_D_ZIP
交易流程标识(FlowType) - Discover ZIP Mode
|
static int |
EMV_FLOWTYPE_ECASH
交易流程标识(FlowType) - 接触式小额支付(电子现金)
|
static int |
EMV_FLOWTYPE_EMV
交易流程标识(FlowType) - EMV/PBOC标准借贷记
|
static int |
EMV_FLOWTYPE_J_EMV
交易流程标识(FlowType) - JCB EMV Mode
|
static int |
EMV_FLOWTYPE_J_LEGACY
交易流程标识(FlowType) - JCB Legacy Mode
|
static int |
EMV_FLOWTYPE_J_MAG
交易流程标识(FlowType) - JCB Magstripe Mode
|
static int |
EMV_FLOWTYPE_M_CHIP
交易流程标识(FlowType) - MASTER Card PayPass-Chip
|
static int |
EMV_FLOWTYPE_M_STRIPE
交易流程标识(FlowType) - PayPass-Stripe
|
static int |
EMV_FLOWTYPE_MSD
交易流程标识(FlowType) - MSD交易
|
static int |
EMV_FLOWTYPE_MSD_LEGACY
交易流程标识(FlowType) - MSD Legacy交易
|
static int |
EMV_FLOWTYPE_PBOC_CTLESS
交易流程标识(FlowType) - 非接标准借贷记
|
static int |
EMV_FLOWTYPE_QPBOC
交易流程标识(FlowType) - 非接小额支付(qPBOC)
|
static int |
EMV_FLOWTYPE_QVSDC
交易流程标识(FlowType) - Visa qVSDC
|
static int |
EMV_FLOWTYPE_WAVE2
交易流程标识(FlowType) - Visa PayWave2
|
static int |
EMV_INS_APPSELECT_DATA
内核指令 - 发送应用选择数据
|
static int |
EMV_INS_CLOSERF
内核指令 - 通知应用端关闭非接载波
|
static int |
EMV_INS_DBLOG
内核指令 - 发送Debug日志
|
static int |
EMV_INS_DEL_FAIL_WATER
内核指令 - 通知应用删除闪卡保存的失败交易记录
|
static int |
EMV_INS_DEL_TORN
内核指令 - 删除闪卡记录数据
|
static int |
EMV_INS_DISPLAY
内核指令 - 发送交互显示信息
|
static int |
EMV_INS_GET_TORN
内核指令 - 获取闪卡交易数据
|
static int |
EMV_INS_SEND_DISC
内核指令 - 发送discretionary data(PayPass)
|
static int |
EMV_INS_SET_FAIL_WATER
内核指令 - 发生闪卡,通知应用保存失败交易记录
|
static int |
EMV_INS_SET_TORN
内核指令 - 发送闪卡交易数据
|
static int |
EMV_INS_TLVDATA
内核指令 - 发送TLV交易数据
|
static int |
EMV_KERNELID_AMEX
内核类型(Kernel ID) - AMEX
|
static int |
EMV_KERNELID_DEFINE
内核类型(Kernel ID) - Kernel Defined
|
static int |
EMV_KERNELID_DISCOVER
内核类型(Kernel ID) - DISCOVER
|
static int |
EMV_KERNELID_EMV
内核类型(Kernel ID) - 接触EMV标准流程
|
static int |
EMV_KERNELID_EMVCTLess
内核类型(Kernel ID) - EMV Contactless
|
static int |
EMV_KERNELID_JCB
内核类型(Kernel ID) - JCB
|
static int |
EMV_KERNELID_MASTER
内核类型(Kernel ID) - Master Card
|
static int |
EMV_KERNELID_NSICC
内核类型(Kernel ID) - Indonesian
|
static int |
EMV_KERNELID_PBOC
内核类型(Kernel ID) - PBOC
|
static int |
EMV_KERNELID_VISA
内核类型(Kernel ID) - VISA
|
static int |
EMV_L1_ERR_PROTOCOL
错误定位码 - ICC transmit protocol error
|
static int |
EMV_L1_ERR_TIMEOUT
错误定位码 - ICC APDU communicate time out
|
static int |
EMV_L1_ERR_TRANSMISSION
错误定位码 - ICC APDU transmission error
|
static int |
EMV_L2_ERR_CAM_FAILED
错误定位码 - CAM fail
|
static int |
EMV_L2_ERR_ICC_DATA
错误定位码 - ICC data error
|
static int |
EMV_L2_ERR_ICC_DATA_MISS
错误定位码 - ICC Data missing
|
static int |
EMV_L2_ERR_ICC_STATUS
错误定位码 - APDU status error
|
static int |
EMV_L2_ERR_MAG_NOT_SUP
错误定位码 - Don't support magnetic
|
static int |
EMV_L2_ERR_MAX_EXCEEDED
错误定位码 - Exceed max limit
|
static int |
EMV_L2_ERR_NO_CAND_AID
错误定位码 - Candidate AID list is empty
|
static int |
EMV_L2_ERR_NO_PPSE
错误定位码 - Don't support PPSE
|
static int |
EMV_L2_ERR_PARSING
错误定位码 - ICC data parsing error
|
static int |
EMV_L2_ERR_PPSE_FAULT
错误定位码 - PPSE fault
|
static int |
EMV_L2_ERR_TERM_DATA
错误定位码 - Terminate parameter error
|
static int |
EMV_L3_ERR_AMOOUNT
错误定位码 - Amount is absent
|
static int |
EMV_L3_ERR_STOP
错误定位码 - Transaction being terminated
|
static int |
EMV_L3_ERR_TIMEOUT
错误定位码 - Time out
|
static int |
EMV_LEN_MAX_AID
最大AID数据长度
|
static int |
EMV_MSGID_AMOUNT
信息标识(Message ID) - 交易金额
|
static int |
EMV_MSGID_APPROVED
信息标识(Message ID) - 交易批准
|
static int |
EMV_MSGID_APPROVED_SIGN
信息标识(Message ID) - 交易批准并请求签名
|
static int |
EMV_MSGID_APPSEL_AGAIN
信息标识(Message ID) - 请重新选择应用
|
static int |
EMV_MSGID_APPSELECT
信息标识(Message ID) - 请选择应用
|
static int |
EMV_MSGID_AUTH_WAIT
信息标识(Message ID) - 等待授权
|
static int |
EMV_MSGID_BALANCE
信息标识(Message ID) - 卡片余额
|
static int |
EMV_MSGID_CARD_READ_OK
信息标识(Message ID) - 读卡完成
|
static int |
EMV_MSGID_CLEAR_DISPLAY
信息标识(Message ID) - 清空屏幕显示
|
static int |
EMV_MSGID_DECLINED
信息标识(Message ID) - 交易拒绝
|
static int |
EMV_MSGID_INSERT_CARD
信息标识(Message ID) - 请插入卡片
|
static int |
EMV_MSGID_NOCARD
信息标识(Message ID) - 未检测到卡片,交易终止
|
static int |
EMV_MSGID_OTHER_CARD
信息标识(Message ID) - 交易终止,请尝试其它卡片
|
static int |
EMV_MSGID_PCII
信息标识(Message ID) - 按PICC显示消息
|
static int |
EMV_MSGID_PROCESS_ERROR
信息标识(Message ID) - 处理出错
|
static int |
EMV_MSGID_PROCESSING
信息标识(Message ID) - 处理中,请稍候
|
static int |
EMV_MSGID_READCARD_OK
信息标识(Message ID) - 读卡完成,可移走卡片(不代表交易成功)
|
static int |
EMV_MSGID_SEE_PHONE
信息标识(Message ID) - 请查看手机
|
static int |
EMV_MSGID_SHOW_CARD
信息标识(Message ID) - 请出示非接片
|
static int |
EMV_MSGID_TRY_AGAIN
信息标识(Message ID) - 请重试
|
static int |
EMV_RESULT_ALL_FLASH_CARD
交易返回码 - 返回全部闪卡待处理流程
|
static int |
EMV_RESULT_APDU_ERROR
交易返回码 - APDU执行失败
|
static int |
EMV_RESULT_APDU_STATUS_ERROR
交易返回码 - APDU状态码错误
|
static int |
EMV_RESULT_APPLOCK
交易返回码 - 应用锁定(SW=6283)
|
static int |
EMV_RESULT_BUSY
交易返回码 - EMV工作线程正工作中,请稍候再尝试
|
static int |
EMV_RESULT_CARDLOCK
交易返回码 - 卡片锁定(SW=6A81)
|
static int |
EMV_RESULT_EXCEED_CTLMT
交易返回码 - 交易金额超过非接限额
|
static int |
EMV_RESULT_EXPIRY
交易返回码 - 卡片应用过期,交易终止
|
static int |
EMV_RESULT_FLASHCARD
交易返回码 - 非接快速支付,发生闪卡,交易终止,请执行补救措施
|
static int |
EMV_RESULT_NOAPP
交易返回码 - 终端AID列表为空或者卡片与终端AID不匹配,无候选应用
|
static int |
EMV_RESULT_NOPUBKEY
交易返回码 - 非接小额支付,检测到未设置交易公钥,交易终止
|
static int |
EMV_RESULT_NORMAL
交易返回码 - 交易正常结束
|
static int |
EMV_RESULT_REFUSESERVICE
交易返回码 - 卡片不允许服务
|
static int |
EMV_RESULT_REPOWERICC
交易返回码 - 卡片通讯错误
|
static int |
EMV_RESULT_STOP
交易返回码 - STOP信号请求终止,交易主动退出
|
static int |
EMV_SERVETYPE_CASH
服务类型(Service Type) - 现金
|
static int |
EMV_SERVETYPE_CASHBACK
服务类型(Service Type) - 返现
|
static int |
EMV_SERVETYPE_GOOD
服务类型(Service Type) - 商品
|
static int |
EMV_SERVETYPE_REFUND
服务类型(Service Type) - 退款
|
static int |
EMV_SERVETYPE_SERVICE
服务类型(Service Type) - 服务
|
static int |
LOG_LEVEL_AFTERTRANS |
static int |
LOG_LEVEL_CLOSE |
static int |
LOG_LEVEL_DETAIL
已过时。
|
static int |
LOG_LEVEL_NORMAL
已过时。
|
static int |
LOG_LEVEL_REALTIME |
| 构造器和说明 |
|---|
EMVL2Process(Context context,
CpuCardDriver<?> driver,
EMVL2Process.EMVL2ProcessHandler handler)
构造一个EMV流程
|
EMVL2Process(Context context,
CpuCardDriver<?> driver,
EMVL2Process.EMVL2ProcessHandler handler,
PausableHandler pausableHandler)
构造一个EMV流程
|
EMVL2Process(Context context,
String packageName,
CpuCardDriver<?> driver,
EMVL2Process.EMVL2ProcessHandler handler)
构造一个EMV流程
|
EMVL2Process(Context context,
String packageName,
CpuCardDriver<?> driver,
EMVL2Process.EMVL2ProcessHandler handler,
PausableHandler pausableHandler)
构造一个EMV流程
|
| 限定符和类型 | 方法和说明 |
|---|---|
int |
abort()
强行中止流程
|
int |
addAID(byte[] aid,
boolean isPartFragment)
添加AID参数
|
int |
addAID(byte[] aid,
boolean isPartFragment,
int kernelId)
添加AID参数
|
int |
addRecCert(RecCert data)
添加回收CA公钥证书
|
int |
clearAID()
清除AID参数
|
int |
clearDriver()
清除流程卡片驱动
|
int |
clearRecCert()
清除回收CA公钥证书
|
int |
getBalance(BytesBuffer balance)
APDU命令方式获取接触或非接卡片可用余额
|
int |
getDataAPDU(int p1,
int p2,
BytesBuffer data)
APDU命令方式获取卡片数据元
|
int |
getDDOL(BytesBuffer dol)
获取DDOL
|
int |
getECCLog(byte[] aid,
List<ECCLog> logs)
获取IC卡卡片圈存日志
|
int |
getICCLog(byte[] aid,
List<ICCLog> logs)
获取IC卡卡片交易日志
|
String |
getKernelLog()
已过时。
内核日志改为通过内核主动输出,不再提供接口获取内核日志
|
int |
getKernelVersion(StringBuilder version)
获取内核版本号
|
int |
getTDOL(BytesBuffer dol)
获取TDOL
|
int |
getTLV(String tag,
BytesBuffer value)
获取单个Tag的值
|
int |
getTransactionData(TransactionData data)
已过时。
该接口已废弃
|
int |
getUDOL(BytesBuffer dol)
获取UDOL
|
int |
manageAID(int action,
byte[] aid,
int partSlt,
int kernelId)
管理EMV内核支持的AID列表
编程说明:启动 EMV 交易之前,应用必须设置终端所支持的 AID。
|
int |
manageDOL(int flag,
int action,
BytesBuffer dol)
管理终端缺省的DDOL、TDOL和UDOL
|
int |
manageRecCert(int action,
RecCert cert)
管理回收公钥正式
|
int |
next(byte[] result)
已过时。
|
int |
next(CpuCardDriver<?> driver)
下一步。
|
int |
next(EMVL2Process.StepResult result)
已过时。
本接口不再维护,供兼容旧应用,新开发应用请改用
nextWithTLV(TLVList) |
int |
nextWithTLV(byte[] result)
下一步
|
int |
nextWithTLV(TLVList result)
下一步
|
int |
removeAID(byte[] aid)
删除AID参数
|
int |
removeRecCert(RecCert data)
删除回收CA公钥证书
|
int |
setBaseParameter(BaseParameter parameter)
已过时。
本接口不再维护,供兼容旧应用,新开发应用请改用
setTLVList(int, TLVList) |
int |
setCAPubKey(CAPKey key)
更新或清除公钥:当key=null时,清空内核公钥
|
int |
setDDOL(byte[] dol)
设置DDOL
|
void |
setDriver(CpuCardDriver<?> driver)
设置流程的卡片驱动对象
|
static void |
setLogLevel(int level)
已过时。
请使用
switchDebug(int)接口替代 |
int |
setPBOCParameter(PBOCParameter parameter)
已过时。
本接口不再维护,供兼容旧应用,新开发应用请改用
setTLVList(int, TLVList) |
int |
setSMCAPubKey(SMCAPKey key,
GroupParameter group)
更新或清除国密公钥:当key=null时,清空内核国密公钥
|
int |
setTDOL(byte[] dol)
设置TDOL
|
int |
setTLV(int kernelId,
String tag,
byte[] value)
设置单个TLV数据元
|
int |
setTLV(int kernelId,
String tag,
String value)
设置单个TLV数据元, 使用HEX字符串格式的V
|
int |
setTLV(int kernelId,
TLV tlv)
设置单个TLV数据元
|
int |
setTLVList(int kernelId,
byte[] tlvList)
设置TLV列表数据元
|
int |
setTLVList(int kernelId,
String tlvList)
设置TLV列表数据元
|
int |
setTLVList(int kernelId,
TLVList tlvList)
设置TLV列表数据元
|
int |
setTLVWithGBKValue(int kernelId,
String tag,
String value)
设置单个TLV数据元, 自动将值转为GBK编码后的数组
|
int |
setUDOL(byte[] dol)
设置UDOL
|
int |
setVISAParameter(VISAParameter parameter)
已过时。
本接口不再维护,供兼容旧应用,新开发应用请改用
setTLVList(int, TLVList) |
int |
start(StartEmvParameter parameter)
已过时。
本接口不再维护,供兼容旧应用,新开发应用请改用
start(TLVList) |
int |
start(TLVList parameter)
启动流程, TLV参数模式,与
nextWithTLV(TLVList)配套使用 |
void |
switchDebug(int level)
切换EMV内核日志输出方式
|
int |
transfer(String transferToApp)
转移EMV流程,EMV完整流程分属在两个应用进程中完成
第一个应用负责EMV的读卡和应用选择,建议在最终应用选择事件后发起转移
第二个应用负责EMV的其他步骤
完成两个步骤,需要将EMV流程从第一个应用向第二个应用转移
|
int |
updateCAIndexList(byte[] rid,
int[] indexs)
更新公钥索引列表(最多50个索引)
|
public static final int EMV_KERNELID_EMV
public static final int EMV_KERNELID_EMVCTLess
public static final int EMV_KERNELID_MASTER
public static final int EMV_KERNELID_VISA
public static final int EMV_KERNELID_AMEX
public static final int EMV_KERNELID_JCB
public static final int EMV_KERNELID_DISCOVER
public static final int EMV_KERNELID_PBOC
public static final int EMV_KERNELID_NSICC
public static final int EMV_KERNELID_DEFINE
public static final int EMV_FLOWTYPE_EMV
public static final int EMV_FLOWTYPE_ECASH
public static final int EMV_FLOWTYPE_QPBOC
public static final int EMV_FLOWTYPE_PBOC_CTLESS
public static final int EMV_FLOWTYPE_MSD
public static final int EMV_FLOWTYPE_MSD_LEGACY
public static final int EMV_FLOWTYPE_QVSDC
public static final int EMV_FLOWTYPE_WAVE2
public static final int EMV_FLOWTYPE_M_CHIP
public static final int EMV_FLOWTYPE_M_STRIPE
public static final int EMV_FLOWTYPE_J_EMV
public static final int EMV_FLOWTYPE_J_MAG
public static final int EMV_FLOWTYPE_J_LEGACY
public static final int EMV_FLOWTYPE_A_XP2_MS
public static final int EMV_FLOWTYPE_A_XP2_EMV
public static final int EMV_FLOWTYPE_A_XPM_MS
public static final int EMV_FLOWTYPE_A_XPM_EMV
public static final int EMV_FLOWTYPE_D_DPAS_MS
public static final int EMV_FLOWTYPE_D_DPAS_EMV
public static final int EMV_FLOWTYPE_D_ZIP
public static final int EMV_SERVETYPE_GOOD
public static final int EMV_SERVETYPE_SERVICE
public static final int EMV_SERVETYPE_CASH
public static final int EMV_SERVETYPE_CASHBACK
public static final int EMV_SERVETYPE_REFUND
public static final int EMV_CVMFLAG_NOCVM
public static final int EMV_CVMFLAG_OFFLINEPIN
public static final int EMV_CVMFLAG_ONLINEPIN
public static final int EMV_CVMFLAG_SIGNATURE
public static final int EMV_CVMFLAG_OLPIN_SIGN
public static final int EMV_CVMFLAG_CDV
public static final int EMV_CVMFLAG_CCV
public static final int EMV_CVMFLAG_CERTIFICATE
public static final int EMV_CVMFLAG_ECASHPIN
public static final int EMV_ACTION_AAC
public static final int EMV_ACTION_TC
public static final int EMV_ACTION_ARQC
public static final int EMV_FLAG_ADD
public static final int EMV_FLAG_DELETE
public static final int EMV_FLAG_CLEAR
public static final int EMV_LEN_MAX_AID
public static final int EMV_MSGID_AMOUNT
public static final int EMV_MSGID_BALANCE
public static final int EMV_MSGID_PROCESSING
public static final int EMV_MSGID_PROCESS_ERROR
public static final int EMV_MSGID_INSERT_CARD
public static final int EMV_MSGID_SHOW_CARD
public static final int EMV_MSGID_APPSELECT
public static final int EMV_MSGID_APPSEL_AGAIN
public static final int EMV_MSGID_READCARD_OK
public static final int EMV_MSGID_TRY_AGAIN
public static final int EMV_MSGID_APPROVED
public static final int EMV_MSGID_APPROVED_SIGN
public static final int EMV_MSGID_DECLINED
public static final int EMV_MSGID_OTHER_CARD
public static final int EMV_MSGID_SEE_PHONE
public static final int EMV_MSGID_NOCARD
public static final int EMV_MSGID_CARD_READ_OK
public static final int EMV_MSGID_AUTH_WAIT
public static final int EMV_MSGID_CLEAR_DISPLAY
public static final int EMV_MSGID_PCII
public static final int EMV_L1_ERR_TIMEOUT
public static final int EMV_L1_ERR_TRANSMISSION
public static final int EMV_L1_ERR_PROTOCOL
public static final int EMV_L2_ERR_ICC_DATA_MISS
public static final int EMV_L2_ERR_CAM_FAILED
public static final int EMV_L2_ERR_ICC_STATUS
public static final int EMV_L2_ERR_PARSING
public static final int EMV_L2_ERR_MAX_EXCEEDED
public static final int EMV_L2_ERR_ICC_DATA
public static final int EMV_L2_ERR_MAG_NOT_SUP
public static final int EMV_L2_ERR_NO_PPSE
public static final int EMV_L2_ERR_PPSE_FAULT
public static final int EMV_L2_ERR_NO_CAND_AID
public static final int EMV_L2_ERR_TERM_DATA
public static final int EMV_L3_ERR_TIMEOUT
public static final int EMV_L3_ERR_STOP
public static final int EMV_L3_ERR_AMOOUNT
public static final int EMV_RESULT_NORMAL
public static final int EMV_RESULT_BUSY
public static final int EMV_RESULT_NOAPP
public static final int EMV_RESULT_NOPUBKEY
public static final int EMV_RESULT_EXPIRY
public static final int EMV_RESULT_FLASHCARD
public static final int EMV_RESULT_STOP
public static final int EMV_RESULT_REPOWERICC
public static final int EMV_RESULT_REFUSESERVICE
public static final int EMV_RESULT_CARDLOCK
public static final int EMV_RESULT_APPLOCK
public static final int EMV_RESULT_EXCEED_CTLMT
public static final int EMV_RESULT_APDU_ERROR
public static final int EMV_RESULT_APDU_STATUS_ERROR
public static final int EMV_RESULT_ALL_FLASH_CARD
public static final int EMV_INS_SET_TORN
public static final int EMV_INS_DEL_TORN
public static final int EMV_INS_DISPLAY
public static final int EMV_INS_TLVDATA
public static final int EMV_INS_CLOSERF
public static final int EMV_INS_DBLOG
public static final int EMV_INS_GET_TORN
public static final int EMV_INS_APPSELECT_DATA
public static final int EMV_INS_SET_FAIL_WATER
public static final int EMV_INS_DEL_FAIL_WATER
public static final int EMV_INS_SEND_DISC
public static final int EMV_FLAG_NORMAL
public static final int EMV_FLAG_SHOW_CARD_AGAIN
public static final int EMV_FLAG_ISS_SCRIPT_UPDATE
public static final int EMV_FLAG_EXECUTE_CDCVM
public static final int DOL_TYPE_DDOL
public static final int DOL_TYPE_TDOL
public static final int DOL_TYPE_UDOL
public static final int DOL_ACTION_SET
public static final int DOL_ACTION_GET
@Deprecated public static final int LOG_LEVEL_NORMAL
public static final int LOG_LEVEL_AFTERTRANS
@Deprecated public static final int LOG_LEVEL_DETAIL
public static final int LOG_LEVEL_REALTIME
public static final int LOG_LEVEL_CLOSE
public EMVL2Process(Context context, CpuCardDriver<?> driver, EMVL2Process.EMVL2ProcessHandler handler)
context - 上下文driver - 驱动,可为null。为null时需要在在EMVL2Process.EMVL2ProcessHandler.onWaitCard(int)中调用next(CpuCardDriver)handler - 过程处理器public EMVL2Process(Context context, CpuCardDriver<?> driver, EMVL2Process.EMVL2ProcessHandler handler, PausableHandler pausableHandler)
context - 上下文driver - 驱动,可为null。为null时需要在在EMVL2Process.EMVL2ProcessHandler.onWaitCard(int)中调用next(CpuCardDriver)handler - 过程处理器pausableHandler - public EMVL2Process(Context context, String packageName, CpuCardDriver<?> driver, EMVL2Process.EMVL2ProcessHandler handler)
context - 上下文packageName - 应用程序包名driver - 驱动,可为null。为null时需要在在EMVL2Process.EMVL2ProcessHandler.onWaitCard(int)中调用next(CpuCardDriver)handler - 过程处理器public EMVL2Process(Context context, String packageName, CpuCardDriver<?> driver, EMVL2Process.EMVL2ProcessHandler handler, PausableHandler pausableHandler)
context - 上下文packageName - 应用程序包名driver - 驱动,可为null。为null时需要在在EMVL2Process.EMVL2ProcessHandler.onWaitCard(int)中调用next(CpuCardDriver)handler - 过程处理器pausableHandler - public void switchDebug(int level)
level - 内核日志输出等级,分为:实时输出,交易结束输出和关闭日志输出。
LOG_LEVEL_CLOSE - 关闭日志 LOG_LEVEL_REALTIME - 实时输出 LOG_LEVEL_AFTERTRANS - 交易后输出 public static void setLogLevel(int level)
switchDebug(int)接口替代level - 日志输出等级
LOG_LEVEL_CLOSE 关闭日志
LOG_LEVEL_REALTIME 实时输出
1 交易后输出
public void setDriver(CpuCardDriver<?> driver)
driver - cpu卡驱动对象public int clearDriver()
public int start(StartEmvParameter parameter)
start(TLVList)parameter - 启动EMV参数public int start(TLVList parameter)
nextWithTLV(TLVList)配套使用parameter - 启动EMV参数public int transfer(String transferToApp) throws PackageManager.NameNotFoundException
第一个应用负责EMV的读卡和应用选择,建议在最终应用选择事件后发起转移
第二个应用负责EMV的其他步骤
完成两个步骤,需要将EMV流程从第一个应用向第二个应用转移
transferToApp - 接收EMV流程控制权的App包名IllegalArgumentException - 包名为null或空字符串时抛出PackageManager.NameNotFoundException - 未找到包名对应的应用时抛出public int abort()
public int next(CpuCardDriver<?> driver)
EMVL2Process.EMVL2ProcessHandler.onWaitCard(int)中使用。driver - 卡设备驱动对象,比如接触式或非接触式卡设备驱动对象public int next(EMVL2Process.StepResult result)
nextWithTLV(TLVList)result - 步骤执行结果@Deprecated public int next(byte[] result)
result - 步骤执行结果
本接口不再维护,供兼容旧应用,新开发应用请改用nextWithTLV(byte[] result)public int nextWithTLV(TLVList result)
result - TLV步骤结果public int nextWithTLV(byte[] result)
result - TLV步骤结果@Deprecated public int setBaseParameter(BaseParameter parameter)
setTLVList(int, TLVList)parameter - 基本EMV参数@Deprecated public int setPBOCParameter(PBOCParameter parameter)
setTLVList(int, TLVList)parameter - PBOC交易参数@Deprecated public int setVISAParameter(VISAParameter parameter)
setTLVList(int, TLVList)parameter - VISA交易参数public int manageAID(int action,
byte[] aid,
int partSlt,
int kernelId)
编程说明:启动 EMV 交易之前,应用必须设置终端所支持的 AID。当卡片 AID 与终端 AID 匹配后才能执行后续的 EMV 交易流程。
action - 动作标识
EMV_FLAG_ADDEMV_FLAG_DELETEEMV_FLAG_CLEARaid - AID数据partSlt - 部分选择标志,0-不支持,1-支持kernelId - 内核类型,0表示未指定,注:对单应用主控(masterControl版本低于2.0.0)该参数无效
EMV_KERNELID_EMVEMV_KERNELID_MASTEREMV_KERNELID_VISAEMV_KERNELID_AMEXEMV_KERNELID_JCBEMV_KERNELID_DISCOVEREMV_KERNELID_PBOCEMV_KERNELID_NSICCpublic int addAID(byte[] aid,
boolean isPartFragment)
aid - AID数据isPartFragment - 是否部分选择标识public int addAID(byte[] aid,
boolean isPartFragment,
int kernelId)
aid - AID数据isPartFragment - 是否部分选择标识kernelId - 内核标识,注:对单应用主控(masterControl版本低于2.0.0)该参数无效
EMV_KERNELID_EMVEMV_KERNELID_MASTEREMV_KERNELID_EMVCTLessEMV_KERNELID_DEFINEEMV_KERNELID_VISAEMV_KERNELID_AMEXEMV_KERNELID_JCBEMV_KERNELID_DISCOVEREMV_KERNELID_PBOCEMV_KERNELID_NSICCpublic int removeAID(byte[] aid)
aid - 要删除的AID数据public int clearAID()
public int updateCAIndexList(byte[] rid,
int[] indexs)
rid - RID公钥indexs - 公钥索引,入参为null或空数组表示清除该 RID 的公钥索引列表public int setCAPubKey(CAPKey key)
key - CA公钥数据public int setSMCAPubKey(SMCAPKey key, GroupParameter group)
key - 国密公钥数据group - 椭圆曲线数据public int manageRecCert(int action,
RecCert cert)
action - 动作标识
EMV_FLAG_ADDEMV_FLAG_DELETEEMV_FLAG_CLEARcert - 回收公钥证书,当action为EMV_FLAG_CLEAR时,该入参可以为nullpublic int addRecCert(RecCert data)
data - 回收公钥证书public int removeRecCert(RecCert data)
data - 回收公钥证书public int clearRecCert()
public int manageDOL(int flag,
int action,
BytesBuffer dol)
flag - DOL类型
DOL_TYPE_DDOL - DDOL DOL_TYPE_TDOL - TDOL DOL_TYPE_UDOL - UDOL action - 动作标识,设置/获取
DOL_ACTION_SET - 设置DOL值 DOL_ACTION_GET - 获取DOL值 dol - 动作标识为设置DOL值时,该参数为需设置的DOL值;动作标识为获取DOL值时,该参数为读取到的DOL值public int getTDOL(BytesBuffer dol)
dol - TDOL数据public int setTDOL(byte[] dol)
dol - TDOL数据public int getDDOL(BytesBuffer dol)
dol - DDOL数据public int setDDOL(byte[] dol)
dol - DDOL数据public int getUDOL(BytesBuffer dol)
dol - UDOL数据public int setUDOL(byte[] dol)
dol - UDOL数据public int getBalance(BytesBuffer balance)
balance - 卡片余额public int getDataAPDU(int p1,
int p2,
BytesBuffer data)
p1 - 指令P1p2 - 指令P2data - 卡片数据public int getICCLog(byte[] aid,
List<ICCLog> logs)
aid - AID标识logs - IC卡卡片交易日志public int getECCLog(byte[] aid,
List<ECCLog> logs)
aid - AID标识logs - IC卡卡片圈存日志public int getKernelVersion(StringBuilder version)
version - 内核版本信息public String getKernelLog()
public int getTransactionData(TransactionData data)
data - EMV交易数据public int setTLV(int kernelId,
TLV tlv)
kernelId - 内核标识
EMV_KERNELID_EMVEMV_KERNELID_MASTEREMV_KERNELID_EMVCTLessEMV_KERNELID_DEFINEEMV_KERNELID_VISAEMV_KERNELID_AMEXEMV_KERNELID_JCBEMV_KERNELID_DISCOVEREMV_KERNELID_PBOCEMV_KERNELID_NSICCtlv - TLV数据元public int setTLV(int kernelId,
String tag,
byte[] value)
kernelId - 内核标识
EMV_KERNELID_EMVEMV_KERNELID_MASTEREMV_KERNELID_EMVCTLessEMV_KERNELID_DEFINEEMV_KERNELID_VISAEMV_KERNELID_AMEXEMV_KERNELID_JCBEMV_KERNELID_DISCOVEREMV_KERNELID_PBOCEMV_KERNELID_NSICCtag - 数据元的T部分,如"9F66"value - 数据元的V部分,如{0x12, 0x34}public int setTLVWithGBKValue(int kernelId,
String tag,
String value)
kernelId - 内核标识
EMV_KERNELID_EMVEMV_KERNELID_MASTEREMV_KERNELID_EMVCTLessEMV_KERNELID_DEFINEEMV_KERNELID_VISAEMV_KERNELID_AMEXEMV_KERNELID_JCBEMV_KERNELID_DISCOVEREMV_KERNELID_PBOCEMV_KERNELID_NSICCtag - 数据元的T部分,如"9F66"value - 数据元的V部分,如"1234"表示{0x31,0x32,0x33,0x34}public int setTLV(int kernelId,
String tag,
String value)
kernelId - 内核标识
EMV_KERNELID_EMVEMV_KERNELID_MASTEREMV_KERNELID_EMVCTLessEMV_KERNELID_DEFINEEMV_KERNELID_VISAEMV_KERNELID_AMEXEMV_KERNELID_JCBEMV_KERNELID_DISCOVEREMV_KERNELID_PBOCEMV_KERNELID_NSICCtag - 数据元的T部分,如"9F66"value - 数据元的V部分,如"1234"表示{0x12,0x34}public int getTLV(String tag, BytesBuffer value)
tag - 数据元的T部分,如"9F66"value - 数据元V部分,不为空,作为输出参数public int setTLVList(int kernelId,
TLVList tlvList)
kernelId - 内核标识
EMV_KERNELID_EMVEMV_KERNELID_MASTEREMV_KERNELID_EMVCTLessEMV_KERNELID_DEFINEEMV_KERNELID_VISAEMV_KERNELID_AMEXEMV_KERNELID_JCBEMV_KERNELID_DISCOVEREMV_KERNELID_PBOCEMV_KERNELID_NSICCtlvList - TLV列表public int setTLVList(int kernelId,
String tlvList)
kernelId - 内核标识
EMV_KERNELID_EMVEMV_KERNELID_MASTEREMV_KERNELID_EMVCTLessEMV_KERNELID_DEFINEEMV_KERNELID_VISAEMV_KERNELID_AMEXEMV_KERNELID_JCBEMV_KERNELID_DISCOVEREMV_KERNELID_PBOCEMV_KERNELID_NSICCtlvList - TLV列表, HEX字符串,如“9F0101019F02023132”public int setTLVList(int kernelId,
byte[] tlvList)
kernelId - 内核标识
EMV_KERNELID_EMVEMV_KERNELID_MASTEREMV_KERNELID_EMVCTLessEMV_KERNELID_DEFINEEMV_KERNELID_VISAEMV_KERNELID_AMEXEMV_KERNELID_JCBEMV_KERNELID_DISCOVEREMV_KERNELID_PBOCEMV_KERNELID_NSICCtlvList - TLV列表, 二进制数组,如{0x9F, 0x01, 0x01, 0x01, 0x9F, 0x02, 0x02, 0x31, 0x32}