public static ProcessingResult ProcessingTest(string dataSource, string processingServiceName, string terminalId, string terminalPassword, string requestId, string cardNum) { ProcessingResult ProcessingResult = new ProcessingResult(); Stopwatch ResponsePing = new Stopwatch(); if (string.IsNullOrEmpty(cardNum)) { cardNum = AdditionalFunc.DataBaseSQL(dataSource, "select card_num as data from cards where rownum = 1 and is_delete = 0 and is_locked = 0", true); if (string.IsNullOrEmpty(cardNum)) { ProcessingResult.Error = Variables.requestStateError; return(ProcessingResult); } } ProcessingResult.cardNum = cardNum; if (string.IsNullOrEmpty(requestId)) { string authRes = BposRequests.AuthRequest(processingServiceName, terminalId, terminalPassword); if (string.Equals(authRes, Variables.requestStateError)) { ProcessingResult.Error = Variables.requestStateError; return(ProcessingResult); } requestId = BposRequests.RRN(cardNum, processingServiceName, terminalId); if (string.Equals(requestId, Variables.requestStateError)) { ProcessingResult.Error = Variables.requestStateError; return(ProcessingResult); } } ProcessingResult.requestId = BposRequests.NextRRN(requestId); ResponsePing.Start(); string res = BposRequests.BalanceRequest(cardNum, processingServiceName, terminalId, ProcessingResult.requestId); ResponsePing.Stop(); //string clearDB = AdditionalFunc.DataBaseSQL(dataSource, "delete from requests where employee_code='Pinger' and terminal_id = (select terminal_id from terminals where code='100')", false); if (String.Equals(res, Variables.requestStateError)) { ProcessingResult.Error = Variables.requestStateError; } else { ProcessingResult.Ping = Math.Round(Convert.ToDecimal(ResponsePing.ElapsedMilliseconds) / 1000, 3).ToString(); } return(ProcessingResult); }
public static Resources GetResourseInfo(Applications Applications) { string sucReqElectCard = String.Empty; string pingResponse = String.Empty; ProcessingResult ProcessingResult = new ProcessingResult(); Stopwatch ResponsePing = new Stopwatch(); ResponsePing.Start(); string[] version = HTTPRequests.GetVersion(Applications.Address); ResponsePing.Stop(); if (!String.Equals(version[0], Variables.offline)) { pingResponse = Math.Round(Convert.ToDecimal(ResponsePing.ElapsedMilliseconds) / 1000, 3).ToString(); } switch (Applications.AppType) { case Variables.processingType: ProcessingResult = Processing.ProcessingTest(Applications.DataSource, Applications.Address, Applications.TerminalId, Applications.TerminalPassword, Applications.requestId, Applications.cardNum); pingResponse = ProcessingResult.Ping; if (String.Equals(ProcessingResult.Error, Variables.requestStateError)) { pingResponse = Variables.error; version[0] = Variables.offline; } sucReqElectCard = AdditionalFunc.DataBaseSQL(Applications.DataSource, "select count(*) as data from requests " + "where trunc(ins_date) = trunc(sysdate) " + "and(request_type = 'PAYMENT_AND_CONFIRM' or request_type = 'DEPOST' or " + "request_type = 'PAYMENT' or request_type = 'CANCEL' or " + "request_type = 'PAYMENT_CONFIRM') " + "and (request_state = 'PROCESSED' or request_state = 'READY' or request_state = 'SUCCESS')", true); break; case Variables.mobileType: sucReqElectCard = AdditionalFunc.DataBaseSQL(Applications.DataSource, "select count(*) as data from card_emission_units where state = 'IN_STOCK'", true); break; default: break; } return(new Resources { address = "Адрес ресурса: " + Applications.Address, name = Applications.Name, status = version[0], version = version[1], sucReqElectCard = sucReqElectCard, responsePing = pingResponse, requestId = ProcessingResult.requestId, cardNum = ProcessingResult.cardNum }); }
public static string BalanceRequest(string cardNum, string processingServiceName, string terminalId, string requestId) { string clientType = "ProcessingTest"; string clientVersion = "1.0.0.0"; string employeeId = "Pinger"; string hardwareID = AdditionalFunc.GetMACAddress(); int isOffline = 0; string shiftId = string.Empty; string type = "BALANCE"; string ver = "0.1"; /*string authRes = AuthRequest(processingServiceName, terminalId, "80626056"); * if (String.Equals(authRes, Variables.errorResponce)) * return Variables.errorResponce;*/ /*string requestId = NextRRN(RRN(cardNum, processingServiceName, terminalId)); * * if (String.Equals(requestId, Variables.errorResponce)) * return Variables.errorResponce;*/ string sign = AdditionalFunc.StringToMD5("cardNum=" + cardNum + ";clientType=" + clientType + ";clientVersion=" + clientVersion + ";employeeId=" + employeeId + ";isOffline=" + isOffline + ";requestId=" + requestId + ";shiftId=" + shiftId + ";terminalId=" + terminalId + ";type=" + type + ";ver=" + ver + ";" + hardwareID); string data = "{\"getBalanceRequest\":{\"request\":{\"ver\":\"" + ver + "\",\"clientType\":\"" + clientType + "\",\"clientVersion\":\"" + clientVersion + "\",\"type\":\"" + type + "\"," + "\"requestId\":\"" + requestId + "\",\"terminalId\":\"" + terminalId + "\",\"requestDate\":\"" + String.Format("{0:yyyy-MM-ddTHH:mm:ss}", DateTime.Now) + "Z\"," + "\"employeeId\":\"" + employeeId + "\",\"cardNum\":\"" + cardNum + "\",\"isOffline\":" + isOffline + ",\"shiftId\":\"" + shiftId + "\",\"sign\":\"" + sign + "\"}}}"; string req_result = HTTPRequests.HTTPRequest(Variables.post, processingServiceName + "bpsApi/bpos/balance", data); if (String.Equals(req_result, Variables.requestStateError)) { return(Variables.requestStateError); } else { JavaScriptSerializer js = new JavaScriptSerializer(); BPSResp resp = js.Deserialize <BPSResp>(req_result); if (String.Equals(resp.getBalanceResponse.response.requestState, Variables.requestStateError) & !String.Equals(resp.getBalanceResponse.response.requestStateCode, Variables.incorrectRequestId)) { return(Variables.requestStateError); } else { return(resp.getBalanceResponse.response.requestStateCode); } } }
public static string AuthRequest(string processingServiceName, string terminalId, string terminalPassword) { string cardNum = string.Empty; string clientType = "ProcessingTest"; string clientVersion = "1.0.0.0"; string employeeId = "Pinger"; string hardwareID = AdditionalFunc.GetMACAddress(); int isOffline = 0; string requestId = "0000000000000000"; string shiftId = string.Empty; string type = "AUTH"; string ver = "0.1"; string sign = AdditionalFunc.StringToMD5("cardNum=" + cardNum + ";clientType=" + clientType + ";clientVersion=" + clientVersion + ";employeeId=" + employeeId + ";hardwareID=" + hardwareID + ";isOffline=" + isOffline + ";requestId=" + requestId + ";shiftId=" + shiftId + ";terminalId=" + terminalId + ";terminalPassword="******";type=" + type + ";ver=" + ver + ";" + hardwareID); string data = "{\"authRequest\":{\"request\":{\"ver\":\"" + ver + "\",\"clientType\":\"" + clientType + "\",\"clientVersion\":\"" + clientVersion + "\",\"type\":\"" + type + "\"," + "\"requestId\":\"" + requestId + "\",\"terminalId\":\"" + terminalId + "\",\"requestDate\":\"" + String.Format("{0:yyyy-MM-ddTHH:mm:ss}", DateTime.Now) + "Z\",\"employeeId\":\"" + employeeId + "\"," + "\"cardNum\":\"\",\"isOffline\":" + isOffline + ",\"shiftId\":\"" + shiftId + "\",\"sign\":\"" + sign + "\"},\"auth\":{\"terminalPassword\":\"" + terminalPassword + "\",\"hardwareID\":\"" + hardwareID + "\"}}}"; string req_result = HTTPRequests.HTTPRequest(Variables.post, processingServiceName + "bpsApi/bpos/auth", data); if (String.Equals(req_result, Variables.requestStateError)) { return(Variables.requestStateError); } else { JavaScriptSerializer js = new JavaScriptSerializer(); BPSResp resp = js.Deserialize <BPSResp>(req_result); if (String.Equals(resp.authResponse.response.requestState, Variables.requestStateError)) { return(Variables.requestStateError); } else { return(resp.authResponse.response.requestState); } } }
public void ThreadTestResourses() { ProcessingsView = new ObservableCollection <Resources> { }; MobilesView = new ObservableCollection <Resources> { }; OthersView = new ObservableCollection <Resources> { }; List <Resources> Resources = new List <Resources>(); ConfigResourceParameter ResourceData = new ConfigResourceParameter(); ConfigNotificationParameter NotifData = new ConfigNotificationParameter(); string[] getStatus = { String.Empty, String.Empty }; string messageOffline, messageElectCard, message = String.Empty; int electCard = 0; ResourceData = GetConfigs.ReadResourceConfig(); NotifData = GetConfigs.ReadNotifConfig(); if (!String.IsNullOrEmpty(ResourceData.Error) | !String.IsNullOrEmpty(NotifData.Error)) { statusInfo = ResourceData.Error + " " + NotifData.Error; colorBackground = Variables.alertColor; } else { while (true) { Resources.Clear(); Application.Current.Dispatcher.Invoke((Action)(() => { ProcessingsView.Clear(); MobilesView.Clear(); OthersView.Clear(); })); Array.Clear(getStatus, 0, 1); messageOffline = string.Empty; messageElectCard = string.Empty; message = string.Empty; countDown = "Пуск"; getStatus = AdditionalFunc.GetStatus(ResourceData.FlagFilePath, ResourceData.SleepTime); title = getStatus[0]; colorBackground = getStatus[2]; for (int j = 0; j < ResourceData.Applications.Length; j++) { statusInfo = "Проверка " + ResourceData.Applications[j].Name; statusToolTip = "Адрес ресурса: " + ResourceData.Applications[j].Address; Resources.Add(ResoursesInfo.GetResourseInfo(ResourceData.Applications[j])); if (String.Equals(ResourceData.Applications[j].AppType, Variables.processingType)) { ResourceData.Applications[j].requestId = Resources[j].requestId; ResourceData.Applications[j].cardNum = Resources[j].cardNum; Application.Current.Dispatcher.Invoke((Action)(() => { ProcessingsView.Add(Resources[j]); })); } if (String.Equals(ResourceData.Applications[j].AppType, Variables.mobileType)) { Application.Current.Dispatcher.Invoke((Action)(() => { MobilesView.Add(Resources[j]); })); Int32.TryParse(Resources[j].sucReqElectCard, out electCard); } if (String.Equals(ResourceData.Applications[j].AppType, Variables.otherType)) { Application.Current.Dispatcher.Invoke((Action)(() => { OthersView.Add(Resources[j]); })); } if (String.Equals(Resources[j].status, Variables.offline)) { colorBackground = Variables.alertColor; if (String.IsNullOrEmpty(messageOffline)) { messageOffline = Resources[j].name + " - оффлайн!"; } else { messageOffline = Resources[j].name + ", " + messageOffline; } } if (String.Equals(ResourceData.Applications[j].AppType, Variables.mobileType) & (electCard < Variables.electCardAlert)) { colorBackground = Variables.alertColor; if (String.IsNullOrEmpty(messageElectCard)) { messageElectCard = Resources[j].name + " - электронных карт осталось меньше " + Variables.electCardAlert; } else { messageElectCard = Resources[j].name + ", " + messageElectCard; } } } if ((!String.IsNullOrEmpty(messageOffline) & String.Equals(getStatus[1], Variables.sendMessage)) | !String.IsNullOrEmpty(messageElectCard)) { if (!String.IsNullOrEmpty(messageOffline) & !String.IsNullOrEmpty(messageElectCard)) { message = DateTime.Now.ToString("dd-MM HH:mm") + "\n" + getStatus[3] + messageOffline + "\n" + messageElectCard; } else { message = DateTime.Now.ToString("dd-MM HH:mm") + "\n" + getStatus[3] + messageOffline + messageElectCard; } if (NotifData.Channel == "T" | NotifData.Channel == "Telegram") { if (TelegramBot.SendTelegram(NotifData.TelegramParams, message) == Variables.requestStateError) { message = "Прокси более не доступен\n" + message; for (int cnt = 0; cnt < NotifData.SMSParams.MobileNotifications.Length; cnt++) { AdditionalFunc.SendSMS(NotifData.SMSParams.MobileNotifications[cnt], NotifData.SMSParams.SenderName, message); } } else if (NotifData.Channel == "S" | NotifData.Channel == "SMS") { for (int cnt = 0; cnt < NotifData.SMSParams.MobileNotifications.Length; cnt++) { AdditionalFunc.SendSMS(NotifData.SMSParams.MobileNotifications[cnt], NotifData.SMSParams.SenderName, message); } } } } statusInfo = "Проверка закончена!\n" + DateTime.Now; statusToolTip = null; for (cnt = ResourceData.ExaminePause; cnt >= 0; cnt--) { countDown = cnt.ToString(); Thread.Sleep(1000); } } } }
public static string HTTPRequest(TelegramParams TelegramParams, string typeRequest, string request, string data) { //AdditionalFunc.Trace("Request: \n" + request + "\n\n" + "Data:\n" + data + "\n\n"); try { ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; CredentialCache cache = new CredentialCache(); HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(request); if (TelegramParams != null) { req.Proxy = new WebProxy(TelegramParams.Proxy.IP, TelegramParams.Proxy.Port); //req.Proxy = new WebProxy("http://" + TelegramParams.Proxy.IP + ":" + TelegramParams.Proxy.Port + "/", true); if (!String.IsNullOrEmpty(TelegramParams.Proxy.Login) & !String.IsNullOrEmpty(TelegramParams.Proxy.Password)) { req.Proxy.Credentials = new NetworkCredential(TelegramParams.Proxy.Login, TelegramParams.Proxy.Password); } } //Игнорируем недостоверный сертификат SSL ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return(true); }; req.KeepAlive = false; req.PreAuthenticate = true; req.Method = typeRequest; req.Timeout = 10000; if (!String.Equals(typeRequest, Variables.get)) { byte[] byteArray = Encoding.UTF8.GetBytes(data); req.ContentType = "application/json"; req.ContentLength = byteArray.Length; Stream dataStreamReq = req.GetRequestStream(); dataStreamReq.Write(byteArray, 0, byteArray.Length); dataStreamReq.Close(); } WebResponse response = req.GetResponse(); Stream dataStreamResp = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStreamResp, Encoding.UTF8); string responseFromServer = reader.ReadToEnd(); reader.Close(); dataStreamResp.Close(); response.Close(); //AdditionalFunc.Trace("Responce: \n" + responseFromServer + "\n\n\n"); return(responseFromServer); } catch (Exception ex) { AdditionalFunc.Trace("Request: \n" + request + "\n\n" + "Data:\n" + data); AdditionalFunc.Trace("Responce: \n" + ex.ToString()); return(Variables.requestStateError); } }