Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR OPERATING ELECTRONIC PURSE
Document Type and Number:
WIPO Patent Application WO/2012/000438
Kind Code:
A1
Abstract:
A method for operating an electronic purse is disclosed, which belongs to the field of information security. The method includes: a CPU card enters into a non-contact sensing area of a terminal, and is powered on and initialized; an operation initialization command sent by the terminal is received, and the data in the operation initialization command is read out and stored, and the data comprises transaction amount, and the operation initialization command is specifically a complex load initialization command or a consumption initialization command; and corresponding operations are conducted.

Inventors:
LU, Zhou (17th Floor, Tower B Huizhi Mansion,No.9 Xueqing Road,Haidian District, Beijing 5, 100085, CN)
陆舟 (中国北京市海淀区学清路9号汇智大厦B座17层, Beijing 5, 100085, CN)
Application Number:
CN2011/076590
Publication Date:
January 05, 2012
Filing Date:
June 29, 2011
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
FEITIAN TECHNOLOGIES CO., LTD. (17th Floor, Tower B Huizhi Mansion,No.9 Xueqing Road,Haidian District, Beijing 5, 100085, CN)
飞天诚信科技股份有限公司 (中国北京市海淀区学清路9号汇智大厦B座17层, Beijing 5, 100085, CN)
LU, Zhou (17th Floor, Tower B Huizhi Mansion,No.9 Xueqing Road,Haidian District, Beijing 5, 100085, CN)
International Classes:
G07F7/08
Attorney, Agent or Firm:
KANGXIN PARTNERS, P.C. (Floor 16, Tower A Indo Building,A48 Zhichun Road,Haidian District, Beijing 8, 100098, CN)
Download PDF:
Claims:
权 利 要 求 书

1. 一种对电子钱包进行操作的方法, 其特征在于, 所述方法包括:

CPU卡进入终端的非接触式感应区内, 所述 CPU卡上电并初始化; 接收所述终端发送的操作初始化命令, 读取所述操作初始化命令中 的数据并保存, 所述数据包括交易金额, 所述操作初始化命令为复合圏 存初始化命令或消费初始化命令;

如果所述操作初始化命令为复合圏存初始化命令, 则进行复合圏存 初始化操作; 接收所述终端发送的更新复合应用专用文件命令, 查找复 合应用专用文件; 将预先约定的数据写入所述复合应用专用文件的存储 空间中, 替换原有内容; 接收所述终端发送的复合圏存命令, 读取所述 复合圏存命令中的数据并保存; 按照预先约定的算法对所述交易金额与 所述复合应用专用文件中的数据进行运算, 得到新金额, 将所述得到新 金额加到电子钱包的余额上, 得到新余额;

如果所述操作初始化命令为消费初始化命令, 按照预先约定的算法 对所述交易金额和复合应用专用文件中的相应记录中的值进行计算, 得 到新金额; 读取所述电子钱包的余额, 判断所述新金额是否超过所述电 子 4 包的余额与透支限额的和; 若是, 则向所述终端返回所述电子 4 包 余额不足的信息, 终止操作; 若否, 则生成一个伪随机数和一个过程密 钥, 将所述消费初始化命令的响应报文返回给所述终端; 接收所述终端 发送的消费命令, 读取所述消费命令终的数据并保存; 从所述电子钱包 的余额中扣减所述新金额, 得到新的金额, 并将所述消费命令的响应报 文返回给所述终端。

2. 如权利要求 1所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令中的数据还包括: 密钥索引号和终端机编号。

3. 如权利要求 1所述的对电子钱包进行操作的方法, 其特征在于, 所述预 先约定的算法包括乘法、 除法、 加法和减法, 以及所述四种算法的各种 组合。

4. 如权利要求 2所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为消费初始化命令时, 所述按照预先约定的算法对所述交 易金额和复合应用专用文件中的相应记录中的值进行运算之前, 所述方 法还包括:

所述 CPU卡检查自身是否支持所述密钥索引号;

若不支持, 则向终端返回 CPU卡不支持所述密钥索引号的信息, 终 止操作;

若支持, 则按照预先约定的算法对所述交易金额和复合应用专用文 件中的相应记录中的值进行运算。 如权利要求 1所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为消费初始化命令时, 所述消费命令中的数据包括: 终端 交易号, 交易日期, 交易时间和第三鉴别码。 如权利要求 5所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为消费初始化命令时, 所述从所述电子钱包的余额中扣减 所述新金额之前, 所述方法还包括:

验证所述第三鉴别码是否有效;

若无效, 则向终端返回第三鉴别码无效 的信息, 终 止操作; 若有效, 则将所述电子 4 包的脱机交易序号加 1 , 从所述电子 4 包 的余额中扣减所述新金额。 如权利要求 1所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为消费初始化命令时, 所述从电子钱包的余额中扣减所述 新金额, 得到新的余额之后, 所述方法还包括:

更新所述电子钱包的交易明细;

生成第四报文鉴别码和验证码。 如权利要求 1所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为消费初始化命令时, 所述等待接收终端发送的命令的同 时, 所述方法还包括:

接收所述终端发送的复合圏存初始化命令时, 读取所述复合圏存初 始化命令中的数据并保存, 进行复合圏存初始化操作;

接收所述终端发送的更新记录命令, 更新复合应用专用文件中的相 应记录中的数据; 接收所述终端发送的复合圏存命令, 进行复合圏存操作。

9. 如权利要求 8所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为消费初始化命令时, 所述更新复合应用专用文件中的相 应记录中的数据的步骤为:

查找所述复合应用专用文件中的相应 ΐ己录;

判断所述更新记录命令中的数据的长度是否大于所述查找得到的记 录的长度;

若是, 则向所述终端返回所述记录存储空间不够的信息, 终止操作; 若否, 则更新所述查找得到的记录中的数据。

10. 如权利要求 9所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为消费初始化命令时, 所述查找复合应用专用文件中的相 应记录的操作为:

判断所述更新记录命令中是否存在短文件标识符;

若不存在所述短文件标识符, 则向所述终端返回未找到复合应用专 用文件的信息, 终止操作;

若存在所述短文件标识符, 则检查是否存在一个文件的短文件 标识符的值与所述短文件标识符的值相同, 若不存在, 则向所述终 端返回未找到复合应用专用文件的信息, 终止操作, 若存在, 则将 所述检查到的文件作为复合应用专用文件, 并才艮据所述更新记录命 令中指定的记录号在所述复合应用专用文件中查找相应的记录; 若没有查找到, 则向终端返回未找到相应记录的信息, 终止操作;

若查找到, 则将查找到的记录作为需要更新的记录。

11. 如权利要求 9所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为消费初始化命令时, 所述更新查找得到的记录中的数据 的方法包括:

将所述更新记录命令中的数据写入所述查找得到的记录中, 替换原 有内容;

或者, 根据预先约定的规则对所述复合圏存初始化命令中包含的交易金额 进行判断, 并 居判断结果生成一个数据, 将所述生成的数据写入所述 查找得到的记录中, 替换原有内容。

12. 如权利要求 2所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为复合圏存初始化命令时, 所述复合圏存初始化操作为: 所述 CPU卡检查自身是否支持所述密钥索引号;

若不支持,则向所述终端返回所述 CPU卡不支持所述密钥索引号的 信息, 终止操作;

若支持, 则生成一个伪随机数和一个过程密钥, 并用所述过程密钥 计算得到第一报文鉴别码;

将复合圏存初始化命令的响应 4艮文返回给所述终端。

13. 如权利要求 1所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为复合圏存初始化命令时, 所述查找复合应用专用文件的 操作为:

判断所述更新复合应用专用文件命令中是否存在短文件标识符; 若不存在, 则将当前文件作为复合应用专用文件;

若存在, 则检查当前应用下的文件中是否存在一个文件的短文件标 识符的值与所述短文件标识符相同;

若否, 则向终端返回未找到复合应用专用文件的信息, 终止操作; 若是, 则将得到的文件作为复合应用专用文件。

14. 如权利要求 1所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为复合圏存初始化命令时, 所述将预先约定的数据包括: 所述更新复合应用专用文件命令中包含的数据, 或者, 才艮据所述复 合圏存初始化命令中包含的交易金额生成的数据。

