private void handleCommunication() { try { System.Net.Sockets.Socket handlerSocket; lock (sockets) { handlerSocket = (Socket)sockets[(sockets.Count - 1)]; // get the last socket that was added sockets.RemoveAt((sockets.Count - 1)); } System.Net.Sockets.NetworkStream networkStream = new System.Net.Sockets.NetworkStream(handlerSocket); //' get the stream from that socket BinaryReader reader = new BinaryReader(networkStream); int length = reader.ReadInt32(); byte[] bytesToRead = reader.ReadBytes(length); String response = System.Text.Encoding.UTF8.GetString(bytesToRead); //CPMPayAgentService.LoggingLayer.PayAgentLogger.Instance().logError(response); operationresult res = performOperation(response, handlerSocket.RemoteEndPoint.ToString()); StringBuilder builder = new StringBuilder(); XmlWriter writer = XmlWriter.Create(builder); new XmlSerializer(typeof(operationresult)).Serialize(writer, res); //CPMPayAgentService.LoggingLayer.PayAgentLogger.Instance().logError(builder.ToString()); byte[] bytesToSend = System.Text.Encoding.UTF8.GetBytes(builder.ToString()); BinaryWriter binWriter = new BinaryWriter(networkStream); binWriter.Write(bytesToSend.Length); binWriter.Write(bytesToSend); binWriter.Flush(); binWriter.Close(); handlerSocket.Close(); } catch (Exception ex) { ////TODO: need to send it to named pipe as well if (ErrorOccurred != null) { CPMErrorEventArgs args = new CPMErrorEventArgs(); args.Message = "PerformOperation Error: " + ex.Message; args.time = DateTime.Now; ErrorOccurred(this, args); } status = "handleCommunication() error occurred: " + ex.Message; } status = "handleCommunication() was called. "; }
private operationresult HowAreYou(string curDate, string checksum) { status = "HowAreYou() was called"; string calculatedMD5 = HashUtility.CalculateMD5(curDate); if (!calculatedMD5.Equals(checksum)) { return(new operationresult(IntegerConstants.WRONG_CHECKSUM, "неправильная контрольная сумма", "CPMTcpServer.HowAreYou()")); } DateTime externalDate = DateTime.ParseExact(curDate, "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture); DateTime now = DateTime.Now; CPMPayAgentService.LoggingLayer.PayAgentLogger.Instance().logError("HOWYOU Now: " + now.ToString() + " curdate: " + externalDate.ToString() + (externalDate.CompareTo(now.AddMinutes(15)) < 0) + " " + (externalDate.CompareTo(now.AddMinutes(-15)) > 0)); if (!(externalDate.CompareTo(now.AddMinutes(15)) < 0 && (externalDate.CompareTo(now.AddMinutes(-15)) > 0))) { return(new operationresult(IntegerConstants.WRONG_TIME, "неправильное время", "Server.HowAreYou()")); } long diff = DateTime.Now.Ticks - beginTime.Ticks; TimeSpan span = new TimeSpan(diff); string livetime = "" + span.Days + "d " + (int)span.Hours + "h " + span.Minutes + "m "; operationresult result = new operationresult(); RegistrationResultItem item; try { item = OperationPerformer.Instance().getRegistrationResult(); } catch (Exception e) { result.result = IntegerConstants.SUCCESS; result.status = "-500"; result.statusNote = "Сервис не готов к работе! " + e.Message; result.livetime = livetime; return(result); } switch (item) { case RegistrationResultItem.RegistrationFailed: result.result = IntegerConstants.SUCCESS; result.status = "-1"; result.statusNote = "Сервис не готов к работе!"; break; case RegistrationResultItem.RegistrationSuccefully: result.result = IntegerConstants.SUCCESS; result.status = "1"; result.statusNote = "Сервис готов к работе!"; break; case RegistrationResultItem.Unknown: result.result = IntegerConstants.SUCCESS; result.status = "-500"; result.statusNote = "Сервис не готов к работе!"; break; default: break; } result.livetime = livetime; return(result); }
private void btnOACreate_Click(object sender, EventArgs e) { ServerResult res = new ServerResult() { Message = string.Empty }; try { string curDateStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); openaccount ocrequest = new openaccount() { sessionid = txtCCSessionID.Text, accountSubNumber = Int32.Parse(txtCAAccSubNum.Text), clientDataId = Int32.Parse(txtCACliDataID.Text), counterAgentAccountID = Int32.Parse(txtCACtrAgentAccID.Text), cPart = Int32.Parse(txtCACPart.Text), curDate = curDateStr, extAccountNumber = txtCAExtAccNum.Text, externalDocNumber = txtCAExtDocNum.Text }; ocrequest.checksum = CPMPaymentsService.Utility.HashUtility.CalculateMD5(txtCCSessionID.Text, curDateStr); request request = new request() { openaccount = ocrequest }; operationresult result = null; StringBuilder builder = new StringBuilder(); XmlWriter writer = XmlWriter.Create(builder); new System.Xml.Serialization.XmlSerializer(typeof(request)).Serialize(writer, request); CPMPaymentLogging.Instance().logXML("openAccount() XML to send: " + builder.ToString()); // commented for test puproses System.Net.Sockets.Socket handlerSocket = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp); handlerSocket.Connect(CPMPaymentsService.Configuration.Settings.IP, CPMPaymentsService.Configuration.Settings.Port); if (handlerSocket.Connected) { System.Net.Sockets.NetworkStream networkStream = new System.Net.Sockets.NetworkStream(handlerSocket); //' get the stream from that socket byte[] bytesToSend = System.Text.Encoding.UTF8.GetBytes(builder.ToString()); BinaryWriter binWriter = new BinaryWriter(networkStream); binWriter.Write(bytesToSend.Length); binWriter.Write(bytesToSend); binWriter.Flush(); BinaryReader reader = new BinaryReader(networkStream); int length = reader.ReadInt32(); byte[] bytesToRead = reader.ReadBytes(length); String response = System.Text.Encoding.UTF8.GetString(bytesToRead); TextReader txtReader = new StringReader(response); result = (operationresult)(new System.Xml.Serialization.XmlSerializer(typeof(operationresult))).Deserialize(txtReader); res.Result = result; binWriter.Close(); handlerSocket.Close(); richTBCCAnswer.Text = txtReader.ReadToEnd(); } } catch (Exception ex) { res.Message = ex.Message; } }
private void btnCreateClient_Click(object sender, EventArgs e) { ServerResult res = new ServerResult() { Message = string.Empty }; try { string curDateStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); openclient ocrequest = new openclient() { sessionid = txtCCSessionID.Text, address = txtCCAddress.Text, bankid = Int32.Parse(txtCCBankID.Text), clientClass = Int32.Parse(txtCCClientClass.Text), contractDate = dtPickerCCContractDate.Value, contractNumber = txtCCContractNum.Text, curDate = curDateStr, index = txtCCIndex.Text, INN = txtCCINN.Text, name = txtCCName.Text, OKPO = txtCCOKPO.Text, participantid = Int32.Parse(txtCCParticipantID.Text), region = Int32.Parse(txtCCRegion.Text), taxID1 = txtCCTaxID1.Text, taxID2 = txtCCTaxID2.Text }; ocrequest.checksum = CPMPaymentsService.Utility.HashUtility.CalculateMD5(txtCCSessionID.Text, curDateStr); request request = new request() { openclient = ocrequest }; operationresult result = null; StringBuilder builder = new StringBuilder(); XmlWriter writer = XmlWriter.Create(builder); new System.Xml.Serialization.XmlSerializer(typeof(request)).Serialize(writer, request); CPMPaymentLogging.Instance().logXML("openClient() XML to send: " + builder.ToString()); // commented for test puproses System.Net.Sockets.Socket handlerSocket = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp); handlerSocket.Connect(CPMPaymentsService.Configuration.Settings.IP, CPMPaymentsService.Configuration.Settings.Port); if (handlerSocket.Connected) { System.Net.Sockets.NetworkStream networkStream = new System.Net.Sockets.NetworkStream(handlerSocket); //' get the stream from that socket byte[] bytesToSend = System.Text.Encoding.UTF8.GetBytes(builder.ToString()); BinaryWriter binWriter = new BinaryWriter(networkStream); binWriter.Write(bytesToSend.Length); binWriter.Write(bytesToSend); binWriter.Flush(); BinaryReader reader = new BinaryReader(networkStream); int length = reader.ReadInt32(); byte[] bytesToRead = reader.ReadBytes(length); String response = System.Text.Encoding.UTF8.GetString(bytesToRead); TextReader txtReader = new StringReader(response); result = (operationresult)(new System.Xml.Serialization.XmlSerializer(typeof(operationresult))).Deserialize(txtReader); res.Result = result; binWriter.Close(); handlerSocket.Close(); richTBCCAnswer.Text = txtReader.ReadToEnd(); } } catch (Exception ex) { res.Message = ex.Message; } }