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