示例#1
0
        public void Process()
        {
            NetworkStream          stream   = null;
            kkmServiceResponseAtol respAtol = new kkmServiceResponseAtol();

            try
            {
                stream = client.GetStream();
                byte[] data = new byte[64]; // буфер для получаемых данных
                // получаем сообщение
                StringBuilder builder = new StringBuilder();
                int           bytes   = 0;
                do
                {
                    bytes = stream.Read(data, 0, data.Length);
                    builder.Append(Encoding.GetEncoding(1251).GetString(data, 0, bytes));
                }while (stream.DataAvailable);
                string             message    = builder.ToString();
                string             forceXml   = "";
                kkmServiceRequest  m_requests = Serializer.FromXml <kkmServiceRequest>(message);
                kkmServiceResponse m_response = SendInfoToKKM(m_requests, out forceXml);

                Console.WriteLine(message);
                message = "what a f?";
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (stream != null)
                {
                    stream.Close();
                }
                if (client != null)
                {
                    client.Close();
                }
            }
        }
示例#2
0
        private kkmServiceResponse SendInfoToKKM(kkmServiceRequest request, out string forceXml)
        {
            forceXml = null;
            string      a_uuid;
            string      a_exeptionMessage;
            string      a_status;
            CultureInfo m_formatProvider = new CultureInfo("en-US", true);

            m_formatProvider.DateTimeFormat.ShortDatePattern     = "dd/MM/yyyy";
            m_formatProvider.NumberFormat.NumberDecimalSeparator = ".";


            kkmServiceResponse resp = new kkmServiceResponse();

            lock (POSAtolOnline.SyncObj)
            {
                Logs.LogAdd("Данные для ККМ: m_Config.kkmTypeProtokol = " + m_Config.kkmTypeProtokol + " m_Config.kkmIPAddress = " + m_Config.kkmIPAddress + " m_Config.kkmPort = " +
                            m_Config.kkmPort);

                POSAtolOnline POSATOffline = new POSAtolOnline();
                POSATOffline.m_Config = m_Config;


                if (POSATOffline.SendPaymentATOL(m_Config, request, m_formatProvider, out a_uuid, out a_exeptionMessage, out a_status) != "")
                {
                    Logs.LogAdd("Отправка на АТОЛОнлайн: ");
                    resp.Kkmserialnumber          = "";
                    resp.Kkmeklznumber            = "";
                    resp.Kkmshiftsessionnumber    = "";
                    resp.Kkmglobalsummpaymentfrom = 0.0m;
                    resp.ShiftSummIncome          = 0.0m;
                    resp.LastKPKDateTime          = DateTime.Now;
                    resp.checkNumber              = "";
                    resp.shiftSummPayment         = 0.0m;
                    resp.shiftSummPaymentRevert   = 0.0m;
                    resp.operationDocumentNumber  = 0;
                    resp.operationNumberFPD       = "";
                    resp.shiftReceiptNumber       = 0;
                    resp.shiftReceiptRevertNumber = 0;
                    resp.countDocumentNotSentOFD  = "";
                    resp.registrationNumberKKT    = "";
                    resp.atoluuid = a_uuid;
                    if (m_Config.debugLevel > 1)
                    {
                        Logs.LogAdd("Отправлена грууповая операция: " + request.groupOperId + " Возвращенный UUID: " + a_uuid);
                    }

                    resp.groupOperId  = request.groupOperId;
                    resp.requestDate  = DateTime.Now.ToString("yyyy-MM-ssTHH:mm:ss");
                    resp.code         = 0;
                    resp.errorMessage = "";
                }
                else
                {
                    Logs.LogAdd("Ошибка : ");
                }


                if (resp.code != 0)
                {
                    resp.errorMessage += " (code=" + resp.code + ")";
                }

                switch (resp.code)
                {
                case 0:
                    //всё хорошо
                    resp.code = 0;
                    break;

                /*case 21:
                 *  //ошибка, повторите запрос на печать
                 *  resp.code = 1;
                 *  break;*/
                default:
                    //фатальная ошибка
                    resp.code = 1;
                    break;
                }
            }
            return(resp);
        }