陆舟 (中国北京市海淀区学清路9号汇智大厦B座17层, 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)
| 权 利 要 求 书 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所述的对电子钱包进行操作的方法, 其特征在于, 所述操 作初始化命令为复合圏存初始化命令时, 所述查找复合应用专用文件, 并查找所述复合应用专用文件中的相应记录的方法为: 判断所述更新记录命令中是否存在短文件标识符; 若不存在, 则向所述终端返回未找到复合应用专用文件的信息, 终 止操作; 若存在, 则检查当前应用下的文件中是否存在一个文件的短文件标 识符的值与所述短文件标识符相同; 若否, 则向终端返回未找到复合应用专用文件的信息, 终止操作; 若是, 则将得到的文件作为复合应用专用文件, 并根据所述更新记 录命令中指定的记录号在所述复合应用专用文件中查找相应的记录; 若没有查找到, 则向终端返回未找到需要更新的记录的信息, 终止 操作; 若查找到, 则将查找得到的记录作为需要更新的记录。 |
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 卡中特定 的复合应用专用文件, 并且该方法中通过对复合应用专用文件中写入 新的数 据, 简化了分级打折优惠业务的实现,在消费时自 对消费的金额进行处理, 更 方便管理, 从而节省了管理的成本。 以上所述, 仅为本发明的具体实施方式, 但本发明的保护范围并不局限于 此, 任何熟悉本技术领域的技术人员在本发明揭露 的技术范围内, 可轻易想到 变化或替换, 都应涵盖在本发明的保护范围之内。 因此, 本发明的保护范围应 所述以权利要求的保护范围为准。
Next Patent: CALL PROCESSING METHOD AND MEDIA GATEWAY
