一种智能卡及其卡内多账户余额共享方法与流程

文档序号:12470171阅读:627来源:国知局
一种智能卡及其卡内多账户余额共享方法与流程

本发明涉及智能卡领域,特别涉及一种智能卡及其卡内多账户余额共享方法。



背景技术:

现有技术中,智能卡种类繁多,存在着加密存储卡(M1卡)、支持电子钱包应用的行业应用卡和支持电子现金应用的金融卡等多种智能卡,其中,加密存储卡内存储着M1账户,行业应用卡内存储着电子钱包账户,金融卡内存储着电子现金账户,并且由于各种智能卡卡内的账户余额各自独立,每种智能卡仅能在支持各自应用的终端上使用,无法兼容其他终端。由此而导致智能卡行业存在着维护成本高,资源浪费严重等问题。因此,亟需一种能够共享多账户余额的智能卡。



技术实现要素:

本发明提供了一种智能卡及其卡内多账户余额共享方法,解决了上述技术问题。

本发明提供了一种智能卡卡内多账户余额共享方法,包括:

步骤s1:智能卡接收指令,当智能卡接收来自金融终端的选择应用指令后,执行步骤s2;当智能卡接收来自金融终端的应用交易指令后,执行步骤s6;

步骤s2:所述智能卡检测自身的M1事务状态标志是否被置位,如果是,则执行步骤s5;否则,执行步骤s3;

步骤s3:所述智能卡判断自身的M1余额、电子钱包余额和电子现金余额的大小关系,若所述M1余额最小,则执行步骤s4;若所述M1余额、所述电子钱包余额和所述电子现金余额三者相等,则执行步骤s5;若所述M1余额大于所述电子钱包余额或所述电子现金余额,则向所述金融终端报错,结束;

步骤s4:所述智能卡将所述电子钱包余额更新为所述M1余额;将所述电子现金余额更新为所述M1余额;

步骤s5:所述智能卡根据所述选择应用指令选择应用,向所述金融终端返回选择应用成功应答,返回步骤s1;

步骤s6:所述智能卡根据所述应用交易指令中的交易金额计算当前账户余额;所述当前账户余额为当前电子钱包余额或当前电子现金余额;

步骤s7:所述智能卡置位所述M1事务状态标志,开启事务;

步骤s8:所述智能卡将所述M1余额、所述电子钱包余额和所述电子现金余额分别更新为所述当前账户余额;

步骤s9:所述智能卡关闭事务;关闭事务后,复位所述M1事务状态标志,向所述金融终端返回交易成功应答,结束。

本发明还提供了一种智能卡,包括:第一接收模块、第二接收模块、第一检测模块、第一判断模块、第一报错模块、第一更新模块、第一应用模块、第一返回模块、第一计算模块、第一事务模块、第一设置模块、第二更新模块、第二返回模块;

所述第一接收模块,用于接收来自金融终端的选择应用指令;

所述第二接收模块,用于接收来自金融终端的应用交易指令;

所述第一检测模块,用于当所述第一接收模块接收到所述选择应用指令后,检测自身的M1事务状态标志是否被置位;

所述第一判断模块,用于当所述第一检测模块检测为否后,判断自身的M1余额、电子钱包余额和电子现金余额的大小关系;

所述第一更新模块,用于当所述第一判断模块判断出所述M1余额最小时,将所述电子钱包余额更新为所述M1余额;将所述电子现金余额更新为所述M1余额;

所述第一应用模块,用于当所述第一判断模块判断出所述M1余额、所述电子钱包余额和所述电子现金余额三者相等时,以及所述第一更新模块更新所述电子钱包余额和所述电子现金余额后,根据所述选择应用指令选择应用;

所述第一报错模块,用于当所述第一判断模块判断出所述M1余额大于所述电子钱包余额或所述电子现金余额时,向所述金融终端报错;

所述第一返回模块,用于当所述第一应用模块根据所述选择应用指令选择应用后,向所述金融终端返回选择应用成功应答;

所述第一计算模块,用于根据所述应用交易指令中的交易金额计算当前账户余额;所述当前账户余额为当前电子钱包余额或当前电子现金余额;

第一设置模块,用于当所述第一计算模块计算当前账户余额后,置位所述M1事务状态标志;当所述第一事务模块关闭事务后,复位所述M1事务状态标志;

所述第一事务模块,用于当所述第一计算模块计算当前账户余额后,开启事务;当所述第二更新模块将所述M1余额、所述电子钱包余额和所述电子现金余额分别更新为所述当前账户余额后,关闭事务;

所述第二更新模块,用于当所述第一事务模块开启事务后,将所述M1余额、所述电子钱包余额和所述电子现金余额分别更新为所述当前账户余额;

所述第二返回模块,用于当所述第二更新模块将所述M1余额、所述电子钱包余额和所述电子现金余额分别更新为所述当前账户余额后,向所述金融终端返回交易成功应答。

本发明的有益效果:本发明提供了一种智能卡及其卡内多账户余额共享方法,所述智能卡卡内的M1余额、电子钱包余额和电子现金余额共享,使智能卡能够在支持电子现金应用的终端上、支持加密存储卡的终端和支持电子钱包应用的终端上使用。

附图说明

图1为本发明实施例1提供的一种智能卡卡内多账户余额共享方法的流程图;

图2为本发明实施例2提供的一种智能卡卡内多账户余额共享方法的流程图;

图3-图5为本发明实施例3提供的一种智能卡卡内多账户余额共享方法的流程图;

图6为本发明实施例4提供的一种智能卡的结构框图。

具体实施方法

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

本实施例提供了一种智能卡卡内多账户余额共享方法,如图1所示,包括:

步骤s1:智能卡接收指令,当智能卡接收来自金融终端的选择应用指令后,执行步骤s2;当智能卡接收来自金融终端的应用交易指令后,执行步骤s6;

本实施例中,步骤s1中还可以包括:当接收到来自M1终端的M1消费指令后,执行步骤r1;

步骤r1:智能卡检测自身的M1事务状态标志是否被置位,如果是,则向M1终端报错;否则,执行步骤r2;

步骤r2:智能卡计算当前M1余额,将M1余额更新为当前M1余额,向M1终端返回消费成功信息。

其中,计算当前M1余额,将M1余额更新为当前M1余额,具体为:智能卡从M1存储区中获取M1余额,从M1消费指令中获取M1交易金额,计算M1余额与M1交易金额的差值,将M1余额与M1交易金额的差值作为当前M1余额,将当前M1余额作为M1余额写入到M1存储区中。

步骤s2:智能卡检测自身的M1事务状态标志是否被置位,如果是,则执行步骤s5;否则,执行步骤s3;

步骤s3:智能卡判断自身的M1余额、电子钱包余额和电子现金余额的大小关系,若M1余额最小,则执行步骤s4;若M1余额、电子钱包余额和电子现金余额三者相等,则执行步骤s5;若M1余额大于电子钱包余额或电子现金余额,则向金融终端报错,结束;

具体地,智能卡从M1存储区中获取M1余额;从第一非易失性存储区中获取电子钱包余额;从第二非易失性存储区中获取电子现金余额;判断M1余额是否大于电子钱包余额或电子现金余额,如果是,则向金融终端报错,结束;否则:若M1余额小于电子钱包余额且M1余额小于电子现金余额,则执行步骤s4;若M1余额等于电子钱包余额且M1余额等于电子现金余额,则执行步骤s5。

其中,从M1存储区中获取M1余额,具体包括:

步骤s31:智能卡获取M1存储区中的M1钱包副本地址,根据M1钱包副本地址获取M1钱包副本;

步骤s32:智能卡判断M1钱包副本是否合法,如果是,则执行步骤s33;否则,执行步骤t31;

步骤s33:智能卡从M1钱包副本中获取M1余额;

步骤t31:智能卡获取M1存储区中的M1钱包正本地址;根据M1钱包正本地址获取M1钱包正本;

步骤t32:智能卡判断M1钱包正本是否合法,如果是,则执行步骤t33;否则,执行步骤s5;

步骤t33:智能卡从M1钱包正本中获取M1余额。

其中,当步骤t32中判断出M1钱包正本合法后,判断自身的M1余额、电子钱包余额和电子现金余额的大小关系前,还可以包括:智能卡将M1钱包正本作为M1钱包副本写入到M1钱包副本地址。

步骤s4:智能卡将电子钱包余额更新为M1余额;将电子现金余额更新为M1余额;

具体地,智能卡将M1余额作为电子钱包余额,写入到第一非易失性存储区中;将M1余额作为电子现金余额写入到第二非易失性存储区中。

步骤s5:智能卡根据选择应用指令选择应用,向金融终端返回选择应用成功应答,返回步骤s1;

