C# 错误代码67 ISO8583

C# 错误代码67 ISO8583,c#,payment-gateway,error-code,iso8583,C#,Payment Gateway,Error Code,Iso8583,现在我正在构建一个ISO8583支付网关应用程序。此应用程序是一个客户机-服务器应用程序,可以充当客户机或服务器。在本例中,我处理的是应用程序的客户端 首先,我将(客户端)应用程序连接到外部服务器。我正在发送查询消息,它运行良好(返回成功消息)。然后,我尝试将此应用程序同时作为客户端和服务器运行(运行两个应用程序并将我的ip设置为ip主机),一个作为客户端,另一个作为服务器。我正在发送查询消息,它不断返回响应代码67(其他错误)。同时,当我只作为客户端运行应用程序时,它也成功了 我不知道这是否有

现在我正在构建一个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的连接,如果您没有跟踪来验证您是否已完全建立