【问题标题】:ISO8583 for Amex美国运通的 ISO8583
【发布时间】:2018-02-23 20:50:27
【问题描述】:

有没有人为 Amex 实现了消息传递 iso8583?我有一个端口和 ip,但是当我使用套接字发送回显消息 (1804) 时,它没有回答任何内容……编码是 EBCDIC。有人有例子吗?代码在 C# 中

Console.WriteLine("Send Message Echo...");
ManageConnection.ManageSocket _manage = new ManageConnection.ManageSocket(IpAmex, PortAmex);
TupleList<Encoding, string> _request = new TupleList<Encoding, string>();
_request.Add(Encoding.GetEncoding(500), "1804");
_request.Add(Encoding.UTF8, "2030018000000000");
_request.Add(Encoding.GetEncoding(500), "000000");
_request.Add(Encoding.GetEncoding(500), "112233");
_request.Add(Encoding.GetEncoding(500), "1709141205108318700");
var _response = _manage.SendMessageSocket(_request);
return _response;


 public string SendMessageSocket(TupleList<Encoding, string> _messages) {
        string _return = String.Empty;
        try
        {
            byte[] bytes = new byte[65000];
            IPAddress ipAddress = IPAddress.Parse(IP);
            IPEndPoint remoteEP = new IPEndPoint(ipAddress, Port);
            Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            sender.Connect(remoteEP);
            Console.WriteLine("Enviando mensaje....");
            var bytesMessage = GetCompleteMessage(_messages);
            // This function GetCompleteMessage= byte[] bytesMessage = { 241, 248, 240, 244, 32, 48, 1, 128, 0, 0, 0, 0, 240, 240, 240, 240, 241, 241‌​, 241, 242, 242, 243, 243‌​, 241, 247, 240, 249, 241, 244, 241, 242, 240, 245, 241, 240, 248, 243, 241,‌​248, 247, 240, 240 };
            int bytesSent = sender.Send(bytesMessage);
            Console.WriteLine("Esperando respuesta....");
            int bytesRec = sender.Receive(bytes); //Here don't receive nothing
            int len = Array.IndexOf(bytes, byte.MinValue);
            var responseString = Encoding.UTF8.GetString(bytes, byte.MinValue, len);

            sender.Shutdown(SocketShutdown.Both);
            sender.Close();
            return xmlResponseString;
        }
        catch (Exception ex)
        {

            throw;
        }
    }

该消息适用于 ISO8583 全球信用授权指南 (GCAG),

【问题讨论】:

标签: c# iso8583 ebcdic


【解决方案1】:

Message 需要包含描述消息内容长度的两个字节。消息中缺少上述两个字节。