15. 如权利要求 1所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为复合圏存初始化命令时, 所述将预先约定的数据写入所 述复合应用专用文件的存储空间中之前, 所述方法还包括:

判断所述预先约定的数据的长度是否大于所述复合应用专用文件的 存储空间的大小; 若是, 向所述终端返回所述复合应用专用文件的存储空间不够的信 息, 终止操作; 若否, 将将预先约定的数据写入所述复合应用专用文件的存储空间 中。

16. 如权利要求 1所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为复合圏存初始化命令时, 所述将预先约定的数据写入所 述复合应用专用文件的存储空间中, 替换原有内容之后, 所述方法还包 括:

将更新复合应用专用文件命令的响应报文返回给所述终端。

17. 如权利要求 1所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为复合圏存初始化命令时, 所述复合圏存命令中的数据包 括: 交易日期、 交易时间和第二报文鉴别码;

所述按照预先约定的算法对所述交易金额与所述复合应用专用文件 中的数据进行运算之前, 所述方法还包括:

验证所述第二报文鉴别码是否有效;

若无效, 则向所述终端返回第二艮文鉴别码无效的信息, 终止操作; 若有效, 则将所述电子钱包的联机交易序号加 1 , 并按照预先约定 的算法对所述交易金额与所述复合应用专用文件中的数据进行运算。

18. 如权利要求 1所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为复合圏存初始化命令时, 所述将得到的新金额加到电子 钱包的余额上, 得到新余额之后, 所述方法还包括:

更新所述电子钱包的交易明细; 计算交易验证码;

将所述复合圏存命令的响应 4艮文返回给所述终端。

19. 如权利要求 1所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为复合圏存初始化命令时, 所述更新复合应用专用文件命 令还为: 更新记录命令;

所述查找复合应用专用文件的操作还具体为: 查找复合应用专用文 件, 并查找所述复合应用专用文件中的相应记录。 如权利要求 19所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为复合圏存初始化命令时, 所述查找复合应用专用文件, 并查找所述复合应用专用文件中的相应记录的方法为:

判断所述更新记录命令中是否存在短文件标识符;

若不存在, 则向所述终端返回未找到复合应用专用文件的信息, 终 止操作;

若存在, 则检查当前应用下的文件中是否存在一个文件的短文件标 识符的值与所述短文件标识符相同;

若否, 则向终端返回未找到复合应用专用文件的信息, 终止操作; 若是, 则将得到的文件作为复合应用专用文件, 并根据所述更新记 录命令中指定的记录号在所述复合应用专用文件中查找相应的记录; 若没有查找到, 则向终端返回未找到需要更新的记录的信息, 终止 操作;

若查找到, 则将查找得到的记录作为需要更新的记录。

Description:
一种对电子钱包进^ "操作的方法 技术领域 本发明涉及信息安全领域, 特别涉及一种对 CPU 卡内的电子钱包进行操 作的方法。 背景技术

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

CPU卡进入终端的非接触式感应区内, 所述 CPU卡上电并初始化; 接收所述终端发送的操作初始化命令, 读取所述操作初始化命令中的数据 并保存, 所述数据包括交易金额, 所述操作初始化命令为复合圏存初始化命令 或消费初始化命令; 如果所述操作初始化命令为复合圏存初始化命 令, 则进行复合圏存初始化 操作; 接收所述终端发送的更新复合应用专用文件命 令, 查找复合应用专用文 件; 将预先约定的数据写入所述复合应用专用文件 的存储空间中, 替换原有内 容; 接收所述终端发送的复合圏存命令, 读取所述复合圏存命令中的数据并保 存; 按照预先约定的算法对所述交易金额与所述复 合应用专用文件中的数据进 行运算, 得到新金额, 将所述得到新金额加到电子钱包的余额上, 得到新余额; 如果所述操作初始化命令为消费初始化命令, 按照预先约定的算法对所述 交易金额和复合应用专用文件中的相应记录中 的值进行计算, 得到新金额; 读 取所述电子钱包的余额, 判断所述新金额是否超过所述电子钱包的余额 与透支 限额的和; 若是, 则向所述终端返回所述电子钱包余额不足的信 息, 终止操作; 若否, 则生成一个伪随机数和一个过程密钥, 将所述消费初始化命令的响应报 文返回给所述终端; 接收所述终端发送的消费命令, 读取所述消费命令终的数 据并保存; 从所述电子钱包的余额中扣减所述新金额, 得到新的金额, 并将所 述消费命令的响应报文返回给所述终端。 本发明的有益效果在于: 本发明提供了一种对电子钱包进行操作的方法 , 通过本发明提供的方法使整个交易过程更安全 , 且防止了釆取非法的手段去修 改 CPU卡中的复合应用专用文件, 进一步地简化了分级打折优惠操作的实现, 只需要在圏存时对复合应用专用文件进行设定 即可,并且方便管理,从而节省了 管理的成本。 附图说明 图 1为本实施例 1提供的一种对电子钱包进行复合圏存的方法 流程图; 图 2为本实施例 1提供的一种对电子钱包进行复合圏存的方法 详细流程 图; 图 3为本实施例 1提供的一种对电子钱包进行消费的方法的详 流程图; 图 4为本实施例 2提供的一种对电子钱包进行消费的方法的流 图; 以及 图 5为本实施例 2提供的一种对电子钱包进行消费的方法的详 流程图。 具体实施方式 为使本发明的目的、 技术方案和优点更加清楚, 下面将结合附图对本发明 实施方式故进一步地详细描述。 实施例 1 为了简化分级打折优惠操作, 在复合圏存时对复合应用专用文件进行设 定, 本发明实施例提供了一种对电子钱包进行复合 圏存的方法, 参见图 1 , 该 方法内容包括:

S 1:CPU卡进入终端的非接触式感应区内, 所述 CPU卡上电并初始化;

S2:接收所述终端发送的复合圏存初始化命令 ,读取所述复合圏存初始化命 令中的数据并保存,进行复合圏存初始化操作 ,其中所述数据中包括交易金额;

S3:接收所述终端发送的更新复合应用专用文 件命令,查找复合应用专用文 件;

S4:将预先约定的数据写入所述复合应用专用 文件的存储空间中,替换原有 内容; S5:接收所述终端发送的复合圏存命令,读取所 述复合圏存命令中的数据并 保存;