步骤s6:智能卡根据应用交易指令中的交易金额计算当前账户余额;当前账户余额为当前电子钱包余额或当前电子现金余额;

步骤s7:智能卡置位M1事务状态标志,开启事务;

步骤s8:将M1余额、电子钱包余额和电子现金余额分别更新为当前账户余额;

具体地,当当前账户余额为当前电子钱包余额时,智能卡将当前电子钱包余额作为M1余额写入到M1存储区中;将当前电子钱包余额作为电子钱包余额,写入到第一非易失性存储区中;将当前电子钱包余额作为电子现金余额写入到第二非易失性存储区中;

当当前账户余额为当前电子现金余额时,智能卡将当前电子现金余额作为M1余额写入到M1存储区中;将当前电子现金余额作为电子钱包余额,写入到第一非易失性存储区中;将当前电子现金余额作为电子现金余额写入到第二非易失性存储区中。

优选地,第一非易失性存储区为电子钱包应用的Flash存储区;第二非易失性存储区为电子现金应用的Flash存储区。

步骤s9:智能卡关闭事务;关闭事务后,复位M1事务状态标志,向金融终端返回交易成功应答,结束。

本实施例中,步骤s6之前,还可以包括:判断应用交易指令中的交易金额是否合法,如果是,则执行步骤s6;否则,向金融终端报错,结束。

进一步地,应用交易指令包括:电子钱包消费指令或电子钱包圈存指令或电子现金消费指令或电子现金圈存指令;若智能卡支持透支功能,则:

当应用交易指令为电子钱包消费指令时,判断应用交易指令中的交易金额是否合法具体为:智能卡判断交易金额是否不大于电子钱包余额加上透支限额再减去已透支金额的结果,如果是,则判断交易金额合法;否则,判断交易金额不合法;

当应用交易指令为电子钱包圈存指令时,判断应用交易指令中的交易金额是否合法具体为:智能卡判断交易金额是否不大于余额上限减去电子钱包余额加上已透支金额减去脱机预授权总金额的结果,如果是,则判断交易金额合法;否则,判断交易金额不合法;

当应用交易指令为电子现金消费指令时,判断应用交易指令中的交易金额是否合法具体为:智能卡判断交易金额是否不大于电子现金余额加上透支限额再减去已透支金额的结果,如果是,则判断交易金额合法;否则,判断交易金额不合法;

当应用交易指令为电子现金圈存指令时,判断应用交易指令中的交易金额是否合法具体为:智能卡判断交易金额是否不大于余额上限加上已透支金额减去脱机预授权总金额的结果,如果是,则判断交易金额合法;否则,判断交易金额不合法。

进一步地,应用交易指令包括:电子钱包消费指令或电子钱包圈存指令或电子现金消费指令或电子现金圈存指令;若卡不支持透支功能,则:

当应用交易指令为电子钱包消费指令时,判断应用交易指令中的交易金额是否合法具体为:智能卡判断交易金额是否不大于电子钱包余额,如果是,则判断交易金额合法;否则,判断交易金额不合法;

当应用交易指令为电子钱包圈存指令时,判断应用交易指令中的交易金额是否合法具体为:智能卡判断交易金额是否不大于余额上限减去电子钱包余额再减去脱机预授权总金额的结果,如果是,则判断交易金额合法;否则,判断交易金额不合法;

当应用交易指令为电子现金消费指令时,判断应用交易指令中的交易金额是否合法具体为:智能卡判断交易金额是否不大于电子现金余额,如果是,则判断交易金额合法;否则,判断交易金额不合法;

当应用交易指令为电子现金圈存指令时,判断应用交易指令中的交易金额是否合法具体为:智能卡判断交易金额是否不大于余额上限减去脱机预授权总金额的结果,如果是,则判断交易金额合法;否则,判断交易金额不合法。

本实施例中,应用交易指令可以具体包括:电子钱包消费指令或电子钱包圈存指令;

当应用交易指令为电子钱包消费指令时,根据应用交易指令中的交易金额计算当前账户余额,具体为:计算电子钱包余额和交易金额的差值,并将其作为当前电子钱包余额;

当应用交易指令具体为电子钱包圈存指令时,根据应用交易指令中的交易金额计算当前账户余额,具体为:计算电子钱包余额和交易金额的和,并将其作为当前电子钱包余额。

进一步地,电子钱包消费指令包括:消费初始化指令和消费指令;或者具体包括复合消费初始化指令、更新复合应用数据缓存指令和复合应用消费指令;电子钱包圈存指令具体包括:圈存初始化指令和第一圈存指令;

相应地:

步骤s1具体包括:智能卡等待接收指令,当智能卡接收来自金融终端的选择应用指令后,执行步骤s2;当智能卡接收到消费初始化指令时,智能卡从消费初始化指令中获取交易金额,判断交易金额是否合法,如果是,则向金融终端返回初始化成功应答,返回步骤s1;否则,向金融终端报错,返回步骤s1;当智能卡接收到消费指令时,执行步骤s6;当智能卡接收到复合消费初始化指令时,智能卡从复合消费初始化指令中获取交易金额,判断交易金额是否合法,如果是,则向金融终端返回初始化成功应答,返回步骤s1;否则,向金融终端报错,返回步骤s1;当智能卡接收到复合应用消费指令时,执行步骤s6;当智能卡接收到圈存初始化指令时,智能卡从圈存初始化指令中获取交易金额,判断交易金额是否合法,如果是,则向金融终端返回初始化成功应答,返回步骤s1;否则,向金融终端报错,返回步骤s1;当智能卡接收到第一圈存指令时,执行步骤s6;

步骤s6具体为:当智能卡接收到消费指令或复合应用消费指令时,智能卡计算电子钱包余额和交易金额的差值,并将其作为当前电子钱包余额,执行步骤s7;当智能卡接收到第一圈存指令时,智能卡计算电子钱包余额和交易金额的和,并将其作为当前电子钱包余额,执行步骤s7;

步骤s1中还包括:当智能卡接收到更新复合应用数据缓存指令时,智能卡更新复合消费记录,向金融终端返回更新成功应答,返回步骤s1。

本实施例中,应用交易指令还可以具体包括:电子现金消费指令或电子现金圈存指令;

当应用交易指令具体为电子现金消费指令时,步骤s6具体为:智能卡计算电子现金余额和交易金额的差值,并将其作为当前电子现金余额;

当应用交易指令具体为电子现金圈存指令时,步骤s6具体为:智能卡将交易金额作为当前电子现金余额。

进一步地,电子现金消费指令具体包括:获取处理选项指令和读记录指令;或者具体包括:读扩展应用记录指令、获取处理选项指令、更新扩展应用记录指令、读记录指令;电子现金圈存指令具体包括:获取处理选项指令、读记录指令、第一生成应用密文指令、第二生成应用密文指令和第二圈存指令;

相应地:

步骤s1具体包括:智能卡等待接收指令,当智能卡接收来自金融终端的选择应用指令后,执行步骤s2;当智能卡接收到获取处理选项指令时,根据获取处理选项指令判断交易类型,当交易类型为qPBOC交易时,将交易类型标识置为第一类型标识,智能卡从获取处理选项指令中获取交易金额,判断交易金额是否合法,如果是,则执行步骤s6;否则,向金融终端报错,返回步骤s1;当交易类型为qPBOC扩展交易时,将交易类型标识置为第二类型标识,智能卡从获取处理选项指令中获取交易金额,判断交易金额是否合法,如果是,则执行步骤s6;否则,向金融终端报错,返回步骤s1;当交易类型为借贷记交易时,将交易类型标识置为第三类型标识,向金融终端返回应用初始化应答,返回步骤s1;当智能卡接收到第二圈存指令时,智能卡从第二圈存指令中获取交易金额,判断交易金额是否合法,如果是,则执行步骤s6;否则,向金融终端报错,返回步骤s1;当智能卡接收到读记录指令时,检测交易类型标识,当交易类型标识为第一类型标识或第二类型标识,执行步骤s7;当交易类型标识为第三类型标识时,向金融终端返回读记录应答,返回步骤s1;

步骤s6具体为:若交易类型为qPBOC交易时或qPBOC扩展交易时,当智能卡判断出交易金额合法后,智能卡计算电子现金余额和交易金额的差值,并将其作为当前电子现金余额,向金融终端返回应用初始化应答,返回步骤s1;若交易类型为借贷记交易时,当智能卡判断出交易金额合法后,智能卡将交易金额作为当前电子现金余额,执行步骤s7;

