手机支付协议规范(商用版) .doc

上传人:yyf 文档编号:5022665 上传时间:2020-01-29 格式:DOC 页数:66 大小:2MB
返回 下载 相关 举报
手机支付协议规范(商用版) .doc_第1页
第1页 / 共66页
手机支付协议规范(商用版) .doc_第2页
第2页 / 共66页
手机支付协议规范(商用版) .doc_第3页
第3页 / 共66页
手机支付协议规范(商用版) .doc_第4页
第4页 / 共66页
手机支付协议规范(商用版) .doc_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《手机支付协议规范(商用版) .doc》由会员分享,可在线阅读,更多相关《手机支付协议规范(商用版) .doc(66页珍藏版)》请在三一文库上搜索。

1、e7e0b81a9ea6fa44c6f55d8ef3beaf93.pdf手机支付协议规范(商用版)V1.420 目 录:1概述32文件结构概要图33操作流程43.1银行卡交易流程及协议43.1.1刷卡交易流程图43.1.2步骤说明63.1.3指令集73.2电子钱包交易流程及协议143.2.1电子钱包圈存交易流程图143.2.2圈存交易步骤说明163.2.3圈存交易指令集173.2.4电子钱包消费交易流程图243.2.5消费交易步骤说明253.2.6消费交易指令集263.3电子票据交互流程及协议333.3.1电子票据读取部分333.3.2电子票据写入部分363.3.3指令集383.4身份识别交互

2、流程及协议463.4.1身份识别交互流程图463.4.2步骤说明473.4.3指令集483.5卡片公共信息交互流程及协议543.5.1交互流程图543.5.2步骤说明563.5.3指令集574安全机制624.1加解密算法624.2密钥管理634.2.1共存应用634.2.2密钥的独立性634.2.3密钥的属性634.2.4密钥的使用644.2.5过程密钥的产生641 概述本文档讲述了手机支付在POS终端机上应用时,交易流程及接口协议,供开发人员使用。本规范定义POS机与SEIMMA卡之间的通讯规范及协议。 本规范中定义的四种应用类型,允许相互嵌套使用。2 文件结构概要图图-2.0 文件结构图3

3、 操作流程下图为设备使用示意图:图-3.0 设备使用示意图3.1 银行卡交易流程及协议POS机与SEIMMA卡交互过程中,使用下述交易指令,实现刷卡操作。POS机与SEIMMA卡交互时,将使用SEIMMA卡的手机放置于距离读写器 10cm范围内。3.1.1 刷卡交易流程图下图为SEIMMA卡刷卡交易流程图,POS机通过以下流程,与SEIMMA卡进行刷卡交易。 图-3.1.0刷卡交易流程3.1.2 步骤说明(1) POS机上支付类别选择:收银员在POS机上将支付类别选为“手机银行卡消费”,并且在“手机消费选择”菜单中选择“银行卡消费”。效果图参考手机支付在POS机终端上的应用中“银行卡刷卡应用”

4、。(2) POS机发送寻找手机指令:POS机发送CONNECT指令,此时读写器会通过无线通道寻找周围可用于支付的SEIMMA卡,并返回找寻结果。(3) POS机发送刷卡交易初始化指令:POS机发送InitMC命令,SEIMMA卡收到后给出响应。POS机校验MAC1值,若MAC1正确,且手机响应为“执行正常”信息,则进入步骤4;若MAC1校验错误,或响应为错误信息或没有收到SEIMMA卡响应,则发送DISCONNECT命令,终止连接,POS机提示相关错误信息。(4) POS机发送读取磁道信息指令:POS机发送ReadMC命令,SEIMMA卡收到命令后校验POS机给出MAC2值是否正确,若MAC2

5、正确,则SEIMMA卡回复磁道信息数据;若MAC2错误,则SEIMMA卡回复MAC2校验错误信息。POS机判断SEIMMA卡响应为“执行正常”信息时,则进入步骤5;若SEIMMA卡响应为错误信息或没有收到SEIMMA卡响应,则发送DISCONNECT命令,终止连接,POS机提示相关错误信息。(5) POS机输入交易金额:收银员在POS机上输入交易金额后进入步骤6。目前单笔刷卡消费最大金额为9999.99。(6) 用户输入交易密码:密码输入环节支持两种方式:(一)用户在密码键盘上输入6位密码后,POS将数据发送到银行端,银行反馈正常,则进入步骤7;否则,POS机显示“帐户或密码错误”或者其他相关

