我的问题是基于ISO8583交易消息标准。 我的问题陈述是开发一个应用程序,它将解码ISO8583消息,该消息作为HEX格式的输入提供。
代表:我的输入= 0200B2200000001000000000000000800000201234000000010000011072218012345606A5DFGR021ABCDEFGHIJ 1234567890
使用jPOS库我正在解析这个十六进制代码并输出如下: MTI:0200 Field-3:201234 Field-4:000000010000 Field-7:0110722180 Field-11:123456 Field-44:A5DFGR Field-105:ABCDEFGHIJ 1234567890
现在这个解析的输出我想要解码,即我想将其转换为字符串格式。我想知道它究竟传达了什么,比如它是余额查询还是交易请求等。
所以,我的问题是,是否有任何工具可用于理解iso8583消息的十六进制代码?
答案 0 :(得分:4)
根据ISO 8583规范,1987年,1993年和2003年有大量的方言清单。修改后的协议在字段中使用ASCII,二进制,BCD,EBCDIC数据的混合。
您的消息示例与OmniPay主机到主机实现类似,但本规范未使用的字段105除外。
如果没有其他修改,它就会被https://iso8583.info/lib/OmniPay/H2H/msg
上的在线工具解析使用您的留言"二进制"表示:
0000: 30 32 30 30 42 32 32 30 │ 30 30 30 30 30 30 31 30 0200B22000000010
0010: 30 30 30 30 30 30 30 30 │ 30 30 30 30 30 30 38 30 0000000000000080
0020: 30 30 30 30 32 30 31 32 │ 33 34 30 30 30 30 30 30 0000201234000000
0030: 30 31 30 30 30 30 30 31 │ 31 30 37 32 32 31 38 30 0100000110722180
0040: 31 32 33 34 35 36 30 36 │ 41 35 44 46 47 52 30 32 12345606A5DFGR02
0050: 31 41 42 43 44 45 46 47 │ 48 49 4A 20 31 32 33 34 1ABCDEFGHIJ 1234
0060: 35 36 37 38 39 30 │ 567890
原始消息中有一些垃圾,但这不是解析器的错。 ))
--- # Cheef's parser (Limited version - 5 levels deep only)
- msg: # OmniPay H2H message
MTI: "0200" # Message Type ID.
DE000: "B220000000100000" # Primary bitmap // 1.3.4.7.11.44.
- BM0: # Fields at Primary Bitmap
DE001: "0000000000800000" # Secondary bitmap // 105.
- DE003: # PC
S01: "20" # Transaction Code. // Refund
S02: "12" # Account, from.
S03: "34" # Account, to.
DE004: "000000010000" # Amount, transaction. // 10000
- DE007: # Date and time, transmission
date: "0110" # Date, local transmission. // 2015.01.10
time: "722180" # Time, local transmission. // 00:22:20
DE011: "123456" # STAN.
- DE044: # Additional response data
len: "06"
- val:
RFU: "A5DFGR"
为多种方言定义的在线解析器,因此您可以播放消息数据并分析结果。
答案 1 :(得分:1)
您的示例输入看起来像标准ASCII ISO-8583输入字符串,而不是HEX或任何类型的二进制格式。因此,如果您的所有输入看起来已经解决了大部分问题。
就了解您所拥有的内容而言,有大量公开信息可用于解码ISO-8583消息格式及其值。对于它们中的大多数,它们通常遵循标准字段格式,但可能具有规范所特有的自定义字段值。最大的例外是VISA和MasterCard,但美国的区域性通常非常接近ISO-8583-87。
维基百科页面和我认为的jPOS文档会为您提供大量的文档,例如"什么是字段44?"。我一直在维护和查看不同的组织ISO-8583规范大约15年,您通常必须直接从它们获得特定的供应商规范,以获取数据的所有变体和特定于接口的独特数据处理。有一些是公开的,通过搜索" ISO-8583 .PDF"很容易找到。在Google上也是如此。
捕获是大多数规范,尤其是ISO组织本身的原始ISO-8583规范不包含特定事务的示例。虽然如果您知道数据元素003的内容,您应该能够逻辑地组装许多基本消息类型,以至少为您的解析器程序识别事务类型(即310000 =默认的余额查询),捕获将是全部知道支持字段及其相应的字段特定于实体规范,它们需要真正做出正面或反面,但使用一些常识也可以将它拼凑在一起。
一旦人们非常熟悉ISO-8583,您通常可以查看上面没有二进制文本的文本块,并在心理上解析大部分文本,以了解没有文件的交易类型。有时,即使您熟悉该特定变体,也会有位图。