步骤s1还包括:当智能卡接收到来自金融终端的读扩展应用记录指令时,则向金融终端返回读扩展应用记录应答,返回步骤s1;当智能卡接收更新扩展应用记录指令时,更新扩展应用记录,向金融终端返回更新扩展应用记录应答,返回步骤s1;当智能卡接收到第一生成应用密文指令后,向金融终端返回第一生成应用密文应答,返回步骤s1;当智能卡接收到第二生成应用密文指令后,向金融终端返回第二生成应用密文应答,返回步骤s1。

本实施例提供了一种智能卡卡内多账户余额共享方法,智能卡卡内的M1余额、电子钱包余额和电子现金余额共享,使智能卡能够在支持电子现金应用的终端上、支持加密存储卡的终端和支持电子钱包应用的终端上使用。

实施例2

本实施例提供了一种智能卡卡内多账户余额共享方法,如图2所示,包括:

步骤101:智能卡等待接收来自终端的指令;当接收到来自M1终端的M1消费指令后,执行步骤102;当接收到来自金融终端的选择应用指令后,执行步骤104;当接收到来自金融终端的电子钱包交易指令后,执行步骤108;当接收到来自金融终端的电子现金交易指令后,执行步骤115;

具体地,智能卡等待接收来自终端的指令;当通过第一通讯通道接收到来自M1终端的M1消费指令后,执行步骤102;当通过第二通讯通道接收到来自金融终端的选择应用指令后,执行步骤104;当通过第二通讯通道接收到来自金融终端的电子钱包交易指令后,执行步骤108;当通过第二通讯通道接收到来自金融终端的电子现金交易指令后,执行步骤115;

本实施例中,电子钱包交易指令包括:电子钱包消费指令或电子钱包圈存指令;其中,电子钱包消费指令具体包括:消费初始化指令和消费指令;或者具体包括复合消费初始化指令、更新复合应用数据缓存指令和复合应用消费指令;电子钱包圈存指令具体包括:圈存初始化指令和第一圈存指令。

电子现金交易指令包括:电子现金消费指令或电子现金圈存指令;其中,电子现金消费指令具体包括:获取处理选项指令和读记录指令;或者具体包括:获取处理选项指令、更新扩展应用记录指令、读记录指令;电子现金圈存指令具体包括:获取处理选项指令、读记录指令、第一生成应用密文指令、第二生成应用密文指令和第二圈存指令。

步骤102:智能卡检测M1事务状态标志是否被置位,如果是,则向M1终端报错,返回步骤101;否则,执行步骤103;

步骤103:智能卡计算当前M1余额,将M1余额更新为当前M1余额;向M1终端返回消费成功信息,返回步骤101;

具体地,智能卡从M1存储区中获取M1余额,从M1消费指令中获取M1交易金额,计算M1余额与M1交易金额的差值,并将M1余额与M1交易金额的差值作为当前M1余额,将当前M1余额作为M1余额写入到M1存储区中。

更加具体地,智能卡从M1存储区中的M1钱包正本地址中获取M1钱包正本,从M1钱包正本中获取M1余额,从M1消费指令中获取M1交易金额,计算M1余额与M1交易金额的差值,将并将M1余额与M1交易金额的差值作为当前M1余额,将当前M1余额作为M1余额,根据更新后的M1余额更新M1钱包正本,将更新后的M1钱包正本写入到M1钱包正本地址;智能卡从M1存储区中的M1钱包副本地址中获取M1钱包副本,从M1钱包副本中获取M1余额,从M1消费指令中获取M1交易金额,计算M1余额与M1交易金额的差值,并将M1余额与M1交易金额的差值作为当前M1余额,将当前M1余额作为M1余额,根据更新后的M1余额更新M1钱包副本,将更新后的M1钱包副本写入到M1钱包副本地址。

步骤104:智能卡检测M1事务状态标志是否被置位,如果是,则执行步骤107;否则,执行步骤105;

步骤105:智能卡判断M1余额是否大于电子钱包余额或电子现金余额,如果是,则向金融终端报错,返回步骤101;否则,执行步骤106;

具体地,智能卡从M1存储区中获取M1余额;从第一非易失性存储区中获取电子钱包余额;从第二非易失性存储区中获取电子现金余额;判断M1余额是否大于电子钱包余额或电子现金余额,如果是,则向金融终端报错,返回步骤101;否则,执行步骤106;

步骤106:智能卡将电子钱包余额更新为M1余额;将电子现金余额更新为M1余额;

具体地,智能卡将M1余额作为电子钱包余额,写入到第一非易失性存储区中;将M1余额作为电子现金余额写入到第二非易失性存储区中。

优选地,第一非易失性存储区为电子钱包应用的Flash存储区;第二非易失性存储区为电子现金应用的Flash存储区。

步骤107:智能卡根据选择应用指令选择应用;当选择电子钱包应用后,向金融终端返回选择应用成功应答,返回步骤101;当选择电子现金应用后,向金融终端返回选择应用成功应答,返回步骤101;

具体地,智能卡获取应用指令中的第五个字节上的数据,将其作为应用类型标识的数据长度,从选择应用指令的第六个字节开始,获取数据长度为应用类型标识的数据长度的数据,将获取到的数据其作为应用类型标识,当应用类型标识为第一预设标识时,判定选择应用指令类型为电子钱包应用,选择电子钱包应用,向终端返回选择应用成功应答,返回步骤101;当应用类型标识为第二预设标识时,判定选择应用指令类型为电子现金应用,选择电子现金应用,向终端返回选择应用成功应答,返回步骤101;

本实施例中,第一预设标识为“0x A000000632010105”;第二预设标识为“0x A000000632010106”。

例如,智能卡获取应用指令中的第五个字节上的数据“08”,将其作为应用类型标识的数据长度,从选择应用指令“0x 00A4040008A000000632010105”的第六个字节开始,获取数据长度为8个字节长度的数据“A000000632010105”,并将其作为应用类型标识,应用类型标识为第一预设标识,判定选择应用指令类型为电子钱包应用,选择电子钱包应用,向终端返回选择应用成功应答,返回步骤101。

步骤108:智能卡计算当前电子钱包余额;

当电子钱包交易指令具体为电子钱包消费指令时,智能卡计算当前电子钱包余额具体为:智能卡从第一非易失性存储区中获取电子钱包余额,根据电子钱包交易指令获取交易金额,计算电子钱包余额和交易金额的差值,并将其作为当前电子钱包余额。

当电子钱包交易指令具体为电子钱包圈存指令时,智能卡计算当前电子钱包余额具体为:智能卡从第一非易失性存储区中获取电子钱包余额,根据电子钱包交易指令获取交易金额,计算电子钱包余额和交易金额的和,并将其作为当前电子钱包余额。

其中,计算电子钱包余额和交易金额的差值,将其作为当前电子钱包余额之前,还包括:判断交易金额是否合法,如果是,则计算电子钱包余额和交易金额的差值,将其作为当前电子钱包余额;否则,向金融终端报错;

当电子钱包交易指令具体为电子钱包消费指令时,判断交易金额是否合法,具体包括:当智能卡支持透支功能时,智能卡获取已透支金额,判断交易金额是否不大于电子钱包余额加上预设的透支限额再减去已透支金额的结果,如果是,则判断所述交易金额合法;否则,判断所述交易金额不合法;当智能卡不支持透支功能时,智能卡判断交易金额是否不大于电子钱包余额,如果是,则判断交易金额合法;否则,判断交易金额不合法。

计算电子钱包余额和交易金额的和之前,还包括:判断交易金额是否合法,如果是,则计算电子钱包余额和交易金额的和,将其作为当前电子钱包余额;否则,向金融终端报错;

当电子钱包交易指令具体为电子钱包圈存指令时,判断交易金额是否合法,具体包括:当智能卡支持透支功能时,智能卡获取已透支金额,所述智能卡判断交易金额是否不大于预设的余额上限减去所述电子钱包余额加上已透支金额减去脱机预授权总金额的结果,如果是,则判断所述交易金额合法;否则,判断交易金额不合法;当智能卡不支持透支功能时,判断交易金额是否不大于预设的余额上限减去电子钱包余额再减去脱机预授权总金额的结果,如果是,则判断所述交易金额合法;否则,判断交易金额不合法。

步骤109:智能卡置位M1事务状态标志;

步骤110:智能卡开启事务;

步骤111:智能卡将M1余额更新为当前电子钱包余额;将电子现金余额更新为当前电子钱包余额;将电子钱包余额更新为当前电子钱包余额;

具体地,智能卡将当前电子钱包余额作为M1余额写入到M1存储区中;将当前电子钱包余额作为电子钱包余额,写入到第一非易失性存储区中;将当前电子钱包余额作为电子现金余额写入到第二非易失性存储区中。

步骤112:智能卡关闭事务;

