CardOnlinePaymentResultRequest.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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 ICOnlinePayResult
  7. {
  8. Success = 0x00,
  9. Failure
  10. }
  11. public class CardOnlinePaymentResultRequest : IcCardReaderMessageBase
  12. {
  13. public CardOnlinePaymentResultRequest(ICOnlinePayResult result, double amount, int displayTimeout, string errorInfo)
  14. {
  15. RawData = new List<byte>();
  16. RawData.Add(0x09);
  17. if (result == ICOnlinePayResult.Success)
  18. {
  19. RawData.Add(0x00);
  20. RawData.AddRange(Convert.ToInt32(amount * 100).GetBCDBytes(3));
  21. RawData.AddRange(displayTimeout.GetBCDBytes(1));
  22. }
  23. else
  24. {
  25. RawData.Add(0x01);
  26. var errorInfoBytes = System.Text.Encoding.GetEncoding("GBK").GetBytes(errorInfo.PadRight(16, ' '));
  27. if (errorInfoBytes.Length >= 16)
  28. {
  29. for (int i = 0; i < 16; i++)
  30. RawData.Add(errorInfoBytes[i]);
  31. }
  32. }
  33. }
  34. }
  35. /// <summary>
  36. /// Represents an online payment result.
  37. /// This request is used for TCP communication against Terminal.
  38. /// </summary>
  39. public class TcpCardOnlinePaymentResultRequest : IcCardReaderMessageBase
  40. {
  41. public TcpCardOnlinePaymentResultRequest(ICOnlinePayResult result, double amount, int displayTimeout, string errorInfo)
  42. {
  43. RawData = new List<byte>();
  44. RawData.Add(0x09);
  45. if (result == ICOnlinePayResult.Success)
  46. {
  47. RawData.Add(0x00);
  48. //For Tokheim
  49. for (int i = 0; i < 12; i++)
  50. {
  51. RawData.Add(0x00);
  52. }
  53. RawData.AddRange(Convert.ToInt32(amount * 100).GetBCDBytes(3));
  54. RawData.AddRange(displayTimeout.GetBCDBytes(1));
  55. }
  56. else
  57. {
  58. RawData.Add(0x01);
  59. var errorInfoBytes = System.Text.Encoding.GetEncoding("GBK").GetBytes(errorInfo.PadRight(16, ' '));
  60. if (errorInfoBytes.Length >= 16)
  61. {
  62. for (int i = 0; i < 16; i++)
  63. RawData.Add(errorInfoBytes[i]);
  64. }
  65. }
  66. }
  67. }
  68. }