S6:按照预先约定的算法对所述交易金额与所 述复合应用专用文件中的数 据进行运算, 得到新金额, 将所述得到的新金额加到电子钱包的余额上, 得到 新余额, 复合圏存操作结束。 为了对本发明实施例提供的方法进行详细说明 , 请参见如下实施例: 实施例 本发明实施例提供了一种对电子钱包进行复合 圏存的方法, 在本实施例 中, 以 CPU卡内的电子钱包为例进行说明, CPU卡内的电子钱包除了具有普 通电子钱包的基本交易功能外, 还具有支持复合应用的钱包的所有交易功能, 相应地也支持复合圏存的功能, 并且对 CPU 卡内电子钱包的复合圏存操作是 在 CPU 终端进行的, 其中进行复合圏存操作时, 按照预先约定的规则对交易 金额与复合专用文件中规定的值进行运算, 得到新金额, 并将得到的新金额加 到电子钱包的余额上, 完成复合圏存操作, 相应地, 在消费时, 则按照该余额 进行消费。 参见图 2, —种对 CPU卡内的电子钱包进行复合圏存的方法, 具体实现步 骤如下: 步 4聚 101 : CPU卡进入终端的非接触式感应区内, CPU卡上电并初始化; 步骤 102: 接收终端发送的复合圏存初始化命令 INITIALIZE FOR CAPP LOAD , 读取命令中包含的数据并保存; 在本实施例中, 复合圏存初始化命令 INITIALIZE FOR CAPP LOAD用于 初始化复合圏存交易, 其中 INITIALIZE FOR CAPP LOAD命令 4艮文分成: 命 令头 + 命令体, 即为: (CLA + INS + P1 + P2) + (Lc + Data + Le); 其中, CLA + INS + PI + P2为命令头, Lc + Data + Le为命令体, 命令头 为命令的编码, 命令头中的 CLA为指令类别, INS为指令代码, P1和 P2为指 令参数; 命令体中的 Lc为命令体内 Data中数据的长度, Data为 INITIALIZE FOR CAPP LOAD命令中的数据, Le是期望的应答 APDU数据字段的最大字 节数; 本实施例中 INITIALIZE FOR CAPP LOAD命令 Data中包含的数据具体为 密钥索引号、 交易金额和终端机编号; 具体地, 在本实施例中, 接收到的 INITIALIZE 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为 PI , 定义为复合圏存初始化的标识, 02为 P2, 定义为电子 4 包 的标识, 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 , 同时终止执行复合圏存初始化操作; 步 4聚 105 : 生成一个四字节的伪随机数和一个过程密钥; 在本实施例中, 生成过程密钥的方法具体为: 将上述伪随机数、 电子钱包联机交易序号和' 8000'顺序链接, 再利用圏存 子密钥 DLK对链接后得到的数据进行加密, 得到的加密后的数据即为过程密 钥。 步骤 106: 利用上述过程密钥计算得到第一报文鉴别码 MAC1 ; 在本实施例中,利用过程密钥计算得到第一 4艮文鉴别码 MAC 1的方法具体 为: 将交易前的电子 4 包的余额、 交易金额、 交易类型标识和终端机编号顺序 链接, 再利用过程密钥对链接后的数据进行加密, 得到的加密后的数据的前四 个字节即为第一 4艮文鉴别码 MAC 1。 步 4聚 107: 将 INITIALIZE FOR CAPP LOAD命令的响应 4艮文返回给终端; 其中, INITIALIZE FOR CAPP LOAD命令的响应 4艮文由 Data + swl + sw2 组成, 当 INITIALIZE FOR CAPP LOAD命令执行成功时, 则响应 4艮文中的状 态码 swl和 sw2为' 9000' , 相应地, 响应 4艮文数据域 Data中包含的数据具体 为交易前的 CPU电子钱包的余额、 CPU钱包的联机交易序号、 密钥版本号、 算法标识、 伪随机数和 MAC1 , 当 INITIALIZE FOR CAPP LOAD命令执行不 成功时, 则响应 4艮文中的状态码 swl和 sw2不为' 9000' , 并且也不存在数据域 Data; 具体地, 在本实施例中, INITIALIZE FOR CAPP LOAD命令的响应 4艮文 具体为: 00 00 00 00 00 01 02 03 01 02 03 04 00 01 B l 0A 90 00。 步骤 108: 接收终端发送的更新复合应用专用文件的命令 UPDATE CAPP

DATA CACHE; 在本实施例中, 更新复合应用专用文件的命令 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为记录条数和记录长度, 并且 AC 1为读文件权限, AC2为 写文件权限; 文件体中为复合应用专用文件的数据; 具体地, 在本实施例中, 复合应用专用文件具体为二进制文件, 则 FILE TYPE为 00 ,且 FILE SIZE为文件大小,具体为 00 0B ,文件体中的内容为空; 进一步地, UPDATE CAPP DATA CACHE命令报文由 CLA + INS + P 1 + P2 + Lc + Data组成, 本实施例中, UPDATE CAPP DATA CACHE命令具体为: 80 D6 92 B l 04 00 01 20 00 , 其中, 80为 CLA, D6为 INS , 92为 P I , B 1为 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 i或具体为: 判断 UPDATE CAPP DATA CACHE命令中的 P I的高三位是否为 100 , 若是, 则表示命令中存在 SFI域, PI的低 5位即为 SFI域的值, 否则, 表示命令中不存在 SFI域; 具体地, 本实施例中 UPDATE CAPP DATA CACHE命令中的 P I为 92 , 表 示 P 1的高三位为 100 , 存在 SFI i或。 步骤 110 : 查找 CPU卡当前应用下是否存在一个文件的 SFI值与 UPDATE CAPP DATA CACHE命令中的 SFI值相同, 若不存在, 则执行步骤 111 , 若存 在, 则执行步 4聚 112; 步 4聚 111 : 向终端返回^ I 态码 0x6A82 , 同时终止操作; 步骤 112 : 将步骤 110中查找得到的文件作为复合应用专用文件, 并检查 UPDATE CAPP DATA CACHE命令中的数据域的长度是否大于复合应用 用 文件的长度, 若大于, 则执行步骤 113 , 若不大于, 则执行步骤 114; 在本实施例中, 由于复合应用专用文件是二进制文件, 所以复合应用专用 文件的长度具体为 FILE SIZE 的值, 具体即为判断 UPDATE CAPP DATA CACHE命令中 Lc的值是否大于复合应用专用文件 FILE SIZE的值, 由于本 实施例中 UPDATE CAPP DATA CACHE命令中 Lc的值为 04 , FILE SIZE的 值为 00 OB , 所以命令中的数据域的长度不大于复合应用专 用文件的长度。 步骤 113 : 向终端返回状态码 0x6A84 , 同时终止操作; 步骤 114 : UPDATE CAPP DATA CACHE命令中的数据域中的数据写入 复合应用专用文件中, 替换该复合应用专用文件中的原有内容; 在本实施例中, 具体将费率值 120 %写入该复合应用专用文件中, 替换其 原有内容; 由于本实施例中复合应用专用文件中的原有内 容为空, 因此直接将 UPDATE CAPP DATA CACHE命令中的数据 i或中的 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 JiJ 6000日寸, 贝 夺生成 ό 80 % , 或者 125 % , 或者 25 % , 或者 600元写入复合应用专用文件中, 或者当复合圏存初始化命令中的交 易金额为 8000元时, 即大于预先约定的下限时, 具体如为 6000时, 则将生成 的 75 % , 或者 133 % , 或者 33 % , 或者 2000元写入复合应用专用文件中。 步骤 115 : 将 UPDATE CAPP DATA CACHE命令的响应 4艮文返回给终端; 其中, UPDATE CAPP DATA CACHE命令的响应 4艮文由 swl + sw2组成, 不存在数据域 data, 当 UPDATE CAPP DATA CACHE命令执行成功时, 则响 应 4艮文为 '9000,, 当 UPDATE CAPP DATA CACHE命令执行不成功时, 则响应 4艮文不为' 9000'。 步骤 116: 接收终端发送的复合圏存命令 CREDIT FOR CAPP LOAD, 读 取命令数据域中的数据并保存; 在本实施例中, 复合圏存命令 CREDIT FOR CAPP LOAD用于复合圏存交 易;

