CN102013132B - 一种对电子钱包进行复合圈存的方法 - Google Patents

一种对电子钱包进行复合圈存的方法 Download PDF

Info

Publication number
CN102013132B
CN102013132B CN2010102141326A CN201010214132A CN102013132B CN 102013132 B CN102013132 B CN 102013132B CN 2010102141326 A CN2010102141326 A CN 2010102141326A CN 201010214132 A CN201010214132 A CN 201010214132A CN 102013132 B CN102013132 B CN 102013132B
Authority
CN
China
Prior art keywords
application
data
file
private file
deposited
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2010102141326A
Other languages
English (en)
Other versions
CN102013132A (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Beijing Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN2010102141326A priority Critical patent/CN102013132B/zh
Publication of CN102013132A publication Critical patent/CN102013132A/zh
Priority to PCT/CN2011/076590 priority patent/WO2012000438A1/zh
Priority to US13/519,187 priority patent/US10878404B2/en
Application granted granted Critical
Publication of CN102013132B publication Critical patent/CN102013132B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种对电子钱包进行复合圈存的方法,属于信息安全领域,所述方法包括:CPU卡进入终端的非接触式感应区内,上电并初始化,接收终端发送的复合圈存初始化命令,读取复合圈存初始化命令中的数据并保存,进行复合圈存初始化操作,其中数据中包括交易金额,接收终端发送的更新复合应用专用文件命令,查找复合应用专用文件,将预先约定的数据写入复合应用专用文件的存储空间中,替换原有内容,接收终端发送的复合圈存命令,读取复合圈存命令中的数据并保存,按照预先约定的算法对交易金额与所述复合应用专用文件中的数据进行运算,得到新金额,将得到的新金额加到电子钱包的余额上,得到新余额,复合圈存操作结束。

Description

一种对电子钱包进行复合圈存的方法
技术领域
本发明涉及信息安全领域,特别涉及一种对CPU卡内的电子钱包进行复合圈存的方法。
背景技术
CPU卡的芯片内含有一个微处理器,它的功能相当于一台微型计算机,并且CPU卡内包括中央处理器(CPU)、只读存储器(ROM)、随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)等,具有信息量大、防伪安全性高、可脱机作业,可多功能开发等优点。CPU卡采用强大而稳定的安全控制器,增强了卡片的安全性,并且CPU卡所特有的内外部认证机制以及以金融IC卡规范为代表的专用认证机制,能够完全保证交易的合法性和安全性,然后CPU卡的应用防火墙功能可以保障同一张卡中不同应用的安全独立性,同时,CPU卡的大容量存储空间又可以满足预期的大金额消费应用所要求的更多客户信息的存储。
在现有技术中,CPU卡中的电子钱包可以实现普通的圈存、消费/取现、圈提、更新透支限额等基本交易功能,但是在遇到特殊的应用时,如在需要对不同的充值金额进行分级打折优惠的促销性应用时,如商场、超市、餐馆、健身会所等机构的会员卡,则现有的电子钱包的普通的圈存操作和消费操作不能满足这种应用。
发明内容
为了解决现有技术中的不足,本发明提供了一种对电子钱包进行复合圈存的方法,所述方法包括:
CPU卡进入终端的非接触式感应区内,所述CPU卡上电并初始化;
接收所述终端发送的复合圈存初始化命令,读取所述复合圈存初始化命令中的数据并保存,进行复合圈存初始化操作,其中所述数据中包括交易金额;
接收所述终端发送的更新复合应用专用文件命令,查找复合应用专用文件;
将预先约定的数据写入所述复合应用专用文件的存储空间中,替换原有内容;
接收所述终端发送的复合圈存命令,读取所述复合圈存命令中的数据并保存;
按照预先约定的算法对所述交易金额与所述复合应用专用文件中的数据进行运算,得到新金额,将所述得到的新金额加到电子钱包的余额上,得到新余额,复合圈存操作结束。
本发明的有益效果在于:本发明提供了一种对电子钱包进行复合圈存的方法,通过本发明提供的方法使整个交易过程更安全,且防止了采取非法的手段去修改CPU卡中的复合应用专用文件,进一步地简化了分级打折优惠操作的实现,只需要在圈存时对复合应用专用文件进行设定即可,并且方便管理,从而节省了管理的成本。
附图说明
图1为本实施例提供的一种对电子钱包进行复合圈存的方法的流程图;
图2为本实施例提供的一种对电子钱包进行复合圈存的方法的详细流程图;
图3为本实施例提供的一种对电子钱包进行消费的方法的详细流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式做进一步地详细描述。
为了简化分级打折优惠操作,在复合圈存时对复合应用专用文件进行设定,本发明实施例提供了一种对电子钱包进行复合圈存的方法,参见图1,该方法内容包括:
S1:CPU卡进入终端的非接触式感应区内,所述CPU卡上电并初始化;
S2:接收所述终端发送的复合圈存初始化命令,读取所述复合圈存初始化命令中的数据并保存,进行复合圈存初始化操作,其中所述数据中包括交易金额;
S3:接收所述终端发送的更新复合应用专用文件命令,查找复合应用专用文件;
S4:将预先约定的数据写入所述复合应用专用文件的存储空间中,替换原有内容;
S5:接收所述终端发送的复合圈存命令,读取所述复合圈存命令中的数据并保存;
S6:按照预先约定的算法对所述交易金额与所述复合应用专用文件中的数据进行运算,得到新金额,将所述得到的新金额加到电子钱包的余额上,得到新余额,复合圈存操作结束。
为了对本发明实施例提供的方法进行详细说明,请参见如下实施例:
实施例
本发明实施例提供了一种对电子钱包进行复合圈存的方法,在本实施例中,以CPU卡内的电子钱包为例进行说明,CPU卡内的电子钱包除了具有普通电子钱包的基本交易功能外,还具有支持复合应用的钱包的所有交易功能,相应地也支持复合圈存的功能,并且对CPU卡内电子钱包的复合圈存操作是在CPU终端进行的,其中进行复合圈存操作时,按照预先约定的规则对交易金额与复合专用文件中规定的值进行运算,得到新金额,并将得到的新金额加到电子钱包的余额上,完成复合圈存操作,相应地,在消费时,则按照该余额进行消费。
参见图2,一种对CPU卡内的电子钱包进行复合圈存的方法,具体实现步骤如下:
步骤101:CPU卡进入终端的非接触式感应区内,CPU卡上电并初始化;
步骤102:接收终端发送的复合圈存初始化命令INITIALIZE FOR CAPP LOAD,读取命令中包含的数据并保存;
在本实施例中,复合圈存初始化命令I NITIALIZE FOR CAPP LOAD用于初始化复合圈存交易,其中INITIALIZE FOR CAPP LOAD命令报文分成:命令头+命令体,即为:(CLA+INS+P1+P2)+(Lc+Data+Le);
其中,CLA+INS+P1+P2为命令头,Lc+Data+Le为命令体,命令头为命令的编码,命令头中的CLA为指令类别,INS为指令代码,P1和P2为指令参数;命令体中的Lc为命令体内Data中数据的长度,Data为INITIALIZE FORCAPP LOAD命令中的数据,Le是期望的应答APDU数据字段的最大字节数;
本实施例中I NITIALIZE FOR CAPP LOAD命令Data中包含的数据具体为密钥索引号、交易金额和终端机编号;
具体地,在本实施例中,接收到的I NITIALIZE FOR CAPP LOAD命令具体为:80 50 06 02 0B 02 00 00 03 E8 00 00 00 00 00 01 10,其中80为CLA,50为INS,06为P1,定义为复合圈存初始化的标识,02为P2,定义为电子钱包的标识,0B为Lc,02为Data中的密钥索引号,00 00 03 E8为Data中的交易金额,00 00 00 00 00 01为Data中的终端机编号,10为Le。
步骤103:检查自身是否支持INITIALIZE FOR CAPP LOAD命令中包含的密钥索引号,若不支持,则执行步骤104,若支持,则执行步骤105;
步骤104:向终端返回状态码0x9403,同时终止执行复合圈存初始化操作;
步骤105:生成一个四字节的伪随机数和一个过程密钥;
在本实施例中,生成过程密钥的方法具体为:
将上述伪随机数、电子钱包联机交易序号和‘8000’顺序链接,再利用圈存子密钥DLK对链接后得到的数据进行加密,得到的加密后的数据即为过程密钥。
步骤106:利用上述过程密钥计算得到第一报文鉴别码MAC1;
在本实施例中,利用过程密钥计算得到第一报文鉴别码MAC1的方法具体为:
将交易前的电子钱包的余额、交易金额、交易类型标识和终端机编号顺序链接,再利用过程密钥对链接后的数据进行加密,得到的加密后的数据的前四个字节即为第一报文鉴别码MAC1。
步骤107:将INITIALIZE FOR CAPP LOAD命令的响应报文返回给终端;
其中,INITIALIZE FOR CAPP LOAD命令的响应报文由Data+sw1+sw2组成,当INITIALIZE FOR CAPP LOAD命令执行成功时,则响应报文中的状态码sw1和sw2为‘9000’,相应地,响应报文数据域Data中包含的数据具体为交易前的CPU电子钱包的余额、CPU钱包的联机交易序号、密钥版本号、算法标识、伪随机数和MAC1,当I NITIALIZE FOR CAPP LOAD命令执行不成功时,则响应报文中的状态码sw1和sw2不为‘9000’,并且也不存在数据域Data;
具体地,在本实施例中,INITIALIZE FOR CAPP LOAD命令的响应报文具体为:00 00 00 00 00 01 02 03 01 02 03 04 00 01 B1 0A 90 00。
步骤108:接收终端发送的更新复合应用专用文件的命令UPDATE CAPP DATACACHE;
在本实施例中,更新复合应用专用文件的命令UPDATE CAPP DATA CACHE用于更新复合应用专利文件中的数据;
复合应用专用文件由文件头和文件体组成,文件头具体包括:2个字节的FILE_ID、1个字节的FILE TYPE、2个字节的FILE SIZE、1个字节的AC1、1个字节的AC2和2个字节的RFU,其中当FILE TYPE为00时,表示该文件为二进制文件,当FILE TYPE为01时,表示该文件为定长记录文件,当FILE TYPE为02时,表示该文件为变长记录文件,当FILE TYPE为03时,表示该文件为循环文件,当FILE TYPE为05时,表示该文件为密钥文件,相应地,二进制文件对应的FILE SIZE为文件大小,定长记录文件对应的FILE SIZE为记录条数和记录长度,变长记录文件对应的FILE SIZE为记录条数和记录最大长度,循环文件对应的FILE SIZE为记录条数和记录长度,密钥文件对应的FILE SIZE为记录条数和记录长度,并且AC1为读文件权限,AC2为写文件权限;文件体中为复合应用专用文件的数据;
具体地,在本实施例中,复合应用专用文件具体为二进制文件,则FILE TYPE为00,且FILE SIZE为文件大小,具体为000B,文件体中的内容为空;
进一步地,UPDATE CAPP DATA CACHE命令报文由CLA+INS+P1+P2+Lc+Data组成,本实施例中,UPDATE CAPP DATA CACHE命令具体为:80  D6 92 B104 00 01 20 00,其中,80为CLA,D6为INS,92为P1,B1为P2,04为Lc,00 01 20 00为Data;
并且UPDATE CAPP DATA CACHE命令的数据域Data中的数据为要写入复合应用专用文件的新数据,其中,由于复合应用专用文件的具体应用可以由发卡方自定义,因此数据域中的数据也可以是自定义的,如在本实施例中复合应用专用文件可以自定义为费率文件,则相应地,数据域中的数据具体为费率值,在本实施例中具体定义费率值为120%;
相应地,当定义费率值为120%时,UPDATE CAPP DATA CACHE命令中的数据可以不是120%,可以是83.3%,还可以是20%,或者,UPDATE CAPP DATA CACHE命令的数据中可以不包括费率值,而由CPU卡对复合圈存初始化命令中包含的交易金额进行判断,根据交易金额生成一个费率值,将这个生成的费率值写入复合应用专用文件中,如当复合圈存初始化命令中的交易金额为800元时,即小于预先约定的下限时,具体如为2000时,则生成一个费率值90%,或者111.1%,或者11.1%,或者100元,当复合圈存初始化命令中的交易金额为5000元时,即在预先约定的下限与上限之间时,具体如为2000到6000时,则生成一个数据80%,或者125%,或者25%,或者600元,当复合圈存初始化命令中的交易金额为8000元时,即大于预先约定的下限时,具体如为6000时,则生成一个数据75%,或者133%,或者33%,或者2000元等等。
步骤109:判断接收到的UPDATE CAPP DATA CACHE命令中是否存在SFI域,若存在,则执行步骤110,若不存在,则执行步骤111;
在本实施例中,判断UPDATE CAPP DATA CACHE命令中是否存在SFI域具体为:判断UPDATE CAPP DATA CACHE命令中的P1的高三位是否为100,若是,则表示命令中存在SFI域,PI的低5位即为SFI域的值,否则,表示命令中不存在SFI域;
具体地,本实施例中UPDATE CAPP DATA CACHE命令中的P1为92,表示P1的高三位为100,存在SFI域。
步骤110:查找CPU卡当前应用下是否存在一个文件的SFI值与UPDATE CAPPDATA CACHE命令中的SFI值相同,若不存在,则执行步骤111,若存在,则执行步骤112;
步骤111:向终端返回状态码0x6A82,同时终止操作;
步骤112:将步骤110中查找得到的文件作为复合应用专用文件,并检查UPDATE CAPP DATA CACHE命令中的数据域的长度是否大于复合应用专用文件的长度,若大于,则执行步骤113,若不大于,则执行步骤114;
在本实施例中,由于复合应用专用文件是二进制文件,所以复合应用专用文件的长度具体为FILE SIZE的值,具体即为判断UPDATE CAPP DATA CACHE命令中Lc的值是否大于复合应用专用文件FILE SIZE的值,由于本实施例中UPDATECAPP DATA CACHE命令中Lc的值为04,FILE SIZE的值为000B,所以命令中的数据域的长度不大于复合应用专用文件的长度。
步骤113:向终端返回状态码0x6A84,同时终止操作;
步骤114:将UPDATE CAPP DATA CACHE命令中的数据域中的数据写入复合应用专用文件中,替换该复合应用专用文件中的原有内容;
在本实施例中,具体将费率值120%写入该复合应用专用文件中,替换其原有内容;
由于本实施例中复合应用专用文件中的原有内容为空,因此直接将UPDATECAPP DATA CACHE命令中的数据域中的00 01 20 00写入复合应用专用文件中即可;
相应地,当UPDATE CAPP DATA CACHE命令中的费率值为83.3%时,则写入复合应用专用文件中的数据具体为83.3%,当UPDATE CAPP DATA CACHE命令中的费率值为20%时,则写入复合应用专用文件中的数据具体为20%;
或者,当UPDATE CAPP DATA CACHE命令的数据中可以不包括费率值,而由CPU卡对复合圈存初始化命令中包含的交易金额进行判断,按照预先约定的规则根据交易金额生成一个费率值,再将这个生成的费率值写入复合应用专用文件中,并且在写入复合应用专用文件之前还要判断生成的费率值的长度是否大于复合应用专用文件的长度,例如,当复合圈存初始化命令中的交易金额为800元时,即小于预先约定的下限时,具体如为2000时,则将生成的90%,或者111.1%,或者11.1%,或者100元写入复合应用专用文件中,而当复合圈存初始化命令中的交易金额为5000元时,即在预先约定的下限与上限之间时,具体如为2000到6000时,则将生成的80%,或者125%,或者25%,或者600元写入复合应用专用文件中,或者当复合圈存初始化命令中的交易金额为8000元时,即大于预先约定的下限时,具体如为6000时,则将生成的75%,或者133%,或者33%,或者2000元写入复合应用专用文件中。
步骤115:将UPDATE CAPP DATA CACHE命令的响应报文返回给终端;
其中,UPDATE CAPP DATA CACHE命令的响应报文由sw1+sw2组成,不存在数据域data,当UPDATE CAPP DATA CACHE命令执行成功时,则响应报文为‘9000’,当UPDATE CAPP DATA CACHE命令执行不成功时,则响应报文不为‘9000’。
步骤116:接收终端发送的复合圈存命令CREDIT FOR CAPP LOAD,读取命令数据域中的数据并保存;
在本实施例中,复合圈存命令CREDIT FOR CAPP LOAD用于复合圈存交易;
CREDIT FOR CAPP LOAD命令报文由CLA+INS+P1+P2+Lc+Data+Le组成,其中数据域Data中的数据具体包括:交易日期、交易时间和第二报文鉴别码MAC2;
具体地,本实施例中接收到的CREDIT FOR CAPP LOAD命令具体为:80 52 0000 0B 07 DA 06 08 0A 14 2D 00 01 A1 0B 08,其中,80为CLA,52为INS,00为P1,00为P2,0B为Lc,07 DA 06 08为Data中的交易日期,0A 14 2D为Data中的交易时间,00 01 A1 0B为Data中的MAC2,08为Le。
步骤117:验证数据中的第二报文鉴别码MAC2是否有效,若无效,则执行步骤118,若有效,则执行步骤119;
在本实施例中,验证MAC2是否有效的方法,具体为:
将交易金额、交易类型标识、终端机编号、交易日期和交易时间顺序链接,然后使用步骤105中生成的过程密钥对链接得到的数据进行加密,再比较加密后得到的数据的前四个字节与CREDIT FOR CAPP LOAD命令数据域中的MAC2是否相同,若不相同,则MAC2无效,若相同,则MAC2有效。
步骤118:向终端返回状态码0x9302,提示MAC2无效;
步骤119:将电子钱包的联机交易序号加1,按照预先约定的算法对交易金额与复合应用专用文件中的值进行运算,得到新金额,并将得到的新金额加到电子钱包的余额上;
在本实施例中,预先约定的算法包括乘法、除法、加法和减法,以及所述四种算法的各种组合;
进一步地,复合应用专用文件中的值为费率值,具体为120%,因此若当交易金额为1000元,电子钱包中的余额为0元时,则将交易金额1000元乘上复合专用文件中的费率值120%之后,得到的新金额为1200元,因此将这1200元加到电子钱包的余额0元上,得到新的余额为1200元,这样电子钱包中的新余额1200元就比将交易金额1000元直接加到电子钱包的余额上得到的余额1000元要多;
当写入复合应用专用文件中的费率值具体为83.3%时,若交易金额为1000元,电子钱包中的余额为0元,则将交易金额1000元除以费率值83.3%之后,得到的新金额为1200元,因此将这1200元加到电子钱包的余额0元上,得到新的余额为1200元,这样电子钱包中的新余额1200元就比将交易金额1000元直接加到电子钱包的余额上得到的余额1000元要多;
当写入复合应用专用文件中的费率值具体为20%时,若交易金额为1000元,电子钱包中的余额为0元,则将交易金额1000元乘上费率值20%后,再加上交易金额1000元,最后得到的新金额为1200元,因此将这1200元加到电子钱包的余额0元上,得到新的余额为1200元,这样电子钱包中的新余额1200元就比将交易金额1000元直接加到电子钱包的余额上得到的余额1000元要多;
或者当复合圈存初始化命令中的交易金额为8000元时,则将生成的费率值75%,或者133%,或者33%,或者2000元写入复合应用专用文件中,此时当写入复合应用专用文件中的费率值为75%时,交易金额8000元除以75%之后得到的新金额为10060元,因此将这10060元加到电子钱包的余额0元上,得到新的余额为10060元,这样电子钱包中的新余额10060元就比将交易金额8000元直接加到电子钱包的余额上得到的余额8000元要多;当写入复合应用专用文件中的费率值为133%时,交易金额8000元乘上133%之后得到的新金额为10060元,因此将这10060元加到电子钱包的余额0元上,得到新的余额为10060元,这样电子钱包中的新余额10060元就比将交易金额8000元直接加到电子钱包的余额上得到的余额8000元要多;当写入复合应用专用文件中的费率值为33%时,交易金额8000元乘上33%之后,再加上交易金额8000元,得到的新金额为10060元,因此将这10060元加到电子钱包的余额0元上,得到新的余额为10060元,这样电子钱包中的新余额10060元就比将交易金额8000元直接加到电子钱包的余额上得到的余额8000元要多;当写入复合应用专用文件中的费率值为2000元时,交易金额8000元加上2000元后得到的新余额为10000元,因此将这10000元加到电子钱包的余额0元上,得到新的余额为10000元,这样电子钱包中的新余额10000元就比将交易金额8000元直接加到电子钱包的余额上得到的余额8000元要多。
步骤120:更新电子钱包的交易明细;
具体地为:将电子钱包的联机交易序号、交易金额、交易类型标识、终端机编号、交易日期和交易时间顺序链接组成一个记录来更新标准交易明细。
步骤121:计算交易验证码TAC;
在本实施例步骤121中,计算交易验证码TAC码,具体为:
用DTK左右8个字节进行异或运算,并将交易后的电子钱包的余额、加1前的电子钱包的联机交易序号、交易金额、交易类型标识、终端机编号、交易日期和交易时间顺序链接,再利用异或运算得到的结果对链接得到的数据进行加密,得到的加密后的数据即为TAC码。
步骤122:将CREDIT FOR CAPP LOAD命令的响应报文返回给终端,复合圈存操作结束。
其中,CREDIT FOR CAPP LOAD命令的响应报文由data+sw1+sw2组成,当CREDIT FOR CAPP LOAD命令执行成功时,则响应报文中的状态码sw1和sw2为‘9000’,相应地,数据域data具体为TAC码,当CREDIT FOR CAPP LOAD命令执行不成功时,则响应报文中的状态码sw1和sw2不为‘9000’,并且不包含数据域;
具体地,在本实施例中返回的CREDIT FOR CAPP LOAD命令的响应报文为0005 D2 BC 90 00。
进一步地,在本实施例中,当复合应用专用文件为记录型文件时,则复合应用专用文件中的每一条记录对应着一个应用,具体地,本实施例中复合应用专用文件中的FILE TYPE为01,表示该复合应用专用文件为定长记录文件,相应地,定长记录文件对应的FILE SIZE为记录条数和记录长度;
相应地,对复合应用专用文件进行更新的步骤108至步骤116还可以替换为:
步骤108’:接收终端发送的更新记录命令UPDATE RECORD;
其中,更新记录命令UPDATE RECORD用于更新命令中指定的记录,并且该UPDATE RECORD命令适用于定长记录文件和变长记录文件;
具体地,UPDATE RECORD命令报文由CLA+INS+P1+P2+Lc+Data组成,其中P1和P2用于指定将哪个文件的第几条记录作为复合应用专用文件的记录,Lc为Data中的数据的长度加上4个字节,本实施例中,UPDATE RECORD命令具体为:00 DC 03 04 08 00 01 20 00,其中,00为CLA,DC为INS,03为P1,04为P2,08为Lc,00 01 20 00为Data;
并且UPDATE RECORD命令的数据域中即为要写入复合应用专用文件的新数据,其中,由于复合应用专用文件的具体应用可以由发卡方自定义,因此数据域中的数据也可以是自定义的,如在本实施例中复合应用专用文件可以自定义为费率文件,则相应地,数据域中的数据具体为费率值,在本实施例中具体定义费率值为120%。
步骤109’:判断接收到的更新记录命令UPDATE RECORD中是否存在SFI域,若存在,则执行步骤110’,若不存在,则执行步骤111’;
其中,判断更新记录命令UPDATE RECORD中是否存在SFI域的方法具体为:判断UPDATE RECORD命令中的P2的高5位是否全为0,若是,则表示命令中存在SFI域,即P2的高5位即是SFI域的值,否则,表示命令中不存在SFI域。
步骤110’:查找CPU卡当前应用下是否存在一个文件的SFI值与UPDATERECORD命令中的SFI值相同,若不存在,则执行步骤111’,若存在,则执行步骤112’;
步骤111’:向终端返回状态码0x6A82,同时终止执行此次复合圈存交易;
步骤112’:将步骤110’中查找得到的文件作为复合应用专用文件,并根据UPDATE RECORD命令中指定的记录号在该复合应用专用文件中查找相应的记录,若没有找到相应的记录,则执行步骤113’,若找到相应的记录,则执行步骤114’;
步骤113’:向终端返回状态码0x6A83,同时终止执行此次复合圈存交易;
步骤114’:检查UPDATE RECORD命令中的数据域的长度是否大于步骤112’中查找得到的记录的指定长度,若大于,则执行步骤115’,若不大于,则执行步骤116’;
步骤115’:向终端返回状态码0x6A84,同时终止执行此次复合圈存交易;
步骤116’:将UPDATE RECORD命令中的数据域中的数据写入查找得到的记录中,替换该记录中的原有内容;
在本实施例中,具体将费率值120%写入该记录中,替换该记录中的原有内容。
步骤117’:将UPDATE RECORD命令的响应报文返回给终端;
其中,UPDATE RECORD命令的响应报文由sw1+sw2组成,不存在数据域data,当UPDATE RECORD命令执行成功时,则响应报文为‘9000’,当UPDATE RECORD命令执行不成功时,则响应报文不为‘9000’。
进一步地,在本实施例中,通过上述方法进行复合圈存操作之后,则可以利用该CPU卡中的电子钱包进行消费,参见图3,消费操作的流程具体如下:
步骤201:接收终端发送的消费初始化命令INITIALIZE FOR PURCHASE,读取命令中的数据并保存;
在本实施例中,消费初始化命令INITIALIZE FOR PURCHASE用于初始化消费交易;
INITIALIZE FOR PURCHASE命令报文分成:命令头+命令体
即为:(CLA+INS+P1+P2)+(Lc+Data+Le);
其中,CLA+INS+P1+P2为命令头,Lc+Data+Le为命令体,命令头为命令的编码,命令头中的CLA为指令类别,INS为指令代码,P1和P2为指令参数;命令体中的Lc为命令体内Data中数据的长度,Data为INITIALIZE FORPURCHASE命令中的数据,Le是期望的应答APDU数据字段的最大字节数;
并且INITIALIZE FOR PURCHASE命令中的数据具体为密钥索引号、交易金额和终端机编号;
具体地,在本实施例中,接收到的INITIALIZE FOR PURCHASE命令具体为:80 50 01 02 0B 02 00 00 00 C8 00 00 00 00 00 01 0F,其中80为CLA,50为INS,01为P1,02为P2,定义为电子钱包的标识,0B为Lc,02为Data中的密钥索引号,00 00 00 C8为Da ta中的交易金额,00 00 00 00 00 01为Data中的终端机编号,0F为Le。
步骤202:检查自身是否支持上述INITIALIZE FOR PURCHASE命令中包含的密钥索引号,若不支持,则执行步骤203,若支持,则执行步骤204;
步骤203:返回状态码0x9403给终端,并终止执行消费初始化操作;
步骤204:读取电子钱包的余额,判断INITIALIZE FOR PURCHASE命令中包含的交易金额是否超过电子钱包的余额与透支限额的和,若是,则执行步骤205,若否,则执行步骤206;
步骤205:返回状态码0x9401给终端,并终止执行消费初始化操作;
步骤206:生成一个伪随机数和一个过程密钥;
在本实施例中,过程密钥用于CPU电子钱包或M1电子钱包的消费交易,过程密钥是用密钥DPK分散得到的。
步骤207:发送INITIALIZE FOR PURCHASE命令的响应报文给终端;
其中,INITIALIZE FOR PURCHASE响应报文由Data+sw1+sw2组成,当INITIALIZE FOR PURCHASE命令执行成功时,则返回的响应报文中的状态码sw1和sw2为‘9000’,且响应报文数据域Data中包含的数据具体为电子钱包的余额、CPU电子钱包的脱机交易序号、透支限额、密钥版本号、算法标识和伪随机数,若命令执行不成功,则返回的响应报文中只含有状态码sw1和sw2,且状态码sw1和sw2不为‘9000’;
具体地,本实施例中返回给终端的INITIALIZE FOR PURCHASE响应报文为:00 00 4B 00 00 01 00 00 64 02 03 01 02 03 04 90 00。
步骤208:接收终端发送的消费命令DEBIT FOR PURCHASE,读取命令中的数据并保存;
在本实施例中,DEBIT FOR PURCHASE命令用于进行消费操作;
其中,DEBIT FOR PURCHASE命令报文也由CLA+INS+P1+P2+Lc+Data+Le组成,DEBIT FOR PURCHASE命令中的数据具体为:终端交易序号、交易日期、交易时间和第三鉴别码MAC3;
具体地,在本实施例中,接收到的DEBIT FOR PURCHASE命令具体为:80 5401 00 0F 00 00 00 01 7D A0 06 09 0F 27 13 01 0A D1 0C 08,其中80为CLA,54为INS,01为P1,00为P2,0F为Lc,00000001为Da ta中的终端交易序号,7D A00609为Da ta中的交易日期,0F 2713为Da t a中的交易时间,01 0A D10 C为Data中的MAC3,08为Le。
步骤209:使用步骤205中生成的过程密钥来验证DEBIT FOR PURCHASE命令中包含的MAC3是否有效,若无效,则执行步骤210,若有效,则执行步骤211;
在本实施例中,验证DEBIT FOR PURCHASE命令中包含的MAC3是否有效的方法,具体为:
将交易金额、交易类型标识、终端机编号、终端的交易日期和终端的交易时间顺序链接,用步骤206中生成的过程密钥对链接得到的数据进行加密,再比较得到的加密后的数据的前四个字节与DEBIT FOR PURCHASE命令中包含的MAC 3是否相同,若不相同,则MAC 3无效,若相同,则MAC 3有效。
步骤210:返回状态码0x9302给终端,终止操作;
步骤211:将电子钱包的脱机交易序号加1,从电子钱包的余额中扣减计算得到的金额;
在本实施例中,若当交易金额为200元,电子钱包中的余额为1200元时,则从电子钱包的余额1200中扣减掉金额200元后,得到新的余额为1000元。
步骤212:更新电子钱包的交易明细;
在本实施例中,需要更新的电子钱包的相关交易明细具体为:交易金额、交易类型标识、终端编号、交易日期和交易时间,具体地,CPU卡将交易金额、交易类型标识、终端编号、交易日期和交易时间顺序链接组成一个记录以便更新。
步骤213:生成第四报文鉴别码MAC4,然后计算交易验证码TAC码;
在本实施例中,生成第四报文鉴别码MAC4方法具体为:
用步骤206中生成的过程密钥对交易金额进行加密,得到的加密后的数据的前四个字节即为第四报文鉴别码MAC4。
其中,利用异或运算得到的结果来计算TAC码的方法具体为:
用DTK左右8个字节进行异或运算,并将交易金额、交易类型标识、终端机编号、终端交易序号、终端的交易日期和终端的交易时间顺序链接,并用异或运算得到的结果对链接得到的数据进行加密,得到的加密后的数据的前四个字节即为TAC码。
步骤214:返回DEBIT FOR PURCHASE命令的响应报文给终端,交易结束。
其中,DEBIT FOR PURCHASE命令的响应报文由data+sw1+sw2组成,当DEBIT FOR PURCHASE命令执行成功时,则响应报文中的状态码sw1和sw2为‘9000’,相应地,数据域data具体为TAC码和MAC4,当DEBIT FOR PURCHASE命令执行不成功时,则响应报文中的状态码sw1和sw2不为‘9000’,且不包含数据域;
具体地,本实施例中DEBIT FOR PURCHASE命令的响应报文为:01 0D B1 0900 02 EA B1 90 00。
本实施例提供了一种对CPU卡内的电子钱包进行复合圈存的方法,该方法可以使整个复合圈存的过程更安全,防止采取非法的手段去修改CPU卡中特定的复合应用专用文件,并且该方法中通过对复合应用专用文件中写入新的数据,简化了分级打折优惠业务的实现,只需充值时设定充值金额对应的费率即可,更方便管理,会员享受的优惠只跟充值金额挂钩,多充多优惠,从而节省了管理的成本。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (13)