需说明的是,开启事务之后,若智能卡在执行步骤111的过程中出现掉电故障,事务可以将电子钱包余额和电子现金余额回滚到事务开启之前的状态。

步骤113:智能卡复位M1事务状态标志;

步骤114:智能卡向金融终端返回电子钱包交易成功应答,返回步骤101;

步骤115:智能卡计算当前电子现金余额;

当电子现金交易指令具体为电子现金消费指令时,智能卡计算当前电子现金余额具体为:智能卡从第二非易失性存储区中获取电子现金余额,根据电子现金交易指令获取交易金额,计算电子现金余额和交易金额的差值,并将其作为当前电子现金余额。

当电子现金交易指令具体为电子现金圈存指令时,智能卡计算当前电子现金余额具体为:智能卡根据电子现金交易指令获取交易金额,并将交易金额作为当前电子现金余额。

其中,计算电子现金余额和交易金额的差值,将其作为当前电子现金余额之前,还包括:判断交易金额是否合法,如果是,则计算电子现金余额和交易金额的差值,将其作为当前电子现金余额;否则,向金融终端报错。相应地,当电子现金交易指令具体为电子现金消费指令时,判断交易金额是否合法,具体包括:当智能卡支持透支功能时,智能卡获取已透支金额,判断交易金额是否不大于电子现金余额加上预设的透支限额再减去已透支金额的结果,如果是,则判断交易金额合法;否则,判断交易金额不合法;当智能卡不支持透支功能时,智能卡判断交易金额是否不大于电子现金余额,如果是,则判断交易金额合法;否则,判断交易金额不合法。

智能卡将交易金额作为当前电子现金余额之前,还包括:判断交易金额是否合法,如果是,则将交易金额作为当前电子现金余额;否则,向金融终端报错。相应地,当电子现金交易指令具体为电子现金圈存指令时,判断交易金额是否合法,具体包括:当智能卡支持透支功能时,智能卡获取已透支金额,智能卡判断交易金额是否不大于预设的余额上限加上已透支金额减去脱机预授权总金额的结果,如果是,则判断所述交易金额合法;否则,判断交易金额不合法;当智能卡不支持透支功能时,判断交易金额是否不大于预设的余额上限减去脱机预授权总金额的结果,如果是,则判断所述交易金额合法;否则,判断交易金额不合法。

步骤116:智能卡置位M1事务状态标志;

步骤117:智能卡开启事务;

步骤118:智能卡将M1余额更新为当前电子现金余额;将电子现金余额更新为当前电子现金余额;将电子钱包余额更新为当前电子现金余额;

具体地,智能卡将当前电子现金余额作为M1余额写入到M1存储区中;将当前电子现金余额作为电子钱包余额,写入到第一非易失性存储区中;将当前电子现金余额作为电子现金余额写入到第二非易失性存储区中。

步骤119:智能卡关闭事务;

需说明的是,开启事务之后,若智能卡在执行步骤118的过程中出现掉电故障,事务可以将电子钱包余额和电子现金余额回滚到事务开启之前的状态。

步骤120:智能卡复位M1事务状态标志;

步骤121:智能卡向金融终端返回电子现金交易成功应答,返回步骤101。

本实施例中,电子钱包消费指令包括:消费初始化指令和消费指令;或者具体包括复合消费初始化指令、更新复合应用数据缓存指令和复合应用消费指令;电子钱包圈存指令具体包括:圈存初始化指令和第一圈存指令;

相应地:

步骤101具体包括:智能卡等待接收指令,当智能卡接收来自金融终端的选择应用指令后,执行步骤104;当智能卡接收到消费初始化指令时,智能卡从消费初始化指令中获取交易金额,判断交易金额是否合法,如果是,则向金融终端返回初始化成功应答,返回步骤101;否则,向金融终端报错,返回步骤101;当智能卡接收到消费指令时,执行步骤108;当智能卡接收到复合消费初始化指令时,智能卡从复合消费初始化指令中获取交易金额,判断交易金额是否合法,如果是,则向金融终端返回初始化成功应答,返回步骤101;否则,向金融终端报错,返回步骤101;当智能卡接收到复合应用消费指令时,执行步骤108;当智能卡接收到圈存初始化指令时,智能卡从圈存初始化指令中获取交易金额,判断交易金额是否合法,如果是,则向金融终端返回初始化成功应答,返回步骤101;否则,向金融终端报错,返回步骤101;当智能卡接收到第一圈存指令时,执行步骤108;

步骤108具体为:当智能卡接收到消费指令或复合应用消费指令时,智能卡计算电子钱包余额和交易金额的差值,并将其作为当前电子钱包余额,执行步骤109;当智能卡接收到第一圈存指令时,智能卡计算电子钱包余额和交易金额的和,并将其作为当前电子钱包余额,执行步骤109;

步骤101中还包括:当智能卡接收到更新复合应用数据缓存指令时,智能卡更新复合消费记录,向金融终端返回更新成功应答,返回步骤101。

本实施例中,电子现金消费指令具体包括:获取处理选项指令和读记录指令;或者具体包括:读扩展应用记录指令、获取处理选项指令、更新扩展应用记录指令、读记录指令;电子现金圈存指令具体包括:获取处理选项指令、读记录指令、第一生成应用密文指令、第二生成应用密文指令和第二圈存指令;

相应地:

步骤101具体包括:智能卡等待指令,当智能卡接收来自金融终端的选择应用指令后,执行步骤104;当智能卡接收到获取处理选项指令时,根据获取处理选项指令判断交易类型,当交易类型为qPBOC交易时,将交易类型标识置为第一类型标识,智能卡从获取处理选项指令中获取交易金额,判断交易金额是否合法,如果是,则执行步骤115;否则,向金融终端报错,返回步骤101;当交易类型为qPBOC扩展交易时,将交易类型标识置为第二类型标识,智能卡从获取处理选项指令中获取交易金额,判断交易金额是否合法,如果是,则执行步骤115;否则,向金融终端报错,返回步骤101;当交易类型为借贷记交易时,将交易类型标识置为第三类型标识,向金融终端返回应用初始化应答,返回步骤101;当智能卡接收到第二圈存指令时,智能卡从圈存指令中获取交易金额,判断交易金额是否合法,如果是,则执行步骤115;否则,向金融终端报错,返回步骤101;当智能卡接收到读记录指令时,检测交易类型标识,当交易类型标识为第一类型标识或第二类型标识时,执行步骤116;当交易类型标识为第三类型标识时,向金融终端返回读记录应答,返回步骤101;

步骤115具体为:若交易类型为qPBOC交易时或qPBOC扩展交易时,当智能卡判断出交易金额合法后,智能卡计算电子现金余额和交易金额的差值,并将其作为当前电子现金余额,向金融终端应用初始化应答,返回步骤101;若当交易类型为借贷记交易时,当智能卡判断出交易金额合法后,智能卡将交易金额作为当前电子现金余额,执行步骤116;

步骤101还包括:当智能卡接收到来自金融终端的读扩展应用记录指令时,则向金融终端返回读扩展应用记录应答,返回步骤101;当智能卡接收更新扩展应用记录指令时,更新扩展应用记录,向金融终端返回更新扩展应用记录应答,返回步骤101;当智能卡接收到第一生成应用密文指令后,向金融终端返回第一生成应用密文应答,返回步骤101;当智能卡接收到第二生成应用密文指令后,向金融终端返回第二生成应用密文应答,返回步骤101。

实施例3

本实施例提供了一种智能卡卡内多账户余额共享方法,如图3-图5所示,包括:

步骤201:智能卡等待接收来自终端的指令,当接收到来自终端的选择应用指令后,执行步骤202;当接收到来自终端的交易初始化指令后,执行步骤301;当接收到来自终端的获取处理选项指令后,执行步骤401;

本实施例提供的一种智能卡卡内多账户余额共享方法中,终端具体为金融终端。

步骤202:智能卡检测M1事务状态标志是否被置位,如果是,则执行步骤216;否则,执行步骤203;

步骤203:智能卡从虚拟机的第二存储区中获取M1存储区中的M1钱包副本地址,根据M1钱包副本地址获取M1钱包副本;

例如:智能卡从虚拟机的第二存储区中获取M1存储区中的M1钱包副本地址,根据M1钱包副本地址获取M1钱包副本为:0xEC2C000013D3FFFFEC2C000000FF00FF。

步骤204:智能卡判断M1钱包副本是否合法,如果是,则执行步骤205;否则,执行步骤206;

具体地,智能卡获取电子钱包副本的最后四个字节上的数据,判断获取到的数据是否和第一预设值相匹配,如果是,则判定电子钱包副本合法,则执行步骤205;否则,判定电子钱包副本不合法,执行步骤206。