CREDIT FOR CAPP LOAD命令 4艮文由 CLA + INS + P1 + P2 + Lc + Data + Le组成, 其中数据域 Data中的数据具体包括: 交易日期、 交易时间和第二报 文鉴别码 MAC2; 具体地, 本实施例中接收到的 CREDIT FOR CAPP LOAD命令具体为: 80 52 00 00 0B 07 DA 06 08 OA 14 2D 00 01 Al 0B 08,其中, 80为 CLA, 52为 INS , 00为 PI , 00为 P2, 0B为 Lc, 07 DA 06 08为 Data中的交易日期, OA 14 2D 为 Data中的交易时间, 00 01 Al 0B为 Data中的 MAC2, 08为 Le。 步骤 117: 验证数据中的第二报文鉴别码 MAC2是否有效, 若无效, 则执 行步 4聚 118, 若有效, 则执行步 4聚 119; 在本实施例中, -险证 MAC2是否有效的方法, 具体为: 将交易金额、 交易类型标识、 终端机编号、 交易日期和交易时间顺序链接, 然后使用步骤 105中生成的过程密钥对链接得到的数据进行加 密, 再比较加密 后得到的数据的前四个字节与 CREDIT FOR CAPP LOAD 命令数据域中的 MAC2是否相同, 若不相同, 则 MAC2无效, 若相同, 则 MAC2有效。 步骤 118: 向终端返回状态码 0x9302, 提示 MAC2无效; 步骤 119: 将电子钱包的联机交易序号加 1 , 按照预先约定的算法对交易 金额与复合应用专用文件中的值进行运算, 得到新金额, 并将得到的新金额加 到电子钱包的余额上; 在本实施例中, 预先约定的算法包括乘法、 除法、 加法和减法, 以及所述 四种算法的各种组合; 进一步地, 复合应用专用文件中的值为费率值, 具体为 120 % , 因此若当 交易金额为 1000元, 电子 4 包中的余额为 0元时, 则将交易金额 1000元乘上 复合专用文件中的费率值 120 %之后,得到的新金额为 1200元, 因此将这 1200 元加到电子 4 包的余额 0元上, 得到新的余额为 1200元, 这样电子 4 包中的 新余额 1200元就比将交易金额 1000元直接加到电子钱包的余额上得到的余额 1000元要多; 当写入复合应用专用文件中的费率值具体为 83.3 %时,若交易金额为 1000 元, 电子钱包中的余额为 0元, 则将交易金额 1000元除以费率值 83.3 %之后, 得到的新金额为 1200元, 因此将这 1200元力口到电子 4 包的余额 0元上, 得到 新的余额为 1200元, 这样电子 4 包中的新余额 1200元就比将交易金额 1000 元直接加到电子钱包的余额上得到的余额 1000元要多; 当写入复合应用专用文件中的费率值具体为 20 %时, 若交易金额为 1000 元, 电子钱包中的余额为 0元, 则将交易金额 1000元乘上费率值 20 %后, 再 力口上交易金额 1000元, 最后得 i l ό 新金额为 1200元, @ jtb i 1200元力口 i l 电子钱包的余额 0元上, 得到新的余额为 1200元, 这样电子钱包中的新余额 1200元就比将交易金额 1000元直接加到电子 4 包的余额上得到的余额 1000元 要多; 或者当复合圏存初始化命令中的交易金额为 8000 元时, 则将生成的费率 值 75 % , 或者 133 % , 或者 33 % , 或者 2000元写入复合应用专用文件中, 此 时当写入复合应用专用文件中的费率值为 75 %时, 交易金额 8000元除以 75 % 之后得到的新金额为 10060元,因此将这 10060元力。到电子 4 包的余额 0元上, 得到新的余额为 10060元, 这样电子 4 包中的新余额 10060元就比将交易金额 8000元直接加到电子钱包的余额上得到的余额 8000元要多; 当写入复合应用 专用文件中的费率值为 133 %时, 交易金额 8000元乘上 133 %之后得到的新金 额为 10060元, 因 jt匕 4夺这 10060元力口 i l电子 4 包 ό 余额 0元上, 得 i l新 ό 余额 为 10060元, 这样电子 4 包中的新余额 10060元就比将交易金额 8000元直接 加到电子钱包的余额上得到的余额 8000 元要多; 当写入复合应用专用文件中 的费率值为 33 %时, 交易金额 8000元乘上 33 %之后, 再加上交易金额 8000 元,得 ΐ1 ό 新金额为 10060元, @ jtb i 10060元力口 i l电子 4 包 ό 余额 0元上, 得到新的余额为 10060元, 这样电子 4 包中的新余额 10060元就比将交易金额 8000元直接加到电子钱包的余额上得到的余额 8000元要多; 当写入复合应用 专用文件中的费率值为 2000元时, 交易金额 8000元力口上 2000元后得到的新 余额为 10000元, @ jtb i 10000元力口 i l电子 4 包 ό 余额 0元上, 得 i l新 ό 余 额为 10000元, 这样电子 4 包中的新余额 10000元就比将交易金额 8000元直 接加到电子钱包的余额上得到的余额 8000元要多。 步 4聚 120: 更新电子 4 包的交易明细; 具体地为: 将电子钱包的联机交易序号、 交易金额、 交易类型标识、 终端 机编号、 交易日期和交易时间顺序链接组成一个记录来 更新标准交易明细。 步 4聚 121 : 计算交易-险证码 TAC; 在本实施例步骤 121中, 计算交易验证码 TAC码, 具体为: 用 DTK左右 8个字节进行异或运算, 并将交易后的电子钱包的余额、加 1 前的电子 4 包的联机交易序号、 交易金额、 交易类型标识、 终端机编号、 交易 日期和交易时间顺序链接, 再利用异或运算得到的结果对链接得到的数据 进行 加密, 得到的加密后的数据即为 TAC码。 步骤 122: 将 CREDIT FOR CAPP LOAD命令的响应 4艮文返回给终端, 复 合圏存操作结束。 其中, CREDIT FOR CAPP LOAD命令的响应 4艮文由 data + swl + sw2组 成,当 CREDIT FOR CAPP LOAD命令执行成功时,则响应 4艮文中的状态码 swl 和 sw2为' 9000,, 相应地, 数据 i或 data具体为 TAC码, 当 CREDIT FOR CAPP LOAD命令执行不成功时, 则响应 4艮文中的状态码 swl和 sw2不为' 9000' , 并 且不包含数据域; 具体地, 在本实施例中返回的 CREDIT FOR CAPP LOAD命令的响应 4艮文 为 00 05 D2 BC 90 00。 进一步地, 在本实施例中, 当复合应用专用文件为记录型文件时, 则复合 应用专用文件中的每一条记录对应着一个应用 , 具体地, 本实施例中复合应用 专用文件中的 FILE TYPE为 01 , 表示该复合应用专用文件为定长记录文件, 相应地, 定长记录文件对应的 FILE SIZE为记录条数和记录长度; 相应地, 对复合应用专用文件进行更新的步骤 108至步骤 116还可以替换 为: 步骤 108,: 接收终端发送的更新记录命令 UPDATE RECORD; 其中, 更新记录命令 UPDATE RECORD用于更新命令中指定的记录,并且 该 UPDATE RECORD命令适用于定长记录文件和变长记录文件 ; 具体地, UPDATE RECORD命令 4艮文由 CLA + INS + PI + P2 + Lc + Data 组成,其中 PI 和 P2用于指定将哪个文件的第几条记录作为复合 用专用文件 的记录, Lc 为 Data 中的数据的长度加上 4 个字节, 本实施例中, UPDATE RECORD命令具体为: 00 DC 03 04 08 00 01 20 00 , 其中, 00为 CLA, DC为 INS , 03为 PI , 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值与 UPDATE RECORD命令中的 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命令的响应 4艮文返回给终端; 其中, UPDATE RECORD命令的响应 4艮文由 swl + sw2组成, 不存在数据 域 data, 当 UPDATE RECORD 命令执行成功时, 则响应 4艮文为 '9000,, 当 UPDATE RECORD命令执行不成功时, 则响应 4艮文不为' 9000'。 进一步地, 在本实施例中, 通过上述方法进行复合圏存操作之后, 则可以 利用该 CPU卡中的电子钱包进行消费, 参见图 3 , 消费操作的流程具体如下: 步骤 201 :接收终端发送的消费初始化命令 INITIALIZE FOR PURCHASE, 读取命令中的数据并保存; 在本实施例中, 消费初始化命令 INITIALIZE FOR PURCHASE用于初始 化消费交易;

