首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Iso8583消息编码和解码

Iso8583消息编码和解码
EN

Stack Overflow用户
提问于 2014-08-28 13:16:38
回答 2查看 13.4K关注 0票数 3

我的问题是基于ISO8583交易消息标准的。我的问题陈述是开发一个应用程序,这将解码的ISO8583信息,这是作为十六进制格式的输入提供。

例如: my input = 0200B2200000001000000000000000800000201234000000010000011072218012345606A5DFGR021ABCDEFGHIJ 1234567890

我使用jPOS库解析这个十六进制代码,输出如下: MTI :0200Field-3: 201234 Field-4 : 000000010000 Field-7 : 0110722180 Field-11 : 123456 Field-44 : A5DFGR Field-105 :ABCDEFGHIJ1234567890

现在我想要解码这个解析后的输出,也就是说,我想把它转换成字符串格式。我想知道它到底传达了什么,比如它是余额查询还是交易请求等。

所以,我的问题是,有没有可用的工具来理解iso8583消息的十六进制代码?

EN

回答 2

Stack Overflow用户

发布于 2015-06-02 07:41:17

1987年、1993年和2003年,有大量基于ISO 8583规范的方言列表。修改后的协议在字段中混合使用ASCII、Binary、BCD和EBCDIC数据。

您的消息示例看起来类似于OmniPay主机到主机的实现,除了本规范未使用的字段105。

在没有额外修改的情况下,https://iso8583.info/lib/OmniPay/H2H/msg的在线工具对其进行了解析

使用您的消息“二进制”表示:

代码语言:javascript
复制
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

以下是原始消息中的一些垃圾,但这不是解析器的错误。))

代码语言:javascript
复制
--- # 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"

在线解析器定义了几种方言,因此您可以处理消息数据并分析结果。

票数 5
EN

Stack Overflow用户

发布于 2014-10-09 12:54:09

您的示例输入看起来像一个标准的ASCII ISO-8583输入字符串,而不是任何类型的十六进制或二进制格式。因此,如果您的所有输入看起来都是这样,那么您的大部分问题都已经解决了。

就理解您所拥有的内容而言,有大量公开可用的特定于解码ISO-8583消息格式及其值的信息。对于它们中的大多数,它们通常遵循标准字段格式,但可能具有特定于规范的自定义字段值。最大的例外是VISA和MasterCard,但美国的地区性签证通常非常接近ISO8583-87。

我假设维基百科页面和jPOS文档可以为您提供您正在寻找的大量文档,比如“什么是字段44?”。大约15年来,我一直在维护和研究不同的组织ISO-8583规范,您通常必须直接从他们那里获得特定的供应商规范,以获得所有数据变体和特定于接口的独特数据处理。有一些是公开可用的,很容易在谷歌上搜索"ISO-8583 .PDF“就能找到。

问题是大多数规范,特别是ISO组织本身的原始ISO-8583规范并不包含特定事务的示例。虽然如果你知道数据元素003的内容,你应该能够在逻辑上组装许多基本的消息类型,以便至少识别你的解析器程序的事务类型(例如,310000 =默认的余额查询),但是捕获将是知道所有的支持字段及其对应的字段,这些字段特定于实体规范,这些字段是真正弄清楚它的头部或尾部所需的,但是使用一些常识,你也可以将它们拼凑在一起。

一旦您非常熟悉ISO-8583,您通常可以查看上面没有二进制的文本块,并在头脑中解析其中的大部分,以了解没有位图的事务类型,有时即使您熟悉特定的变体。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25541185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档