【讨论】:

    【解决方案2】:

    1.美国运通使用的类似 ISO8583 的规范。

    他们使用了几种定制的 ISO 8583 方言,作为示例:

    • 全球信用授权指南 (GCAG),
    • 全球电子数据采集 (GEDC) 终端消息规范,
    • 多接口处理 (PIP) 终端接口。

    看看你的 MTI 1804,我猜它是 GCAG,是的,消息通常是 EBCDIC 编码的。

    从您的请求中并不清楚确切的消息正文。请添加您的网络消息的十六进制表示。它可能显示消息正文编码的潜在问题。

    我们支持围绕 ISO8583 方言和财务数据的在线服务。 这是GCAG ISO 8583 message body parser。 您可以检查传出消息结构和您的 EBCDIC 编码。

    2。关于美国运通主机。

    我同意有很多 TCP/IP Socket 服务可以与 Amex 转发和交换消息数据或自己处理消息,但实际上 Amex 在大多数情况下使用 Global Web Services (GWS) IP Payments Gateway,即 HTTPS与特定 HTTP 标头的连接。

    由于 HTTP/HTTPS 数据通过 GWS 传输消息,即使是 EBCDIC 编码,也被处理为 ASCII 十六进制字符串。

    TCP/IP Socket 连接可能有额外的消息头、长度字节、开始和结束数据包数据。确保 TCP/IP 主机的连接要求。

    作为带有测试卡授权的 Amex ISO 8583 消息处理的工作示例,您可以尝试 GCAG host simulator 直接通过表单发布您的请求消息或启动 HTTPS 主机模拟器服务。

    3.示例作为奖励

    这是通过 Amex GCAG 主机模拟器处理的主位图更正的 1804 消息。以 YAML 表示的消息结构。

    ---
    # Cheef's parser.
    # Copyright (C) 2008-2017 Alexander Shevelev. https://iso8583.info/
    # lib   : "/lib/AMEX/GCAG/" - Global Credit Authorization Guide
    # tool  : "host"
    # stat  : 28 nodes, 14 lookup tables, 92.86% passed (13/14)
    
    host: # AMEX GCAG host simulator
    - rq:#"F1F8F0F42030018000000000F0F0F0F0F0F0F1F1F2F2F3F3F1F7F0F9F1F4..F0F0" # AMEX GCAG message
      - MTI: "1804" # Message Type ID. // network management request
      - DE000: "2030018000000000" # Primary bitmap // 3.11.12.24.25.
      - BM0:#"F0F0F0F0F0F0F1F1F2F2F3F3F1F7F0F9F1F4F1F2F0F5F1F0F8F3F1F8F7F0F0" # Fields at Primary Bitmap
        - DE003:#"000000" # PC // System Audit Control/Echo Message
          - S01: "00" # Transaction Code. // Goods and service
          - S02: "00" # Account, from. // unspecified
          - S03: "00" # Account, to. // unspecified
        - DE011: "112233" # STAN.
        - DE012:#"170914120510" # Date and time, local transaction
          - date: "170914" # Date, local transaction. // 2017.09.14
          - time: "120510" # Time, local transaction. // 12:05:10
        - DE024: "831" # Function code. // echo test.
        - DE025: "8700" # Message reason code (MRC).
    - rs:#"F1F8F1F42030010002000000F0F0F0F0F0F0F1F1F2F2F3F3F1F7F0F9F1F4..F0F0" # AMEX GCAG message
      - MTI: "1814" # Message Type ID. // network management request response
      - DE000: "2030010002000000" # Primary bitmap // 3.11.12.24.39.
      - BM0:#"F0F0F0F0F0F0F1F1F2F2F3F3F1F7F0F9F1F4F1F2F0F5F1F0F8F3F1F0F0F0" # Fields at Primary Bitmap
        - DE003:#"000000" # PC // System Audit Control/Echo Message
          - S01: "00" # Transaction Code. // Goods and service
          - S02: "00" # Account, from. // unspecified
          - S03: "00" # Account, to. // unspecified
        - DE011: "112233" # STAN.
        - DE012:#"170914120510" # Date and time, local transaction
          - date: "170914" # Date, local transaction. // 2017.09.14
          - time: "120510" # Time, local transaction. // 12:05:10
        - DE024: "831" # Function code. // echo test.
        - DE039: "000" # Action Code // approved.
    

    【讨论】:

    • 您好,感谢您的 cmets。我已经使用了上面提到的解析器,并且按照您在示例中描述我的方式发送了消息,但没有结果。消息被模拟器正确解释,但当我发送消息时,美国运通没有回答。这是套接字发送的字节数组。字节[] _message = {241,248,240,244,32,48,1,128,0,0,0,0,240,240,240,240,241,241,241,242,242,243,243,241,247,240,249,241,244,241,242,240,245,241,240,248,243,241,248,247,240,240};谢谢朋友
    • 你是对的,该消息是针对 ISO8583 全球信用授权指南 (GCAG),
    • 请更新您的原始问题并以十六进制表示添加您的示例消息。关于请求和回复格式,最好联系您的主机连接支持。
    【解决方案3】:

    我不懂 C#,但我用 JAVA 实现了 AMEX。我猜你不应该在 EBCDIC 中编码位图,而应该只 unhex 它的内容。作为位图,我的意思是'2030018000000000'。

    我希望这会有所帮助。

    【讨论】:

    • 是的,我的朋友,我已经做到了,但是不工作....请你给我看一个 java 的例子,甚至是 1804 消息(我想看看从在发送之前将字符串转换为字节)
    • 例如,我送字节这样的信息:字节[] _message = {241,248,240,244,32,48,1,128,0,0,0,0,240,240,240,240,241,241,241,242,242,243,243,241,247,240,249,241,244,241,242,240,245,241,240,248,243,241, 248,247,240,240};
    猜你喜欢
    • 2014-06-10
    • 2011-02-23
    • 2011-07-19
    • 2016-12-01
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    相关资源
    最近更新 更多