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", "Не забудьте забрать карту!"); }
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); }