本实施例中,优选地,第一预设值为“00FF00FF”。

例如,智能卡获取电子钱包副本0x EC2C000013D3FFFFEC2C000000FF00FF的最后四个字节上的数据“0x 00FF00FF”,判断获取到的数据和第一预设值“0x00FF00FF”相匹配,则判定电子钱包副本合法,则执行步骤205。

步骤205:智能卡从M1钱包副本中获取M1余额;从虚拟机的第一存储区中获取M1原额,执行步骤209;

具体地,智能卡获取M1钱包副本的第九到第十二字节上的数据,将获取到的数据进行逆序处理,将处理后的数据作为M1余额;从虚拟机的第一存储区中获取M1原额,执行步骤209。

例如:智能卡获取M1钱包副本0x EC2C000013D3FFFFEC2C000000FF00FF的第九到第十二字节上的数据0x EC2C0000,将获取到的数据“0x EC2C0000”进行逆序处理,得到处理后的数据为“0x 00002CEC”,将“0x 00002CEC”作为M1余额;从虚拟机的第一存储区中获取M1原额0x 00002CEC,执行步骤209。

步骤206:智能卡从虚拟机的第二存储区中获取M1存储区中的M1钱包正本地址;根据M1钱包正本地址获取M1钱包正本;

例如:智能卡从虚拟机的第二存储区中获取M1存储区中的M1钱包正本地址,根据M1钱包正本地址获取M1钱包正本为:0x EC2C000013D3FFFFEC2C000000FF00FF。

步骤207:智能卡判断M1钱包正本是否合法,如果是,则执行步骤208;否则,执行步骤216;

具体地,智能卡获取电子钱包正本的最后四个字节上的数据,判断获取到的数据是否和第一预设值相匹配,如果是,则判定电子钱包正本合法,则执行步骤208;否则,判定电子钱包正本不合法,执行步骤216。

本实施例中,优选地,第一预设值为“00FF00FF”。

例如,智能卡获取电子钱包正本0x EC2C000013D3FFFFEC2C000000FF00FF的最后四个字节上的数据“0x 00FF00FF”,判断获取到的数据和第一预设值“0x00FF00FF”相匹配,则判定电子钱包正本合法,则执行步骤208。

步骤208:智能卡从M1钱包正本中获取M1余额;从虚拟机的第一存储区中获取M1原额,执行步骤209;

具体地,智能卡获取M1钱包正本的第九到第十二字节上的数据,将获取到的数据进行逆序处理,将处理后的数据作为M1余额;从虚拟机的第一存储区中获取M1原额,执行步骤209。

例如:智能卡获取M1钱包正本0x EC2C000013D3FFFFEC2C000000FF00FF的第九到第十二字节上的数据0x EC2C0000,将获取到的数据“0x EC2C0000”进行逆序处理,得到处理后的数据为“0x 00002CEC”,将“0x 00002CEC”作为M1余额;从虚拟机的第一存储区中获取M1原额0x 00002CEC,执行步骤209。

步骤209:智能卡判断M1余额是否大于等于M1原额,如果是,则执行步骤214;否则,执行步骤210;

步骤210:智能卡将M1原额更新为M1余额;将更新后的M1原额写入到虚拟机的第一存储区中;

步骤211:智能卡判断M1钱包正本和M1钱包副本是否匹配,如果是,则执行步骤213;否则,执行步骤212;

具体地,智能卡判断电子钱包正本和电子钱包副本是否相一致,如果是,则执行步骤213;否则,执行步骤212。

步骤212:智能卡将M1钱包正本复制到与M1钱包副本地址对应的M1存储区中;

步骤213:智能卡从电子钱包应用的Flash存储区中获取电子钱包余额;从电子现金应用的Flash存储区中获取电子现金余额;

例如:智能卡从电子钱包应用的Flash存储区中获取电子钱包余额为“0x0002EE0”;从电子现金应用的Flash存储区中获取电子现金余额为“000000012000”。

步骤214:智能卡判断M1余额是否大于电子钱包余额或电子现金余额;如果是,则向终端报错,结束;否则,执行步骤215;

例如:智能卡判断M1余额0x00002CEC不大于电子钱包余额0x 0002EE0或电子现金余额000000012000,执行步骤215。

步骤215:智能卡将电子钱包余额更新为M1余额;将电子现金余额更新为M1余额;将当前电子钱包余额写入到电子钱包应用的Flash存储区中;将当前电子现金余额写入到电子现金应用的Flash存储区中;

步骤216:智能卡从选择应用指令中获取选择应用指令类型,当选择应用指令类型为电子钱包应用时,选择电子钱包应用,向终端返回选择应用成功应答,返回步骤201;当选择应用指令类型为电子现金应用时,选择电子现金应用,向终端返回选择应用成功应答,返回步骤201;

具体地,智能卡获取选择应用指令中的第六到第十三字节上的数据,并将其作为应用类型标识,当应用类型标识为第一预设标识时,判定选择应用指令类型为电子钱包应用,选择电子钱包应用,向终端返回选择应用成功应答,返回步骤201;当应用类型标识为第二预设标识时,判定选择应用指令类型为电子现金应用,选择电子现金应用,向终端返回选择应用成功应答,返回步骤201;

本实施例中,第一预设标识为“0x A000000632010105”;第二预设标识为“0x A000000632010106”;

例如:智能卡获取选择应用指令“0x 00A4040008A000000632010105”中的第六到第十三字节上的数据“0x A000000632010105”,并将其作为应用类型标识,应用类型标识为第一预设标识,判定选择应用指令类型为电子钱包应用,选择电子钱包应用,向终端返回选择应用成功应答,返回步骤201。

步骤301:智能卡判断交易初始化指令的类型,当交易初始化指令为消费初始化指令时,执行步骤302;当交易初始化指令为复合消费初始化指令时,执行步骤315;当交易初始化指令为圈存初始化指令时,执行步骤329;

具体地,智能卡接收来自终端的交易初始化指令,获取交易初始化指令中的第三字节和第四字节上的数据,当第三字节和第四字节上的数据为第一消费标识时,判定交易初始化指令的类型为应用消费初始化指令,执行步骤302;当第三字节和第四字节上的数据为第二消费标识时,判定交易初始化指令的类型为复合消费初始化指令,执行步骤315;当第三字节和第四字节上的数据为圈存标识时,判定交易初始化指令的类型为圈存初始化指令,执行步骤329。

本实施例中,第一消费标识为“0x 01 02”;第二消费标识为“0x 03 02”;圈存标识为“0x 00 02”。

例如:智能卡接收来自终端的交易初始化指令0x 805001020b01

0000014f112233445566,获取交易初始化指令中的第三字节和第四字节上的数据01 02,判定第三字节和第四字节上的数据为第一消费标识,判定交易初始化指令的类型为消费初始化指令,执行步骤302。

步骤302:智能卡初始化消费;向终端返回初始化成功应答;

步骤303:智能卡接收来自终端的消费指令;

具体地,智能卡等待接收来自终端的指令,当接收到来自终端的消费指令后,执行步骤304。

例如:智能卡等待接收来自终端的指令,当接收到来自终端的消费指令0x805401000F 010203042001112315300369EC33E1后,执行步骤304。

步骤304:智能卡从电子钱包应用的Flash存储区中获取电子钱包余额,从消费初始化指令中获取交易金额,计算电子钱包余额和交易金额的差值,将电子钱包余额和交易金额的差值作为当前电子钱包余额;

本步骤中从消费初始化指令中获取交易金额,具体为:智能卡获取消费初始化指令中第七到第十字节上的数据,并将其作为交易金额。例如,智能卡获取消费初始化指令0x 805401000F01020304 20011123153003 69EC33E1中第七到第十字节上的数据02030420,并将其作为交易金额。

步骤305:智能卡将当前电子钱包余额写入到随机存储区中;

步骤306:智能卡置位M1事务状态标志;

步骤307:智能卡开启事务;

步骤308:智能卡将当前电子钱包余额写入到M1存储区中;

步骤309:智能卡从虚拟机的第一存储区中获取M1原额;将M1原额更新为当前电子钱包余额;将更新后的M1原额写入到虚拟机的第一存储区中;

步骤310:智能卡将当前电子钱包余额写入到电子现金应用中的Flash存储区中;

步骤311:智能卡将当前电子钱包余额写入到电子钱包应用中的Flash存储区中;

步骤312:智能卡关闭事务;

步骤313:智能卡复位M1事务状态标志;

步骤314:智能卡向终端返回消费扣款成功应答,结束。

步骤315:智能卡初始化复合消费;向终端返回初始化成功应答;

