本个接触8583协议的时间也不算太长,就自己是如何学习8583及遇到的问题跟大家分享一下。有什么错误的地方请指正。
一、总结一下在8583开发中遇到的问题
1,对于域数据类型理解错误。
2,对于域数据封装错误
3,MAC验证失败(此原因经常遇到 )
现在说下解决办法,如果有与服务器同时开发,直接可以让后台查找一下关于此报文中有哪些域是错误的,很快就能解决。如果服务器已经开发好了,服务器也没有人来跟你联调这个时间你就需要小心了,因为如果这个时间一个简单的错误可能会占用你很大的时间来解决。在此种情况下的解决办法:
1,分析加密的密钥是否是本次签到下载的密码(最好直接在日志中打印出来),因为有此银行对于协议来说可能不会每个协议都会验证MAC。本人就遇到过一次。
2,确保每个域的数据类型是跟文档是一样的,可以找一个正常交易的报文拿过来分析一下,首先对比总体的报文长度,如果 长度一样,把每个域的数据长度根据文档拆分出来,与正常交易报文对比,也可以直接发送正常的交易报文然后去检查返回值 。
一般经过上面两个步基本都可以解决8583的问题。
二、如何学习8583
1,首先要了解何为8583。
2,熟悉8583中用到的数据类型应该如何表示,一般是int类型右对齐左补零,字符类型的右对齐左补空格,也有左对齐右补空格的。
3,要理解MAC是如何获取的。
4,学会使用位图工具