INITIALIZE FOR PURCHASE命令 4艮文分成: 命令头 + 命令体 即为: (CLA + INS + P 1 + P2) + (Lc + Data + Le); 其中, CLA + INS + P1 + P2为命令头, Lc + Data + Le为命令体, 命令头 为命令的编码, 命令头中的 CLA为指令类别, INS为指令代码, P1和 P2为指 令参数; 命令体中的 Lc为命令体内 Data中数据的长度, Data为 INITIALIZE FOR PURCHASE命令中的数据, 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, 定义为电子 4 包的标识, 0B为 Lc, 02为 Data 中的密钥索引号, 00 00 00 C8为 Data中的交易金额, 00 00 00 00 00 01为 Data 中的终端机编号, 0F为 Le。 步骤 202:检查自身是否支持上述 INITIALIZE FOR PURCHASE命令中包 含的密钥索引号, 若不支持, 则执行步骤 203 , 若支持, 则执行步骤 204; 步骤 203 : 返回状态码 0x9403给终端, 并终止执行消费初始化操作; 步骤 204: 读取电子 4 包的余额, 判断 INITIALIZE FOR PURCHASE命令 中包含的交易金额是否超过电子钱包的余额与 透支限额的和, 若是, 则执行步 骤 205 , 若否, 则执行步骤 206; 步骤 205 : 返回状态码 0x9401给终端, 并终止执行消费初始化操作; 步骤 206: 生成一个伪随机数和一个过程密钥; 在本实施例中, 过程密钥用于 CPU电子钱包或 Ml电子钱包的消费交易, 过程密钥是用密钥 DPK分散得到的。 步骤 207: 发送 INITIALIZE FOR PURCHASE命令的响应 4艮文给终端; 其中, INITIALIZE FOR PURCHASE响应 4艮文由 Data + swl + sw2组成, 当 INITIALIZE FOR PURCHASE命令执行成功时, 则返回的响应 4艮文中的状 态码 swl和 sw2为' 9000' , 且响应 4艮文数据域 Data中包含的数据具体为电子 钱包的余额、 CPU电子钱包的脱机交易序号、 透支限额、 密钥版本号、 算法标 识和伪随机数, 若命令执行不成功, 则返回的响应报文中只含有状态码 swl和 sw2, 且状态码 swl和 sw2不为' 9000,; 具体地, 本实施例中返回给终端的 INITIALIZE FOR PURCHASE响应 4艮 文为: 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命令 4艮文也由 CLA + INS + P1 + P2 + Lc + Data + Le组成, DEBIT FOR PURCHASE命令中的数据具体为:终端交易序号、 交易日期、 交易时间和第三鉴别码 MAC3; 具体地, 在本实施例中, 接收到的 DEBIT FOR PURCHASE命令具体为: 80 54 01 00 0F 00 00 00 01 7D AO 06 09 OF 27 13 01 OA Dl 0C 08, 其中 80为 CLA, 54为 INS , 01为 PI , 00为 P2, OF为 Lc, 00 00 00 01为 Data中的终 端交易序号, 7D AO 06 09为 Data中的交易日期, OF 27 13为 Data中的交易时 间, 01 OA Dl 0C为 Data中的 MAC3 , 08为 Le。 步骤 209:使用步骤 205中生成的过程密钥来 -险证 DEBIT FOR PURCHASE 命令中包含的 MAC3是否有效, 若无效, 则执行步骤 210, 若有效, 则执行步 骤 211; 在本实施例中, -险证 DEBIT FOR PURCHASE命令中包含的 MAC3是否 有效的方法, 具体为: 将交易金额、 交易类型标识、 终端机编号、 终端的交易日期和终端的交易 时间顺序链接, 用步骤 206中生成的过程密钥对链接得到的数据进行加 密, 再 比较得到的力。密后的数据的前四个字节与 DEBIT FOR PURCHASE命令中包含 的 MAC3是否 目同, 若不 目同, 则 MAC3无效, 若 4目同, 则 MAC3有效。 步骤 210: 返回状态码 0x9302给终端, 终止操作; 步骤 211 : 将电子钱包的脱机交易序号加 1 , 从电子钱包的余额中扣减计 算得到的金额; 在本实施例中, 若当交易金额为 200元, 电子钱包中的余额为 1200元时, 则从电子 4 包的余额 1200中扣减掉金额 200元后, 得到新的余额为 1000元。 步 4聚 212: 更新电子 4 包的交易明细; 在本实施例中, 需要更新的电子钱包的相关交易明细具体为: 交易金额、 交易类型标识、 终端编号、 交易日期和交易时间, 具体地, CPU卡将交易金额、 交易类型标识、 终端编号、 交易日期和交易时间顺序链接组成一个记录以 便更 新。 步骤 213 : 生成第四报文鉴别码 MAC4, 然后计算交易验证码 TAC码; 在本实施例中, 生成第四 4艮文鉴别码 MAC4方法具体为: 用步骤 206中生成的过程密钥对交易金额进行加密, 得到的加密后的数据 的前四个字节即为第四 艮文鉴别码 MAC4。 其中, 利用异或运算得到的结果来计算 TAC码的方法具体为: 用 DTK左右 8个字节进行异或运算, 并将交易金额、 交易类型标识、 终 端机编号、 终端交易序号、 终端的交易日期和终端的交易时间顺序链接, 并用 异或运算得到的结果对链接得到的数据进行加 密, 得到的加密后的数据的前四 个字节即为 TAC码。 步骤 214: 返回 DEBIT FOR PURCHASE命令的响应 4艮文给终端, 交易结 束。 其中, DEBIT FOR PURCHASE命令的响应 4艮文由 data + swl + sw2组成, 当 DEBIT FOR PURCHASE命令执行成功时, 则响应 4艮文中的状态码 swl和 sw2为' 9000,, 相应地, 数据 i或 data具体为 TAC码和 MAC4, 当 DEBIT FOR PURCHASE 命令执行不成功时, 则响应 4艮文中的状态码 swl 和 sw2 不为 '9000' , 且不包含数据域; 具体地,本实施例中 DEBIT FOR PURCHASE命令的响应 4艮文为: 01 0D B1 09 00 02 EA B1 90 00。 本实施例提供了一种对 CPU 卡内的电子钱包进行复合圏存的方法, 该方 法可以使整个复合圏存的过程更安全, 防止釆取非法的手段去^ ί'爹改 CPU 卡中 特定的复合应用专用文件, 并且该方法中通过对复合应用专用文件中写入 新的 数据,简化了分级打折优惠业务的实现,只需 值时设定充值金额对应的费率即 可, 更方便管理, 会员享受的优惠只跟充值金额挂钩, 多充多优惠,从而节省了 管理的成本。 实施例 2 为了简化了分级打折优惠操作, 便于对消费金额自动进行处理, 本发明实 施例提供了一种对电子钱包进行消费的方法, 参见图 4, 该方法内容包括: 401 : CPU卡进入终端的非接触式感应区内, 所述 CPU卡上电并初始化;

402:等待接收所述终端发送的命令;

403:当接收所述终端发送的消费初始化命令 , 读取所述消费初始化命令 中的数据并保存, 其中所述数据中包括交易金额;

404:按照预先约定的算法对所述交易金额和 复合应用专用文件中的相应记 录中的值进行运算, 得到新金额;

405:读取所述电子 4 包的余额, 判断所述新金额是否超过所述电子 4 包的 余额与透支限额的和; 若是, 则向所述终端返回所述电子钱包余额不足的信 息, 终止操作; 若否, 则生成一个伪随机数和一个过程密钥, 将所述消费初始化命令的响 应 4艮文返回给所述终端;

406:接收所述终端发送的消费命令, 读取所述消费命令中的数据并保存; 407:从所述电子 4 包的余额中扣减所述新金额, 得到新的余额, 并将所述 消费命令的响应 ^艮文返回给所述终端。 为了对本发明实施例提供的方法进行详细说明 , 请参见如下实施例: 实施例 本发明实施例提供了一种对电子钱包进行消费 的方法, 在本实施例中,