步骤316:智能卡接收来自终端的更新复合应用数据缓存指令,更新复合消费记录,向终端返回更新成功应答;

具体地,智能卡等待接收来自终端的指令,当接收到来自终端的更新复合应用数据缓存指令时,更新复合消费记录,向终端返回更新成功应答。

步骤317:智能卡接收来自终端的复合应用消费指令;

具体地,智能卡等待接收来自终端的指令,当接收到来自终端的复合应用消费指令后,执行步骤318。

例如:智能卡等待接收来自终端的指令,当智能卡接收到来自终端的复合应用消费指令0x 805401000F01020304 20011123153003C5A1CEF4后,执行步骤318。

步骤318:智能卡从电子钱包应用的Flash存储区中获取电子钱包余额,从复合消费初始化指令中获取交易金额,计算电子钱包余额和交易金额的差值,将电子钱包余额更新为电子钱包余额和交易金额的差值;

本步骤中从复合消费初始化指令中获取交易金额,具体为:智能卡获取复合消费初始化指令中第七到第十字节上的数据,并将其作为交易金额。

步骤319:智能卡将当前电子钱包余额写入到随机存储器中;

步骤320:智能卡置位M1事务状态标志;

步骤321:智能卡开启事务;

步骤322:智能卡将当前电子钱包余额写入到M1存储区中;

步骤323:智能卡从虚拟机的第一存储区中获取M1原额;将M1原额更新为当前电子钱包余额;将更新后的M1原额写入到虚拟机的第一存储区中;

步骤324:智能卡将电子钱包余额写入到电子现金应用中的Flash存储区中;

步骤325:智能卡将电子钱包余额写入到电子钱包应用中的Flash存储区中;

步骤326:智能卡关闭事务;

步骤327:智能卡复位M1事务状态标志;

步骤328:智能卡向终端返回复合消费扣款成功应答;结束。

步骤329:智能卡初始化圈存;向终端返回初始化成功应答;

步骤330:智能卡接收来自终端的第一圈存指令;从电子钱包应用Flash存储区中获取电子钱包余额,从圈存初始化指令中获取交易金额,计算电子钱包余额和交易金额的和,将电子钱包余额和交易金额的和作为当前电子钱包余额;

具体地,智能卡等待接收来自终端的指令,当接收到来自终端的第一圈存指令后,从电子钱包应用Flash存储区中获取电子钱包余额,从圈存初始化指令中获取交易金额,计算电子钱包余额和交易金额的和,将电子钱包余额和交易金额的和作为当前电子钱包余额。

本步骤中从圈存初始化指令中获取交易金额,具体为:智能卡获取圈存初始化指令中第七到第十字节上的数据,并将其作为交易金额。

步骤331:智能卡将当前电子钱包余额写入到随机存储器中;

步骤332:智能卡置位M1事务状态标志;

步骤333:智能卡开启事务;

步骤334:智能卡将当前电子钱包余额写入到M1存储区中;

步骤335:智能卡从虚拟机的第一存储区中获取M1原额;将M1原额更新为当前电子钱包余额;将更新后的M1原额写入到虚拟机的第一存储区中;

步骤336:智能卡将当前电子钱包余额写入到电子现金应用中的Flash存储区中;

步骤337:智能卡将当前电子钱包余额写入到电子钱包应用中的Flash存储区中;

步骤338:智能卡关闭事务;

步骤339:智能卡复位M1事务状态标志;

步骤340:智能卡向终端返回圈存成功应答,结束。

步骤401:智能卡根据获取处理选项指令判断交易类型,当交易类型为qPBOC交易时,执行步骤402;当交易类型为借贷记交易时,执行步骤416;

具体地,智能卡接收来自终端的获取处理选项指令,获取获取处理选项指令中与第四预设标识对应的处理选项数据对象列表(PDOL)对应的数据域,从处理选项数据对象列表(PDOL)对应的数据域中获取与第五预设标识对应的第一有效数据和与第六预设标识对应的第二有效数据,根据第一有效数据判断交易类型是否为qPBOC扩展交易,如果是,则将交易类型标识置为第二类型标识,执行步骤a1;否则,根据与第六预设标识对应的第二有效数据,判断交易类型是否为qPBOC交易或借贷记交易,当交易类型为qPBOC交易时,将交易类型标识置为第一类型标识,执行步骤402;当交易类型为借贷记交易时,将交易类型标识置为第三类型标识,执行步骤416;

本实施例中,第四预设标识为“0x 9F38”,第五预设标识为“0x DF60”,第六预设标识为“0x 9F66”。

步骤402:智能卡初始化电子现金应用,从电子现金应用的Flash存储区中获取电子现金余额,从获取处理选项指令中获取交易金额,计算电子现金余额和交易金额的差值;将电子现金余额和交易金额的差值作为当前电子现金余额;

步骤403:智能卡将当前电子现金余额写入到随机存储区中;

步骤404:智能卡向终端返回初始化应用应答;

步骤405:智能卡接收来自终端的读记录指令;

具体地,智能卡等待接收来自终端的指令,当接收到来自终端的读记录指令后,检测交易类型标识,当交易类型标识为第一类型标识时,执行步骤406。

步骤406:智能卡根据读记录指令读记录,判断是否读到最后一条记录,如果是,则执行步骤407;否则,继续执行步骤406;

步骤407:智能卡置位M1事务状态标志;

步骤408:智能卡开启事务;

步骤409:智能卡将当前电子现金余额写入到M1存储区中;

步骤410:智能卡从虚拟机的第一存储区中获取M1原额;将M1原额更新为当前电子现金余额;将更新后的M1原额写入到虚拟机的第一存储区中;

步骤411:智能卡将当前电子现金余额写入到电子钱包应用中的Flash存储区中;

步骤412:智能卡将当前电子现金余额写入到电子现金应用中的Flash存储区中;

步骤413:智能卡关闭事务;

步骤414:智能卡复位M1事务状态标志;

步骤415:智能卡向终端返回读记录应答;结束。

步骤416:智能卡初始化电子现金应用,向终端返回应用初始化应答;

步骤417:智能卡接收来自终端的读记录指令,向终端返回读数据应答;

具体地,智能卡等待接收来自终端的指令,当接收到来自终端的读记录指令后,检测交易类型标识,当交易类型标识为第三类型标识时,执行步骤418。

步骤418:智能卡接收来自终端的第一生成应用密文指令,向终端返回第一生成应用密文应答;

具体地,智能卡等待接收来自终端的指令,当接收到来自终端的第一生成应用密文指令后,向终端返回第一生成应用密文应答;

步骤419:智能卡接收来自终端的第二生成应用密文指令,向终端返回包括同意联机交易信息的第二生成应用密文应答;

具体地,智能卡等待接收来自终端的指令,当接收到来自终端的第二生成应用密文指令,向终端返回包括同意联机交易信息的第二生成应用密文应答。

步骤420:智能卡接收来自终端的第二圈存指令;

具体地,智能卡等待接收来自终端的指令,当接收到来自终端的指令后,判断指令是否为第二圈存指令,若是,执行步骤421;否则,执行其他相应操作。

更加具体地,智能卡等待接收来自终端的指令,当接收到来自终端的指令后,智能卡判断接收到的来自终端的指令的第三和第四字节上的数据是否为第三预设标识,如果是,则判断接收到的来自终端的指令为第二圈存指令,执行步骤421;否则,执行其他相应操作。

优选地,第三预设标识为“0x 9F79”。

例如,智能卡等待接收来自终端的指令,当接收到来自终端的指令后,判断指令0x 04DA9F790A00000005 0000D03766E4的第三和第四字节上的数据为第三预设标识,则判断接收到的来自终端的指令为第二圈存指令,执行步骤421。

步骤421:智能卡从第二圈存指令中获取交易金额;

具体地,智能卡获取第二圈存指令中的第六到第十一字节上的数据,并将其作为交易金额。

例如:智能卡获取第二圈存指令 0x04DA9F790A00000005000000D03766E4中的第六到第十一字节上的数据0x000000050000,并将其作为交易金额。

步骤422:智能卡将交易金额作为当前电子现金余额,并将当前电子现金余额写入到随机存储器中;

步骤423:智能卡置位M1事务状态标志;

步骤424:智能卡开启事务;

步骤425:智能卡将当前电子现金余额写入到M1存储区中;

步骤426:智能卡从虚拟机的第一存储区中获取M1原额;将M1原额更新为当前电子现金余额;将更新后的M1原额写入到虚拟机的第一存储区中;

步骤427:智能卡将当前电子现金余额写入到电子钱包应用中的Flash存储区中;

步骤428:智能卡将当前电子现金余额写入到电子现金应用中的Flash存储区中;

