ED/EP系列5《消费指令》

1. 消费交易

消费交易同意持卡人使用电子存折或电子钱包的剩余金额进行购物或获取服务.

特点:

1) --能够在销售点终端(POS)上脱机进行

2) --使用电子存折进行的消费交易必须提交个人识别码(PIN),使用电子钱包则不须要

步骤:

1) --參考复合应用消费交易

CPURESET()
JE=00000001//消费金额
DPK= 00000000000000000000000000000055		

00A40000021001
805C000204(消费前金额+9000)

//(见JR/T 0025.2的5.2.9条)
805001020B+01+JE+000000000001+0F(XYSJ2+9000)

YE=COPY(XYSJ2,1,8)      //ED或EP剩余金额	        4
TJJYXH=COPY(XYSJ2,9,4) //脱机交易序号	        2
                       //透支限额	            3
                       //密钥算法版本(DPK)	1
                       //算法标识(DPK)	    1
WSJS=LAST(XYSJ2,8)     //伪随机数(IC卡)	    4

ECB_3DES_EN(WSJS+TJJYXH+0011,DPK,SESLK)
//交易金额 + 交易类型标识 + 终端机编号 + 交易日期(终端)+ 交易时间(终端)
3DES_MAC(0000000000000000+JE+06+000000000001+20090225+153030+800000000000,SESLK,MAC1)

//DEBIT FOR PURCHASE/CASH WITHDRAW(见JR/T 0025.2的5.2.3条)
//终端交易序号 + 交易日期(终端)+ 交易时间(终端)+ MAC1
805401000F+00000011+20090225+153030+MAC1+08
//TAC	4
//MAC2	4

805C000204(消费后金额+9000)

2. 复合应用消费交易

复合应用消费交易同意持卡人使用电子钱包的剩余金额进行购物或获取服务。此交易能够在终端设备或其他读卡设备上脱机进行。此交易无需提交个人识别码(PIN)--(电子钱包专用).

特点:

--能够在终端设备或其他读卡设备上脱机进行;

--无需提交个人识别码(PIN)

步骤:

--终端:发出INITIALIZE FOR CAPP PURCHASE命令启动复合应用消费交易

--IC卡:检查提供的密钥索引號(NO:9403);检查钱包是否被灰锁(NO:9408);检查电子钱包剩余金额是否大于或等于交易金额(NO:9401);产生一个伪随机数(ICC)和过程密钥

--SESPK:伪随机数(ICC)||电子钱包交易序号||终端交易序号的最右两个字节

--终端:产生MAC1,供IC卡来验证PSAM的合法性

--终端发出UPDATE CAPP DATA CACHE命令

--IC卡:检查是否存在与SFI值同样的文件(NO:6A82);查询标识符的记录(NO:6A83);检查应用锁定标志字节(NO:9407);检查数据域长度是否大于对应记录的长度(NO:6A84)

--终端:发出DEBIT FOR CAPP PURCHASE命令

--IC卡:验证MAC1的有效性(NO:9302)

--IC卡:交易处理,扣减消费金额,交易序号加1,更新消费交易记录,产生报文签别码(MAC2)

--终端:验证MAC2

注:持卡人如需使用非接触式金融IC卡在特定应用环境中进行交易,需先在卡片中添加对应复合应用类型,即启用此类型的复合应用。——交易类型标识‘09’

CPURESET()
00A40000021001

//DPK 消费密钥
DPK=00000000000000000000000000000055
JE=00000001

//INTIALIZE FOR CAPP PURCHASE(见JR/T 0025.9的5.2.12条)
805003020B+01+JE+000000000001+0F(DATA+9000)

YE=COPY(DATA,1,8) //电子钱包剩余金额	          4
XH=COPY(DATA,9,4) //电子钱包交易序号	        2
                     //透支限额	               3
                     //密钥算法版本(DPK)	   1
                     //密钥标识(DPK)	        1
WS=LAST(DATA,8)   //伪随机数(IC卡)	        4
ZDJYXH=00000001

//计算过程密钥SESLK
ECB_3DES_EN(WS+XH+0001,DPK,SESLK)