1.一种对电子钱包进行复合圈存的方法,其特征在于,所述方法包括:
CPU卡进入终端的非接触式感应区内,所述CPU卡上电并初始化;
接收所述终端发送的复合圈存初始化命令,读取所述复合圈存初始化命令中的数据并保存,进行复合圈存初始化操作,其中所述数据中包括交易金额;
接收所述终端发送的更新复合应用专用文件命令,查找复合应用专用文件;
将预先约定的数据写入所述复合应用专用文件的存储空间中,替换原有内容;
接收所述终端发送的复合圈存命令,读取所述复合圈存命令中的数据并保存;
按照预先约定的算法对所述交易金额与所述复合应用专用文件中的数据进行运算,得到新金额,将所述新金额加到电子钱包的余额上,得到新余额,复合圈存操作结束。
2.如权利要求1所述的对电子钱包进行复合圈存的方法,其特征在于,所述复合圈存初始化命令中的数据具体还包括:密钥索引号和终端机编号。
3.如权利要求2所述的对电子钱包进行复合圈存的方法,其特征在于,所述复合圈存初始化操作具体为:
所述CPU卡检查自身是否支持所述密钥索引号;
若不支持,则向所述终端返回所述CPU卡不支持所述密钥索引号的信息,终止操作;
若支持,则生成一个伪随机数和一个过程密钥,并用所述过程密钥计算得到第一报文鉴别码;
将复合圈存初始化命令的响应报文返回给所述终端。
4.如权利要求1所述的对电子钱包进行复合圈存的方法,其特征在于,所述查找复合应用专用文件的操作具体为:
判断所述更新复合应用专用文件命令中是否存在短文件标识符;
若不存在,则将当前文件作为复合应用专用文件;
若存在,则检查当前应用下的文件中是否存在一个文件的短文件标识符的值与所述短文件标识符相同;
若否,则向终端返回未找到复合应用专用文件的信息,终止操作;
若是,则将得到的文件作为复合应用专用文件。
5.如权利要求1所述的对电子钱包进行复合圈存的方法,其特征在于,所述预先约定的数据具体包括:
所述更新复合应用专用文件命令中包含的数据,或者,根据所述复合圈存初始化命令中包含的交易金额生成的数据。
6.如权利要求1所述的对电子钱包进行复合圈存的方法,其特征在于,所述将预先约定的数据写入所述复合应用专用文件的存储空间中之前,所述方法还包括:
判断所述预先约定的数据的长度是否大于所述复合应用专用文件的存储空间的大小;
若是,向所述终端返回所述复合应用专用文件的存储空间不够的信息,终止操作;
若否,将预先约定的数据写入所述复合应用专用文件的存储空间中。
7.如权利要求1所述的对电子钱包进行复合圈存的方法,其特征在于,所述将预先约定的数据写入所述复合应用专用文件的存储空间中,替换原有内容之后,所述方法还包括:
将更新复合应用专用文件命令的响应报文返回给所述终端。
8.如权利要求1所述的对电子钱包进行复合圈存的方法,其特征在于,所述复合圈存命令中的数据具体包括:交易日期、交易时间和第二报文鉴别码。
9.如权利要求8所述的对电子钱包进行复合圈存的方法,其特征在于,所述按照预先约定的算法对所述交易金额与所述复合应用专用文件中的数据进行运算之前,所述方法还包括:
验证所述第二报文鉴别码是否有效;
若无效,则向所述终端返回第二报文鉴别码无效的信息,终止操作;
若有效,则将所述电子钱包的联机交易序号加1,并按照预先约定的算法对所述交易金额与所述复合应用专用文件中的数据进行运算。
10.如权利要求1所述的对电子钱包进行复合圈存的方法,其特征在于,所述预先约定的算法包括乘法、除法、加法和减法,以及上述四种算法的各种组合。
11.如权利要求1所述的对电子钱包进行复合圈存的方法,其特征在于,所述将所述新金额加到电子钱包的余额上,得到新余额之后,所述方法还包括:
更新所述电子钱包的交易明细;
计算交易验证码;
将所述复合圈存命令的响应报文返回给所述终端。
12.如权利要求1所述的对电子钱包进行复合圈存的方法,其特征在于,所述更新复合应用专用文件命令还具体为:更新记录命令;
所述查找复合应用专用文件的操作还具体为:查找复合应用专用文件,并查找所述复合应用专用文件中的相应记录。
13.如权利要求12所述的对电子钱包进行复合圈存的方法,其特征在于,所述查找复合应用专用文件,并查找所述复合应用专用文件中的相应记录的方法具体为:
判断所述更新记录命令中是否存在短文件标识符;
若不存在,则向所述终端返回未找到复合应用专用文件的信息,终止操作;
若存在,则检查当前应用下的文件中是否存在一个文件的短文件标识符的值与所述短文件标识符相同;
若否,则向终端返回未找到复合应用专用文件的信息,终止操作;
若是,则将得到的文件作为复合应用专用文件,并根据所述更新记录命令中指定的记录号在所述复合应用专用文件中查找相应的记录;
若没有查找到,则向终端返回未找到需要更新的记录的信息,终止操作;
若查找到,则将查找得到的记录作为需要更新的记录。
CN2010102141326A 2010-06-29 2010-06-29 一种对电子钱包进行复合圈存的方法 Active CN102013132B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN2010102141326A CN102013132B (zh) 2010-06-29 2010-06-29 一种对电子钱包进行复合圈存的方法
PCT/CN2011/076590 WO2012000438A1 (zh) 2010-06-29 2011-06-29 一种对电子钱包进行操作的方法
US13/519,187 US10878404B2 (en) 2010-06-29 2011-06-29 Method for operating an e-purse

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010102141326A CN102013132B (zh) 2010-06-29 2010-06-29 一种对电子钱包进行复合圈存的方法

