手机支付协议规范商用版

上传人:仙*** 文档编号:67264373 上传时间:2022-03-30 格式:DOC 页数:65 大小:1.83MB
返回 下载 相关 举报
手机支付协议规范商用版_第1页
第1页 / 共65页
手机支付协议规范商用版_第2页
第2页 / 共65页
手机支付协议规范商用版_第3页
第3页 / 共65页
点击查看更多>>
资源描述
手机支付协议规范(商用版)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身份识别交互流程及协议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.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机终端上的应用中“银行卡刷卡应用”。(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正确,则SEIMMA卡回复磁道信息数据;若MAC2错误,则SEIMMA卡回复MAC2校验错误信息。POS机判断SEIMMA卡响应为“执行正常”信息时,则进入步骤5;若SEIMMA卡响应为错误信息或没有收到SEIMMA卡响应,则发送DISCONNECT命令,终止连接,POS机提示相关错误信息。(5) POS机输入交易金额:收银员在POS机上输入交易金额后进入步骤6。目前单笔刷卡消费最大金额为9999.99。(6) 用户输入交易密码:密码输入环节支持两种方式:(一)用户在密码键盘上输入6位密码后,POS将数据发送到银行端,银行反馈正常,则进入步骤7;否则,POS机显示“帐户或密码错误”或者其他相关错误信息,然后发送DISCONNECT命令,交易结束。(二)POS机上设置一个功能键,按一下直接跳过密码输入环节,进入步骤7。(方式二 暂预留)(7) POS机打印交易明细,并保存记录:POS机打印出交易明细,并且将此次交易记录保存在POS机内,供当天对帐时查阅、打印。进入步骤8。(8) POS机将交易记录返回给手机:POS机发送Transmit_Consume_Note命令,SEIMMA卡收到后给出响应。若SEIMMA卡响应为“执行正常”时,则进入步骤9。 若SEIMMA卡响应为错误信息或没有收到SEIMMA卡响应,则由POS机根据实际情况,决定是否需要重发该命令。若不再发送该命令,则进入步骤9。(9) POS机发送读取签名信息指令: 若在步骤3,InitMC命令的应答数据中,表示签名字节长度2个字节为“00H 00H”,则POS提示“无签名图片”,并且跳过该步骤,发送DISCONNECT命令,交易完成。否则,POS机重复发送Read_Share_Sign命令(见3.5.3.4),直到签名数据读取完毕,每次SEIMMA卡收到命令后给出响应。POS机判断每次响应是否为“执行正常”信息,若全部为“执行正常”则显示签名图片,然后发送DISCONNECT命令,交易完成。若响应为错误信息或没有收到SEIMMA卡响应,可考虑重发,或者发送DISCONNECT命令,终止连接,POS机提示 “读取签名失败”信息。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 命令报文代码值(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位) 加密生成过程密钥的左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不满足安全条件(不满足密钥访问条件)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命令的数据内容如下:说明长度(字节)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 = 0x01;第二磁道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 响应报文状态码状态字节的含义如下表所示: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 15P100P200Lc4FDATA消费记录信息+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- Transmit_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 81写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卡在电子钱包交互过程中,使用下列交易指令,实现电子钱包交易操作。POS机与SEIMMA卡交互时,将使用SEIMMA卡的手机放置于距离读写器 10cm范围内。注意:圈存交易必须在金融终端上联机进行并要求提交个人密码(PIN),现假设POS机作为金融终端机使用。3.2.1 电子钱包圈存交易流程图下图为电子钱包消费交易流程图,POS机通过以下流程,与SEIMMA卡进行电子钱包消费交易。图-3.2.0电子钱包消费交易流程3.2.2 圈存交易步骤说明(1) POS机上支付类别选择:操作员在POS机上将应用类别选为“手机电子钱包圈存”。(2) POS机发送找卡指令:POS机发送CONNECT指令,此时读写器会通过无线通道寻找周围可用于支付的SEIMMA卡,并返回找寻结果。若找卡成功,则进入步骤3,否则,提示“未找到电子钱包”信息,中断操作。(3) POS机发送圈存初始化指令:POS机发送INITIALIZE FOR LOAD命令,SEIMMA卡收到后给出响应。POS机判断响应为“执行正常”信息时,则验证卡片回复的MAC1是否有效。若有效,则进入步骤4;若无效,则发送DISCONNECT命令,终止连接,并提示相关错误信息信息。若响应为错误信息,则发送DISCONNECT命令,终止连接,并提示相关错误信息信息。若没有收到SEIMMA卡响应,则由POS机判断是否满足重发INITIALIZE FOR LOAD命令条件。若满足,则再次发送该命令。若不满足,则发送DISCONNECT命令,终止连接,并提示相关错误信息信息。(4) POS机发送圈存指令:POS机发送CREDIT FOR LOAD命令,SEIMMA卡收到后,判断POS机给出的MAC2值是否正确。若正确,则返回响应报文数据TAC。若错误,则返回相应错误信息。POS机判断响应为“执行正常”信息,则进入步骤5;若响应为错误信息,则发送DISCONNECT命令,终止连接,并提示相关错误信息。若没有收到SEIMMA卡响应,则由POS机判断是否满足发送GET TRANSACTION PROVE命令条件。若满足,进入步骤6。若不满足,则发送DISCONNECT命令,终止连接,并提示相关错误信息。(5) POS机验证TAC:POS机验证TAC值。若正确,则发送DISCONNECT命令,显示圈存交易成功,并保存交易明细。若不正确,则发送DISCONNECT命令,显示圈存交易相关错误信息。(根据PBOC2.0协议,POS机可以不马上验证TAC值)(6) POS机发送防插拔指令:POS机发送GET TRANSACTION PROVE命令,SEIMMA卡收到后给出响应。POS机判断响应为“执行正常”信息,则进入步骤5。响应为错误信息,则发送DISCONNECT命令,终止连接,并提示相关错误信息。若没有收到SEIMMA卡响应,则由POS机判断是否满足再次发送GET TRANSACTION 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 用于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. MAC1由卡中的过程密钥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 response指令取回数据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位字节异或运算的结果对以下数据进行加密运算来产生(按所列顺序)。初始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不成功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,以证明更新已经发生。一旦余额更新成功,可以通过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联机或脱机交易序号。长度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 TRANSACTION 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机发送找卡指令:POS机发送CONNECT指令,此时读写器会通过无线通道寻找周围可用于支付的SEIMMA卡,并返回找寻结果。若找卡成功,则进入步骤3,否则,提示“未找到电子钱包”信息,中断操作。(3) POS机发送消费初始化指令:POS机发送INITIALIZE FOR PURCHASE命令,SEIMMA卡收到后给出响应。POS机判断响应为“执行正常”信息,则进入步骤4;若响应为错误信息,则发送DISCONNECT命令,终止连接,并提示相关错误信息信息。若没有收到SEIMMA卡响应,则由POS机判断是否满足重发INITIALIZE FOR PURCHASE命令条件。若满足,则再次发送该命令。若不满足,则发送DISCONNECT命令,终止连接,并提示相关错误信息信息。(4) POS机发送消费指令:POS机发送DEBIT FOR PURCHASE命令,SEIMMA卡收到后,判断POS机给出的MAC1值是否正确。若正确,则返回响应报文数据TAC、MAC2。若错误,则返回相应错误信息。POS机判断响应为“执行正常”信息,则进入步骤5;若响应为错误信息,则发送DISCONNECT命令,终止连接,并提示相关错误信息。若没有收到SEIMMA卡响应,则由POS机判断是否满足发送GET TRANSACTION PROVE命令条件。若满足,进入步骤6。若不满足,则发送DISCONNECT命令,终止连接,并提示相关错误信息。(5) POS机验证TAC及MAC2值:POS机分别验证TAC和MAC2值,若全部正确,则发送DISCONNECT命令,显示交易成功,并保存交易明细。若任何一个值不正确,则发送DISCONNECT命令,显示交易相关错误信息。(6) POS机发送防插拔指令:POS机发送GET TRANSACTION PROVE命令,SEIMMA卡收到后给出响应。POS机判断响应为“执行正常”信息,则进入步骤5。响应为错误信息,则发送DISCONNECT命令,终止连接,并提示相关错误信息。若没有收到SEIMMA卡响应,则由POS机判断是否满足再次发送GET TRANSACTION PROVE命令条件。若满足,重复步骤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,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 SW2意义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 命令报文代码值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.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 响应报文状态码: 其他情况时,此时不存在之前的报文数据,存在响应报文状态码,其情况如下表: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终端发给SEIMMA卡一个命令以更新电子钱包余额时,卡片总会回送一个交易验证码TAC和MAC,以证明更新已经发生。一旦余额更新成功,可以通过GET TRANSACTION PROVE命令获得MAC和TAC.如果在命令已经执行结束,而终端还未收到响应之前,卡片被拔出,终端将处于不知卡片是否被更新的不定状态。在这种情况下,终端可以用GET TRANSACTION PROVE命令取回MAC和TAC,如果返回9000,表示卡片更新成功,否则表示失败,要完成此次交易,必须从交易初始化重新开始。3.2.6.4.2 命令报文 GET TRANSACTION PROVE命令报文代码值CLA80INS5AP100P2要取的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 DISCONNECT(中断连接)功能:DISCONNECT命令用于结束读写器与SEIMMA卡之间的连接。具体指令格式请参考读写器(POPmate)上位机通信协议1.7文档中“结束数据传输”章节。3.3 电子票据交互流程及协议POS机与SEIMMA卡交互过程中,使用下列指令,实现电子票据显示、打印操作。POS机与SEIMMA卡交互时,将使用SEIMMA卡的手机放置于距离读写器设备10cm范围内。3.3.1 电子票据读取部分3.3.1.1 电子票据读取流程图下图为读取电子票据流程图,POS机通过以下流程,读取SEIMMA卡中电子票据信息。图-3.3.0 电子票据交互流程图3.3.1.2 电子票据读取步骤说明(1) POS机上选择“电子票据操作”:操作员在POS机上选择“电子票据操作”选项。(2) POS机发送找卡指令:POS机发送CONNECT指令,此时读写器会通过无线通道寻找周围有效的SEIMMA卡,并返回找寻结果。若找到有效SEIMMA卡,则进入步骤3;否则,提示相关错误信息,发送DISCONNECT指令,中断操作。(3) POS机发送读取电子票据初始化指令:POS机发送Read_ET_Init命令,SEIMMA卡收到后给出响应。POS机判断响应为“存在电子票据”信息,则进入步骤4。若响应为“无电子票据”或错误信息,则POS机上提示“无有效电子票据”或相关错误信息。若无响应或响应不符合协议,则由POS机判断是否重发。若重发则再次发送该命令。若不再重发,则提示“通讯失败”,发送DISCONNECT指令,中断操作。(4) POS机发送读取电子票据数据指令:由于存在电子票据数据量较大的情况,POS机需要反复发送Read_ET_Info命令,直到电子票据数据读取完毕。POS机读取数据完毕,判断响应全部为有效信息,则进入步骤5。若无响应或响应不符合协议,则由POS机判断是否重发。若重发,则再次发送该指令,若不再重发,则提示“读取电子票据失败” ,发送DISCONNECT指令,中断操作。(5) POS机发送读取电子票据完毕指令:POS机发送Read_ET_End命令,SEIMMA卡收到后给出响应。POS机判断响应为“正常执行”,则发送DISCONNECT指令,进入步骤6。否则,若响应不符合协议或无响应,POS机可根据实际情况,判断是否需要重发Read_ET_End命令,若不再重发该指令,则发送DISCONNECT指令,进入步骤6。(6) POS机保存电子票据数据:POS机读取完电子票据完整数据后,判断是否需要打印。若需要打印,则通过POS的打印机打印出来。若打印不成功,则可由操作员或POS机自动再次操作打印电子票据信息。3.3.2 电子票据写入部分3.3.2.1 电子票据写入流程图下图为写入电子票据流程图,POS机通过以下流程,将电子票据信息写入SEIMMA卡中。图-3.3.0 电子票据交互流程图3.3.2.2 电子票据写入步骤说明(1) POS机上选择“电子票据操作”:操作员在POS机上选择“电子票据操作”选项。(2) POS机发送找卡指令:POS机发送CONNECT指令,此时读写器会通过无线通道寻找周围有效的SEIMMA卡,并返回找寻结果。若找到有效SEIMMA卡,则进入步骤3;否则,提示相关错误信息,发送DISCONNECT指令,中断操作。(3) POS机发送写入电子票据初始化指令:POS机发送Write_ET_Init命令,SEIMMA卡收到后给出响应。POS机判断响应为执行正常信息,则进入步骤4。若响应为错误信息,则POS机上提示相关错误信息。若无响应或响应不符合协议,则由POS机判断是否重发。若重发则再次发送该命令。若不再重发,则提示“通讯失败”,发送DISCONNECT指令,中断操作。(4) POS机发送写入电子票据数据指令:由于存在电子票据数据量较大的情况,POS机需要反复发送Write_ET_Info命令,直到电子票据数据全部写入完毕。电子票据数据写入完毕,POS机判断响应全部为有效信息,则进入步骤5。若无响应或响应不符合协议,则由POS机判断是否重发。若重发,则再次发送该指令,若不再重发,则提示“写入电子票据失败” ,发送DISCONNECT指令,中断操作。(5) POS机发送写入电子票据完毕指令:POS机发送Write_ET_End命令,SEIMMA卡收到后给出响应。POS机判断响应为“正常执行”,则发送DISCONNECT指令,提示操作成功信息。否则,若响应不符合协议或无响应,POS机可根据实际情况,判断是否需要重发Write_ET_End命令,若不再重发该指令,则发送DISCONNECT指令,提示电子票据写入失败。3.3.3 指令集3.3.3.1 CONNECT(找卡)功能:CONNECT命令用于建立读写器与SEIMMA卡之间的连接。具体指令格式请参考读写器(POPmate)上位机通信协议1.7文档中“找卡”章节。3.3.3.2 Write_ET_Init(写入电子票据数据初始化指令)功能:Write_ET_Init命令用于初始化电子票据写入过程,POS机通过该指令将电子票据数据写入SEIMMA卡内。命令格式:CLAINSP1P2LcDATALe30H01H00H00H2AHData参数说明:P1:固定00HP2:固定00H Lc:DATA字段数据长度。固定 2AHData(1)(4):票据类型。Data(5)(6):票据序号。Data(7)(18):票据名称 UNICODE 表示Data(19)(22):票据创建日期Data(23)(26):票据起始有效期Data(27)(30):票据终止有效期Data(31):票据使用次数上限。 00H表示无限制。Data(32):票据已读取次数。初始值 00HData(33)(34):预留数据。Data(35)(36):票据长度Data(37)(42):终端机编号(POS机)应答格式:DATASW1-SW2 Data状态字节 参数说明:Data(1) (2):写电子票据序列号(卡片提供)。 当状态字节为错误时,Data字段不存在。状态字节的含义如下表所示:性质SW1SW2意义正常9000命令执行正常错误6982条件未满足6A81不支持此功能6A86P1, P2参数不正确6Cxx长度错误(Le错误,xx为实际长度)6E00命令类型(CLA)错6D00INS不支持或错误 94 01电子票据类型错误 94 02电子票据索引错误 94 04可建电子票据数量已到上限 94 05相同类型和索引的帐号已存在 94 06尚未发送写入电子票据初始化指令 94 07写电子票据序列号错误3.3.3.3 Write_ET_Info(写入电子票据数据指令)功能:终端设备通过Write_ET_Info指令将电子票据数据内容写入SEIMMA卡内。该指令需要重复多次发送。命令格式:CLAINSP1P2LcDATALe30H02HxxHyyHLenData参数说明:P1:xxH。P2:yyH。 P1+P2组成写入票据内容地址的偏移量。即第一次写时,P1=00H P2=00H;第二次写时,P1=00H P2=前一次的P2值+前一次写的数据长度;以此类推。Lc:DATA字段数据长度。Len范围:00HDCH 注意:每次写入数据长度不得超过220个字节Data(1)(Len):票据数据内容。 应答格式:DATASW1-SW2 状态字节 参数说明:Data:不存在 状态字节的含义如下表所示:性质SW1SW2意义正常9000命令执行正常错误6982条件未满足6A81不支持此功能6A86P1, P2参数不正确6Cxx长度错误(Le错误,xx为实际长度)6E00命令类型(CLA)错6D00INS不支持或错误 94 01电子票据类型错误 94 02电子票据索引错误 94 04可建电子票据数量已到上限 94 05相同类型和索引的帐号已存在 94 06尚未发送写入电子票据初始化指令 94 07写电子票据序列号错误3.3.3.4 Write_ET_End(结束写入电子票据数据指令)功能:终端设备通过Write_ET_End指令通知SEIMMA卡一次写电子票据过程结束。终端机必须发送完该指令,写卡过程才结束。命令格式:CLAINSP1P2LcDATALe30H03HxxH00H02HData参数说明:P1:xxH。 00H 保存电子票据写入数据 01H 放弃保存电子票据写入数据P2:固定00H。Lc:DATA字段数据长度。固定00H。Data(1)(2):写电子票据序列号。应答格式:DATASW1-SW2 状态字节 参数说明:Data:不存在 状态字节的含义如下表所示:性质SW1SW2意义正常9000命令执行正常错误6982条件未满足6A81不支持此功能6A86P1, P2参数不正确6Cxx长度错误(Le错误,xx为实际长度)6E00命令类型(CLA)错6D00INS不支持或错误 94 01电子票据类型错误 94 02电子票据索引错误 94 04可建电子票据数量已到上限 94 06尚未发送写入电子票据初始化指令 94 07写电子票据序列号错误3.3.3.5 Read _ET_ Init(读取电子票据初始化指令)功能:Read _ET_Init命令用于初始化电子票据交互过程,POS机通过该指令可获取电子票据相关信息。命令格式:CLAINSP1P2LcDATALe30H04HxxH00H15HData参数说明:P1:电子票据选择方式:00H 选择当前默认票据 01H按类型加序号选择票据P2:固定00H Lc:DATA字段数据长度。固定 15HData(1)(4):票据类型。Data(5)(6):票据序号。Data(7)(12):终端机编号(POS机)。Data(13)(16):读取日期。例如20H 09H 09H 01H 表示2009年09月01日Data(17)(19):读取时间。例如10H 02H 23H 表示10时02分23秒D
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!