CPU卡内的电子钱包除了具有支持复合应用的 钱包的所有交易功能外,还支持 复合圏存和消费的功能, 并且对 CPU卡内电子钱包的复合圏存操作是在 CPU 终端进行的, 本实施例中进行复合圏存操作时, 将交易金额直接加到电子钱包 的余额上, 相应地, 在消费时, 则按照预先约定的算法对交易金额和复合专用 文件的相应记录中的值进行运算, 得到新金额, 再从电子 4 包的余额中扣减得 到的新金额, 得到电子钱包的新余额, 完成消费操作。 参见图 5 , —种对电子钱包进行消费的方法, 具体实现步骤如下: 步骤 501 : CPU卡进入终端的非接触式感应区内, CPU卡上电并初始化; 步骤 502: 等待接收终端发送的应用命令, 当接收到复合圏存初始化命令 INITIALIZE FOR CAPP LOAD时, 执行步骤 503 , 当接收到消费初始化命令 INITIALIZE FOR PURCHASE, 执行步骤 526; 步骤 503 : 读取复合圏存初始化命令 INITIALIZE FOR CAPP LOAD中包 含的数据并保存; 在本实施例中, 复合圏存初始化命令 INITIALIZE FOR CAPP LOAD用于 初始化复合圏存交易, 并且 INITIALIZE FOR CAPP LOAD命令的 4艮文分成: 命令头 + 命令体,即为:(CLA + INS + P1 + P2) + (Lc + Data + Le),其中, CLA + INS + P1 + P2为命令头, Lc + Data + Le为命令体, 命令头为命令的编码, 命 令头中的 CLA为指令类别, INS为指令代码, P1和 P2为指令参数; 命令体中 的 Lc为命令体内 Data中数据的长度, Data为 INITIALIZE FOR CAPP LOAD 命令中的数据, Le是期望的应答 APDU数据字段的最大字节数; 并且 INITIALIZE FOR CAPP LOAD命令的 Data中保存的数据具体为密钥 索引号、 交易金额和终端机编号; 具体地, 在本实施例中, 接收到的 INITIALIZE 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为 PI , 定义为复合圏存初始化的标识, 02为 P2, 定义为电子 4 包 的标识, 0B为 Lc, 02为 Data中的密钥索引号, 00 00 03 E8为 Data中的交易 金额, 00 00 00 00 00 01为 Data中的终端机编号, 10为 Le。 步骤 504: 检查自身是否支持 INITIALIZE FOR CAPP LOAD命令中包含 的密钥索引号, 若不支持, 则执行步骤 505 , 若支持, 则执行步骤 506; 步骤 505 : 向终端返回状态码 0x9403 , 同时终止执行复合圏存初始化操作; 步 4聚 506: 生成一个四字节的伪随机数和一个过程密钥; 在本实施例中, 生成过程密钥的方法具体为: 将上述伪随机数、 电子钱包联机交易序号和' 8000'顺序链接, 再利用圏存 子密钥 DLK对链接后得到的数据进行加密, 得到的加密后的数据即为过程密 钥。 步骤 507: 利用上述过程密钥计算得到第一 4艮文鉴别码 MAC1; 在本实施例中,利用过程密钥计算得到第一 4艮文鉴别码 MAC 1的方法具体 为: 将交易前的电子 4 包的余额、 交易金额、 交易类型标识和终端机编号顺序 链接, 再利用过程密钥对链接后的数据进行加密, 得到的加密后的数据的前四 个字节即为第一 4艮文鉴别码 MAC 1。 步 4聚 508: 将 INITIALIZE FOR CAPP LOAD命令的响应 4艮文返回给终端; 其中, INITIALIZE FOR CAPP LOAD命令的响应 4艮文由 Data + swl + sw2 组成, 当命令执行成功时, 则响应 4艮文中的状态码 swl和 sw2为' 9000' , 相应 地, 数据域 Data中包含的数据有: 交易前的 CPU电子钱包的余额、 CPU钱包 的联机交易序号、 密钥版本号、 算法标识、 伪随机数和 MAC1 , 当命令执行不 成功时, 则响应 4艮文中的状态码 swl和 sw2不为' 9000' , 并且也不存在数据域 Data; 具体地, 在本实施例中, INITIALIZE FOR CAPP LOAD命令的响应 4艮文 具体为: 00 00 00 00 00 01 02 01 01 02 03 04 00 01 Bl 0A 90 00。 步骤 509: 接收终端发送的更新记录命令 UPDATE RECORD; 在本实施例中, 更新记录命令 UPDATE RECORD用于更新复合应用专用 文件中的相应记录中的数据; 复合应用专用文件由文件头和文件体组成, 文件头具体包括: 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为记录条数和记录长度, 并且 AC 1为读文件权限, AC2为 写文件权限; 文件体中为复合应用专用文件的数据; 具体地, 在本实施例中, 复合应用专用文件具体为定长记录文件, 则 FILE

TYPE为 01 , 且 FILE SIZE为记录条数和记录长度, 具体为 OA 10 , 文件体中 的内容为空; 进一步地, UPDATE RECORD命令 4艮文由 CLA + INS + P I + P2 + Lc + Data组成, 其中 P I 和 P2用于指定将哪个文件的第几条记录作为复合 用专 用文件的记录, Lc为 Data中的数据的长度加上 4个字节,本实施例中, UPDATE RECORD命令具体为: 80 DC 03 68 08 00 00 80 00 , 其中, 00为 CLA, DC为 INS , 03为 P I , 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折等等, 具体复合应用专用文件中的每一条记录对 应的前提条件可以由发卡方预先定义的, 并且在该种前提条件下的费率值也是 由发卡方自定义的。 步骤 510: 判断 UPDATE RECORD命令中是否存在短文件标识符 SFI域, 若存在, 则执行步骤 511 , 若不存在, 则执行步骤 512; 其中, 判断更新记录命令 UPDATE RECORD中是否存在 SFI域的方法具 体为: 判断 UPDATE RECORD命令中的 P2的高 5位是否全为 0, 若是, 则表 示命令中存在 SFI域, 即 P2的高 5位即是 SFI值, 否则, 表示命令中不存在 SFI域; 具体地, 本实施例中 UPDATE RECORD命令中的 P2为 68, 表示 P2的高 5位为 01101 , 存在 SFI域。 步骤 511 : 查找 CPU卡当前应用下是否存在一个文件的 SFI值与 UPDATE RECORD命令中的 SFI值相同, 若不存在, 则执行步骤 512, 若存在, 则执行 步骤 513; 步骤 512: 向终端返回状态码 0x6A82, 同时终止执行此次复合圏存交易; 步骤 513: 将步骤 511 中查找得到的文件作为复合应用专用文件, 并根据 UPDATE RECORD 命令中指定的记录号在该复合应用专用文件中 查找相应的 记录, 若没有找到相应的记录, 则执行步骤 514, 若找到, 则执行步骤 515; 具体地, 在本实施例中, UPDATE RECORD命令中的 PI为 03 , 因此上述 复合应用专用文件中记录号为 03的记录即为需要查找的记录。 步骤 514: 向终端返回状态码 0x6A83 , 同时终止执行此次复合圏存交易; 步骤 515 : 检查 UPDATE RECORD命令中的数据域的长度是否大于步骤 513 中查找得到的记录的指定长度, 若大于, 则执行步骤 516, 若不大于, 则 执行步 4聚 517; 在本实施例中, 由于复合应用专用文件是定长记录文件, 且复合应用专用 文件中的 FILE SIZE为记录条数和记录长度,所以复合应用专 文件中的记录 长度由 FILE SIZE的值决定, 由于本实施例中 UPDATE RECORD命令中 Lc 的值为 08, FILE SIZE的值为 OA 10, 所以命令中的数据域的长度不大于复合 应用专用文件的长度。 步骤 516: 向终端返回状态码 0x6A84, 同时终止执行此次复合圏存交易; 步骤 517: 将 UPDATE RECORD命令中的数据域中的数据写入查找得到 的记录中, 替换该记录中的原有内容; 在本实施例中, 具体将费率值 80 %写入该记录中, 替换该记录中的原有内 容; 由于本实施例中复合应用专用文件中的记录中 的原有内容为空, 因此直接 将 UPDATE RECORD命令中的数据 i或中的 00 00 80 00写入复合应用专用文件 中的 ΐ己录号为 03的 ΐ己录中即可; 相应地, 当更新记录命令中的费率值为 125 %时, 则写入复合应用专用文 件的相应记录中的数据具体为 125 % , 当更新记录命令中的费率值为 20 %时, 则写入复合应用专用文件的相应记录中的数据 具体为 20 %; 或者, 当更新记录命令的数据中可以不包括费率值, 而由 CPU 卡对复合 圏存初始化命令中包含的交易金额进行判断, 按照预先约定的规则根据交易金 额生成一个费率值, 再将这个生成的费率值写入复合应用专用文件 的相应记录 中, 例如, 当复合圏存初始化命令中的交易金额为 800元时, 即小于预先约定 的下限时, 具体如为 2000时, 则生成一个数据 95 % , 或者 105 % , 或者 5 % , 因此将 95 %或者 105 %或者 5 %写入复合应用专用文件的相应记录中, 而当复 合圏存初始化命令中的交易金额为 5000 元时, 即在预先约定的下限与上限之 间日寸, 具体^口为 2000 JiJ 6000日寸, M生成一个数据 80 %或者 125 %或者 20 % , 因此将 80 %或者 125 %或者 20 %写入复合应用专用文件的相应记录中,或者 复合圏存初始化命令中的交易金额为 8000元时,则生成一个数据 75 %或者 133 %或者 25 % , 即大于预先约定的下限时, 具体如为 6000时, 因此将 75 %或者 133 %或者 25 %写入复合应用专用文件的相应记录中; 或者, 当复合应用专用文件中的每条记录对应的是不 同前提下的费率值 时, 则将更新记录命令的数据中包含的费率值和该 费率值的前提条件写入相应 的记录中, 如将费率值负 20元或者 90 %以及该费率值的前提条件消费时的交 易金额大于 200元, 小于 300元写入相应的 ΐ己录中, 或者将费率值负 100元或 者 80 %以及该费率值的前提条件消费时的交易金额 于 500元,小于 600元写 入相应的记录中等等。 步骤 518: 将 UPDATE RECORD命令的响应 4艮文返回给终端; 其中, UPDATE RECORD命令的响应 4艮文由 swl + sw2组成, 不存在数据 域 data, 当命令执行成功时, 则返回的响应 4艮文为 '9000' , 当命令执行不成功 时, 则返回的响应 4艮文不为' 9000,, 具体本实施例中返回的响应 4艮文为 90 00。 步骤 519: 接收终端发送的复合圏存命令 CREDIT FOR CAPP LOAD, 读 取命令数据域中的数据并保存; 在本实施例中, 复合圏存命令 CREDIT FOR CAPP LOAD用于复合圏存交 易; CREDIT FOR CAPP LOAD命令 4艮文由 CLA + INS + P1 + P2 + Lc + Data +

