using Edge.Core.Parser.BinaryParser.Util; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ShellChina_EPS_Project_CarPlatePay_EpsClient_App.MessageEntity.Outgoing { public class PaymentRequest : PaymentCommand { /// /// /// /// like 24.45 表示24.45元 /// /// /// /// leave it to null if not specified. /// public PaymentRequest(decimal amount, string epsSequenceNo, int siteLevelNozzleId, string membershipId, string carPlateNo, string terminalId) { base.P_3_处理码 = 020032; base.P_4_交易金额 = amount; base.P_12_交易流水号 = epsSequenceNo; base.P_23_加油枪号 = siteLevelNozzleId.ToString().PadLeft(2, '0'); base.P_24_会员ID = membershipId; if (!string.IsNullOrEmpty(carPlateNo)) base.P_34_车牌号码 = carPlateNo; base.P_41_终端编号 = terminalId; this.GenerateBitMapAndValue(); } private void GenerateBitMapAndValue() { base.Content?.Clear(); base.Content = new List() .Concat(base.P_3_处理码.GetBCDBytes(3)) .Concat(((int)(base.P_4_交易金额 * 100)).GetBCDBytes(6)) .Concat(Encoding.ASCII.GetBytes(base.P_12_交易流水号.PadRight(9, '\0'))) .Concat(Encoding.ASCII.GetBytes(base.P_23_加油枪号.PadLeft(2, '0'))) .Concat(Encoding.ASCII.GetBytes(base.P_24_会员ID.PadRight(20, '\0'))) .Concat(!string.IsNullOrEmpty(base.P_34_车牌号码) ? (Encoding.GetEncoding("GBK").GetBytes(base.P_34_车牌号码).Length.GetBCDBytes(2).Concat(Encoding.GetEncoding("GBK").GetBytes(base.P_34_车牌号码))) : (new byte[] { })) .Concat(Encoding.ASCII.GetBytes(base.P_41_终端编号.PadLeft(12, '0'))).ToList(); //var fullMsgLen = base.Content.Count + 16; if (!string.IsNullOrEmpty(base.P_34_车牌号码)) base.BitMap = BitMapHelper.CreateMap(3, 4, 12, 23, 24, 34, 41).ToList(); else base.BitMap = BitMapHelper.CreateMap(3, 4, 12, 23, 24, 41).ToList(); } } }