HaoDaExtQueryHelper.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading;
  4. using System.Threading.Tasks;
  5. using System.Linq;
  6. using Microsoft.Extensions.Hosting;
  7. using MySystem;
  8. using MySystem.Models;
  9. using LitJson;
  10. using Library;
  11. using MySystem.Models.Main;
  12. public class HaoDaExtQueryHelper
  13. {
  14. public readonly static HaoDaExtQueryHelper Instance = new HaoDaExtQueryHelper();
  15. private HaoDaExtQueryHelper()
  16. {
  17. }
  18. public void StartWeChat()
  19. {
  20. Thread th = new Thread(StartWeChatDo);
  21. th.IsBackground = true;
  22. th.Start();
  23. }
  24. private void StartWeChatDo()
  25. {
  26. while (true)
  27. {
  28. string content = RedisDbconn.Instance.RPop<string>("WeChatResultForHaoDaQueue");
  29. if (!string.IsNullOrEmpty(content))
  30. {
  31. JsonData json = JsonMapper.ToObject(content);
  32. WeChatAddInfo(int.Parse(json["MerchantId"].ToString()), json["ApplymentId"].ToString());
  33. }
  34. else
  35. {
  36. Thread.Sleep(10000);
  37. }
  38. }
  39. }
  40. public void WeChatAddInfo(int Id, string ApplymentId)
  41. {
  42. try
  43. {
  44. LogHelper.Instance.WriteLog(DateTime.Now.ToString(), "查询微信商户意愿申请状态");
  45. LogHelper.Instance.WriteLog("start", "查询微信商户意愿申请状态");
  46. WebCMSEntities db = new WebCMSEntities();
  47. MerchantAddInfo info = db.MerchantAddInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantAddInfo();
  48. string result = WeChatFunctionForHD.Instance.QueryMerchant(ApplymentId);
  49. LogHelper.Instance.WriteLog(result, "查询微信商户意愿申请状态");
  50. JsonData jsonObj = JsonMapper.ToObject(result);
  51. if (jsonObj["applyment_state"].ToString() == "APPLYMENT_STATE_WAITTING_FOR_CONFIRM_CONTACT")
  52. {
  53. LogHelper.Instance.WriteLog("starts", "查询微信商户意愿申请状态");
  54. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  55. info.Status = 1;
  56. merchant.Status = 1;
  57. info.WeChatRemark = "";
  58. info.WeChatSignUrl = jsonObj["qrcode_data"].ToString();
  59. db.SaveChanges();
  60. RedisDbconn.Instance.AddList("HaoDaAuthQueryHelper", "{\"MerchantId\":\"" + Id + "\",\"MchtNo\":\"" + info.MchtNo + "\",\"StoreNo\":\"" + info.StoreNo + "\"}");
  61. LogHelper.Instance.WriteLog("startsend", "查询微信商户意愿申请状态");
  62. }
  63. else if (jsonObj["applyment_state"].ToString() == "APPLYMENT_STATE_REJECTED")
  64. {
  65. LogHelper.Instance.WriteLog("start1", "查询微信商户意愿申请状态");
  66. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  67. info.Status = -1;
  68. merchant.Status = -1;
  69. info.WeChatRemark = jsonObj["reject_reason"].ToString();
  70. LogHelper.Instance.WriteLog("start1end", "查询微信商户意愿申请状态");
  71. db.SaveChanges();
  72. }
  73. else if (jsonObj["applyment_state"].ToString() == "APPLYMENT_STATE_PASSED")
  74. {
  75. LogHelper.Instance.WriteLog("start1", "查询微信商户意愿申请状态");
  76. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  77. info.Status = 2;
  78. merchant.Status = 2;
  79. info.WeChatRemark = "";
  80. LogHelper.Instance.WriteLog("start1end", "查询微信商户意愿申请状态");
  81. db.SaveChanges();
  82. }
  83. else
  84. {
  85. LogHelper.Instance.WriteLog("starte", "查询微信商户意愿申请状态");
  86. RedisDbconn.Instance.AddList("WeChatResultForHaoDaQueue", "{\"MerchantId\":\"" + Id + "\",\"ApplymentId\":\"" + ApplymentId + "\"}");
  87. LogHelper.Instance.WriteLog("start2end", "查询微信商户意愿申请状态");
  88. }
  89. db.Dispose();
  90. }
  91. catch (Exception ex)
  92. {
  93. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "微信开户意愿申请异常");
  94. }
  95. }
  96. public void StartAlipay()
  97. {
  98. Thread th = new Thread(StartAlipayDo);
  99. th.IsBackground = true;
  100. th.Start();
  101. }
  102. private void StartAlipayDo()
  103. {
  104. while (true)
  105. {
  106. string content = RedisDbconn.Instance.RPop<string>("AlipayResultForHaoDaQueue");
  107. if (!string.IsNullOrEmpty(content))
  108. {
  109. JsonData json = JsonMapper.ToObject(content);
  110. AlipayAddInfo(int.Parse(json["MerchantId"].ToString()), json["order_no"].ToString());
  111. }
  112. else
  113. {
  114. Thread.Sleep(10000);
  115. }
  116. }
  117. }
  118. public void AlipayAddInfo(int Id, string OrderNo)
  119. {
  120. try
  121. {
  122. LogHelper.Instance.WriteLog(DateTime.Now.ToString(), "查询支付宝商户意愿申请状态");
  123. LogHelper.Instance.WriteLog("start", "查询支付宝商户意愿申请状态");
  124. WebCMSEntities db = new WebCMSEntities();
  125. MerchantAddInfo info = db.MerchantAddInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantAddInfo();
  126. string result = AlipayFunctionForHD.Instance.AuthOrderQuery(OrderNo);
  127. JsonData jsonObj = JsonMapper.ToObject(result);
  128. LogHelper.Instance.WriteLog(result, "查询支付宝商户意愿申请状态");
  129. if (jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["code"].ToString() == "10000")
  130. {
  131. LogHelper.Instance.WriteLog("starts", "查询支付宝商户意愿申请状态");
  132. string order_status = jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["order_status"].ToString();
  133. LogHelper.Instance.WriteLog(order_status, "查询支付宝商户意愿申请状态");
  134. if (order_status == "CONTACT_CONFIRM")
  135. {
  136. LogHelper.Instance.WriteLog("start1", "查询支付宝商户意愿申请状态");
  137. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  138. info.QueryCount = 1;
  139. merchant.QueryCount = 1;
  140. info.AlipayRemark = "";
  141. info.AlipaySignUrl = jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["qr_code"].ToString();
  142. db.SaveChanges();
  143. RedisDbconn.Instance.AddList("HaoDaAuthQueryHelper", "{\"MerchantId\":\"" + Id + "\",\"MchtNo\":\"" + info.MchtNo + "\",\"StoreNo\":\"" + info.StoreNo + "\"}");
  144. LogHelper.Instance.WriteLog("start1end", "查询支付宝商户意愿申请状态");
  145. }
  146. else if (order_status == "AUDIT_FREEZE")
  147. {
  148. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  149. LogHelper.Instance.WriteLog("start2", "查询支付宝商户意愿申请状态");
  150. if(result.Contains("\"qr_code\":"))
  151. {
  152. info.QueryCount = 1;
  153. merchant.QueryCount = 1;
  154. info.AlipayRemark = "";
  155. info.AlipaySignUrl = jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["qr_code"].ToString();
  156. }
  157. else
  158. {
  159. info.QueryCount = -1;
  160. merchant.QueryCount = -1;
  161. info.AlipayRemark = jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["msg"].ToString();
  162. }
  163. LogHelper.Instance.WriteLog("start2end", "查询支付宝商户意愿申请状态");
  164. db.SaveChanges();
  165. }
  166. else if (order_status == "AUDIT_REJECT")
  167. {
  168. LogHelper.Instance.WriteLog("start2", "查询支付宝商户意愿申请状态");
  169. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  170. info.QueryCount = -1;
  171. merchant.QueryCount = -1;
  172. info.AlipayRemark = jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["verify_list"][0]["fail_reason"].ToString();
  173. LogHelper.Instance.WriteLog("start2end", "查询支付宝商户意愿申请状态");
  174. db.SaveChanges();
  175. }
  176. else if (order_status == "AUDIT_PASS")
  177. {
  178. LogHelper.Instance.WriteLog("start2", "查询支付宝商户意愿申请状态");
  179. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  180. info.QueryCount = 2;
  181. merchant.QueryCount = 2;
  182. info.AlipayRemark = "";
  183. LogHelper.Instance.WriteLog("start2end", "查询支付宝商户意愿申请状态");
  184. db.SaveChanges();
  185. }
  186. else
  187. {
  188. RedisDbconn.Instance.AddList("AlipayResultForHaoDaQueue", "{\"MerchantId\":\"" + Id + "\",\"order_no\":\"" + OrderNo + "\"}");
  189. }
  190. }
  191. else
  192. {
  193. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  194. info.QueryCount = -1;
  195. merchant.QueryCount = -1;
  196. info.AlipayRemark = jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["msg"].ToString();
  197. db.SaveChanges();
  198. }
  199. db.Dispose();
  200. }
  201. catch (Exception ex)
  202. {
  203. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "支付宝开户意愿申请异常");
  204. }
  205. }
  206. }