6、错误信息,然后发送DISCONNECT命令,交易结束。(二)POS机上设置一个功能键,按一下直接跳过密码输入环节,进入步骤7。(方式二 暂预留)(7) POS机打印交易明细,并保存记录:POS机打印出交易明细,并且将此次交易记录保存在POS机内,供当天对帐时查阅、打印。进入步骤8。(8) POS机将交易记录返回给手机:POS机发送Transmit_Consume_Note命令,SEIMMA卡收到后给出响应。若SEIMMA卡响应为“执行正常”时,则进入步骤9。 若SEIMMA卡响应为错误信息或没有收到SEIMMA卡响应,则由POS机根据实际情况,决定是否需要重发该命令。若不再发送该命令,则进入步

7、骤9。(9) POS机发送读取签名信息指令: 若在步骤3,InitMC命令的应答数据中,表示签名字节长度2个字节为“00H 00H”,则POS提示“无签名图片”,并且跳过该步骤,发送DISCONNECT命令,交易完成。否则,POS机重复发送Read_Share_Sign命令(见3.5.3.4),直到签名数据读取完毕,每次SEIMMA卡收到命令后给出响应。POS机判断每次响应是否为“执行正常”信息,若全部为“执行正常”则显示签名图片,然后发送DISCONNECT命令,交易完成。若响应为错误信息或没有收到SEIMMA卡响应,可考虑重发,或者发送DISCONNECT命令,终止连接,POS机提示 “读

8、取签名失败”信息。3.1.3 指令集3.1.3.1 CONNECT(寻找手机)功能:CONNECT命令用于建立读写器与使用SEIMMA卡手机之间的连接。具体指令格式请参考读写器(POPmate)上位机通信协议1.7文档中“找卡”章节3.1.3.2 InitMC(刷卡交易初始化)3.1.3.2.1 定义和范围POS机发送该命令,初始化银行卡卡消费,把POS终端机编号和密钥索引号传给SEIMMA卡,并从SEIMMA卡中获取Read MC命令的响应数据长度,签名字节数,SEIMMA卡的ID号,4字节随机数和MAC1值。POS机通过验证MAC1值,可以辨别SEIMMA卡的真伪。3.1.3.2.2 命令

9、报文代码值(16进制表示)CLA 80INS 11P100P200Lc07DATA见表2Le13表1-InitMC命令报文3.1.3.2.3 命令报文数据域InitMC命令的数据内容如下:说明长度(字节)终端机编号(POS机)6密钥索引1表 2- InitMC命令报文数据域3.1.3.2.4 响应报文数据域响应报文的数据内容如下:说明长度(字节)Read MC指令响应数据长度1签名字节长度2SEIMMA卡的ID号8伪随机数4MAC14表 3- InitMC命令的响应报文数据域计算MAC1的过程密钥由密钥标识符指定的银行卡消费子密钥分别对(4字节伪随机数+终端机编号的前4位) 加密生成过程密钥的

10、左8位。再对(终端机编号的后2位+80 00 00 00 00 00)加密生成过程密钥的右8位。MAC1由卡中过程密钥对(1字节Read MC指令响应数据长度+2字节签名字节长度+8字节SEIMMA卡的ID号+4字节伪随机数)进行MAC计算生成,计算过程中的初始向量为“00 00 00 00 00 00 00 00”。3.1.3.2.5 响应报文状态码此命令正常执行返回表 所描述的数据域和状态码6113具体状态码的含义如下表所示:SW1 SW2意义61 13命令执行正常,有19个字节的响应数据。可用Get Response命令取回响应数据。67 00Lc长度不正确69 82不满足安全条件(不满

11、足密钥访问条件)69 83认证方式已被锁定6A 82文件未找到6A 86P1, P2参数不正确6A 88未知道密钥文件6E 00命令类型CLA错94 03密钥索引不支持 表4-InitMC命令的响应报文状态3.1.3.3 ReadMC(读银行卡信息指令)3.1.3.3.1 定义和范围该命令用于将银行卡的磁道信息从SEIMMA卡中读出。3.1.3.3.2 命令报文ReadMC命令报文如下:代码值(16进制表示)CLA 80INS 13P100P200Lc04DATA见表6LeXX表示所要返回的数据长度表5-ReadMC命令报文3.1.3.3.3 命令报文数据域ReadMC命令的数据内容如下:说明

