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();
}
}
}