Publications (2)

Publication Number Publication Date
CN102013132A CN102013132A (zh) 2011-04-13
CN102013132B true CN102013132B (zh) 2012-08-08

Family

ID=43843294

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010102141326A Active CN102013132B (zh) 2010-06-29 2010-06-29 一种对电子钱包进行复合圈存的方法

Country Status (1)

Country Link
CN (1) CN102013132B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10878404B2 (en) * 2010-06-29 2020-12-29 Feitian Technologies Co., Ltd. Method for operating an e-purse
CN102708485B (zh) * 2012-05-17 2015-07-22 东信和平科技股份有限公司 一种手机支付卡交易的事物保护方法及手机支付卡
JP6119856B2 (ja) * 2013-07-01 2017-04-26 日本電気株式会社 有効性制御システム、端末装置、サーバ装置、記録媒体、方法、および、プログラム
JP6160700B2 (ja) * 2013-09-13 2017-07-12 日本電気株式会社 有効性制御のための端末装置、サーバ装置
CN103533027B (zh) * 2013-09-22 2016-11-16 瑞斯康达科技发展股份有限公司 一种分布式设备及软件版本兼容性维护的方法、系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6330978B1 (en) * 1997-04-29 2001-12-18 Diebold Incorporated Electronic purse card value system card security method
CN101393671A (zh) * 2008-10-28 2009-03-25 中国工商银行股份有限公司 一种基于银行卡的商户信息处理方法、装置与系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6330978B1 (en) * 1997-04-29 2001-12-18 Diebold Incorporated Electronic purse card value system card security method
CN101393671A (zh) * 2008-10-28 2009-03-25 中国工商银行股份有限公司 一种基于银行卡的商户信息处理方法、装置与系统

