[英]ISO8583 for Amex
有沒有人為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),
1.美國運通使用的類似ISO8583的規格。
他們使用了幾種定制的ISO 8583方言,用於樣本:
期待您的MTI 1804,我猜它是GCAG,是的,該消息通常是EBCDIC編碼的。
從您的請求中不清楚消息正文。 請添加網絡消息的十六進制表示。 它可以顯示消息體編碼的潛在問題。
我們支持圍繞ISO8583方言和財務數據的在線服務。 這是GCAG ISO 8583消息體解析器 。 您可以檢查傳出消息結構和EBCDIC編碼。
2.關於美國運通主機。
我同意有許多TCP / IP套接字服務可以轉發和交換消息數據與Amex或處理消息本身,但實際上Amex在大多數情況下使用全球Web服務(GWS)IP支付網關,這是具有特定的HTTPS連接HTTP標頭。
由於通過GWS傳輸的HTTP / HTTPS數據,甚至是EBCDIC編碼的消息,處理為ASCII十六進制字符串。
TCP / IP套接字連接可能具有其他消息頭,長度字節,開始和結束分組數據。 確保TCP / IP主機的連接要求。
作為使用測試卡授權的Amex ISO 8583消息處理的工作示例,您可以嘗試GCAG主機模擬器直接通過表單或啟動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.
我不懂C#,但我在JAVA中實現了AMEX。 我想你不應該在EBCDIC中編碼位圖,而只是取消它的內容。 作為位圖,我的意思是' 2030018000000000
'。
我希望這將有所幫助。
消息需要包含描述消息內容長度的兩個字節。 消息中缺少上述兩個字節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.