手机支付协议规范(商用版) .doc_第1页
手机支付协议规范(商用版) .doc_第2页
手机支付协议规范(商用版) .doc_第3页
手机支付协议规范(商用版) .doc_第4页
手机支付协议规范(商用版) .doc_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4a138bbe4044639caa5dbae0d7bf69e7.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身份识别交互流程及协议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机)应答格式:d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论