Posted on 2008-11-20 11:46
Prayer 阅读(2258)
评论(1) 编辑 收藏 引用 所属分类:
金融相关
通过圈存交易,持卡人可将其在银行相应账户上的资金划入电子存折或电子钱包中。这种交易必须在金融终端上联机进行。进行圈存交易以前需要验证持卡人个人密码PIN 。交易流程如下图所示:
1、发出INITIALIZE FOR LOAD命令
终端向卡片发出INITIALIZE FOR LOAD命令启动圈存交易。
2、处理INITIALIZE FOR LOAD命令
IC卡收到INITIALIZE FOR LOAD命令以后,将进行如下检查:
* 检查IC卡是否支持命令中包含的密钥索引号。如果不支持的话,返回状态码0x9403,且不返回其他数据,同时中止命令执行。
* 通过以上检查以后,IC卡生成一个伪随机数ICC,过程密钥SESLK和一个报文鉴别码MAC1。
过程密钥SESLK是用于电子存折或电子钱包的圈存交易,SESLK用密钥DLK分散得到。MAC1的计算方法是用SESLK对以下数据按顺序链接进行加密计算而得。
* 电子存折或者电子钱包余额。
* 交易金额。
* 交易类型标识。
* 终端机编号。
IC卡回送INITIALIZE FOR LOAD命令的响应报文给终端。如果IC卡回送的状态码不是0x9000的话,终端将中止交易。
3、验证MAC1
终端收到INITIALIZE FOR LOAD命令响应报文以后,将交易数据发送给发卡方主机。主机生成和IC卡中一样的SESLK,验证MAC1的有效性。
* 如果MAC1有效的话,主机继续进行下一步骤;
* 如果MAC1无效的话,主机将告知终端,终端中止交易进入自定义的错误处理流程。
4、交易处理
在确认能够进行圈存交易以后,主机从持卡人在银行的响应账户中扣减圈存金额。主机将生成一个报文鉴别码MAC2。MAC2是用SESLK对以下数据按顺序链接进行加密计算得到:
* 交易金额
* 交易类型标识
* 终端机编号
* 交易日期(主机)
* 交易时间(主机)
成功进行圈存交易后,主机将电子存折联机交易序号或者电子钱包联机交易序号加1,并向终端发送一个圈存交易接受报文,其中包含了MAC2、交易日期(主机)和交易时间(主机)。
5、发出CREDIT FOR LOAD命令
终端收到主机的圈存交易接受报文后,向IC卡发出CREDIT FOR LOAD命令,以更新卡上的电子存折或电子钱包余额。
6、验证MAC2
IC卡收到终端发来的CREDIT FOR LOAD命令后,IC卡必须确认MAC2的有效性。
* 如果MAC2有效的话,继续进行下一步骤。
* 如果MAC2无效的话,向终端回送状态码0x9302,终端进入自定义的错误处理流程。
7、交易处理
IC卡将电子存折联机交易序号或电子钱包联机交易序号加1,并且将交易金额加在电子存折或电子钱包的余额上。
IC卡用以下数据按顺序链接组成一个记录来更新标准交易明细:
* 电子存折联机交易序号或电子钱包联机交易序号。
* 交易金额。
* 交易类型标识。
* 终端机编号
* 交易日期(主机)
* 交易时间(主机)
IC卡计算TAC。TAC的计算用DTK左右8Byte异或运算的结果直接对以下数据顺序链接后进行加密计算产生:
* 电子存折余额或电子钱包余额。
* 电子存折联机交易序号或电子钱包联机交易序号(加1前)。
* 交易金额。
* 交易类型标识。
* 终端机编号。
* 交易日期(主机)。
* 交易时间(主机)。
IC卡必须全部成功完成以上所有步骤或者一个都不进行,如果以上某个操作没有成功的话,对明细文件的更新也不进行。
8、返回确认
IC卡回送CREDIT FOR LOAD命令的响应报文给终端,响应报文中包含TAC。终端保存TAC值,可以不马上验证TAC。
圈存交易结束。