CardOnlineVerificationResultRequest.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using Edge.Core.Parser.BinaryParser.Util;
  2. using System;
  3. using System.Collections.Generic;
  4. namespace WayneChina_IcCardReader_SinoChem.MessageEntity.Outgoing
  5. {
  6. public enum VerificationResult
  7. {
  8. Success = 0x00,
  9. Failure
  10. }
  11. public class CardOnlineVerificationResultRequest : IcCardReaderMessageBase
  12. {
  13. public CardOnlineVerificationResultRequest(VerificationResult result, decimal amount, string errorInfo)
  14. {
  15. RawData = new List<byte>();
  16. RawData.Add(0x08);
  17. if (result == VerificationResult.Success)
  18. {
  19. RawData.Add(0x00);
  20. RawData.AddRange(Convert.ToInt32(amount * 100).GetBCDBytes(5));
  21. }
  22. else
  23. {
  24. RawData.Add(0x01);
  25. var errorInfoBytes = System.Text.Encoding.GetEncoding("GBK").GetBytes(errorInfo.PadRight(16, ' '));
  26. if (errorInfoBytes.Length >= 16)
  27. {
  28. for (int i = 0; i < 16; i++)
  29. RawData.Add(errorInfoBytes[i]);
  30. }
  31. }
  32. }
  33. }
  34. /// <summary>
  35. /// Represents an online verification result.
  36. /// It's used for TCP communication against terminal.
  37. /// </summary>
  38. public class TcpCardOnlineVerificationResultRequest : IcCardReaderMessageBase
  39. {
  40. public TcpCardOnlineVerificationResultRequest(VerificationResult result, decimal amount, string errorInfo)
  41. {
  42. RawData = new List<byte>();
  43. RawData.Add(0x08);
  44. if (result == VerificationResult.Success)
  45. {
  46. RawData.Add(0x00);
  47. //For Tokheim
  48. for (int i = 0; i < 11; i++)
  49. {
  50. RawData.Add(0x00);
  51. }
  52. RawData.AddRange(Convert.ToInt32(amount * 100).GetBCDBytes(5));
  53. }
  54. else
  55. {
  56. RawData.Add(0x01);
  57. var errorInfoBytes = System.Text.Encoding.GetEncoding("GBK").GetBytes(errorInfo.PadRight(16, ' '));
  58. if (errorInfoBytes.Length >= 16)
  59. {
  60. for (int i = 0; i < 16; i++)
  61. RawData.Add(errorInfoBytes[i]);
  62. }
  63. }
  64. }
  65. }
  66. }