zoukankan      html  css  js  c++  java
  • 银联接口开发随笔(3)

    文章开头,给 -直播10站打个广告 提供体育赛事、游戏赛事的直播导航  http://www.zhibo10.com/

    好久没来更新博客,既要忙着公司的alading网站,同时又要给原来银联POS程序上加上交通卡支付的程序,今天晚上没什么事就写一篇困饶我好几天的一个问题。

    以后ishelf机器上要做交通卡充值,原来的银联POS程序需要加上交通卡交易的程序,开发工作不算复杂,根据要求修改相应的参数即可,我这边测试也很顺利通过,悲剧的事情发生在发布给测试同事(jack)以后,整个交通卡充值的过程都很顺利,可是银联支付总是失败。起初是因为发布版本、键盘密钥,读卡器密钥问题,我通过一系列排查以后,再用我测试通过的版本覆盖测试机上的文件,Jack的测试工作还是时而成功,时而失败。

    今天在上级领导的强大压力下,我决定今天要找出原因,jack测试几笔数据,收到报文后我们解析结果报错,错误是:TCAS_MAC_ERROR,从日志很明显示看出来MAC校验问题,请银联的朋友(Olive)看一下,Olive发给我她那边的交易日志,通过看她给我的日志找到MAC校验部份内容

    The MacStr len=[49],value=[1962226006100140587330000000050000000570000123800]

    The cacu mac str key=[0C5FC3D15BF0B72A] 

    我这边解析出来的MacStr

    196222600610014058730000000050000000570000123800

    对比两个MAC

    1962226006100140587330000000050000000570000123800

    196222600610014058730000000050000000570000123800

    分解该报文

    19622260061001405873319位银行卡号

    00000000500012位交易金额

    000057 6位交易流水号

    00 :应码码

    00123800:终端号

    问题出在银行卡号上

    196222600610014058733 19位银行卡号 6222600610014058733

    19622260061001405873  19位银行卡号 622260061001405873

    怎么回事?通过检查mac校验部份程序发现,以前支付成功都是16位的信用卡号,普通的卡都是mac校验的问题,再检查发现,从ISO8583协议数据里取银行卡号程序向前多取了一位,修复该问题后,问题就没了,最后发现交通卡充值校验规则其实是和水、电、煤的交易相同的,如果早有人告诉我这一点,会不会我不会浪费这么多时间。

    最后感谢Jack的不厌其烦的测试工作,同时感谢银联Olive朋友,在他的配合下我才完成程序调试工作。

  • 相关阅读:
    PHP文件打开、关闭、写入的判断与执行
    统计文件大小,以GB、MB、KB、B输出
    超强功能file_put_contents()函数(集成了fopen、fwrite、fclose)
    fputcsv命令,写csv文件,遇到的小问题(多维数组连接符)
    Rename 更改文件、文件夹名称
    PHP学习——定界符格式引起的错误
    SPOJ 1873 Accumulate Cargo
    POJ 3657 Haybale Guessing
    HDU 1512 Monkey King
    POJ 1741 Tree
  • 原文地址:https://www.cnblogs.com/zycblog/p/2217994.html
Copyright © 2011-2022 走看看