12、长度(字节)MC24表 6- ReadMC命令报文数据域 MAC2由终端中过程密钥对(6字节POS终端机编号+4字节伪随机数)进行MAC计算生成,计算过程中的初始向量为“00 00 00 00 00 00 00 00”,其中过程密钥与计算MAC1时的过程密钥相同。 MAC2的过程密钥计算方法与MAC1的过程密钥一致。见3.1.3.2.4章节,关于MAC1过程密钥计算部分内容。3.1.3.3.4 响应报文数据域ReadMC命令响应报文数据域说明:说明字节磁道数据Le 表 7- ReadMC响应报文数据域磁道数据用Tag(标签) ,Len(长度), Val(值)表示,第一磁道 的Tag = 0x0

13、1;第二磁道Tag = 0x02; 第三磁道Tag = 0x03.例如: 第一磁道在SEIMMA卡中的值为:0x11,22,33.第二磁道在SEIMMA卡中的值为:0xaa,0xbb.第三磁道在SEIMMA卡中的值为:0x77,0x88 则返回的磁道数据表示为:0x01 0x03 0x11 0x22 0x33 0x02 0x02 0xaa 0xbb 0x03 0x02 0x77 0x88.以上磁道数据用十六进制数表示,第一磁道最大长度为79个字节,第二磁道最大长度为40个字节,第三磁道最大长度为107个字节。磁道数据格式请参考银行磁条卡磁道格式和使用规范。3.1.3.3.5 响应报文状态码状态

14、字节的含义如下表所示:SW1 SW2意义61 XX命令执行正常,有XX个字节的响应数据。可用Get Response命令取回响应数据。67 00Lc长度不正确69 01交易不连贯69 88MAC不正确6A 86P1,P2参数不正确6E 00命令类型(CLA)错表 8- ReadMC命令响应报文状态码3.1.3.4 Transmit_Consume_Note(返回消费记录指令)3.1.3.4.1 定义和范围POS终端机用该命令将消费信息返回给SEIMMA卡。3.1.3.4.2 命令报文Transmit_Consume_Note命令报文:代码值(16进制表示)CLA 84INS 15P100P20

15、0Lc4FDATA消费记录信息+MAC3,见表10Le不存在表 9- Transmit_Consume_Note命令的命令报文3.1.3.4.3 命令报文数据域Transmit_Consume_Note命令的命令报文数据域说明字节商户名称(国标码,不足20字节补空格)20商家号(ASCII码)15终端编号(ASCII码)4交易类型(字节码)1卡号长度(BCD码)1卡号内容(BCD码,不足10字节 补0x00)10交易金额(BCD码,整数4个字节,小数2个字节)6批次号(BCD码)3流水号(BCD码)3系统参考号6日期(终端) (BCD码)3时间(终端) (BCD码)3MAC34表 10- Tr

