一种对电子钱包进行消费的方法

文档序号:6669873阅读:326来源:国知局
专利名称:一种对电子钱包进行消费的方法
技术领域
本发明涉及信息安全领域,特别涉及一种对电子钱包进行消费的方法。
背景技术
CPU卡的芯片内含有一个微处理器,它的功能相当于一台微型计算机,并且CPU卡 内包括中央处理器(CPU)、只读存储器(ROM)、随机存取存储器(RAM)、电可擦除可编程只读 存储器(EEPROM)等,具有信息量大、防伪安全性高、可脱机作业,可多功能开发等优点。CPU 卡采用强大而稳定的安全控制器,增强了卡片的安全性,并且CPU卡所特有的内外部认证 机制以及以金融IC卡规范为代表的专用认证机制,能够完全保证交易的合法性和安全性, 然后CPU卡的应用防火墙功能可以保障同一张卡中不同应用的安全独立性,同时,CPU卡的 大容量存储空间又可以满足预期的大金额消费应用所要求的更多客户信息的存储。在现有技术中,CPU卡中的电子钱包可以实现普通的圈存、消费/取现、圈提、更新 透支限额等基本交易功能,但是在遇到特殊的应用时,如在需要对不同的充值金额进行分 级打折优惠的促销性应用时,如商场、超市、餐馆、健身会所等机构的会员卡,则现有的电子 钱包的普通的圈存操作和消费操作不能满足这种应用。

发明内容
为了解决现有技术中的不足,本发明提供了一种对电子钱包进行消费的方法,所 述方法包括CPU卡进入终端的非接触式感应区内,所述CPU卡上电并初始化;等待接收所述终端发送的命令;当接收所述终端发送的消费初始化命令时,读取所述消费初始化命令中的数据并 保存,其中所述数据中包括交易金额;按照预先约定的算法对所述交易金额和复合应用专用文件中的相应记录中的值 进行运算,得到新金额;读取所述电子钱包的余额,判断所述新金额是否超过所述电子钱包的余额与透支 限额的和;若是,则向所述终端返回所述电子钱包余额不足的信息,终止操作;若否,则生成一个伪随机数和一个过程密钥,将所述消费初始化命令的响应报文 返回给所述终端;接收所述终端发送的消费命令,读取所述消费命令中的数据并保存;从所述电子钱包的余额中扣减所述新金额,得到新的余额,并将所述消费命令的 响应报文返回给所述终端。本发明的有益效果在于本发明提供了一种对电子钱包进行消费的方法,通过本 发明提供的方法使整个交易过程更安全,且防止了采取非法的手段去修改CPU卡中的复合 应用专用文件,进一步地简化了分级打折优惠操作的实现,只需要在圈存时对复合应用专用文件进行设定即可,然后在消费时对消费金额自动进行处理,并且方便管理,从而节省了 管理的成本。


