Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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
            });
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }
Ejemplo n.º 4
0
        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);
                }
            }
        }
Ejemplo n.º 5
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 6
0
        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);
            }
        }