日期:2014-05-17  浏览次数:20886 次

有银行开发经验或者熟悉ISO 8583协议的请进!急需帮助!!!
小弟刚刚接到一个和银行打交道的任务,是要用SOCKET编程来实现ISO8583标准,具体是要实现交易、撤销、冲正这几个功能,但是我对这个标准很不了解,不知道具体该怎样实施,具体问题如下:
1.和银行通讯的信息格式是那样的?我只是知道是一个128或者64的串,好像还有位图
2.我该如何封装请求信息?
3.通讯的时候有没有什么证书之内的东西? 
4.关于流的使用,是用IO包还是NIO包,好像有涉及到阻塞式或非阻塞式,不太明白

希望大家能够多多指点,发表一下自己的建议,在这方面我是新人,所以如果你有什么经验也可以提点一下,感激不尽!

------解决方案--------------------
up
------解决方案--------------------

------解决方案--------------------
你要看银联下发的8583的文档,网上应该也有下,那里面说清楚了交易、撤销、冲正这几个交易的说明,如果你与银行对接的时候不走银联,就要问银行是否是采用的银联标准的8583格式还是自定义的8583格式,要他们提供文档,不然你没有办法对接的。你的例子中的buffer数据是8583格式的数据格式,你要对着银行提供的8583格式的文档去对,比如说多少域是金额,多少域是填写银行代码等等,没有提供文档,谁也整不出来
------解决方案--------------------
你要看银联下发的8583的文档,网上应该也有下,那里面说清楚了交易、撤销、冲正这几个交易的说明,如果你与银行对接的时候不走银联,就要问银行是否是采用的银联标准的8583格式还是自定义的8583格式,要他们提供文档,不然你没有办法对接的。你的例子中的buffer数据是8583格式的数据格式,你要对着银行提供的8583格式的文档去对,比如说多少域是金额,多少域是填写银行代码等等,没有提供文档,谁也整不出来
------解决方案--------------------
如果没有整过银行项目,可能会要一些时间去好好看看他们的文档,磨刀不误砍柴工撒,再说这是涉及金额的交易,更要慎重哦
------解决方案--------------------
没那水平~~~~ 帮顶~~~
------解决方案--------------------
一头雾水 等着学习!
------解决方案--------------------
探讨
给了一个例子,但是看不懂,大家看下知道不?

Send buffer, len = 99, 2007-5-21 17:08:18
60 00 03 00 00 04 00 30 20 05 80 20 c0 10 14 00
00 00 00 00 00 03 33 00 00 33 89 00 21 00 03 00
37 60 13 82 20 00 54 77 84 18 4d 02 12 52 01 00
00 92 40 00 38 30 37 35 38 37 37 30 38 30 37 35
33 30 31 33 33 32 20 20 20 20 20 28 bd 84 8a 16
fb 59 10 00 06 30 30 30 30 32 37 00 06 30 30 33
30 30 3…

------解决方案--------------------
UP
------解决方案--------------------
不知道你是否已经拿到了文档,
个人认为应该要确认几点:
1,通信方式(tcpip还是mq等),报文格式。
2,知道之后,就看8583格式文档中各个域如何填值
比如:
60 00 03 00 00 04 00 30 20 05 80 20 c0 10 14 00 
00 00 00 00 00 03 33 00 00 33 89 00 21 00 03 00 
37 60 13 82 20 00 54 77 84 18 4d 02 12 52 01 00 
00 92 40 00 38 30 37 35 38 37 37 30 38 30 37 35 
33 30 31 33 33 32 20 20 20 20 20 28 bd 84 8a 16 
fb 59 10 00 06 30 30 30 30 32 37 00 06 30 30 33 
30 30 32 
如果是64域长的字符串,你要按照文档中的提示一个一个的写值然后组成字符串。
打个比方,本来你要传送送的字符串是“abc123”其中abc代表银行(当然实际上的银行号是8位数字),123代表金额。但8583格式中要求你在8域填银行号,9域填金额,其他的域各有用处也有可能在本交易中不会用到,而在其他交易中会用到,所以你要好好研究一下8583的文档,可以考虑让银行给你一个测试环境,你试试写一个简单的8583格式的通信给发过去,然后再收会来,当然所有的结果都要对照文档来确认返回的结果是否正确。比如他有可能在报文格式中说明,也同时可能在第几域中写明(比如:第3域返回的是00就是成功,其他就是有问题)

3,确认是否需要加密再传送。

建议多看一下银行提供的文档。

------解决方案--------------------
8583格式也是一组明文字符串,就和其他的字符串是一样的,不过在写的时候规定了你怎样写,1域2域。。。。一直排过来,也不要有空格之类的,文档中应该有教你在哪一域填什么值,花点心思看文档吧。
本人觉得没有打包和解包、编码之说。假如第几域出现了“4d”这种字符,也是文档中规定的,例如:"取现"我就要在此域填写"4d",查询就一定要在此域填写“fd”,这是文档中规定的,其意义也应当在文档中有写,根本就不是正常字符转码以后出现的不认识的无意义字符。
------解决方案--------------------
今天和银行交流了下,大概知道了消息格式是 TPDU+MessageTypeID+BitMap+Field
这句话就很有问题,你居然是通过沟通知道这个消息格式,而不是通过他们给的文档知道,如果你没有文档,完全是做不下去的,
TPDU不知到是什么东西? 
MessageTypeID这个是给好的交易类型 
BitMap是标识那个域有值的、 
Field就是那些值
这些都会有在文档中写明,如果没有,大家都不知道是什么东西,怎么填的。
------解决方案--------------------
恩,8583格式弄起来是超烦人的,
比如:
03 Processing Code N 6 M E 000000