图1为本实施例提供的一种对电子钱包进行消费的方法的流程图;图2为本实施例提供的一种对电子钱包进行消费的方法的详细流程图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式做进一步地详细描述。为了简化了分级打折优惠操作,便于对消费金额自动进行处理,本发明实施例提 供了一种对电子钱包进行消费的方法,参见图1,该方法内容包括Sl :CPU卡进入终端的非接触式感应区内,所述CPU卡上电并初始化;S2 等待接收所述终端发送的命令;S3:当接收所述终端发送的消费初始化命令时,读取所述消费初始化命令中的数 据并保存,其中所述数据中包括交易金额;S4:按照预先约定的算法对所述交易金额和复合应用专用文件中的相应记录中的 值进行运算,得到新金额;S5:读取所述电子钱包的余额,判断所述新金额是否超过所述电子钱包的余额与 透支限额的和;若是,则向所述终端返回所述电子钱包余额不足的信息,终止操作;若否,则生成一个伪随机数和一个过程密钥,将所述消费初始化命令的响应报文 返回给所述终端;S6 接收所述终端发送的消费命令,读取所述消费命令中的数据并保存;S7:从所述电子钱包的余额中扣减所述新金额,得到新的余额,并将所述消费命令 的响应报文返回给所述终端。为了对本发明实施例提供的方法进行详细说明,请参见如下实施例实施例本发明实施例提供了一种对电子钱包进行消费的方法,在本实施例中,CPU卡内 的电子钱包除了具有支持复合应用的钱包的所有交易功能外,还支持复合圈存和消费的功 能,并且对CPU卡内电子钱包的复合圈存操作是在CPU终端进行的,本实施例中进行复合圈 存操作时,将交易金额直接加到电子钱包的余额上,相应地,在消费时,则按照预先约定的 算法对交易金额和复合专用文件的相应记录中的值进行运算,得到新金额,再从电子钱包 的余额中扣减得到的新金额,得到电子钱包的新余额,完成消费操作。参见图2,一种对电子钱包进行消费的方法,具体实现步骤如下步骤101 =CPU卡进入终端的非接触式感应区内,CPU卡上电并初始化;步骤102 等待接收终端发送的应用命令,当接收到复合圈存初始化命令 INITIALIZE FOR CAPP LOAD时,执行步骤103,当接收到消费初始化命令INITIALIZE FOR PURCHASE,执行步骤1 ;
步骤103 读取复合圈存初始化命令INITIALUE FOR CAPP LOAD中包含的数据并保存;在本实施例中,复合圈存初始化命令INITIALUE FOR CAPP LOAD用于初始化复 合圈存交易,并且INITIALUE FOR CAPP LOAD命令的报文分成命令头+命令体,即为 (CLA+INS+Pl+P2) + (Lc+Data+Le),其中,CLA+INS+P1+P2 为命令头,Lc+Data+Le 为命令体, 命令头为命令的编码,命令头中的CLA为指令类别,INS为指令代码,Pl和P2为指令参数; 命令体中的Lc为命令体内Data中数据的长度,Data为INITIALUE FOR CAPP LOAD命令 中的数据,Le是期望的应答APDU数据字段的最大字节数;并且INITIALUE FOR CAPP LOAD命令的Data中保存的数据具体为密钥索引号、 交易金额和终端机编号;具体地,在本实施例中,接收到的INITIALUE FOR CAPP LOAD命令具体为80 50 06 02 OB 02 00 00 03 E8 00 00 00 00 00 01 10,其中 80 为 CLA,50 为 INS,06 为 P1,定 义为复合圈存初始化的标识,02为P2,定义为电子钱包的标识,OB为Lc,02为Data中的密 钥索引号,00 00 03 E8为Data中的交易金额,00 00 00 00 00 01为Data中的终端机编 号,10为Le。步骤104 检查自身是否支持INITIALUE FOR CAPP LOAD命令中包含的密钥索引 号,若不支持,则执行步骤105,若支持,则执行步骤106 ;步骤105 向终端返回状态码0x9403,同时终止执行复合圈存初始化操作;步骤106 生成一个四字节的伪随机数和一个过程密钥;在本实施例中,生成过程密钥的方法具体为将上述伪随机数、电子钱包联机交易序号和‘8000’顺序链接,再利用圈存子密钥 DLK对链接后得到的数据进行加密,得到的加密后的数据即为过程密钥。步骤107 利用上述过程密钥计算得到第一报文鉴别码MACl ;在本实施例中,利用过程密钥计算得到第一报文鉴别码MACl的方法具体为将交易前的电子钱包的余额、交易金额、交易类型标识和终端机编号顺序链接,再 利用过程密钥对链接后的数据进行加密,得到的加密后的数据的前四个字节即为第一报文 鉴别码MACl。步骤108 将INITIALUE FOR CAPP LOAD命令的响应报文返回给终端;其中,INITIALUE FOR CAPP LOAD命令的响应报文由Data+swl+sw2组成,当命令 执行成功时,则响应报文中的状态码swl和sw2为‘9000’,相应地,数据域Data中包含的数 据有交易前的CPU电子钱包的余额、CPU钱包的联机交易序号、密钥版本号、算法标识、伪 随机数和MACl,当命令执行不成功时,则响应报文中的状态码swl和sw2不为‘9000’,并且 也不存在数据域Data ;具体地,在本实施例中,INITIALUE FOR CAPP LOAD命令的响应报文具体为00 00 00 00 00 01 02 01 01 02 03 04 00 01 Bl OA 90 00。步骤109 接收终端发送的更新记录命令UPDATE RECORD ;在本实施例中,更新记录命令UPDATE RECORD用于更新复合应用专用文件中的相 应记录中的数据;复合应用专用文件由文件头和文件体组成,文件头具体包括2个字节的FILE_ID、1个字节的FILE TYPE、2个字节的FILE SUE、1个字节的AC1、1个字节的AC2和2个 字节的RFU,其中当FILE TYPE为00时,表示该文件为二进制文件,当FILE TYPE为01时, 表示该文件为定长记录文件,当FILE TYPE为02时,表示该文件为变长记录文件,当FILE TYPE为03时,表示该文件为循环文件,当FILE TYPE为05时,表示该文件为密钥文件,相应 地,二进制文件对应的FILE SUE为文件大小,定长记录文件对应的FILE SUE为记录条数 和记录长度,变长记录文件对应的FILE SUE为记录条数和记录最大长度,循环文件对应的 FILE SIZE为记录条数和记录长度,密钥文件对应的FILE SIZE为记录条数和记录长度,并 且ACl为读文件权限,AC2为写文件权限;文件体中为复合应用专用文件的数据;具体地,在本实施例中,复合应用专用文件具体为定长记录文件,则FILETYPE为 01,且FILE SUE为记录条数和记录长度,具体为OA 10,文件体中的内容为空;进一步地,UPDATERECORD 命令报文由 CLA+INS+Pl+P2+Lc+Data 组成,其中 Pl 和 P2用于指定将哪个文件的第几条记录作为复合应用专用文件的记录,Lc为Data中的数据 的长度加上4个字节,本实施例中,UPDATE RECORD命令具体为80 DC 03 68 08 00 00 80 00,其中,00 为 CLA, DC 为 INS,03 为 Pl,04 为 P2,08 为 Lc,00 00 80 00 为 Data ;并且UPDATE RECORD命令的数据域中即为要写入复合应用专用文件的相应记录中 的新数据,其中,由于复合应用专用文件中的每条记录对应的具体应用可以由发卡方自定 义,数据域中的数据也可以是自定义的,如在本实施例中自定义数据域中的数据具体为费 率值,则将该费率值写入复合应用专用文件中用于写费率值的记录中,具体地,在本实施例 中具体定义费率值为80% ;相应地,当定义费率值为80%时,更新记录命令中的数据可以不是80%,可以是 125%,还可以是20%,或者,更新记录命令的数据中可以不包括费率值,而由CPU卡对复合 圈存初始化命令中包含的交易金额进行判断,根据交易金额生成一个费率值,将这个生成 的费率值写入复合应用专用文件的相应记录中,或者,更新记录命令的数据中包含一个费 率值和该费率值的前提条件,由于本实施例中的复合应用专用文件具体为定长记录文件, 则预先约定该复合应用专用文件中的每一条记录具体包含一种前提条件下的费率值,如当 消费时的交易金额大于200元,小于300元时,费率值为负20元或者费率值为90%,表示消 费时满200减20或者满200打9折,或当消费时的交易金额大于500元,小于600元时,则 费率值为负100元或者费率值为80%,表示消费时满500减100或者满500打8折等等,具 体复合应用专用文件中的每一条记录对应的前提条件可以由发卡方预先定义的,并且在该 种前提条件下的费率值也是由发卡方自定义的。步骤110 判断UPDATE RECORD命令中是否存在短文件标识符SFI域,若存在,则 执行步骤111,若不存在,则执行步骤112 ;其中,判断更新记录命令UPDATE RECORD中是否存在SFI域的方法具体为判断 UPDATE RECORD命令中的P2的高5位是否全为0,若是,则表示命令中存在SFI域,即P2的 高5位即是SFI值,否则,表示命令中不存在SFI域;具体地,本实施例中UPDATE RECORD命令中的P2为68,表示P2的高5位为01101,存在SFI域。步骤111 查找CPU卡当前应用下是否存在一个文件的SFI值与UPDATEREC0RD命 令中的SFI值相同,若不存在,则执行步骤112,若存在,则执行步骤113 ;
步骤112 向终端返回状态码0x6A82,同时终止执行此次复合圈存交易;步骤113 将步骤111中查找得到的文件作为复合应用专用文件,并根据UPDATE RECORD命令中指定的记录号在该复合应用专用文件中查找相应的记录,若没有找到相应的 记录,则执行步骤114,若找到,则执行步骤115 ;具体地,在本实施例中,UPDATE RECORD命令中的Pl为03,因此上述复合应用专用 文件中记录号为03的记录即为需要查找的记录。步骤114 向终端返回状态码0x6A83,同时终止执行此次复合圈存交易;步骤115 检查UPDATE RECORD命令中的数据域的长度是否大于步骤113中查找 得到的记录的指定长度,若大于,则执行步骤116,若不大于,则执行步骤117 ;在本实施例中,由于复合应用专用文件是定长记录文件,且复合应用专用文件中 的FILE SUE为记录条数和记录长度,所以复合应用专用文件中的记录长度由FILE SIZE 的值决定,由于本实施例中UPDATE RECORD命令中Lc的值为08,FILE SIZE的值为OA 10, 所以命令中的数据域的长度不大于复合应用专用文件的长度。步骤116 向终端返回状态码0x6A84,同时终止执行此次复合圈存交易;步骤117 将UPDATE RECORD命令中的数据域中的数据写入查找得到的记录中,替 换该记录中的原有内容;在本实施例中,具体将费率值80%写入该记录中,替换该记录中的原有内容;由 于本实施例中复合应用专用文件中的记录中的原有内容为空,因此直接将UPDATE RECORD 命令中的数据域中的00008000写入复合应用专用文件中的记录号为03的记录中即可;相应地,当更新记录命令中的费率值为125%时,则写入复合应用专用文件的相应 记录中的数据具体为125%,当更新记录命令中的费率值为20%时,则写入复合应用专用 文件的相应记录中的数据具体为20% ;或者,当更新记录命令的数据中可以不包括费率值,而由CPU卡对复合圈存初始 化命令中包含的交易金额进行判断,按照预先约定的规则根据交易金额生成一个费率值, 再将这个生成的费率值写入复合应用专用文件的相应记录中,例如,当复合圈存初始化命 令中的交易金额为800元时,即小于预先约定的下限时,具体如为2000时,则生成一个数据 95 %,或者105 %,或者5 %,因此将95 %或者105 %或者5 %写入复合应用专用文件的相应 记录中,而当复合圈存初始化命令中的交易金额为5000元时,即在预先约定的下限与上限 之间时,具体如为2000到6000时,则生成一个数据80%或者125%或者20%,因此将80% 或者125%或者20%写入复合应用专用文件的相应记录中,或者当复合圈存初始化命令中 的交易金额为8000元时,则生成一个数据75%或者133%或者25%,即大于预先约定的下 限时,具体如为6000时,因此将75%或者133%或者25%写入复合应用专用文件的相应记 录中;或者,当复合应用专用文件中的每条记录对应的是不同前提下的费率值时,则将 更新记录命令的数据中包含的费率值和该费率值的前提条件写入相应的记录中,如将费率 值负20元或者90%以及该费率值的前提条件消费时的交易金额大于200元,小于300元写 入相应的记录中,或者将费率值负100元或者80%以及该费率值的前提条件消费时的交易 金额大于500元,小于600元写入相应的记录中等等。步骤118 将UPDATE RECORD命令的响应报文返回给终端;
其中,UPDATE RECORD命令的响应报文由swl+sw2组成,不存在数据域data,当命 令执行成功时,则返回的响应报文为‘9000’,当命令执行不成功时,则返回的响应报文不为 ‘ 9000,,具体本实施例中返回的响应报文为9000。步骤119 接收终端发送的复合圈存命令CREDIT FOR CAPP LOAD,读取命令数据域 中的数据并保存;在本实施例中,复合圈存命令CREDIT FOR CAPP LOAD用于复合圈存交易;CREDIT FOR CAPP LOAD 命令报文由 CLA+INS+Pl+P2+Lc+Data+Le 组成,其中 Data 中的数据具体包括交易日期、交易时间和第二报文鉴别码MAC2 ;具体地,本实施例中接收到的CREDIT FOR CAPP LOAD命令具体为80 52 0000 OB 07 DA 06 08 OA 14 2D 00 01 Al OB 08,其中,80 为 CLA,52 为 INS,00 为 P1,00 为 P2,OB 为Lc,07 DA 06 08为Data中的交易日期,OA 14 2D为Data中的交易时间,00 01 Al OB 为 Data 中的 MAC2,08 为 Le0步骤120 验证数据中的第二报文鉴别码MAC2是否有效,若无效,则执行步骤121, 若有效,则执行步骤122;在本实施例中,验证MAC2是否有效的方法,具体为将交易金额、交易类型标识、终端机编号、交易日期和交易时间顺序链接,然后使 用步骤106中生成的过程密钥对链接得到的数据进行加密,再比较加密后得到的数据的前 四个字节与CREDIT FOR CAPP LOAD命令数据域中的MAC2是否相同,若不相同,则MAC2无 效,若相同,则MAC2有效。步骤121 向终端返回状态码0x9302,提示MAC2无效;步骤122 将电子钱包的联机交易序号加1,将交易金额直接加到电子钱包的余额 上;在本实施例中,当交易金额为1000元,电子钱包的余额为0元时,则将交易金额 1000元加到电子钱包的余额上,得到新的余额1000元。步骤123 更新电子钱包的交易明细;具体地为将电子钱包的联机交易序号、交易金额、交易类型标识、终端机编号、交 易日期和交易时间顺序链接组成一个记录来更新标准交易明细;步骤124 计算交易验证码TAC ;在本实施例中,计算交易验证码TAC码,具体为用内部密钥DTK左右8个字节进行异或运算,并将交易后的电子钱包的余额、加1 前的电子钱包的联机交易序号、交易金额、交易类型标识、终端机编号、交易日期和交易时 间顺序链接,再利用异或运算得到的结果对链接得到的数据进行加密,得到的加密后的数 据即为TAC码。步骤125 将CREDIT FOR CAPP LOAD命令的响应报文返回给终端;其中,CREDIT FOR CAPP LOAD命令的响应报文由data+swl+sw2组成,当命令执行 成功时,则返回的响应报文中的状态码swl和sw2为‘9000’,相应地,响应报文的数据域中 的数据具体为TAC码,当命令执行不成功时,则返回的响应报文中的状态码swl和sw2不为 ‘9000’,响应报文中不存在数据域;具体地,在本实施例中返回的CREDIT FOR CAPP LOAD命令的响应报文为0005 D2BC 90 00。步骤1 读取消费初始化命令INITIALUE FOR PURCHASE中的数据并保存;在本实施例中,消费初始化命令INITIALUE FOR PURCHASE用于初始化消费交易, INITIALIZE FOR PURCHASE命令报文由 CLA+INS+Pl+P2+Lc+Data+Le 组成,其中 Data 中的数 据具体为密钥索引号、交易金额和终端机编号;具体地,在本实施例中,接收到的INITIALUE FOR PURCHASE命令具体为80 50 01 02 OB 02 00 00 00 C8 00 00 00 00 00 01 0F,其中 80 为 CLA,50 为 INS,01 为 P1,02 为P2,定义为电子钱包的标识,OB为Lc,02为Data中的密钥索引号,00 00 00 C8为Data 中的交易金额,00 00 00 00 00 01为Data中的终端机编号,OF为Le。步骤127 检查自身是否支持上述INITIALUE FOR PURCHASE命令中包含的密钥 索引号,若不支持,则执行步骤128,若支持,则执行步骤129 ;步骤128 返回状态码0x9403给终端,并终止操作;步骤1 按照预先约定的算法对INITIALUE FOR PURCHASE命令中包含的交易 金额和复合应用专用文件的相应记录中的值进行运算,得到新金额;在本实施例中,预先约定的算法包括乘法、除法、加法和减法,以及所述四种算法 的各种组合;进一步地,复合应用专用文件的记录中的值为费率值,具体为80%,因此若当消费 时的交易金额为200元时,则对交易金额200元与复合专用文件中的费率值80%进行乘法 运算,得到的新金额为160元;而当复合应用专用文件的记录中的费率值为125%时,则对交易金额200元与复 合专用文件中的费率值125%进行除法运算,得到的新金额为160元;而当复合应用专用文件的记录中的费率值为20%时,则对交易金额200元与复合 专用文件中的费率值20%进行乘法运算,得到40元,再对交易金额200元与40元进行减法 运算,得到的新金额为160元;或者,当消费时的交易金额为550元时,则该交易金额550元满足的前提条件是交 易金额大于500元小于600元,因此根据该前提条件在相应的记录中就可以找到相应的费 率值,具体的在相应的记录中自定义费率值为负100元,则在消费时,自动对交易金额550 元与相应记录中的费率值负100元进行加法运算,得到新金额为450元。步骤130 读取电子钱包的余额,判断上述新金额是否超过电子钱包的余额与透 支限额的和,若是,则执行步骤131,若否,则执行步骤132 ;步骤131 返回状态码0x9401给终端,并终止操作;步骤132 生成一个伪随机数和一个过程密钥;在本实施例中,过程密钥用于CPU电子钱包或Ml电子钱包的消费交易,过程密钥 是用密钥DH(分散得到的。步骤133 发送INITIALUE FOR PURCHASE命令的响应报文给终端;其中,INITIALUE FOR PURCHASE响应报文由Data+swl+sw2组成,当命令执行成功 时,则返回给终端的响应报文中的状态码swl和sw2为‘9000’,且响应报文Data中包含的 数据具体为电子钱包的余额、CPU电子钱包的脱机交易序号、透支限额、密钥版本号、算法标 识和伪随机数,若命令执行不成功,则返回给终端的响应报文中只含有状态码swl和sw2,且状态码swl和sw2不为‘9000’ ;具体地,本实施例中返回给终端的INITIALUE FOR PURCHASE响应报文为00 00 4B 00 00 01 00 00 64 02 03 01 02 03 04 90 00。步骤134 接收终端发送的消费命令DEBIT FOR PURCHASE,读取命令中的数据并保 存;在本实施例中,DEBIT FOR PURCHASE命令用于进行消费操作;其中,DEBITFOR PURCHASE 命令报文也由 CLA+INS+Pl+P2+Lc+Data+Le 组成,Data 中的数据具体为终端交易序号、交易日期、交易时间和第三鉴别码MAC3 ;具体地,在本实施例中,接收到的DEBIT FOR PURCHASE命令具体为80 5401 00 OF 00 00 00 01 7D AO 06 09 OF 27 13 01 OA Dl OC 08,其中 80 为 CLA,54 为 INS,01 为 P1,00为P2,0F为Lc,00 00 00 01为Data中的终端交易序号,7D AO 06 09为Data中的 交易日期,OF 27 13为Data中的交易时间,01 OA Dl OC为Data中的MAC3,08为Le。步骤135 使用步骤132中生成的过程密钥来验证DEBIT FOR PURCHASE命令中包 含的MAC3是否有效,若无效,则执行步骤136,若有效,则执行步骤137 ;在本实施例中,验证DEBIT FOR PURCHASE命令中包含的MAC3是否有效的方法,具 体为将交易金额、交易类型标识、终端机编号、终端的交易日期和终端的交易时间顺序 链接,用步骤132中生成的过程密钥对链接得到的数据进行加密,再比较得到的加密后的 数据的前四个字节与DEBIT FOR PURCHASE命令中包含的MAC3是否相同,若不相同,则MAC3 无效,若相同,则MAC3有效。步骤136 返回状态码0x9302给终端,终止操作;步骤137 将电子钱包的脱机交易序号加1,并从电子钱包的余额中扣减步骤1 中得到的新金额;步骤138 更新电子钱包的交易明细;在本实施例中,需要更新的电子钱包的相关交易明细具体为交易金额、交易类型 标识、终端编号、交易日期和交易时间,具体地,CPU卡将交易金额、交易类型标识、终端编 号、交易日期和交易时间顺序链接组成一个记录以便更新。步骤139 生成第四报文鉴别码MAC4,然后计算交易验证码TAC码;在本实施例中,生成第四报文鉴别码MAC4方法具体为用步骤132中生成的过程密钥对交易金额进行加密,得到的加密后的数据的前四 个字节即为第四报文鉴别码MAC4。其中,利用异或运算得到的结果来计算TAC码的方法具体为用DTK左右8个字节进行异或运算,并将交易金额、交易类型标识、终端机编号、终 端交易序号、终端的交易日期和终端的交易时间顺序链接,并用异或运算得到的结果对链 接得到的数据进行加密,得到的加密后的数据的前四个字节即为TAC码。步骤140 返回DEBIT FOR PURCHASE命令的响应报文给终端,交易结束。其中,DEBIT FOR PURCHASE命令的响应报文由data+swl+sw2组成,当命令执行成 功时,则响应报文中的状态码swl和sw2为‘9000’,相应地,数据域data具体为TAC码和 MAC4,当命令执行不成功时,则响应报文中的状态码swl和sw2不为‘9000,,且不包含数据域;具体地,本实施例中DEBIT FOR PURCHASE命令的响应报文为01 OD Bl 0900 02 EA Bl 90 00。进一步地,在本实施例中,当复合应用专用文件为二进制文件时,因此CPU卡接收 到的对复合应用专用文件进行更新的命令就不是更新记录命令UPDATEREC0RD,而是UPDATE CAPP DATA CACHE命令,其中CPU卡接收到UPDATE CAPP DATACACHE命令之后的具体操作如 下步骤109’ 接收终端发送的更新复合应用专用文件的命令UPDATE CAPP DATACACHE ;在本实施例中,更新复合应用专用文件的命令UPDATE CAPP DATA CACHE用于更新 复合应用专利文件中的数据;具体地,UPDATECAPP DATA CACHE 命令报文由 CLA+INS+Pl+P2+Lc+Data 组成,本 实施例中,UPDATE CAPP DATA CACHE命令具体为:80 D6 92 B104 00 01 20 00,其中,80 为 CLA, D6 为 INS,92 为 PI, Bl 为 P2,04 为 Lc,00 01 20 00 为 Data ;并且UPDATE CAPP DATA CACHE命令的数据域Data中的数据为要写入复合应用 专用文件的新数据,其中,由于复合应用专用文件的具体应用可以由发卡方自定义,因此数 据域中的数据也可以是自定义的,如在本实施例中复合应用专用文件可以自定义为费率文 件,则相应地,数据域中的数据具体为费率值,在本实施例中具体定义费率值为120% ;具体地,在本实施例中,复合应用专用文件具体为二进制文件,则FILE TYPE为 00,且FILE SUE为文件大小,具体为00 0B,文件体中的内容为空。步骤110,判断接收到的UPDATE CAPP DATA CACHE命令中是否存在SFI域,若存 在,则执行步骤111’,若不存在,则执行步骤112’;在本实施例中,判断UPDATE CAPP DATA CACHE命令中是否存在SFI域具体为判 断UPDATE CAPP DATA CACHE命令中的Pl的高三位是否为100,若是,则表示命令中存在SFI 域,PI的低5位即为SFI域,否则,表示命令中不存在SFI域;具体地,本实施例中UPDATE CAPP DATA CACHE命令中的Pl为92,表示Pl的高三 位为100,存在SFI域。步骤111,查找CPU卡当前应用下是否存在一个文件的SFI值与UPDATE CAPP DATA CACHE命令中的SFI值相同,若不存在,则执行步骤112’,若存在,则执行步骤113’ ;步骤112’ 向终端返回状态码0x6A82,同时终止执行此次复合圈存交易;步骤113’:将步骤111’中查找得到的文件作为复合应用专用文件,并检查UPDATE CAPP DATA CACHE命令中的数据域的长度是否大于复合应用专用文件的长度,若大于,则执 行步骤114’,若不大于,则执行步骤115’ ;在本实施例中,由于复合应用专用文件是二进制文件,所以复合应用专用文件的 长度具体为FILE SUE的值,具体即为判断UPDATE CAPP DATA CACHE命令中Lc的值是否 大于复合应用专用文件FILE SUE的值,由于本实施例中UPDATE CAPP DATA CACHE命令中 Lc的值为04,FILE SIZE的值为000B,所以命令中的数据域的长度不大于复合应用专用文 件的长度。步骤114’ 向终端返回状态码0x6A84,同时终止执行此次复合圈存交易;
步骤115’ 将UPDATE CAPP DATA CACHE命令中的数据域中的数据写入复合应用 专用文件中,替换该复合应用专用文件中的原有内容;在本实施例中,具体将费率值120%写入该复合应用专用文件中,替换其原有内 容;由于本实施例中复合应用专用文件中的原有内容为空,因此直接将UPDATECAPP DATA CACHE命令中的数据域中的00 01 20 00写入复合应用专用文件中即可。步骤116,将UPDATE CAPP DATA CACHE命令的响应报文返回给终端;其中,UPDATE CAPP DATA CACHE命令的响应报文由swl+sw2组成,不存在数据域 data,当UPDATE CAPP DATA CACHE命令执行成功时,则响应报文为‘9000,,当UPDATE CAPP DATA CACHE命令执行不成功时,则响应报文不为‘9000’。本实施例提供了 一种对CPU卡内的电子钱包进行消费的方法,该方法可以使整个 复合圈存的过程更安全,防止采取非法的手段去修改CPU卡中特定的复合应用专用文件, 并且该方法中通过对复合应用专用文件中写入新的数据,简化了分级打折优惠业务的实 现,在消费时自动对消费的金额进行处理,更方便管理,从而节省了管理的成本。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
权利要求
1.一种对电子钱包进行消费的方法,其特征在于,所述方法包括 CPU卡进入终端的非接触式感应区内,所述CPU卡上电并初始化; 等待接收所述终端发送的命令;当接收所述终端发送的消费初始化命令时,读取所述消费初始化命令中的数据并保 存,其中所述数据中包括交易金额;按照预先约定的算法对所述交易金额和复合应用专用文件中的相应记录中的值进行 运算,得到新金额;读取所述电子钱包的余额,判断所述新金额是否超过所述电子钱包的余额与透支限额 的和;若是,则向所述终端返回所述电子钱包余额不足的信息,终止操作; 若否,则生成一个伪随机数和一个过程密钥,将所述消费初始化命令的响应报文返回 给所述终端;接收所述终端发送的消费命令,读取所述消费命令中的数据并保存; 从所述电子钱包的余额中扣减所述新金额,得到新的余额,并将所述消费命令的响应 报文返回给所述终端。
2.如权利要求1所述的对电子钱包进行消费的方法,其特征在于,所述消费初始化命 令中的数据具体还包括密钥索引号和终端机编号。
3.如权利要求2所述的对电子钱包进行消费的方法,其特征在于,所述按照预先约定 的算法对所述交易金额和复合应用专用文件中的相应记录中的值进行运算之前,所述方法 还包括所述CPU卡检查自身是否支持所述密钥索引号;若不支持,则向终端返回CPU卡不支持所述密钥索引号的信息,终止操作; 若支持,则按照预先约定的算法对所述交易金额和复合应用专用文件中的相应记录中 的值进行运算。
4.如权利要求1所述的对电子钱包进行消费的方法,其特征在于,所述预先约定的算 法包括乘法、除法、加法和减法,以及所述四种算法的各种组合。
5.如权利要求1所述的对电子钱包进行消费的方法,其特征在于,所述消费命令中的 数据具体包括终端交易序号、交易日期、交易时间和第三鉴别码。
6.如权利要求5所述的对电子钱包进行消费的方法,其特征在于,所述从所述电子钱 包的余额中扣减所述新金额之前,所述方法还包括验证所述第三鉴别码是否有效;若无效,则向终端返回第三鉴别码无效的信息,终止操作;若有效,则将所述电子钱包的脱机交易序号加1,从所述电子钱包的余额中扣减所述新金额。
7.如权利要求1所述的对电子钱包进行消费的方法,其特征在于,所述从电子钱包的 余额中扣减所述新金额,得到新的余额之后,所述方法还包括更新所述电子钱包的交易明细; 生成第四报文鉴别码和验证码 。
8.如权利要求1所述的对电子钱包进行消费的方法,其特征在于,所述等待接收终端发送的命令的同时,所述方法还包括接收所述终端发送的复合圈存初始化命令时,读取所述复合圈存初始化命令中的数据 并保存,进行复合圈存初始化操作;接收所述终端发送的更新记录命令,更新复合应用专用文件中的相应记录中的数据; 接收所述终端发送的复合圈存命令,进行复合圈存操作。
9.如权利要求8所述的对电子钱包进行消费的方法,其特征在于,所述更新复合应用 专用文件中的相应记录中的数据的步骤具体为查找所述复合应用专用文件中的相应记录;判断所述更新记录命令中的数据的长度是否大于所述查找得到的记录的长度; 若是,则向所述终端返回所述记录存储空间不够的信息,终止操作; 若否,则更新所述查找得到的记录中的数据。
10.如权利要求9所述的对电子钱包进行消费的方法,其特征在于,所述查找复合应用 专用文件中的相应记录的操作具体为判断所述更新记录命令中是否存在短文件标识符;若不存在,则向所述终端未找到复合应用专用文件的信息,终止操作;若存在,则检查是否存在一个文件的短文件标识符的值与所述短文件标识符的值相同;若不存在,则向所述终端未找到复合应用专用文件的信息,终止操作; 若存在,则将所述检查到的文件作为复合应用专用文件,并根据所述更新记录命令中 指定的记录号在所述复合应用专用文件中查找相应的记录;若没有查找到,则向终端返回未找到相应记录的信息,终止操作; 若查找到,则将查找到的记录作为需要更新的记录。
11.如权利要求9所述的对电子钱包进行消费的方法,其特征在于,所述更新查找得到 的记录中的数据的具体方法包括将所述更新记录命令中的数据写入所述查找得到的记录中,替换原有内容; 或者,根据预先约定的规则对所述复合圈存初始化命令中包含的交易金额进行判断,并根据 判断结果生成一个数据,将所述生成的数据写所述查找得到的记录中,替换原有内容。
全文摘要
本发明公开了一种对电子钱包进行消费的方法,属于信息安全领域,所述方法包括CPU卡进入终端的非接触式感应区内,上电并初始化,当接收终端发送的消费初始化命令时,读取消费初始化命令中的数据并保存,其中数据中包括交易金额,并按照预先约定的算法对交易金额和复合应用专用文件中的相应记录中的值进行运算,得到新金额,读取电子钱包的余额,判断新金额是否超过电子钱包的余额与透支限额的和,若是,则终止操作,若否,则生成一个伪随机数和一个过程密钥,将消费初始化命令的响应报文返回给终端,再接收终端发送的消费命令,从电子钱包的余额中扣减新金额,得到新的余额,并将消费命令的响应报文返回给所述终端。
文档编号G07F19/00GK102044114SQ201010213920
公开日2011年5月4日 申请日期2010年6月29日 优先权日2010年6月29日
发明者于华章, 陆舟 申请人:北京飞天诚信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1