账户划入交易

经过账户划入交易,持卡人可将其在基本医疗有限帮忙个人账户上的基金划入卡内基本医疗有限支撑个人账户中。

特点:  

1)   终端上联网进展 

2)  
提交个人密码(PIN)(如持卡人设置)          

             

步骤:

1)  
终端:启动账户划入交易(INITIALIZEFOR LOAD)           

2)   IC卡:处理INITIALIZEFOR
LOAD命令

3)  
检查是还是不是支持命令中提供的密钥(DLK)索引号(NO:9403).

4)  
发生进度密钥(SESPK):伪随机数(ICC)||基本医疗保障个人帐户划入交易序号||‘8000’

5)  
暴发MAC1:基本医疗保证个人帐户余额+交易金额+交易类型+终端机编号  
 

6)  
终端:验证MAC1,主机将生成SESLK并确认MAC1是还是不是可行。

7)  
回送错误状态:如果不收受帐户划入交易,则主机应公告终端

8)  
交易处理:扣减帐户划入金额,爆发一个报文鉴别码(MAC2)

9)   发出“CREDITFOR
LOAD”命令:更新卡内为主医疗保证个人帐户     

10) 
IC卡:验证MAC2(NO:9302).

11) 
交易处理:个人帐户划入交易序号加1,交易金额拉长到基本医疗有限援救个人帐户余额上,更新交易明细

12) 
再次回到确认:IC卡将TAC回送给终端

       
 

[cpp] view
plain
copyprint?

  1. 00A404000F7378312E73682EC9E7BBE1B1A3D5CF   
  2. 0020000003123456   //验证pin  
  3. 00A4040006D15600000503     //DF04:社会保障音讯区                                   
  4. MONEY=00100000  
  5. DLK=00000000000000000000222000000000  
  6. DTK_=00000000011111000000666000220000  
  7. DTKL=copy(DTK_社会保险,,0,16)  
  8. DTKR=last(DTK_,16)  
  9. DTK=XOR(DTKL,DTKR)  
  10.    
  11. //社保初叶化帐户划入:密钥索引号(DLK:01) + 交易金额 + 终端机编号  
  12. B02800010B+01+MONEY+130000000001  //DLK  
  13. 00C0000010(ST+9000)  
  14. //CIA余额          4字节  
  15. //联机交易序号      2字节  
  16. //密钥版本号        1字节  
  17. //算法标识          1字节  
  18. //伪随机数          4字节  
  19. //MAC1             4字节  
  20.    
  21. LM=COPY(ST,1,8)//CIA余额  
  22. CN=COPY(ST,9,4)//交易序号  
  23. WS=COPY(ST,17,8)//伪随机数  
  24.    
  25. //统计帐户划入交易进度密钥SESLK  
  26. ECB_3DES_EN(WS+CN+8000,DLK,SESLK)//DLK帐户划入用来发生进度密钥  
  27. //总括MAC1,数据为:16个0 + CIA余额 + 交易金额 + 交易类型(此处要转为ACSII码) + 终端机编号 + 80(补足长度)  
  28. SDES_MAC(0000000000000000+LM+MONEY+31+130000000001+80,SESLK,MAC1)  
  29. //MAC2,数据为:16个0 + 交易金额 + 交易类型(此处要转为ACSII码) + 终端机编号 + 交易日期 + 交易时间 + 800000000000(补足长度)  
  30. SDES_MAC(0000000000000000+MONEY+31+130000000001+20090106+120000+800000000000,SESLK,MAC2)  
  31.    
  32. //个人账户划入金额(SSS CREDIT FOR LOAD)  
  33. B02A00000B+20090106+120000+MAC2     //DTK  
  34. 00C0000004(TAC+9000)  //TAC:交易验证码  
  35. B026000104(BALANCE+9000)//查询个人账户余额GET BALANCE  
  36. SDES_MAC(0000000000000000+BALANCE+CN+MONEY+31+130000000001+20090106+120000+8000000000000000,DTK,_TAC)//终端暴发  

注:其中TAC必须等于_TAC;

  • *

  • *

文/闫鑫原创  
转发请声明出处http://blog.csdn.net/yxstars/article/details/38389345

  • *

  • *

发表评论

电子邮件地址不会被公开。 必填项已用*标注