PosPushDataNewHelper.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  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", function.MD5_32(mer.MerSnNo + mer.MerNo)); //流水号
  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. dataContent.Add("user_id", mer.QueryCount);
  32. Push("qr_bind", dataContent);
  33. }
  34. else
  35. {
  36. Push("bind", dataContent);
  37. }
  38. }
  39. catch (Exception ex)
  40. {
  41. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "推送绑定数据异常");
  42. }
  43. }
  44. //押金数据
  45. public static void Deposit(SpModels.ActivateRecord act)
  46. {
  47. try
  48. {
  49. List<string> BrandIds = new List<string>();
  50. decimal TradeAmount = decimal.Parse(function.CheckNum(act.SeoTitle));
  51. Dictionary<string, object> dataContent = new Dictionary<string, object>();
  52. dataContent.Add("pos_sn", act.SnNo); //机具sn
  53. dataContent.Add("mer_no", act.MerNo); //商户号
  54. dataContent.Add("request_id", getRequestId(act.SnNo + act.MerNo, "deposit")); //流水号
  55. dataContent.Add("deposit_amount", TradeAmount); //押金金额
  56. dataContent.Add("trade_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //交易时间
  57. dataContent.Add("card_type", 1); //卡类型
  58. dataContent.Add("brand", int.Parse(function.CheckInt(act.ProductType))); //品牌
  59. Push("deposit", dataContent);
  60. }
  61. catch (Exception ex)
  62. {
  63. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "推送押金数据异常");
  64. }
  65. }
  66. //交易数据
  67. public static void Trade(ConsumerOrders trade, string kind)
  68. {
  69. try
  70. {//{"pos_sn":"LKB01231000305000491","mer_no":"","request_id":"2025011015514890534136704","trade_amount":3.0,"trade_time":"2025-01-10 15:51:49","brand":100,"card_type":1,"qr_pay_flag":0,"fee_rate":0.63,"fee_amt":3}
  71. int brand = 18;
  72. if(kind.Contains("好哒语音王")) brand = 18;
  73. if(kind.Contains("收款王M820")) brand = 19;
  74. if(kind.Contains("收款王M826")) brand = 20;
  75. if(kind.Contains("S312")) brand = 21;
  76. if(kind.Contains("好哒扫码通")) brand = 29;
  77. if(kind.Contains("好哒二维码")) brand = 20;
  78. Dictionary<string, object> dataContent = new Dictionary<string, object>();
  79. dataContent.Add("pos_sn", trade.SnNo); //机具sn
  80. dataContent.Add("mer_no", trade.TradePayNo); //商户号
  81. dataContent.Add("request_id", trade.OrderNo); //流水号
  82. dataContent.Add("trade_amount", trade.PayMoney); //交易金额
  83. dataContent.Add("trade_time", trade.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); //交易时间
  84. dataContent.Add("brand", brand); //品牌
  85. // dataContent.Add("is_act", trade.IsAct); //品牌
  86. // dataContent.Add("card_type", 1); //卡类型
  87. // if(kind.Contains("好哒二维码"))
  88. // {
  89. // dataContent.Add("qr_pay_flag", 1); //云闪付标记
  90. // }
  91. // else
  92. // {
  93. // dataContent.Add("qr_pay_flag", 0); //云闪付标记
  94. // }
  95. int fee_rate_num = trade.Sort;
  96. if(fee_rate_num == 0) fee_rate_num = 38;
  97. decimal fee_rate = (decimal)fee_rate_num / 100;
  98. dataContent.Add("fee_rate", fee_rate); // 费率
  99. // dataContent.Add("fee_amt", trade.IsAct == 1 ? 0 : 3); // 秒到费
  100. Push("lkb_trade", dataContent);
  101. }
  102. catch (Exception ex)
  103. {
  104. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "推送交易数据异常");
  105. }
  106. }
  107. public static void Trade(MySystem.MpMainModels.ConsumerOrders trade)
  108. {
  109. try
  110. {
  111. int brand = 100;
  112. Dictionary<string, object> dataContent = new Dictionary<string, object>();
  113. dataContent.Add("pos_sn", trade.SnNo); //机具sn
  114. dataContent.Add("mer_no", trade.TradePayNo); //商户号
  115. dataContent.Add("request_id", trade.OrderNo + trade.Id + "1"); //流水号
  116. dataContent.Add("trade_amount", trade.PayMoney); //交易金额
  117. dataContent.Add("trade_time", trade.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); //交易时间
  118. dataContent.Add("brand", brand); //品牌
  119. dataContent.Add("is_act", trade.IsAct); //品牌
  120. dataContent.Add("card_type", 1); //卡类型
  121. dataContent.Add("qr_pay_flag", 0); //云闪付标记
  122. dataContent.Add("fee_rate", trade.IsAct == 1 ? 0.6M : 0.63M); // 费率
  123. dataContent.Add("fee_amt", trade.IsAct == 1 ? 0 : 3); // 秒到费
  124. Push("trade", dataContent);
  125. }
  126. catch (Exception ex)
  127. {
  128. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "推送交易数据异常");
  129. }
  130. }
  131. public static void Push(string dataType, Dictionary<string, object> dataContent)
  132. {
  133. Dictionary<string, object> data = new Dictionary<string, object>();
  134. data.Add("data_type", dataType);
  135. data.Add("data_content", dataContent);
  136. RedisDbconn.Instance.AddList("KxsPosDataQueue", Newtonsoft.Json.JsonConvert.SerializeObject(data));
  137. }
  138. public static string getRequestId(int id, string type)
  139. {
  140. if(id > 0)
  141. {
  142. return function.MD5_32(id.ToString() + type);
  143. }
  144. return DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
  145. }
  146. public static string getRequestId(string str, string type)
  147. {
  148. if(!string.IsNullOrEmpty(str))
  149. {
  150. return function.MD5_32(str + type);
  151. }
  152. return DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
  153. }
  154. }
  155. }