首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >美国运通的ISO8583

美国运通的ISO8583
EN

Stack Overflow用户
提问于 2017-09-14 18:54:26
回答 3查看 2.5K关注 0票数 1

有人为美国运通实现了消息传递iso8583吗?我有一个端口和ip,但是当我用套接字发送回送消息(1804年)时,它不会回答任何问题.编码采用EBCDIC。有人举过例子吗?代码在C#中

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-15 07:46:01

1.美国运通使用的used 8583类规格.

他们使用了几种定制的ISO 8583方言作为样本:

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

看看您的MTI 1804,我想它是GCAG,是的,信息通常是EBCDIC编码的。

从您的请求是不清楚确切的消息主体。请添加您的网络消息的十六进制表示。它可以显示消息体编码的潜在问题。

我们支持围绕ISO8583方言和金融数据的在线服务。这是GCAG ISO 8583消息体解析器。您可以检查传出消息结构和EBCDIC编码。

2.关于美国运通主机.

我可以同意,有许多TCP/IP套接字服务可以与Amex或处理消息本身转发和交换消息数据,但实际上,在大多数情况下,Amex使用全局Web服务(GWS) IP支付网关,这是带有特定HTTP报头的HTTPS连接。

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

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

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

3.示例作为奖金

下面是您通过Amex GCAG主机模拟器处理的主位图更正的1804年消息。YAML中表示的消息结构。

代码语言:javascript
复制
---
# 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.
票数 2
EN

Stack Overflow用户

发布于 2017-09-15 06:46:12

我不明白C#,但我用JAVA实现了AMEX。我想您不应该在EBCDIC中对位图进行编码,而应该只对解十六进制的内容进行编码。作为位图,我的意思是“2030018000000000”。

我希望这能帮上忙。

票数 1
EN

Stack Overflow用户

发布于 2017-09-22 14:55:07

消息需要包含描述消息内容长度的两个字节。所述两个字节从消息中丢失。

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

https://stackoverflow.com/questions/46226396

复制
相关文章

相似问题

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