Also Published As

Publication number Publication date
CN102013132A (zh) 2011-04-13

Similar Documents

Publication Publication Date Title
CN102044114B (zh) 一种对电子钱包进行消费的方法
CN101799954B (zh) 一种对双电子钱包进行圈存的方法
US8401964B2 (en) Apparatus, method, and computer program product for encoding enhanced issuer information in a card
RU2635233C2 (ru) Механизм, позволяющий использовать одноразовые карты в системе, предназначенной для приема карт согласно стандартам международной индустрии платежей
US10878404B2 (en) Method for operating an e-purse
US6409080B2 (en) Portable electronic device and loyalty point system
CN104603809B (zh) 在移动设备上使用虚拟卡促进交易的系统和方法
AU2016219558B2 (en) System and method for configuring risk tolerance in transaction cards
US10147077B2 (en) Financial transaction method and system having an update mechanism
TWI420399B (zh) 在管理共享平衡之單一付費器件上用於多重儲存值應用共存之技術
CN102013132B (zh) 一种对电子钱包进行复合圈存的方法
CN102117453B (zh) 一种受理各类支付卡并进行交易转接处理的方法及系统
CN104303197A (zh) 用于实时的账户访问的系统和方法
KR20080100219A (ko) 결제 장치 이용의 인가를 위한 기술
CA2821105A1 (en) Tokenized contactless payments for mobile devices
US9378498B2 (en) Method for loading double e-wallets
US20100318463A1 (en) Method and apparatus for addressing issuer hold for automated fuel dispenser transactions in an electronic payment system
US20140222646A1 (en) Smartcard-based value transfer
CN101799955B (zh) 一种对双电子钱包进行操作的方法
JP2007079821A (ja) 電子マネー決済端末、自動入金管理装置
CN106096925A (zh) 一种智能卡、一种智能卡的充值方法及系统
CN108288151A (zh) 一种基于区块链的虚拟币抵押借款方式
KR20000054780A (ko) 다수 아이디(id)가 부여된 지불수단을 이용한 결제시스템
JP6031407B2 (ja) 決済端末装置、および同装置における接続先切替え方法、ならびにプログラム
US20030222152A1 (en) Pre-paid debit & credit card

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant