Beispiel #1
0
        private void Sale(decimal money, string terminalId, bool oneStep = false)
        {
            AnsSale    sale;
            string     str    = decimal.ToInt32(money * 100M).ToString("d");
            PipeClient client = new PipeClient();

            client.Logger = Logger;
            string message = string.Empty;

            try
            {
                if (oneStep)
                {
                    message = client.SendPipeMessage("<?xml version='1.0' encoding='windows-1251'?>\r\n<TCLib version='3.04'>\r\n\t<info>\r\n\t\t<reqStatus/>\r\n\t</info>\r\n</TCLib>", 0x1388, true);
                    AnsStatus status = (AnsStatus)this.ExtractMessage(message, typeof(AnsStatus));
                }
                //base.CallBack("SetInfo", this._saleWaitingMessage);
                Logger("Ждем", EventEntryType.Event);
                message = client.SendPipeMessage(CardOperationType.reqSaleCard, string.Format("<?xml version='1.0' encoding='Windows-1251'?>\r\n<TCLib version='3.04'>\r\n\t<card>\r\n\t\t<reqSaleCard>\r\n\t\t\t<amount>{0}</amount>\r\n\t\t\t<terminalID>{1}</terminalID>\r\n\t\t\t<operation>{2}</operation>\r\n\t\t</reqSaleCard>\r\n\t</card>\r\n</TCLib>", str, terminalId, this.OperationID), 0x1e848, true);
                sale    = (AnsSale)this.ExtractMessage(message, typeof(AnsSale));
            }
            catch (MrkErrorException exception)
            {
                string str3 = string.Format("Ошибка продажи карты: {0}. Деньги возвращены на сдачу.", exception.Error.Description);
                //base.AllMoneyToBalance();
                //this.WriteEntry(str3, EventEntryType.Error);
                Logger(str3, EventEntryType.Error);
                //base.CallBack("SetError", str3);
                //base.CallBack("SetPrintStep", str3);
                return;
            }
            catch (Exception exception2)
            {
                //base.AllMoneyToBalance();
                Logger("Неожиданная ошибка продажи: " + exception2.ToString(), EventEntryType.Error);
                //base.CallBack("SetError", exception2.Message);
                //base.CallBack("SetPrintStep", "Ошибка продажи карты. Деньги возвращены на сдачу");
                return;
            }
            cardInfo cardInfo = sale.card.AnsSaleCard.CardInfo;

            //this.SetAccountInfo(cardInfo);
            object[] args = new object[] { Environment.NewLine, cardInfo.Description, (cardInfo.Balance / 100M).ToString("F"), cardInfo.Pan, this.CreateDate(cardInfo.Date) };
            string   str4 = string.Format("Не забудьте забрать карту!{0}{0}Информация о карте: {1}{0} Текущий баланс: {2} руб.{0}Номер карты: {3}{0}Срок действия: {4}{0}", args);

            Logger(str4, EventEntryType.Event);
            Thread.Sleep(200);
            //base.CallBack("SetPrintStep", "Не забудьте забрать карту!");
        }
Beispiel #2
0
        public DisppenserStatus SendAction(CardOperationType cardOperationType)
        {
            DisppenserStatus result = DisppenserStatus.DispenserError;
            PipeClient       client = new PipeClient();

            client.Logger = Logger;
            string      message   = client.SendPipeMessage(CardOperationType.reqStatus, reqStatus, PipeClient.CONNECT_TIMEOUT, true);
            AnsStatus   status    = (AnsStatus)this.ExtractMessage(message, typeof(AnsStatus));
            MrkStatuses mrkStatus = status.info.MrkStatus;

            if (!mrkStatus.MrkReady)
            {
                //this.SetErrorScreen("status.MrkReady == false", "МРК не готов к работе.", true);
                textLoger.Text += "МРК не готов к работе.";
            }
            else if (cardOperationType != CardOperationType.reqSaleCard)
            {
                if (mrkStatus.ReaderReady == 0)
                {
                    //base.CallBack("SetInfoWithMainMenu", this._readerErrorMessage);
                    Logger("Ошибка", EventEntryType.Error);
                }
                else
                {
                    client.SendPipeMessage(CardOperationType.reqControl_reader_1, "<?xml version='1.0' encoding='Windows-1251'?>\r\n<TCLib version='3.04'>\r\n\t<service>\r\n\t\t<reqControl>\r\n\t\t\t<reader>1</reader>\r\n\t\t</reqControl>\r\n\t</service>\r\n</TCLib>", PipeClient.CONNECT_TIMEOUT, true);
                    //base.CallBack("SetInfoWithMainMenu", this._waitCardMessage);
                    this.StartPooling(cardOperationType);
                    Logger("Ждем", EventEntryType.Event);
                }
            }
            else
            {
                DisppenserStatus dispenserStatus = (DisppenserStatus)mrkStatus.DispenserStatus;
                string           str2            = "Продажа карт запрещена: ";
                string           format          = "Стоимость карты при получении: {0} РУБ.{1}Наличие карт в терминале: {2}";
                decimal          num             = mrkStatus.CardPrice / 100M;
                switch (dispenserStatus)
                {
                case DisppenserStatus.DispenserError:
                    Logger(str2 + "диспенсер не работает", EventEntryType.Error);
                    result = DisppenserStatus.DispenserError;
                    break;

                case DisppenserStatus.NoCard:
                    Logger(string.Format(format, num, Environment.NewLine, "НЕТ"), EventEntryType.Warning);
                    result = DisppenserStatus.NoCard;
                    break;

                case DisppenserStatus.FewCard:
                case DisppenserStatus.ManyCard:
                    if (!(mrkStatus.CardPrice == 0M))
                    {
                        Logger(string.Format(format, num, Environment.NewLine, "ЕСТЬ"), EventEntryType.Event);
                        result = (DisppenserStatus)mrkStatus.DispenserStatus;
                        break;
                    }
                    Logger(str2 + "цена карты не определена.", EventEntryType.Warning);
                    break;
                }
            }
            return(result);
        }