PaymentRequest.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using Edge.Core.Parser.BinaryParser.Util;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. namespace ShellChina_EPS_Project_CarPlatePay_EpsClient_App.MessageEntity.Outgoing
  7. {
  8. public class PaymentRequest : PaymentCommand
  9. {
  10. /// <summary>
  11. ///
  12. /// </summary>
  13. /// <param name="amount">like 24.45 表示24.45元</param>
  14. /// <param name="epsSequenceNo"></param>
  15. /// <param name="siteLevelNozzleId"></param>
  16. /// <param name="membershipId"></param>
  17. /// <param name="carPlateNo">leave it to null if not specified.</param>
  18. /// <param name="terminalId"></param>
  19. public PaymentRequest(decimal amount, string epsSequenceNo, int siteLevelNozzleId, string membershipId, string carPlateNo, string terminalId)
  20. {
  21. base.P_3_处理码 = 020032;
  22. base.P_4_交易金额 = amount;
  23. base.P_12_交易流水号 = epsSequenceNo;
  24. base.P_23_加油枪号 = siteLevelNozzleId.ToString().PadLeft(2, '0');
  25. base.P_24_会员ID = membershipId;
  26. if (!string.IsNullOrEmpty(carPlateNo))
  27. base.P_34_车牌号码 = carPlateNo;
  28. base.P_41_终端编号 = terminalId;
  29. this.GenerateBitMapAndValue();
  30. }
  31. private void GenerateBitMapAndValue()
  32. {
  33. base.Content?.Clear();
  34. base.Content = new List<byte>()
  35. .Concat(base.P_3_处理码.GetBCDBytes(3))
  36. .Concat(((int)(base.P_4_交易金额 * 100)).GetBCDBytes(6))
  37. .Concat(Encoding.ASCII.GetBytes(base.P_12_交易流水号.PadRight(9, '\0')))
  38. .Concat(Encoding.ASCII.GetBytes(base.P_23_加油枪号.PadLeft(2, '0')))
  39. .Concat(Encoding.ASCII.GetBytes(base.P_24_会员ID.PadRight(20, '\0')))
  40. .Concat(!string.IsNullOrEmpty(base.P_34_车牌号码) ?
  41. (Encoding.GetEncoding("GBK").GetBytes(base.P_34_车牌号码).Length.GetBCDBytes(2).Concat(Encoding.GetEncoding("GBK").GetBytes(base.P_34_车牌号码)))
  42. : (new byte[] { }))
  43. .Concat(Encoding.ASCII.GetBytes(base.P_41_终端编号.PadLeft(12, '0'))).ToList();
  44. //var fullMsgLen = base.Content.Count + 16;
  45. if (!string.IsNullOrEmpty(base.P_34_车牌号码))
  46. base.BitMap = BitMapHelper.CreateMap(3, 4, 12, 23, 24, 34, 41).ToList();
  47. else
  48. base.BitMap = BitMapHelper.CreateMap(3, 4, 12, 23, 24, 41).ToList();
  49. }
  50. }
  51. }