PosPushDataNewHelper.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Library;
  5. using MySystem.MpMainModels2;
  6. namespace MySystem
  7. {
  8. public class PosPushDataNewHelper
  9. {
  10. public readonly static PosPushDataNewHelper Instance = new PosPushDataNewHelper();
  11. private PosPushDataNewHelper()
  12. { }
  13. //绑定数据
  14. public static void Bind(SpModels.BindRecord mer, string kind)
  15. {
  16. try
  17. {
  18. string ProductType = mer.ProductType;
  19. if(kind.Contains("好哒二维码")) ProductType = "20";
  20. Dictionary<string, object> dataContent = new Dictionary<string, object>();
  21. dataContent.Add("pos_sn", mer.MerSnNo); //机具sn
  22. dataContent.Add("mer_no", mer.MerNo); //商户号
  23. dataContent.Add("id_card", ""); //商户身份证
  24. dataContent.Add("mer_name", mer.MerName); //商户姓名
  25. dataContent.Add("mer_mobile", ""); //商户手机号
  26. dataContent.Add("request_id", getRequestId(mer.Id, "bind")); //流水号
  27. dataContent.Add("bind_time", mer.CreateTime.Value.ToString("yyyy-MM-dd HH:mm:ss")); //绑定时间
  28. dataContent.Add("brand", int.Parse(function.CheckInt(ProductType))); //品牌
  29. if(kind.Contains("好哒二维码"))
  30. {
  31. Push("qr_bind", dataContent);
  32. }
  33. else
  34. {
  35. Push("bind", dataContent);
  36. }
  37. }
  38. catch (Exception ex)
  39. {
  40. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "推送绑定数据异常");
  41. }
  42. }
  43. //押金数据
  44. public static void Deposit(SpModels.ActivateRecord act)
  45. {
  46. try
  47. {
  48. List<string> BrandIds = new List<string>();
  49. decimal TradeAmount = decimal.Parse(function.CheckNum(act.SeoTitle));
  50. Dictionary<string, object> dataContent = new Dictionary<string, object>();
  51. dataContent.Add("pos_sn", act.SnNo); //机具sn
  52. dataContent.Add("mer_no", act.MerNo); //商户号
  53. dataContent.Add("request_id", getRequestId(act.Id, "deposit")); //流水号
  54. dataContent.Add("deposit_amount", TradeAmount); //押金金额
  55. dataContent.Add("trade_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //交易时间
  56. dataContent.Add("card_type", 1); //卡类型
  57. dataContent.Add("brand", int.Parse(function.CheckInt(act.ProductType))); //品牌
  58. Push("deposit", dataContent);
  59. }
  60. catch (Exception ex)
  61. {
  62. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "推送押金数据异常");
  63. }
  64. }
  65. //交易数据
  66. public static void Trade(ConsumerOrders trade, string kind)
  67. {
  68. try
  69. {
  70. int brand = 18;
  71. if(kind.Contains("好哒语音王")) brand = 18;
  72. if(kind.Contains("收款王M820")) brand = 19;
  73. if(kind.Contains("收款王M826")) brand = 20;
  74. if(kind.Contains("S312")) brand = 21;
  75. if(kind.Contains("好哒扫码通")) brand = 29;
  76. if(kind.Contains("好哒二维码")) brand = 20;
  77. Dictionary<string, object> dataContent = new Dictionary<string, object>();
  78. dataContent.Add("pos_sn", trade.SnNo); //机具sn
  79. dataContent.Add("mer_no", trade.TradePayNo); //商户号
  80. dataContent.Add("request_id", trade.OrderNo); //流水号
  81. dataContent.Add("trade_amount", trade.PayMoney); //交易金额
  82. dataContent.Add("trade_time", trade.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); //交易时间
  83. dataContent.Add("brand", brand); //品牌
  84. dataContent.Add("is_act", trade.IsAct); //品牌
  85. dataContent.Add("card_type", 1); //卡类型
  86. if(kind.Contains("好哒二维码"))
  87. {
  88. dataContent.Add("qr_pay_flag", 1); //云闪付标记
  89. }
  90. else
  91. {
  92. dataContent.Add("qr_pay_flag", 0); //云闪付标记
  93. }
  94. dataContent.Add("fee_rate", trade.IsAct == 1 ? 0.6M : 0.63M); // 费率
  95. dataContent.Add("fee_amt", trade.IsAct == 1 ? 0 : 3); // 秒到费
  96. Push("trade", dataContent);
  97. }
  98. catch (Exception ex)
  99. {
  100. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "推送交易数据异常");
  101. }
  102. }
  103. public static void Push(string dataType, Dictionary<string, object> dataContent)
  104. {
  105. Dictionary<string, object> data = new Dictionary<string, object>();
  106. data.Add("data_type", dataType);
  107. data.Add("data_content", dataContent);
  108. RedisDbconn.Instance.AddList("KxsPosDataQueue", Newtonsoft.Json.JsonConvert.SerializeObject(data));
  109. }
  110. public static string getRequestId(int id, string type)
  111. {
  112. if(id > 0)
  113. {
  114. return function.MD5_32(id.ToString() + type);
  115. }
  116. return DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
  117. }
  118. }
  119. }