步骤429:智能卡关闭事务;

步骤430:智能卡复位M1事务状态标志;

步骤431:智能卡向终端返回圈存应答,结束。

本实施例中,步骤401中还包括:当交易类型为qPBOC扩展交易时,执行步骤a1;

步骤a1:智能卡初始化电子现金应用,从电子现金应用的Flash存储区中获取电子现金余额,从获取处理选项指令中获取交易金额,计算电子现金余额和交易金额的差值;将电子现金余额更新为电子现金余额和交易金额的差值;

步骤a2:智能卡将当前电子现金余额写入到随机存储器中;

步骤a3:智能卡向终端返回初始化应用应答;

步骤a4:智能卡接收来自终端的更新扩展应用记录指令;

步骤a5:智能卡更新扩展应用记录,判断是否更新到最后一条扩展应用记录,如果是,则执行步骤a6;否则,继续执行步骤a5;

步骤a6:智能卡向终端返回更新扩展应用记录应答,执行步骤405。

相应地,步骤405具体为:智能卡等待接收来自终端的指令,当接收到来自终端的读记录指令后,检测交易类型标识,当交易类型标识为第二类型标识时,执行步骤406。

必要地,当交易类型为qPBOC扩展交易时,执行步骤401之前,还包括:

步骤b1:智能卡接收来自终端的读扩展应用记录指令;

步骤b2:智能卡判断是否读取到最后一条扩展应用记录,如果是,则向终端返回读扩展应用记录应答,执行步骤401;否则,继续执行步骤b2。

本实施例中,步骤205还可以替换为:智能卡从M1钱包副本中获取M1余额;对应地:步骤208还可以替换为:智能卡从M1钱包正本中获取M1余额,执行步骤211;步骤308执行完之后,直接执行步骤310;步骤322之后,直接执行步骤324;步骤334之后,直接执行步骤336;步骤409之后直接执行步骤411;步骤425之后直接执行步骤427。

本实施例提供的智能卡卡内多账户余额共享方法,卡内的M1余额、电子钱包余额和电子现金余额可以共享。例如:智能卡在M1终端上使用消费之后,卡内的M1余额、电子钱包余额和电子现金余额也同步变化,智能卡在金融终端上消费之后,卡内的M1余额、电子钱包余额和电子现金余额也同步变化,使智能卡能够在支持电子现金应用的终端、支持电子钱包应用的终端和支持加密存储卡的终端上使用,解决了行业卡维护成本高、资源浪费严重以及M1卡容易被破解等技术问题。

实施例4

本实施例提供了一种智能卡,如图6所示:包括,第一接收模块01、第二接收模块02、第一检测模块03、第一判断模块04、第一报错模块05、第一更新模块06、第一应用模块07、第一返回模块08、第一计算模块09、第一事务模块10、第一设置模块11、第二更新模块12、第二返回模块13;

第一接收模块01,用于接收来自金融终端的选择应用指令;

第二接收模块02,用于接收来自金融终端的应用交易指令;

第一检测模块03,用于当第一接收模块01接收到选择应用指令后,检测自身的M1事务状态标志是否被置位;

第一判断模块04,用于当第一检测模块03检测为否后,判断自身的M1余额、电子钱包余额和电子现金余额的大小关系;

第一判断模块04包括:第一获取单元、第二获取单元、第三获取单元和第一判断单元;

第一获取单元,用于当第一检测模块03检测为否后,从M1存储区中获取M1余额;

进一步地,第一获取单元包括:第一获取子单元、第一判断子单元、第二获取子单元、第三获取子单元、第二判断子单元和第四获取子单元;

第一获取子单元,用于当第一检测模块03检测为否后,获取M1存储区中的M1钱包副本地址,根据M1钱包副本地址获取M1钱包副本;

第一判断子单元,用于判断M1钱包副本是否合法;

第二获取子单元,用于当第一判断子单元判断为是后,从M1钱包副本中获取M1余额;

第三获取子单元,用于当第一判断子单元判断为否后,获取M1存储区中的M1钱包正本地址;根据M1钱包正本地址获取M1钱包正本;

第二判断子单元,用于判断M1钱包正本是否合法;

第四获取子单元,用于当第二判断子单元判断为是后,从M1钱包正本中获取M1余额;

相应地,第一应用模块07,还用于当第二判断子单元判断为否后,根据选择应用指令选择应用。

再进一步地,智能卡还可以包括:第一恢复模块;

第一恢复模块,用于当第二判断子单元判断为是后,第一判断模块04判断自身的M1余额、电子钱包余额和电子现金余额的大小关系前,将M1钱包正本作为M1钱包副本写入到M1钱包副本地址。

第二获取单元,用于当第一检测模块03检测为否后,从第一非易失性存储区中获取电子钱包余额;

第三获取单元,用于当第一检测模块03检测为否后,从第二非易失性存储区中获取电子现金余额;

第一判断单元,用于判断M1余额是否大于电子钱包余额或电子现金余额。

第一更新模块06,用于当第一判断模块04判断出M1余额最小时,将电子钱包余额更新为M1余额;将电子现金余额更新为M1余额;

第一更新模块06,具体用于:当第一判断模块04判断出M1余额最小时,将M1余额作为电子钱包余额,写入到第一非易失性存储区中;将M1余额作为电子现金余额写入到第二非易失性存储区中。

第一应用模块07,用于当第一判断模块04判断出M1余额、电子钱包余额和电子现金余额三者相等时,以及第一更新模块06更新电子钱包余额和电子现金余额后,根据选择应用指令选择应用;

第一报错模块05,用于当第一判断模块04判断出M1余额大于电子钱包余额或电子现金余额时,向金融终端报错;

第一返回模块08,用于当第一应用模块07根据选择应用指令选择应用后,向金融终端返回选择应用成功应答;

第一计算模块09,用于根据应用交易指令中的交易金额计算当前账户余额;当前账户余额为当前电子钱包余额或当前电子现金余额;

第一设置模块11,用于当第一计算模块09计算当前账户余额后,置位M1事务状态标志;当第一事务模块10关闭事务后,复位M1事务状态标志;

第一事务模块10,用于当第一计算模块09计算当前账户余额后,开启事务;当第二更新模块12将M1余额、电子钱包余额和电子现金余额分别更新为当前账户余额后,关闭事务;

第二更新模块12,用于当第一事务模块10开启事务后,将M1余额、电子钱包余额和电子现金余额分别更新为当前账户余额;

第二更新模块12,具体用于:当第一事务模块10开启事务后,当当前账户余额为当前电子钱包余额时,将当前电子钱包余额作为M1余额写入到M1存储区中;将当前电子钱包余额作为电子钱包余额,写入到第一非易失性存储区中;将当前电子钱包余额作为电子现金余额写入到第二非易失性存储区中;当当前账户余额为当前电子现金余额时,将当前电子现金余额作为M1余额写入到M1存储区中;将当前电子现金余额作为电子钱包余额,写入到第一非易失性存储区中;将当前电子现金余额作为电子现金余额写入到第二非易失性存储区中。

第二返回模块13,用于当第二更新模块12将M1余额、电子钱包余额和电子现金余额分别更新为当前账户余额后,向金融终端返回交易成功应答。

本实施例中,智能卡还可以包括第三接收模块、第二检测模块、第二计算模块、第三更新模块、第二报错模块和第三返回模块;

第三接收模块,用于接收来自M1终端的M1消费指令;

第二检测模块,用于当第三接收模块接收到M1消费指令后,检测自身的M1事务状态标志是否被置位;

第二报错模块,用于当第二检测模块检测为是后,向M1终端报错;

第二计算模块,用于当第二检测模块检测为否后,计算当前M1余额;

第二计算模块,具体用于当第二检测模块检测为否后,从M1存储区中获取M1余额,从M1消费指令中获取M1交易金额,计算M1余额与M1交易金额的差值,将M1余额与M1交易金额的差值作为当前M1余额;

第三更新模块,用于将M1余额更新为当前M1余额;

第三更新模块,具体用于将当前M1余额作为M1余额写入到M1存储区中。

第三返回模块,用于向M1终端返回消费成功信息。

本实施例中,智能卡还可以包括:第二判断模块;

第二判断模块,用于判断应用交易指令中的交易金额是否合法;

第一计算模块09,具体用于当第二判断模块判断为是后,根据应用交易指令中的交易金额计算当前账户余额;

第一报错模块05,还用于当第二判断模块判断为否后,向金融终端报错。

进一步地,应用交易指令包括:电子钱包消费指令或电子钱包圈存指令或电子现金消费指令或电子现金圈存指令;当智能卡支持透支功能时:

