using Edge.Core.Parser.BinaryParser.Util; using System; using System.Collections.Generic; namespace WayneChina_IcCardReader_SinoChem.MessageEntity.Outgoing { public enum VerificationResult { Success = 0x00, Failure } public class CardOnlineVerificationResultRequest : IcCardReaderMessageBase { public CardOnlineVerificationResultRequest(VerificationResult result, decimal amount, string errorInfo) { RawData = new List(); RawData.Add(0x08); if (result == VerificationResult.Success) { RawData.Add(0x00); RawData.AddRange(Convert.ToInt32(amount * 100).GetBCDBytes(5)); } else { RawData.Add(0x01); var errorInfoBytes = System.Text.Encoding.GetEncoding("GBK").GetBytes(errorInfo.PadRight(16, ' ')); if (errorInfoBytes.Length >= 16) { for (int i = 0; i < 16; i++) RawData.Add(errorInfoBytes[i]); } } } } /// /// Represents an online verification result. /// It's used for TCP communication against terminal. /// public class TcpCardOnlineVerificationResultRequest : IcCardReaderMessageBase { public TcpCardOnlineVerificationResultRequest(VerificationResult result, decimal amount, string errorInfo) { RawData = new List(); RawData.Add(0x08); if (result == VerificationResult.Success) { RawData.Add(0x00); //For Tokheim for (int i = 0; i < 11; i++) { RawData.Add(0x00); } RawData.AddRange(Convert.ToInt32(amount * 100).GetBCDBytes(5)); } else { RawData.Add(0x01); var errorInfoBytes = System.Text.Encoding.GetEncoding("GBK").GetBytes(errorInfo.PadRight(16, ' ')); if (errorInfoBytes.Length >= 16) { for (int i = 0; i < 16; i++) RawData.Add(errorInfoBytes[i]); } } } } }