C# 错误代码67 ISO8583
现在我正在构建一个ISO8583支付网关应用程序。此应用程序是一个客户机-服务器应用程序,可以充当客户机或服务器。在本例中,我处理的是应用程序的客户端 首先,我将(客户端)应用程序连接到外部服务器。我正在发送查询消息,它运行良好(返回成功消息)。然后,我尝试将此应用程序同时作为客户端和服务器运行(运行两个应用程序并将我的ip设置为ip主机),一个作为客户端,另一个作为服务器。我正在发送查询消息,它不断返回响应代码67(其他错误)。同时,当我只作为客户端运行应用程序时,它也成功了 我不知道这是否有帮助,但这是查询方法C# 错误代码67 ISO8583,c#,payment-gateway,error-code,iso8583,C#,Payment Gateway,Error Code,Iso8583,现在我正在构建一个ISO8583支付网关应用程序。此应用程序是一个客户机-服务器应用程序,可以充当客户机或服务器。在本例中,我处理的是应用程序的客户端 首先,我将(客户端)应用程序连接到外部服务器。我正在发送查询消息,它运行良好(返回成功消息)。然后,我尝试将此应用程序同时作为客户端和服务器运行(运行两个应用程序并将我的ip设置为ip主机),一个作为客户端,另一个作为服务器。我正在发送查询消息,它不断返回响应代码67(其他错误)。同时,当我只作为客户端运行应用程序时,它也成功了 我不知道这是否有
/// <summary>
/// Send Inquiry Message
/// </summary>
private void SendInquiryMessage()
{
var requestMsg = new Iso8583Message(200);
DateTime transmissionDate = DateTime.Now;
requestMsg.Fields.Add(7, string.Format("{0}{1}",
string.Format("{0:00}{1:00}", transmissionDate.Month, transmissionDate.Day),
string.Format("{0:00}{1:00}{2:00}", transmissionDate.Hour,
transmissionDate.Minute, transmissionDate.Second)));
requestMsg.Fields.Add(11, _sequencer.Increment().ToString());
requestMsg.Fields.Add((int)ISO8583ProtocolFields.PROCESSING_CODE, "341019");
requestMsg.Fields.Add((int)ISO8583ProtocolFields.ADDITIONAL_DATA_61, "5271720012002010802012");
#region Send 0200
SendRequestHandlerCtrl sndCtrl = _client.SendExpectingResponse(requestMsg, 1000, true, null);
sndCtrl.WaitCompletion(); // Wait send completion.
if (!sndCtrl.Successful)
{
Console.WriteLine(string.Format("Client: unsuccessful request # {0} ({1}.",
_sequencer.CurrentValue(), sndCtrl.Message));
if (sndCtrl.Error != null)
Console.WriteLine(sndCtrl.Error);
}
else
{
sndCtrl.Request.WaitResponse();
if (sndCtrl.Request.IsExpired)
_expiredRequests++;
else
_requestsCnt++;
}
latestInquiryMessage = sndCtrl.Request.ReceivedMessage as Iso8583Message;
Console.WriteLine(latestInquiryMessage.Fields[39].Value);
#endregion
}
//
///发送查询信息
///
私有void SendInquiryMessage()
{
var requestMsg=新的ISO8583消息(200);
DateTime transmissionDate=DateTime.Now;
Add(7,string.Format(“{0}{1}”),
string.Format(“{0:00}{1:00}”,transmissionDate.Month,transmissionDate.Day),
string.Format(“{0:00}{1:00}{2:00}”),transmissionDate.Hour,
传输速度(分钟,传输速度(秒));
Add(11,_sequencer.Increment().ToString());
Add((int)ISO8583ProtocolFields.PROCESSING_代码,“341019”);
requestMsg.Fields.Add((int)ISO8583ProtocolFields.ADDITIONAL_数据_61,“5271720012002010801212”);
#地区发送0200
SendRequestHandlerCtrl-sndCtrl=_client.SendExpectingResponse(requestMsg,1000,true,null);
sndCtrl.WaitCompletion();//等待发送完成。
如果(!sndCtrl.Successful)
{
Console.WriteLine(string.Format(“客户端:请求失败#{0}({1})”,
_sequencer.CurrentValue(),sndCtrl.Message));
if(sndCtrl.Error!=null)
控制台写入线(sndCtrl.Error);
}
其他的
{
sndCtrl.Request.WaitResponse();
if(sndCtrl.Request.IsExpired)
_expiredRequests++;
其他的
_请求scnt++;
}
latestInquiryMessage=sndCtrl.Request.ReceivedMessage为ISO8583消息;
Console.WriteLine(latestInquiryMessage.Fields[39].Value);
#端区
}
有人知道问题是什么吗?我可能会错过什么
谢谢!我不知道您正试图编写哪个具体的ISO-8583实现,但根据我看到或没有看到的内容以及您的实际问题,我会进行一些猜测。 特别奇怪的是,当它作为客户端与远程服务器进行通信时,却不能同时作为客户端和远程服务器进行通信。您的通信配置在哪里 这就指向了您的TCP/IP配置,我猜您正试图在同一个端口上侦听和通信,因此没有真正完成TCP/IP握手。虽然我相信您可以在技术上侦听端口并为不同的进程进行通信,但我认为这不必要地使事情复杂化 因此,我的猜测是,正在发生的事情和你的问题是,你正在尝试与自己沟通,可能没有完全连接,而不是说“91-发卡机构不可用”或“96-系统错误”,它会给你奇怪的“67其他错误”,因为它可能无法实际发送它 您是否有跟踪,或者您是否观看了netstat-1或更好的Wireshark的连接,如果您没有跟踪来验证您是否已完全建立