第二判断模块,具体用于:当应用交易指令为电子钱包消费指令时,判断交易金额是否不大于电子钱包余额加上透支限额再减去已透支金额的结果,如果是,则判断交易金额合法;否则,判断交易金额不合法;当当应用交易指令为电子钱包圈存指令时,判断交易金额是否不大于余额上限减去电子钱包余额加上已透支金额减去脱机预授权总金额的结果,如果是,则判断交易金额合法;否则,判断交易金额不合法;

当应用交易指令为电子现金消费指令时,判断交易金额是否不大于电子现金余额加上透支限额再减去已透支金额的结果,如果是,则判断交易金额合法;否则,判断交易金额不合法;

当应用交易指令为电子现金圈存指令时,判断交易金额是否不大于余额上限加上已透支金额减去脱机预授权总金额的结果,如果是,则判断交易金额合法;否则,判断交易金额不合法。

进一步地,应用交易指令包括:电子钱包消费指令或电子钱包圈存指令或电子现金消费指令或电子现金圈存指令;当智能卡不支持透支功能时:

第二判断模块,具体用于:当应用交易指令为电子钱包消费指令时,判断交易金额是否不大于电子钱包余额,如果是,则判断交易金额合法;否则,判断交易金额不合法;

当应用交易指令为电子钱包圈存指令时,判断交易金额是否不大于余额上限减去电子钱包余额再减去脱机预授权总金额的结果,如果是,则判断交易金额合法;否则,判断交易金额不合法;

当应用交易指令为电子现金消费指令时,判断交易金额是否不大于电子现金余额,如果是,则判断交易金额合法;否则,判断交易金额不合法;

当应用交易指令为电子现金圈存指令时,判断交易金额是否不大于余额上限减去脱机预授权总金额的结果,如果是,则判断交易金额合法;否则,判断交易金额不合法。

本实施例中,应用交易指令可以具体包括:电子钱包消费指令或电子钱包圈存指令;

第一计算模块09,具体用于当应用交易指令为电子钱包消费指令时,计算电子钱包余额和交易金额的差值,并将其作为当前电子钱包余额;

当应用交易指令具体为电子钱包圈存指令时,计算电子钱包余额和交易金额的和,并将其作为当前电子钱包余额。

进一步地,智能卡还包括:第一获取模块和第三判断模块;对应地:电子钱包消费指令包括:消费初始化指令和消费指令;或者具体包括复合消费初始化指令、更新复合应用数据缓存指令和复合应用消费指令;电子钱包圈存指令具体包括:圈存初始化指令和第一圈存指令;

第二接收模块02包括:第一接收单元、第二接收单元、第三接收单元、第四接收单元、第五接收单元、第六接收单元和第七接收单元;

第二返回模块13包括:第一返回单元、第二返回单元和第三返回单元;

第一接收单元,用于接收来自金融终端的消费初始化指令;

第二接收单元,用于接收来自金融终端的消费指令;

第三接收单元,用于接收来自金融终端的复合消费初始化指令;

第四接收单元,用于接收来自金融终端的复合应用消费指令;

第五接收单元,用于接收来自金融终端的圈存初始化指令;

第六接收单元,用于接收来自金融终端的第一圈存指令;

第一获取模块,用于当第一接收单元接收到消费初始化指令后,从消费初始化指令中获取交易金额;当第三接收单元接收到复合消费初始化指令后,从复合消费初始化指令中获取交易金额;当第五接收单元接收来自金融终端的圈存初始化指令后,从圈存初始化指令中获取交易金额;

第三判断模块,用于判断第一获取模块获取到的交易金额是否合法;

第一返回单元,用于当第三判断模块判定为是后,向金融终端返回初始化成功应答;

第一报错模块05,还用于当第三判断模块判断为否后,向金融终端报错;

第一计算模块09,具体用于当第二接收单元接收到消费指令或当第四接收单元接收到复合应用消费指令后,计算电子钱包余额和交易金额的差值,并将其作为当前电子钱包余额;当第六接收单元接收到第一圈存指令后,计算电子钱包余额和交易金额的和,并将其作为当前电子钱包余额;

第二返回单元,用于当第一事务模块10关闭事务后,向金融终端返回交易成功应答;

第七接收单元,用于接收来自金融终端的更新复合应用数据缓存指令;

第三返回单元,用于更新复合消费记录后,向金融终端返回更新成功应答。

本实施例中,应用交易指令还可以具体包括:电子现金消费指令或电子现金圈存指令;

第一计算模块09,具体用于当应用交易指令具体为电子现金消费指令时,计算电子现金余额和交易金额的差值,并将其作为当前电子现金余额;当应用交易指令具体为电子现金圈存指令时,将交易金额作为当前电子现金余额。

进一步地,智能卡还包括:第四判断模块、第二设置模块、第二获取模块、第五判断模块和第三检测模块;对应地,电子现金消费指令具体包括:获取处理选项指令和读记录指令;或者具体包括:读扩展应用记录指令、获取处理选项指令、更新扩展应用记录指令、读记录指令;电子现金圈存指令具体包括:获取处理选项指令、读记录指令、第一生成应用密文指令、第二生成应用密文指令和第二圈存指令;

第二接收模块02包括:第八接收单元、第九接收单元、第十接收单元、第十一接收单元、第十二接收单元、第十三接收单元和第十四接收单元;

第二返回模块13:包括第四返回单元、第五返回单元、第六返回单元、第七返回单元、第八返回单元、第九返回单元和第十返回单元;

第八接收单元,用于接收来自金融终端的获取处理选项指令;

第九接收单元,用于接收来自金融终端的读记录指令;

第十接收单元,用于接收来自金融终端的第二圈存指令;

第四判断模块,用于根据获取处理选项指令判断交易类型;

第二设置模块,用于当第四判断模块判断出交易类型为qPBOC交易时,将交易类型标识置为第一类型标识;当第四判断模块判断出交易类型为qPBOC扩展交易时,将交易类型标识置为第二类型标识;当交易类型为借贷记交易时,将交易类型标识置为第三类型标识;

第二获取模块,用于当第四判断模块判断出交易类型为qPBOC交易或qPBOC扩展交易时,从获取处理选项指令中获取交易金额;当第四判断模块判断出交易类型为借贷记交易后,从第二圈存指令中获取交易金额;

第五判断模块,用于判断第二获取模块获取到的交易金额是否合法;

第一计算单元,具体用于若交易类型为qPBOC交易或qPBOC扩展交易,当第五判断模块判定为是后,计算电子现金余额和交易金额的差值,并将其作为当前电子现金余额;若交易类型为借贷记交易,当第五判断模块判定为是后,将交易金额作为当前电子现金余额;

第四返回单元,用于当第四判断模块判断出交易类型为借贷记交易后,向金融终端返回应用初始化应答;当第四判断模块判断出交易类型为qPBOC交易或qPBOC扩展交易且第一计算单元计算电子现金余额和交易金额的差值,并将其作为当前电子现金余额后,向金融终端返回应用初始化应答;

第一报错模块05,还用于当第五判断模块判定为否后,向金融终端报错;

第三检测模块,用于当第九接收单元接收到读记录指令后,检测交易类型标识;

第二更新模块12,具体用于当第三检测模块检测出交易类型标识为第一类型标识或第二类型标识后,将M1余额、电子钱包余额和电子现金余额分别更新为当前电子现金余额;当第一计算单元将交易金额作为当前电子现金余额后,将M1余额、电子钱包余额和电子现金余额分别更新为当前电子现金余额;

第五返回单元,用于当第三检测模块检测出交易类型标识为第三类型标识后,向金融终端返回读记录应答;当第三检测模块检测出交易类型标识为第一类型标识或第二类型标识后,且当第一设置模块11复位M1事务状态标志后,向金融终端返回读记录应答;

第六返回单元,用于当第十接收单元接收到第二圈存指令后,向金融终端返回圈存应答;

第十一接收单元,用于接收到来自金融终端的读扩展应用记录指令;

第七返回单元,用于向金融终端返回读扩展应用记录应答;

第十二接收单元,用于接收来自金融终端的更新扩展应用记录指令;

第八返回单元,用于更新扩展应用记录后,向金融终端返回更新扩展应用记录应答;

第十三接收单元,用于接收来自金融终端的第一生成应用密文指令;

第九返回单元,用于向金融终端返回第一生成应用密文应答;

第十四接收单元,用于接收来自金融终端的第二生成应用密文指令;

第十返回单元,用于向金融终端返回第二生成应用密文应答。

本实施例提供了一种智能卡,智能卡卡内的M1余额、电子钱包余额和电子现金余额共享,使智能卡能够在支持电子现金应用的终端上、支持加密存储卡的终端和支持电子钱包应用的终端上使用。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1