Le组成, 其中 Data中的数据具体包括: 交易日期、 交易时间和第二报文鉴别 码 MAC2; 具体地, 本实施例中接收到的 CREDIT FOR CAPP LOAD命令具体为: 80 52 00 00 0B 07 DA 06 08 OA 14 2D 00 01 Al 0B 08,其中, 80为 CLA, 52为 INS , 00为 PI , 00为 P2, 0B为 Lc, 07 DA 06 08为 Data中的交易日期, OA 14 2D 为 Data中的交易时间, 00 01 Al 0B为 Data中的 MAC2, 08为 Le。 步骤 520: 验证数据中的第二报文鉴别码 MAC2是否有效, 若无效, 则执 行步 4聚 521 , 若有效, 则执行步 4聚 522; 在本实施例中, -险证 MAC2是否有效的方法, 具体为: 将交易金额、 交易类型标识、 终端机编号、 交易日期和交易时间顺序链接, 然后使用步骤 506中生成的过程密钥对链接得到的数据进行加 密, 再比较加密 后得到的数据的前四个字节与 CREDIT FOR CAPP LOAD 命令数据域中的 MAC2是否相同, 若不相同, 则 MAC2无效, 若相同, 则 MAC2有效。 步骤 521 : 向终端返回状态码 0x9302, 提示 MAC2无效; 步骤 522: 将电子钱包的联机交易序号加 1 , 将交易金额直接加到电子钱 包的余额上; 在本实施例中, 当交易金额为 1000元, 电子钱包的余额为 0元时, 则将 交易金额 1000元加到电子 4 包的余额上, 得到新的余额 1000元。 步骤 523: 更新电子 4 包的交易明细; 具体地为: 将电子钱包的联机交易序号、 交易金额、 交易类型标识、 终端 机编号、 交易日期和交易时间顺序链接组成一个记录来 更新标准交易明细; 步骤 524: 计算交易验证码 TAC; 在本实施例中, 计算交易验证码 TAC码, 具体为: 用内部密钥 DTK左右 8个字节进行异或运算, 并将交易后的电子钱包的 余额、 加 1前的电子钱包的联机交易序号、 交易金额、 交易类型标识、 终端机 编号、 交易日期和交易时间顺序链接, 再利用异或运算得到的结果对链接得到 的数据进行加密, 得到的加密后的数据即为 TAC码。 步骤 525: 将 CREDIT FOR CAPP LOAD命令的响应 4艮文返回给终端; 其中, CREDIT FOR CAPP LOAD命令的响应 4艮文由 data + swl + sw2组 成, 当命令执行成功时, 则返回的响应 4艮文中的状态码 swl和 sw2为 '9000' , 相应地, 响应报文的数据域中的数据具体为 TAC 码, 当命令执行不成功时, 则返回的响应 4艮文中的状态码 swl和 sw2不为' 9000,, 响应 4艮文中不存在数据 域 ^ 具体地, 在本实施例中返回的 CREDIT FOR CAPP LOAD命令的响应 4艮文 为 00 05 D2 BC 90 00。 步骤 526:读取消费初始化命令 INITIALIZE FOR PURCHASE中的数据并 保存; 在本实施例中, 消费初始化命令 INITIALIZE FOR PURCHASE用于初始 化消费交易, INITIALIZE FOR PURCHASE命令 4艮文由 CLA + INS + PI + P2 +Lc + Data + Le组成, 其中 Data中的数据具体为密钥索引号、 交易金额和终端 机编号; 具体地, 在本实施例中, 接收到的 INITIALIZE FOR PURCHASE命令具 体为: 80 50 01 02 0B 02 00 00 00 C8 00 00 00 00 00 01 OF, 其中 80为 CLA, 50 为 INS , 01为 P1 , 02为 P2, 定义为电子 4 包的标识, 0B为 Lc, 02为 Data 中的密钥索引号, 00 00 00 C8为 Data中的交易金额, 00 00 00 00 00 01为 Data 中的终端机编号, OF为 Le。 步骤 527:检查自身是否支持上述 INITIALIZE FOR PURCHASE命令中包 含的密钥索引号, 若不支持, 则执行步骤 528, 若支持, 则执行步骤 529; 步骤 528: 返回状态码 0x9403给终端, 并终止操作; 步骤 529:按照预先约定的算法对 INITIALIZE 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元。 步骤 530: 读取电子钱包的余额, 判断上述新金额是否超过电子钱包的余 额与透支限额的和, 若是, 则执行步骤 531 , 若否, 则执行步骤 532; 步骤 531 : 返回^ I 态码 0x9401给终端, 并终止操作; 步 4聚 532: 生成一个伪随机数和一个过程密钥; 在本实施例中, 过程密钥用于 CPU电子钱包或 Ml电子钱包的消费交易, 过程密钥是用密钥 DPK分散得到的。 步骤 533: 发送 INITIALIZE FOR PURCHASE命令的响应 4艮文给终端; 其中, INITIALIZE FOR PURCHASE响应 4艮文由 Data + swl + sw2组成, 当命令执行成功时,则返回给终端的响应 4艮文中的状态码 swl和 sw2为 '9000' , 且响应报文 Data中包含的数据具体为电子钱包的余额、 CPU电子钱包的脱机 交易序号、 透支限额、 密钥版本号、 算法标识和伪随机数, 若命令执行不成功, 则返回给终端的响应 4艮文中只含有状态码 swl和 sw2, 且状态码 swl和 sw2 不为' 9000,; 具体地, 本实施例中返回给终端的 INITIALIZE FOR PURCHASE响应 4艮 文为: 00 00 4B 00 00 01 00 00 64 02 03 01 02 03 04 90 00。 步骤 534: 接收终端发送的消费命令 DEBIT FOR PURCHASE, 读取命令 中的数据并保存; 在本实施例中, DEBIT FOR PURCHASE命令用于进行消费操作; 其中, DEBIT FOR PURCHASE命令 4艮文也由 CLA + INS + P1 + P2 + Lc + Data + Le组成, Data中的数据具体为: 终端交易序号、 交易日期、 交易时间 和第三鉴别码 MAC3; 具体地, 在本实施例中, 接收到的 DEBIT FOR PURCHASE命令具体为: 80 54 01 00 0F 00 00 00 01 7D AO 06 09 OF 27 13 01 OA Dl 0C 08, 其中 80为 CLA, 54为 INS , 01为 PI , 00为 P2, OF为 Lc, 00 00 00 01为 Data中的终 端交易序号, 7D AO 06 09为 Data中的交易日期, OF 27 13为 Data中的交易时 间, 01 OA Dl 0C为 Data中的 MAC3 , 08为 Le。 步骤 535:使用步骤 532中生成的过程密钥来 -险证 DEBIT FOR PURCHASE 命令中包含的 MAC3是否有效, 若无效, 则执行步骤 536, 若有效, 则执行步 骤 537; 在本实施例中, -险证 DEBIT FOR PURCHASE命令中包含的 MAC3是否 有效的方法, 具体为: 将交易金额、 交易类型标识、 终端机编号、 终端的交易日期和终端的交易 时间顺序链接, 用步骤 532中生成的过程密钥对链接得到的数据进行加 密, 再 比较得到的力。密后的数据的前四个字节与 DEBIT FOR PURCHASE命令中包含 的 MAC3是否 目同, 若不 目同, 则 MAC3无效, 若 4目同, 则 MAC3有效。 步骤 536: 返回状态码 0x9302给终端, 终止操作; 步骤 537: 将电子钱包的脱机交易序号加 1 , 并从电子钱包的余额中扣减 步骤 529中得到的新金额; 步骤 538: 更新电子 4 包的交易明细; 在本实施例中, 需要更新的电子钱包的相关交易明细具体为: 交易金额、 交易类型标识、 终端编号、 交易日期和交易时间, 具体地, CPU卡将交易金额、 交易类型标识、 终端编号、 交易日期和交易时间顺序链接组成一个记录以 便更 新。 步骤 539: 生成第四报文鉴别码 MAC4, 然后计算交易验证码 TAC码; 在本实施例中, 生成第四 4艮文鉴别码 MAC4方法具体为: 用步骤 532中生成的过程密钥对交易金额进行加密, 得到的加密后的数据 的前四个字节即为第四 艮文鉴别码 MAC4。 其中, 利用异或运算得到的结果来计算 TAC码的方法具体为: 用 DTK左右 8个字节进行异或运算, 并将交易金额、 交易类型标识、 终 端机编号、 终端交易序号、 终端的交易日期和终端的交易时间顺序链接, 并用 异或运算得到的结果对链接得到的数据进行加 密, 得到的加密后的数据的前四 个字节即为 TAC码。 步骤 540: 返回 DEBIT FOR PURCHASE命令的响应 4艮文给终端, 交易结 束。 其中, DEBIT FOR PURCHASE命令的响应 4艮文由 data + swl + sw2组成, 当命令执行成功时, 则响应 4艮文中的状态码 swl和 sw2为' 9000' , 相应地, 数 据域 data具体为 TAC码和 MAC4, 当命令执行不成功时, 则响应 4艮文中的状 态码 swl和 sw2不为' 9000' , 且不包含数据域; 具体地,本实施例中 DEBIT FOR PURCHASE命令的响应 4艮文为: 01 0D B 1 09 00 02 EA B 1 90 00。 进一步地, 在本实施例中, 当复合应用专用文件为二进制文件时, 因此 CPU 卡接收到的对复合应用专用文件进行更新的命 令就不是更新记录命令 UPDATE RECORD, 而是 UPDATE CAPP DATA CACHE命令, 其中 CPU卡接 收到 UPDATE CAPP DATA CACHE命令之后的具体操作如下: 步骤 509,: 接收终端发送的更新复合应用专用文件的命令 UPDATE CAPP DATA CACHE; 在本实施例中, 更新复合应用专用文件的命令 UPDATE CAPP DATA

