消费交易允许持卡人使用电子存折或者电子钱包的余额进行购物或者获取服务。这种交易可以在销售点终端POS机上脱机进行。
使用电子存折进行消费交易以前需要验证持卡人个人密码PIN,使用电子钱包进行消费交易则不需要。
消费交易流程如下图所示:
1、发出INITIALIZE FOR PURCHASE命令
终端向卡片发出INITIALIZE FOR PURCHASE命令启动普通消费交易。
2、处理INITIALIZE FOR PURCHASE命令
* 检查IC卡是否支持命令中包含的密钥索引号。如果不支持的话,返回状态码0x9403,且不返回其他数据,同时中止命令执行。
* 检查命令中包含的交易金额是否超过电子存折或者电子钱包余额。如果超过的话,返回状态码0x9401且不返回其他数据,同时中止命令执行。
通过以上检查以后,IC卡生成一个伪随机数ICC和过程密钥SESPK。过程密钥SESPK是用于电子存折和电子钱包的消费交易,SESPK用密钥DPK分散得到。
IC卡回送INITIALIZE FOR PURCHASE命令的响应报文给终端。如果IC卡回送的状态码不是0x9000的话,终端将中止交易。
3、产生MAC1
终端收到INITIALIZE FOR PURCHASE 命令响应报文以后,利用IC卡回送的伪随机数和脱机交易序号,在终端生成和IC卡中一样的SESPK,并计算一个报文鉴别码MAC1。
MAC1的计算方法是用SESPK对以下数据按顺序链接进行加密计算而得。
* 交易金额
* 交易类型标识
* 终端机编号
* 交易日期(终端)
* 交易时间(终端)
4、发出 DEBIT FOR PURCHASE 命令
终端向IC卡发出DEBIT FOR PURCHASE 命令。
5、验证MAC1
IC卡收到终端发来的DEBIT FOR PURCHASE命令后,IC卡必须确认MAC1的有效性。
* 如果MAC1有效的话,主机继续进行下一步骤;
* 如果MAC1无效的话,向终端回送状态码0x9302,终端进入自定义的错误处理流程。
6、交易处理
IC卡将电子存折脱机交易序号或电子钱包脱机交易序号加1,并从卡上的电子存折或者电子钱包余额中扣减交易金额。
IC卡计算MAC2。MAC2的计算用SESPK对以交易金额进行加密计算产生。
IC卡计算TAC。TAC的计算用DTK左右8Byte异或运算的结果直接对以下数据顺序链接后进行加密计算产生:
* 交易金额。
* 交易类型标识。
* 终端机编号。
* 终端交易序号
* 交易日期(终端)。
* 交易时间(终端)。
对于电子存折消费交易,IC卡用以下数据按顺序链接组成一个记录来更新交易明细:
* 电子存折脱机交易序号。
* 交易金额。
* 交易类型标识。
* 终端机编号
* 交易日期(终端)
* 交易时间(终端)
IC卡必须全部成功完成以上所有步骤或者一个都不进行,如果以上某个操作没有成功的话,对明细文件的更新也不进行。
7、验证MAC2
IC卡回送DEBIT FOR PURCHASE命令的响应报文给终端,响应报文中包含MAC2。终端需要校验MAC2的有效性。
* 如果MAC2有效,交易正常结束。
* 如果MAC2无效,终端进入自定义的错误处理流程。
消费交易结束。
文章评论(0条评论)
登录后参与讨论