16、ansmit_Consume_Note命令的命令报文数据域MAC3由卡中过程密钥对(商户名称+商家号+终端编号+交易类型+卡号长度+卡号内容+交易金额+批次号+流水号+系统参考号+日期(终端) +时间(终端)进行MAC计算生成,计算过程中的初始向量为“00 00 00 00 00 00 00 00”。MAC3的过程密钥计算方法与MAC1的过程密钥一致。见3.1.3.2.4章节,关于MAC1过程密钥计算部分内容。3.1.3.4.4 响应报文数据域响应报文的数据域不存在。3.1.3.4.5 响应报文状态码正常执行返回9000状态字节的含义如下表所示:SW1 SW2意义90 00命令正确执行65 8

17、1写EEPROM不成功67 00Lc长度不正确69 01交易不连贯69 82不满足密钥使用条件69 83认证方式被锁定69 88MAC值不正确6A 82文件未找到6A 86P1,P2不正确6A 88未找到密钥文件6E 00不正确的CLA表 11- Transmit_Consume_Note命令的响应报文状态码3.1.3.5 DISCONNECT(中断连接)功能:DISCONNECT命令用于结束读写器与SEIMMA卡之间的连接。具体指令格式请参考读写器(POPmate)上位机通信协议1.7文档中“结束数据传输”章节。3.2 电子钱包交易流程及协议POS机与SEIMMA卡在电子钱包交互过程中,使用

18、下列交易指令,实现电子钱包交易操作。POS机与SEIMMA卡交互时,将使用SEIMMA卡的手机放置于距离读写器 10cm范围内。注意:圈存交易必须在金融终端上联机进行并要求提交个人密码(PIN),现假设POS机作为金融终端机使用。3.2.1 电子钱包圈存交易流程图下图为电子钱包消费交易流程图,POS机通过以下流程,与SEIMMA卡进行电子钱包消费交易。图-3.2.0电子钱包消费交易流程3.2.2 圈存交易步骤说明(1) POS机上支付类别选择:操作员在POS机上将应用类别选为“手机电子钱包圈存”。(2) POS机发送找卡指令:POS机发送CONNECT指令,此时读写器会通过无线通道寻找周围可用

19、于支付的SEIMMA卡,并返回找寻结果。若找卡成功,则进入步骤3,否则,提示“未找到电子钱包”信息,中断操作。(3) POS机发送圈存初始化指令:POS机发送INITIALIZE FOR LOAD命令,SEIMMA卡收到后给出响应。POS机判断响应为“执行正常”信息时,则验证卡片回复的MAC1是否有效。若有效,则进入步骤4;若无效,则发送DISCONNECT命令,终止连接,并提示相关错误信息信息。若响应为错误信息,则发送DISCONNECT命令,终止连接,并提示相关错误信息信息。若没有收到SEIMMA卡响应,则由POS机判断是否满足重发INITIALIZE FOR LOAD命令条件。若满足,则

20、再次发送该命令。若不满足,则发送DISCONNECT命令,终止连接,并提示相关错误信息信息。(4) POS机发送圈存指令:POS机发送CREDIT FOR LOAD命令,SEIMMA卡收到后,判断POS机给出的MAC2值是否正确。若正确,则返回响应报文数据TAC。若错误,则返回相应错误信息。POS机判断响应为“执行正常”信息,则进入步骤5;若响应为错误信息,则发送DISCONNECT命令,终止连接,并提示相关错误信息。若没有收到SEIMMA卡响应,则由POS机判断是否满足发送GET TRANSACTION PROVE命令条件。若满足,进入步骤6。若不满足,则发送DISCONNECT命令,终止连

21、接,并提示相关错误信息。(5) POS机验证TAC:POS机验证TAC值。若正确,则发送DISCONNECT命令,显示圈存交易成功,并保存交易明细。若不正确,则发送DISCONNECT命令,显示圈存交易相关错误信息。(根据PBOC2.0协议,POS机可以不马上验证TAC值)(6) POS机发送防插拔指令:POS机发送GET TRANSACTION PROVE命令,SEIMMA卡收到后给出响应。POS机判断响应为“执行正常”信息,则进入步骤5。响应为错误信息,则发送DISCONNECT命令,终止连接,并提示相关错误信息。若没有收到SEIMMA卡响应,则由POS机判断是否满足再次发送GET TRA

22、NSACTION PROVE命令条件。若满足,重复步骤6。若不满足,则发送DISCONNECT命令,终止连接,并提示相关错误信息。3.2.3 圈存交易指令集3.2.3.1 CONNECT(找卡)功能:CONNECT命令用于建立读写器与SEIMMA卡之间的连接。具体指令格式请参考读写器(POPmate)上位机通信协议1.7文档中“找卡”章节。3.2.3.2 INITIALIZE FOR LOAD3.2.3.2.1 定义和范围: INITIALIZE FOR LOAD命令用于初始化圈存交易。3.2.3.2.2 命令报文代码值CLA 80INS 50P100P2可选值:01 或 02;说明:01 用

23、于ED,02 用于EP。其他值保留。本协议中使用02Lc0BDATA1字节的密钥索引号 + 4字节的交易金额 + 6字节的终端机编号Le0F3.2.3.2.3 响应报文数据:如果此命令执行成功,有如下表数据作为响应报文数据,同时在报文数据后面有命令成功执行的状态码为 “9000”:说明长度(字节)EP余额4EP联机交易序号2密钥版本号DLK1算法标识DLK1伪随机数(SEIMMA卡)4MAC14 3.2.3.2.4 MAC1的计算过程:1. 由INITIALIZE FOR LOAD指定的密钥对下表数据加密产生8字节过程密钥SK。数据长度(字节)伪随机数4EP联机交易序号280 0022. MA

24、C1由卡中的过程密钥SK对下表数据按MAC的生成方法生成,初始8字节全为0. 数据长度(字节)交易前余额交易金额44交易类型标识1终端机编号6说明:交易类型标识:02H 圈存 06H 消费3.2.3.2.5 响应报文状态码: 其他情况时,此时不存在之前的报文数据,存在响应报文状态码,其情况如下表:SW1 SW2意义90 00命令正确执行65 81写EEPROM不成功67 00Lc长度不正确69 85使用条件不满足6D00INS不支持或错误6A 86 参数P1 P2不正确6A 81不支持此功能(卡片被锁定)6E 00不正确的CLA61xx正确执行,xx表示响应数据长度,可用下文的get resp

25、onse指令取回数据9403密钥索引不支持3.2.3.3 CREDIT FOR LOAD3.2.3.3.1 定义和范围: CREDIT FOR LOAD命令用于圈存交易。3.2.3.3.2 命令报文代码值CLA 80INS 52P100P200Lc0BDATA4字节的交易日期(主机) + 3字节的交易时间(主机) + 4字节的MAC2Le043.2.3.3.3 响应报文数据:如果此命令执行成功,有如下表数据作为响应报文数据,同时在报文数据后面有命令成功执行的状态码为 “9000”:说明长度(字节)TAC43.2.3.3.4 TAC的计算方法: TAC的计算不采用过程密钥方式,它用DTK左右8位

26、字节异或运算的结果对以下数据进行加密运算来产生(按所列顺序)。初始8字节值全为0。数据长度(字节)电子钱包余额(交易后)4电子钱包联机交易序号(加1前)交易金额交易类型标识241终端机编号6交易日期(主机)4交易时间(主机)33.2.3.3.5 MAC2的产生过程: MAC2由卡中的过程密钥SK对下表数据按MAC计算方法生成的,初始8字节值全为0。数据长度(字节)交易金额4交易类型标识1终端机编号6交易日期4交易时间33.2.3.3.6 响应报文状态码: 其他情况时,此时不存在之前的报文数据,存在响应报文状态码,其情况如下表:SW1 SW2意义90 00命令正确执行65 81写EEPROM不成

27、功67 00Lc长度不正确69 85使用条件不满足6D00INS不支持或错误6A 86 参数P1 P2不正确6A 81不支持此功能(卡片被锁定)6E 00不正确的CLA61xx正确执行,xx表示响应数据长度,可用下文的get response指令取回数据9302MAC无效3.2.3.4 GET TRANSACTION PROVE命令3.2.3.4.1 定义和范围GET TRANSACTION PROVE 命令提供了一种在交易处理过程中拔出并重插卡后卡片的恢复机制。在POS终端发给SEIMMA卡一个命令以更新电子钱包余额时,卡片总会回送一个交易验证码TAC,以证明更新已经发生。一旦余额更新成功,

28、可以通过GET TRANSACTION PROVE命令获得TAC.如果在命令已经执行结束,而终端还未收到响应之前,卡片被拔出,终端将处于不知卡片是否被更新的不定状态。在这种情况下,终端可以用GET TRANSACTION PROVE命令取TAC,如果返回9000,表示卡片更新成功,否则表示失败,要完成此次交易,必须从交易初始化重新开始。3.2.3.4.2 命令报文 GET TRANSACTION PROVE命令报文代码值CLA80INS5AP100P2要取的MAC或/和TAC所对应的交易类型标识。(02H 圈存 06H 消费)Lc02Data要取的MAC或/和TAC所对应的EP联机或脱机交易序

29、号。长度2字节Le08 GET TRANSACTION PROVE命令报文3.2.3.4.3 响应报文数据域 如果命令中指定的交易类型标识和EP联机或脱机交易序号对应的MAC或TAC可用,则响应报文数据域见表22:说明长度MAC4TAC4注意:圈存时,GET TRANSACTION PROVE响应不存在MAC值,该值4字节全部使用默认值00H。3.2.3.4.4 响应报文的状态码 此命令执行成功的状态码是9000。 下表描述了卡片可能回送的错误状态:SW1SW2含义6581内存错误6985使用条件不满足6D00INS不支持或错误6E00CLA不支持或错误9406所需MAC不可用GET TRAN

30、SACTION PROVE错误状态3.2.3.5 DISCONNECT(中断连接)功能:DISCONNECT命令用于结束读写器与SEIMMA卡之间的连接。具体指令格式请参考读写器(POPmate)上位机通信协议1.7文档中“结束数据传输”章节。3.2.4 电子钱包消费交易流程图下图为电子钱包消费交易流程图,POS机通过以下流程,与SEIMMA卡进行电子钱包消费交易。图-3.2.1 电子钱包消费交易流程3.2.5 消费交易步骤说明(1) POS机上支付类别选择:操作员在POS机上将支付类别选为“手机电子钱包消费”。效果图参考手机支付在POS机终端上的应用中“电子钱包刷卡应用”。(2) POS机发

31、送找卡指令:POS机发送CONNECT指令,此时读写器会通过无线通道寻找周围可用于支付的SEIMMA卡,并返回找寻结果。若找卡成功,则进入步骤3,否则,提示“未找到电子钱包”信息,中断操作。(3) POS机发送消费初始化指令:POS机发送INITIALIZE FOR PURCHASE命令,SEIMMA卡收到后给出响应。POS机判断响应为“执行正常”信息,则进入步骤4;若响应为错误信息,则发送DISCONNECT命令,终止连接,并提示相关错误信息信息。若没有收到SEIMMA卡响应,则由POS机判断是否满足重发INITIALIZE FOR PURCHASE命令条件。若满足,则再次发送该命令。若不满

32、足,则发送DISCONNECT命令,终止连接,并提示相关错误信息信息。(4) POS机发送消费指令:POS机发送DEBIT FOR PURCHASE命令,SEIMMA卡收到后,判断POS机给出的MAC1值是否正确。若正确,则返回响应报文数据TAC、MAC2。若错误,则返回相应错误信息。POS机判断响应为“执行正常”信息,则进入步骤5;若响应为错误信息,则发送DISCONNECT命令,终止连接,并提示相关错误信息。若没有收到SEIMMA卡响应,则由POS机判断是否满足发送GET TRANSACTION PROVE命令条件。若满足,进入步骤6。若不满足,则发送DISCONNECT命令,终止连接,并

33、提示相关错误信息。(5) POS机验证TAC及MAC2值:POS机分别验证TAC和MAC2值,若全部正确,则发送DISCONNECT命令,显示交易成功,并保存交易明细。若任何一个值不正确,则发送DISCONNECT命令,显示交易相关错误信息。(6) POS机发送防插拔指令:POS机发送GET TRANSACTION PROVE命令,SEIMMA卡收到后给出响应。POS机判断响应为“执行正常”信息,则进入步骤5。响应为错误信息,则发送DISCONNECT命令,终止连接,并提示相关错误信息。若没有收到SEIMMA卡响应,则由POS机判断是否满足再次发送GET TRANSACTION PROVE命令

34、条件。若满足,重复步骤6。若不满足,则发送DISCONNECT命令,终止连接,并提示相关错误信息。3.2.6 消费交易指令集3.2.6.1 CONNECT(找卡)功能:CONNECT命令用于建立读写器与SEIMMA卡之间的连接。具体指令格式请参考读写器(POPmate)上位机通信协议1.7文档中“找卡”章节。3.2.6.2 INITIALIZE FOR PURCHASE3.2.6.2.1 定义和范围: INITIALIZE FOR PURCHASE命令用于电子钱包消费的初始化操作。3.2.6.2.2 命令报文代码值CLA 80INS 50P101P2可选值:01 或 02;说明:01 用于ED

35、,02 用于EP。其他值保留。本协议中使用02Lc0BDATA1字节的密钥索引号 + 4字节的交易金额 + 6字节的终端机编号Le0F3.2.6.2.3 响应报文数据:如果此命令执行成功,有如下表数据作为响应报文数据,同时在报文数据后面有命令成功执行的状态码为 “9000”:说明长度(字节)EP余额4EP脱机交易序号2透支限额3密钥版本号DPK(命令报文数据第一字节指定圈存密钥的版本号)1算法标识DPK(命令报文数据第一字节指定圈存密钥的算法版本号)1伪随机数(IC卡)4 3.2.6.2.4 响应报文状态码: 其他情况时,此时不存在之前的报文数据,存在响应报文状态码,其情况如下表:SW1 SW

36、2意义90 00命令正确执行65 81写EEPROM不成功67 00Lc长度不正确69 85使用条件不满足6D00INS不支持或错误6A 86 参数P1 P2不正确6A 81不支持此功能(卡片被锁定)6E 00不正确的CLA61xx正确执行,xx表示响应数据长度,可用下文的get response指令取回数据9403密钥索引不支持9401余额不足3.2.6.3 DEBIT FOR PURCHASE3.2.6.3.1 定义和范围: 消费DEBIT FOR PURCHASE命令用于消费交易,该命令只有在成功执行了INITIALIZE FOR PURCHASE后,才能执行。3.2.6.3.2 命令报

37、文代码值CLA 80INS 54P101P200Lc0FDATA4字节的终端交易序号+ 4字节的交易日期(主机) + 3字节的交易时间(主机) + 4字节的MAC1Le083.2.6.3.3 MAC1的计算过程:3. 由INITIALIZE FOR PURCHASE指定的密钥对下表数据加密产生8字节过程密钥SK。数据长度(字节)伪随机数4EP脱机交易序号2终端交易序号的最右2字节24. MAC1由卡中的过程密钥SK对下表数据按MAC的生成方法生成,初始8字节全为0. 数据长度(字节)交易金额4交易类型标识1终端机编号6交易日期4交易时间3说明:交易类型标识:02H 圈存 06H 消费3.2.6

38、.3.4 响应报文数据:如果此命令执行成功,有如下表数据作为响应报文数据,同时在报文数据后面有命令成功执行的状态码为 “9000”:说明长度(字节)TAC4MAC243.2.6.3.5 TAC的计算方法: TAC由内部密钥DTK左右8字节异或的结果对下表数据按照产生MAC的方法生成。初始8字节值全为0。数据长度(字节)交易金额4交易类型标识1终端机编号6终端交易序号4交易日期4交易时间33.2.6.3.6 MAC2的产生过程: MAC2由卡中的过程密钥SK对四字节的交易金额按MAC计算方法生成的,初始8字节值全为0。3.2.6.3.7 响应报文状态码: 其他情况时,此时不存在之前的报文数据,存

39、在响应报文状态码,其情况如下表:SW1 SW2意义90 00命令正确执行65 81写EEPROM不成功67 00Lc长度不正确69 85使用条件不满足6D00INS不支持或错误6A 86 参数P1 P2不正确6A 81不支持此功能(卡片被锁定)6E 00不正确的CLA61xx正确执行,xx表示响应数据长度,可用下文的get response指令取回数据9401金额不足9302MAC无效3.2.6.4 GET TRANSACTION PROVE命令3.2.6.4.1 定义和范围GET TRANSACTION PROVE 命令提供了一种在交易处理过程中拔出并重插卡后卡片的恢复机制。在POS终端发给

40、SEIMMA卡一个命令以更新电子钱包余额时,卡片总会回送一个交易验证码TAC和MAC,以证明更新已经发生。一旦余额更新成功,可以通过GET TRANSACTION PROVE命令获得MAC和TAC.如果在命令已经执行结束,而终端还未收到响应之前,卡片被拔出,终端将处于不知卡片是否被更新的不定状态。在这种情况下,终端可以用GET TRANSACTION PROVE命令取回MAC和TAC,如果返回9000,表示卡片更新成功,否则表示失败,要完成此次交易,必须从交易初始化重新开始。3.2.6.4.2 命令报文 GET TRANSACTION PROVE命令报文代码值CLA80INS5AP100P2要

41、取的MAC或/和TAC所对应的交易类型标识。(02H 圈存 06H 消费)Lc02Data要取的MAC或/和TAC所对应的EP联机或脱机交易序号。长度2字节Le08 GET TRANSACTION PROVE命令报文3.2.6.4.3 响应报文数据域 如果命令中指定的交易类型标识和EP联机或脱机交易序号对应的MAC或TAC可用,则响应报文数据域见表22:说明长度MAC4TAC4 GET TRANSACTION PROVE响应报文数据域3.2.6.4.4 响应报文的状态码 此命令执行成功的状态码是9000。 下表描述了卡片可能回送的错误状态:SW1SW2含义6581内存错误6985使用条件不满足6D00INS不支持或错误6E00CLA不支持或错误9406所需MAC不可用GET TRANSACTION PROVE错误状态3.2.6.5 DISCONNEC

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1