//计算MAC1,数据为:交易金额 + 交易类型(社保要转为ACSII码) + 终端机编号 + 交易日期 + 交易时间 + 80(补足长度)
3DES_MAC(0000000000000000+JE+09+000000000001+20110106+120000+800000000000,SESLK,MAC1)

//UPDATE CAPP DATA CACHE
80DC01C8+20+011E00030B200905260000000000000000000000000000000000000000000000
//DEBIT FOR CAPP PURCHASE
805401000F+ZDJYXH+20110106+120000+MAC1+08

3. 改动透支限额交易

透支功能是一种基于电子存折应用的有限信用功能。假设透支限额存在,电子存折的剩余金额是实际圈存剩余金额与透支限额之和。

特点:

1) --必须在金融终端上联机进行;

2) --必须提交个人识别码(PIN)

步骤:

1) --终端:发出初始化改动透支现额(INITIALIZE FOR UPDATE)命令启动改动透支限额交易

2) --IC卡:检查是否支持提供的密钥索引號(NO:9403),产生一个伪随机数(ICC)、一个过程密钥SESUK和一个报文鉴别码(MAC1)

3) --终端: 验证MAC1。

4) --终端: 用SESUK加密数据产生MAC2,并发出改动透支现额(UPDATE OVERDRAWLIMIT)命令

5) --IC卡:验证MAC2的有效性

6) --IC卡:交易处理

--------------------见JR/T 0025.2的5.5.6条(未)

CPURESET()
JE=00000001//消费金额
DUK=7DAE5E53140A9170C21D5805EADB7E9A		

00A40000021001
0020000003+888888 //校验password

//(见JR/T 0025.2的5.2.9条) 密钥索引號+终端机编号
8050040107+01+000000000001(XYSJ2+9000)

YE=COPY(XYSJ2,1,8)       //ED剩余金额	               4
TJJYXH=COPY(XYSJ2,9,4)  //ED联机交易序号	        2
YZXE=COPY(XYSJ2,13,6)   //原透支限额	             3
                            //密钥版本(DUK)	    1
                            //算法标识(DUK)	      1
WSJS=COPY(XYSJ2,23,8)   //伪随机数(IC卡)	    4
MAC1=LAST(XYSJ2,8)      //MAC1                	4

//SESUK:伪随机数(ICC)||电子存折联机交易序号||‘8000’
ECB_3DES_EN(WSJS+TJJYXH+8000,DUK,SESLK)

//电子存折剩余金额 + 透支限额 + 交易类型标识 + 终端机编号
3DES_MAC(0000000000000000+YE+YZXE+07+000000000001+8000,SESLK,_MAC1)
//透支限额 + 交易类型标识 + 终端机编号 + 交易日期 + 交易时间
3DES_MAC(0000000000000000+YE+YZXE+07+000000000001+20090225+153030+800000,SESLK,MAC2)
//新透支限额+交易日期(发卡方)+ 交易时间(发卡方)+ MAC2
805800000E+20090225+153030+MAC2(TAC+9000)

文/闫鑫原创转载请注明出处http://blog.csdn.net/yxstars/article/details/38225043

时间: 2024-11-08 19:23:09

ED/EP系列5《消费指令》的相关文章

ED/EP系列5——消费指令

1. 消费交易 消费交易允许持卡人使用电子存折或电子钱包的余额进行购物或获取服务. 特点: 1) --可以在销售点终端(POS)上脱机进行 2) --使用电子存折进行的消费交易必须提交个人识别码(PIN),使用电子钱包则不需要 步骤: 1) --参考复合应用消费交易 CPURESET() JE=00000001//消费金额 DPK= 00000000000000000000000000000055 00A40000021001 805C000204(消费前金额+9000) //(见JR/T 00

ED/EP系列3——基本指令

? --APPLICATIONBLOCK(应用锁定): ? --APPLICATION UNBLOCK(应用解锁): ? --CARDBLOCK(卡片锁定): ? --EXTERNAL AUTHENTICATION(外部认证): ? --GET RESPONSE(取响应): ? --GET CHALLENGE(产生随机数): ? --INTERNAL AUTHENTICATION(内部认证): ? --PIN CHANGE/UNBLOCK(个人识别码修改/解锁): ? --READ BINARY

ED/EP系列4——圈存指令