CACHE用于更新复合应用专利文件中的数据; 具体地, UPDATE CAPP DATA CACHE命令 4艮文由 CLA + INS + P1 + P2 + Lc + Data组成,本实施例中, UPDATE CAPP DATA CACHE命令具体为: 80 D6 92 B l 04 00 01 20 00, 其中, 80为 CLA, D6为 INS , 92为 P I , B 1为 P2 , 04 为 Ix, 00 01 20 00 ^ Data; 并且 UPDATE CAPP DATA CACHE命令的数据域 Data中的数据为要写入 复合应用专用文件的新数据, 其中, 由于复合应用专用文件的具体应用可以由 发卡方自定义, 因此数据域中的数据也可以是自定义的, 如在本实施例中复合 应用专用文件可以自定义为费率文件, 则相应地, 数据域中的数据具体为费率 值, 在本实施例中具体定义费率值为 120 % ; 具体地, 在本实施例中, 复合应用专用文件具体为二进制文件, 则 FILE TYPE为 00 ,且 FILE SIZE为文件大小,具体为 00 0B ,文件体中的内容为空。 步骤 510,: 判断接收到的 UPDATE CAPP DATA CACHE命令中是否存在 SFI域, 若存在, 则执行步骤 511,, 若不存在, 则执行步骤 512,; 在本实施例中, 判断 UPDATE CAPP DATA CACHE命令中是否存在 SFI i或具体为: 判断 UPDATE CAPP DATA CACHE命令中的 PI的高三位是否为 100, 若是, 则表示命令中存在 SFI域, PI的低 5位即为 SFI域, 否则, 表示 命令中不存在 SFI i或; 具体地, 本实施例中 UPDATE CAPP DATA CACHE命令中的 PI为 92, 表 示 P1的高三位为 100, 存在 SFI i或。 步骤 511,:查找 CPU卡当前应用下是否存在一个文件的 SFI值与 UPDATE CAPP DATA CACHE命令中的 SFI值相同, 若不存在, 则执行步骤 512' , 若存 在, 则执行步 4聚 513,; 步骤 512,: 向终端返回状态码 0x6A82, 同时终止执行此次复合圏存交易; 步骤 513' : 将步骤 51 Γ中查找得到的文件作为复合应用专用文件, 并检查 UPDATE CAPP DATA CACHE命令中的数据域的长度是否大于复合应用 用 文件的长度, 若大于, 则执行步骤 514,, 若不大于, 则执行步骤 515,; 在本实施例中, 由于复合应用专用文件是二进制文件, 所以复合应用专用 文件的长度具体为 FILE SIZE 的值, 具体即为判断 UPDATE CAPP DATA CACHE命令中 Lc的值是否大于复合应用专用文件 FILE SIZE的值, 由于本 实施例中 UPDATE CAPP DATA CACHE命令中 Lc的值为 04, FILE SIZE的 值为 00 OB , 所以命令中的数据域的长度不大于复合应用专 用文件的长度。 步骤 514,: 向终端返回状态码 0x6A84, 同时终止执行此次复合圏存交易; 步骤 515' : 将 UPDATE CAPP DATA CACHE命令中的数据域中的数据写 入复合应用专用文件中, 替换该复合应用专用文件中的原有内容; 在本实施例中, 具体将费率值 120 %写入该复合应用专用文件中, 替换其 原有内容; 由于本实施例中复合应用专用文件中的原有内 容为空, 因此直接将 UPDATE CAPP DATA CACHE命令中的数据 i或中的 00 01 20 00写入复合应用 专用文件中即可。 步骤 516,: 将 UPDATE CAPP DATA CACHE命令的响应 4艮文返回给终端; 其中, UPDATE CAPP DATA CACHE命令的响应 4艮文由 swl + sw2组成, 不存在数据域 data, 当 UPDATE CAPP DATA CACHE命令执行成功时, 则响 应 4艮文为 '9000,, 当 UPDATE CAPP DATA CACHE命令执行不成功时, 则响应 4艮文不为' 9000'。 本实施例提供了一种对 CPU 卡内的电子钱包进行消费的方法, 该方法可 以使整个复合圏存的过程更安全, 防止釆取非法的手段去^ ί'爹改 CPU 卡中特定 的复合应用专用文件, 并且该方法中通过对复合应用专用文件中写入 新的数 据, 简化了分级打折优惠业务的实现,在消费时自 对消费的金额进行处理, 更 方便管理, 从而节省了管理的成本。 以上所述, 仅为本发明的具体实施方式, 但本发明的保护范围并不局限于 此, 任何熟悉本技术领域的技术人员在本发明揭露 的技术范围内, 可轻易想到 变化或替换, 都应涵盖在本发明的保护范围之内。 因此, 本发明的保护范围应 所述以权利要求的保护范围为准。