zoukankan      html  css  js  c++  java
  • 社保系列6《账户划入交易》

    通过账户划入交易,持卡人可将其在基本医疗保险个人账户上的资金划入卡内基本医疗保险个人账户中。


    特点:  

    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回送给终端

             

    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



    Meet so Meet. C plusplus I-PLUS....
  • 相关阅读:
    面试只要问到分布式,必问分布式锁
    Java编程中忽略这些细节,Bug肯定找上你
    不止承上启下,带你了解工业物联网关
    论文解读二十七:文本行识别模型的再思考
    并发高?可能是编译优化引发有序性问题
    论文解读丨LayoutLM: 面向文档理解的文本与版面预训练
    SQL优化老出错,那是你没弄明白MySQL解释计划
    SQL反模式学习笔记1 开篇
    SQL Server中自定义函数:用指定的分隔符号分割字符串
    .NET软件开发与常用工具清单
  • 原文地址:https://www.cnblogs.com/iplus/p/4467138.html
Copyright © 2011-2022 走看看