1. 圈存交易 通过圈存交易,持卡人可将其在银行相应账户上的资金划入电子存折或电子钱包中. 特点: 1)--必须在金融终端上联机进行; 2)--必须提交个人识别码(PIN) 步骤: 1) --终端: 启动账户划入交易(INITIALIZE FOR LOAD) 2) --IC卡: 处理INITIALIZE FOR LOAD命令,检查是否支持命令中提供的密钥(DLK)索引号(NO:9403),产生过程密钥(SESPK),产生MAC1 3) --终端: 验证MAC1,主机将生成SESLK并确认MAC1

ED/EP系列1——简介

电子存折(ED:ElectronicDeposit)一种为持卡人进行消费.取现等交易而设计的支持个人识别码(PIN)保护的金融IC卡应用.它支持圈存.圈提.消费和取现等交易. 电子钱包(EP:Electronic Purse)一种为方便持卡人小额消费而设计的金融IC卡应用.它支持圈存.消费等交易.消费不支持个人识别码(PIN)保护. 电子钱包/电子存折应用为同一类应用,两者在卡片和终端的处理流程上基本相同,主要区别有:电子钱包应用支持消费.圈存等交易,消费无须提交个人识别码,卡片中的消费明细记录

ED/EP系列6——扩展应用

包括:电子钱包复合应用:电子钱包灰锁应用. 1. 复合应用模式 ? INITIALIZE FOR CAPP PURCHASE(复合应用消费初始化): ? UPDATE CAPP DATA CACHE(更新复合应用数据缓存): ? DEBIT FOR CAPP PURCHASE(复合应用消费). 2. 灰锁应用模式 ?  DEBIT FOR UNLOCK(解扣): ? GET LOCK PROOF(取灰锁状态): ? GREY LOCK(灰锁): ? GREY UNLOCK(联机解扣): ? IN

ED/EP系列2——文件结构

电子存折/电子钱包应用是为持卡人进行金融交易而设计的一种应用.对于一张金融 IC 卡来说,它可以同时支持电子存折和电子钱包两种应用,也可以只支持其中的一种.卡片上两种应用的存在情况可以由应用类型标识(ATI)来指明. 从终端的角度来看,IC卡上的文件是一种树形结构.树的每一个分支是一个应用定义文件(ADF)或一个目录定义文件(DDF).一个ADF是一个或者多个应用基本文件(AEF)的入口点.一个ADF及其相关的数据文件处于树的同一分支上.一个DDF是其他ADF或者DDF的入口点. 上表是一卡通应

TinyOS系列——服务器远程指令多跳实现过程中问题及解决方案

开发经验: 1.嵌入式程序,调试可能比较麻烦,一定要有耐心,戒骄戒躁 2.开发之前一定要理清自己的逻辑框架,不然只能越写越乱 3.代码开发与测试迭代进行,一步一步,如果代码量过大,很难跟踪找到问题出错的点 开发步骤: 模块开发必须理清自己的思路以及逻辑,学会分步进行: 1.测试节点C[i]是否能够正常接收.发送数据,全部需要测试一遍,确定节点能否正常使用,否则后续工作无法正常进行2.测试发送模块A向基站B广播消息后,基站B能否正常接收3.修改发送模块与节点程序,测试发送模块A->节点c[0]->

社保系列5——基本指令

本部分的指令是ISO/IEC 7816定义的基本指令,包括: ?  APPLICATION BLOCK(应用锁定) ?  CARD BLOCK(卡片锁定) ?  CHANGE PIN(修改个人密码) ?  EXTERNAL AUTHENTICATION(外部鉴别) ?  GET RESPONSE(获取响应) ?  GET CHALLENGE(获取随机数) ?  INTERNAL AUTHENTICATION(内部鉴别) ?  PIN CHANGE/UNBLOCK(个人密码修改/解锁) ?  RE

汇编:jmp系列跳转指令总结

助记方法: J:跳转C: 进位位置位N: 否S: 符号位置位o: 溢出位置位Z: 零标志位置位E: 等于P:奇偶位置位A: AboveB: BelowL: Less (Little的比较级)G: Greater (Great的比较级) (SF^OF)=1 --> SF=0, OF=1 --> a < b SF=1, OF=0 --> a < b (SF^OF)=0 --> SF=1, OF=1 --> a > b SF=0, OF=0--> a >