TestHaoDaService.cs 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text.RegularExpressions;
  5. using MySystem.Models.Main;
  6. using Library;
  7. using LitJson;
  8. using System.Threading;
  9. namespace MySystem
  10. {
  11. /// <summary>
  12. /// 好哒测试服务
  13. /// </summary>
  14. public class TestHaoDaService
  15. {
  16. public readonly static TestHaoDaService Instance = new TestHaoDaService();
  17. private TestHaoDaService()
  18. { }
  19. public void Start()
  20. {
  21. Thread th = new Thread(StartListen);
  22. th.IsBackground = true;
  23. th.Start();
  24. }
  25. public void StartListen()
  26. {
  27. //开户意愿申请
  28. // RedisDbconn.Instance.AddList("AlipayForHaoDaQueue",824);
  29. // RedisDbconn.Instance.AddList("WeChatForHaoDaQueue",824);
  30. // AlipayAddInfo(826);//提交支付宝开户意愿申请单
  31. // AlipayAddInfo(828,"202309011037906510");//查询支付宝开户意愿申请状态
  32. // WeChatAddInfo(826);//提交微信开户意愿申请单
  33. // WeChatAddInfo(825,"2000002424428809");//查询微信开户意愿申请状态
  34. // QueryMerchantStatus(867);//新建商户查询状态
  35. // ConfiemMer(808);//新建商户
  36. // ChangeMerchantCard(1);//商户修改银行卡
  37. // AddOpenDivideAccounts(832); //添加分账方
  38. // QueryAuthStatus(5);//查询实名认证状态
  39. // WeChatFunctionForHD.Instance.QueryAuthMerchant("600955391");
  40. // AlipayFunctionForHD.Instance.AuthOrderAuthQuery("2088820718243322");
  41. // StartProfitShareListen();
  42. // HaoDaHelper.Instance.BindWeChatAppId("1490230", "21622558", AppConfig.Haoda.SubAppId);
  43. // HaoDaHelper.Instance.OrderDivideAccountsQuery("FZ2023110315225748140470708", "1492500"); //查询分账结果
  44. // WebCMSEntities db = new WebCMSEntities();
  45. // List<int> ids = new List<int>();
  46. // foreach(int id in ids)
  47. // {
  48. // ConsumerOrders order = db.ConsumerOrders.FirstOrDefault(m => m.Id == id) ?? new ConsumerOrders();
  49. // MerchantAddInfo merchantAdd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == order.MerchantId) ?? new MerchantAddInfo();
  50. // string applyNo = "FZ" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8); //批次号
  51. // string mchtNo = merchantAdd.OutMchtNo; //慧掌柜商户号
  52. // string orderNo = order.SeoTitle; //交易订单号(好哒平台订单号,G开头)
  53. // string acctNo = AppConfig.Haoda.AcctNo; //账户号,分账接收方账户号
  54. // string sacctNo = merchantAdd.MchtNo; //账户号,收款商户号
  55. // string acctType = "0"; //账户类型(0:商户收款账户(大B),1:分账接收方账户(小B))
  56. // HaoDaHelper.Instance.OrderDivideAccounts(OrderDivideAccountsUtil.AddValue(applyNo, mchtNo, orderNo, acctNo, sacctNo, acctType,
  57. // "1", "0"));
  58. // }
  59. // ConsumerOrders order = db.ConsumerOrders.FirstOrDefault(m => m.Id == 8857) ?? new ConsumerOrders();
  60. // MerchantAddInfo merchantAdd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == order.MerchantId) ?? new MerchantAddInfo();
  61. // string applyNo = "FZ" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8); //批次号
  62. // string mchtNo = merchantAdd.OutMchtNo; //慧掌柜商户号
  63. // string orderNo = order.SeoTitle; //交易订单号(好哒平台订单号,G开头)
  64. // string acctNo = AppConfig.Haoda.AcctNo; //账户号,分账接收方账户号
  65. // string sacctNo = merchantAdd.MchtNo; //账户号,收款商户号
  66. // string acctType = "0"; //账户类型(0:商户收款账户(大B),1:分账接收方账户(小B))
  67. // decimal hdfee = 0.0038M * order.PayMoney;
  68. // hdfee = decimal.Parse(hdfee.ToString("f2"));
  69. // decimal servicefee = 0.01M * order.PayMoney;
  70. // servicefee = decimal.Parse(servicefee.ToString("f2"));
  71. // decimal amount = order.PayMoney - hdfee - servicefee;
  72. // amount = amount * 100; //金额(分)
  73. // servicefee = servicefee * 100;
  74. // string seviceAmount = servicefee.ToString("f0"); //服务费
  75. // string result = HaoDaHelper.Instance.OrderDivideAccounts(OrderDivideAccountsUtil.AddValue(applyNo, mchtNo, orderNo, acctNo, sacctNo, acctType, amount.ToString().Split('.')[0], seviceAmount));
  76. // db.Dispose();
  77. }
  78. public void StartProfitShareListen()
  79. {
  80. bool op = true;
  81. while (op)
  82. {
  83. try
  84. {
  85. WebCMSEntities db = new WebCMSEntities();
  86. var list = db.ConsumerOrders.Where(m => m.Status == 1 && m.IsAct == 0).OrderByDescending(m => m.Id).ToList();
  87. foreach (var sub in list)
  88. {
  89. ConsumerOrders order = db.ConsumerOrders.FirstOrDefault(m => m.Id == sub.Id);
  90. if (order != null)
  91. {
  92. int Status = 2;
  93. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == order.MerchantId) ?? new MerchantInfo();
  94. MerchantParamSet set = db.MerchantParamSet.FirstOrDefault(m => m.Id == order.MerchantId) ?? new MerchantParamSet();
  95. MerchantAddInfo merchantAdd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == order.MerchantId) ?? new MerchantAddInfo();
  96. //发起分账
  97. string applyNo = "FZ" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8); //批次号
  98. string mchtNo = merchantAdd.OutMchtNo; //慧掌柜商户号
  99. string orderNo = order.SeoTitle; //交易订单号(好哒平台订单号,G开头)
  100. string acctNo = AppConfig.Haoda.AcctNo; //账户号,分账接收方账户号
  101. string sacctNo = merchantAdd.MchtNo; //账户号,收款商户号
  102. string acctType = "0"; //账户类型(0:商户收款账户(大B),1:分账接收方账户(小B))
  103. decimal amount = order.PayMoney * (1M - 0.0038M) * 100;
  104. string result = HaoDaHelper.Instance.OrderDivideAccounts(OrderDivideAccountsUtil.AddValue(applyNo, mchtNo, orderNo, acctNo, sacctNo, acctType, amount.ToString().Split('.')[0], "0"));
  105. if(result.Contains("\"resultCode\":\"0\"") && result.Contains("分账金额不足"))
  106. {
  107. Status = 1;
  108. }
  109. order.Status = Status;
  110. }
  111. }
  112. db.SaveChanges();
  113. db.Dispose();
  114. }
  115. catch (Exception ex)
  116. {
  117. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "好哒分账队列异常");
  118. }
  119. Thread.Sleep(2000);
  120. }
  121. }
  122. //新建商户查询状态
  123. public void QueryMerchantStatus(int MerchantId)
  124. {
  125. WebCMSEntities db = new WebCMSEntities();
  126. MerchantAddInfo AddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId);
  127. var returnInfo = HaoDaHelper.Instance.QueryMerchantStatus(HaoDaHelper.BrhCode, AddInfo.MchtNo);
  128. // string result = HaoDaHelper.Instance.AddNewMerchant(AddNewMerchantSetUtil.SetValue(AddInfo));
  129. db.Dispose();
  130. }
  131. //提交支付宝开户意愿申请单
  132. public void AlipayAddInfo(int Id)
  133. {
  134. try
  135. {
  136. WebCMSEntities db = new WebCMSEntities();
  137. MerchantAddInfo info = db.MerchantAddInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantAddInfo();
  138. string result = AlipayFunctionForHD.Instance.AuthOrderCreate(info, info.AlipayAuthToken);
  139. JsonData jsonObj = JsonMapper.ToObject(result);
  140. Dictionary<string, object> reqdic = new Dictionary<string, object>();
  141. reqdic.Add("Id", Id); // 商户Id
  142. string req = Newtonsoft.Json.JsonConvert.SerializeObject(reqdic);
  143. LogHelper.Instance.WriteLog(req, "提交支付宝商户意愿申请单");
  144. Dictionary<string, string> headdic = HaoDaHelper.Instance.GetHeader(req);
  145. string head = Newtonsoft.Json.JsonConvert.SerializeObject(headdic);
  146. LogHelper.Instance.WriteLog("请求参数\n" + req, "提交支付宝商户意愿申请单");
  147. LogHelper.Instance.WriteLog(result, "提交支付宝商户意愿申请单");
  148. if (jsonObj["alipay_merchant_indirect_authorder_create_response"]["code"].ToString() == "10000")
  149. {
  150. LogHelper.Instance.WriteLog("success", "提交支付宝商户意愿申请单");
  151. string order_no = jsonObj["alipay_merchant_indirect_authorder_create_response"]["order_no"].ToString();
  152. // RedisDbconn.Instance.AddList("AlipayResultForHaoDaQueue", "{\"MerchantId\":\"" + Id + "\",\"order_no\":\"" + order_no + "\"}");
  153. LogHelper.Instance.WriteLog("end", "提交支付宝商户意愿申请单");
  154. }
  155. else
  156. {
  157. LogHelper.Instance.WriteLog("false", "提交支付宝商户意愿申请单");
  158. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  159. info.QueryCount = -1;
  160. merchant.QueryCount = -1;
  161. info.AlipayRemark = jsonObj["alipay_merchant_indirect_authorder_create_response"]["msg"].ToString();
  162. LogHelper.Instance.WriteLog("end", "提交支付宝商户意愿申请单");
  163. db.SaveChanges();
  164. }
  165. db.Dispose();
  166. }
  167. catch (Exception ex)
  168. {
  169. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "支付宝开户意愿申请异常");
  170. }
  171. }
  172. //查询支付宝开户意愿申请状态
  173. public void AlipayAddInfo(int Id, string OrderNo)
  174. {
  175. try
  176. {
  177. LogHelper.Instance.WriteLog("start", "查询支付宝商户意愿申请状态");
  178. WebCMSEntities db = new WebCMSEntities();
  179. MerchantAddInfo info = db.MerchantAddInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantAddInfo();
  180. string result = AlipayFunctionForHD.Instance.AuthOrderQuery(OrderNo);
  181. JsonData jsonObj = JsonMapper.ToObject(result);
  182. Dictionary<string, object> reqdic = new Dictionary<string, object>();
  183. reqdic.Add("Id", Id); // 商户Id
  184. reqdic.Add("OrderNo", OrderNo); // 商户Id
  185. string req = Newtonsoft.Json.JsonConvert.SerializeObject(reqdic);
  186. LogHelper.Instance.WriteLog(req, "查询支付宝商户意愿申请状态");
  187. Dictionary<string, string> headdic = HaoDaHelper.Instance.GetHeader(req);
  188. string head = Newtonsoft.Json.JsonConvert.SerializeObject(headdic);
  189. LogHelper.Instance.WriteLog("请求参数\n" + req, "查询支付宝商户意愿申请状态");
  190. LogHelper.Instance.WriteLog(result, "查询支付宝商户意愿申请状态");
  191. if (jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["code"].ToString() == "10000")
  192. {
  193. LogHelper.Instance.WriteLog("start1", "查询支付宝商户意愿申请状态");
  194. string order_status = jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["order_status"].ToString();
  195. if (order_status == "CONTACT_CONFIRM")
  196. {
  197. LogHelper.Instance.WriteLog("start1", "查询支付宝商户意愿申请状态");
  198. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  199. info.QueryCount = 1;
  200. merchant.QueryCount = 1;
  201. info.AlipayRemark = "";
  202. info.AlipaySignUrl = jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["qr_code"].ToString();
  203. db.SaveChanges();
  204. // RedisDbconn.Instance.AddList("HaoDaAuthQueryHelper", "{\"MerchantId\":\"" + Id + "\",\"MchtNo\":\"" + info.MchtNo + "\",\"StoreNo\":\"" + info.StoreNo + "\"}");
  205. LogHelper.Instance.WriteLog("start1end", "查询支付宝商户意愿申请状态");
  206. }
  207. else if (order_status == "AUDIT_REJECT" || order_status == "AUDIT_FREEZE")
  208. {
  209. LogHelper.Instance.WriteLog("start2", "查询支付宝商户意愿申请状态");
  210. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  211. info.QueryCount = -1;
  212. merchant.QueryCount = -1;
  213. info.AlipayRemark = jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["msg"].ToString();
  214. LogHelper.Instance.WriteLog("start2end", "查询支付宝商户意愿申请状态");
  215. db.SaveChanges();
  216. }
  217. else if (order_status == "AUDIT_PASS")
  218. {
  219. LogHelper.Instance.WriteLog("start2", "查询支付宝商户意愿申请状态");
  220. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  221. info.QueryCount = 2;
  222. merchant.QueryCount = 2;
  223. info.AlipayRemark = "";
  224. LogHelper.Instance.WriteLog("start2end", "查询支付宝商户意愿申请状态");
  225. db.SaveChanges();
  226. }
  227. // else
  228. // {
  229. // RedisDbconn.Instance.AddList("AlipayResultForHaoDaQueue", "{\"MerchantId\":\"" + Id + "\",\"order_no\":\"" + OrderNo + "\"}");
  230. // }
  231. }
  232. else
  233. {
  234. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  235. info.QueryCount = -1;
  236. merchant.QueryCount = -1;
  237. info.AlipayRemark = jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["msg"].ToString();
  238. db.SaveChanges();
  239. }
  240. db.Dispose();
  241. }
  242. catch (Exception ex)
  243. {
  244. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "支付宝开户意愿申请异常");
  245. }
  246. }
  247. //提交微信开户意愿申请单
  248. public void WeChatAddInfo(int Id)
  249. {
  250. try
  251. {
  252. WebCMSEntities db = new WebCMSEntities();
  253. MerchantAddInfo info = db.MerchantAddInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantAddInfo();
  254. string result = WeChatFunctionForHD.Instance.MerchantApply(info);
  255. Dictionary<string, object> reqdic = new Dictionary<string, object>();
  256. reqdic.Add("Id", Id); // 商户Id
  257. string req = Newtonsoft.Json.JsonConvert.SerializeObject(reqdic);
  258. LogHelper.Instance.WriteLog(req, "提交微信商户意愿申请单");
  259. Dictionary<string, string> headdic = HaoDaHelper.Instance.GetHeader(req);
  260. string head = Newtonsoft.Json.JsonConvert.SerializeObject(headdic);
  261. LogHelper.Instance.WriteLog("请求参数\n" + req, "提交微信商户意愿申请单");
  262. LogHelper.Instance.WriteLog(result, "提交微信商户意愿申请单");
  263. if (result.Contains("\"applyment_id\":"))
  264. {
  265. LogHelper.Instance.WriteLog("success", "提交微信商户意愿申请单");
  266. JsonData json = JsonMapper.ToObject(result);
  267. string applyment_id = json["applyment_id"].ToString();
  268. // RedisDbconn.Instance.AddList("WeChatResultForHaoDaQueue", "{\"MerchantId\":\"" + Id + "\",\"ApplymentId\":\"" + applyment_id + "\"}");
  269. LogHelper.Instance.WriteLog("end", "提交微信商户意愿申请单");
  270. }
  271. else if (result.Contains("\"message\":"))
  272. {
  273. LogHelper.Instance.WriteLog("false", "提交微信商户意愿申请单");
  274. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  275. JsonData jsonObj = JsonMapper.ToObject(result);
  276. info.Status = -1;
  277. merchant.Status = -1;
  278. info.WeChatRemark = jsonObj["message"].ToString();
  279. LogHelper.Instance.WriteLog("end", "提交微信商户意愿申请单");
  280. db.SaveChanges();
  281. }
  282. db.Dispose();
  283. }
  284. catch (Exception ex)
  285. {
  286. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "微信开户意愿申请异常");
  287. }
  288. }
  289. //查询微信开户意愿申请状态
  290. public void WeChatAddInfo(int Id, string ApplymentId)
  291. {
  292. try
  293. {
  294. WebCMSEntities db = new WebCMSEntities();
  295. MerchantAddInfo info = db.MerchantAddInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantAddInfo();
  296. string result = WeChatFunctionForHD.Instance.QueryMerchant(ApplymentId);
  297. Dictionary<string, object> reqdic = new Dictionary<string, object>();
  298. reqdic.Add("Id", Id); // 商户Id
  299. reqdic.Add("ApplymentId", ApplymentId); // 商户Id
  300. string req = Newtonsoft.Json.JsonConvert.SerializeObject(reqdic);
  301. LogHelper.Instance.WriteLog(req, "提交微信商户意愿申请单");
  302. Dictionary<string, string> headdic = HaoDaHelper.Instance.GetHeader(req);
  303. string head = Newtonsoft.Json.JsonConvert.SerializeObject(headdic);
  304. LogHelper.Instance.WriteLog("请求参数\n" + req, "提交微信商户意愿申请单");
  305. JsonData jsonObj = JsonMapper.ToObject(result);
  306. if (jsonObj["applyment_state"].ToString() == "APPLYMENT_STATE_WAITTING_FOR_CONFIRM_CONTACT")
  307. {
  308. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  309. info.Status = 1;
  310. merchant.Status = 1;
  311. info.WeChatRemark = "";
  312. info.WeChatSignUrl = jsonObj["qrcode_data"].ToString();
  313. db.SaveChanges();
  314. // RedisDbconn.Instance.AddList("HaoDaAuthQueryHelper", "{\"MerchantId\":\"" + Id + "\",\"MchtNo\":\"" + info.MchtNo + "\",\"StoreNo\":\"" + info.StoreNo + "\"}");
  315. }
  316. else if (jsonObj["applyment_state"].ToString() == "APPLYMENT_STATE_REJECTED")
  317. {
  318. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  319. info.Status = -1;
  320. merchant.Status = -1;
  321. info.WeChatRemark = jsonObj["reject_reason"].ToString();
  322. db.SaveChanges();
  323. }
  324. // else
  325. // {
  326. // RedisDbconn.Instance.AddList("WeChatResultForHaoDaQueue", "{\"MerchantId\":\"" + Id + "\",\"ApplymentId\":\"" + ApplymentId + "\"}");
  327. // }
  328. db.Dispose();
  329. }
  330. catch (Exception ex)
  331. {
  332. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "微信开户意愿申请异常");
  333. }
  334. }
  335. //添加分账接收方账户
  336. public void AddOpenDivideAccounts(int MerchantId)
  337. {
  338. WebCMSEntities db = new WebCMSEntities();
  339. MerchantAddInfo AddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId);
  340. string result = HaoDaHelper.Instance.AddOpenDivideAccounts(AddOpenDivideAccountsUtil.AddValue(AddInfo));
  341. db.Dispose();
  342. }
  343. public void ConfiemMer(int MerchantId)
  344. {
  345. WebCMSEntities db = new WebCMSEntities();
  346. Models.Main1.WebCMSEntities db1 = new Models.Main1.WebCMSEntities();
  347. MerchantAddInfo AddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId);
  348. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == MerchantId);
  349. if (AddInfo != null && merchant != null)
  350. {
  351. string BusinessCode = AddInfo.BusinessCode;
  352. if (string.IsNullOrEmpty(BusinessCode))
  353. {
  354. BusinessCode = "LKB" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(5);
  355. AddInfo.BusinessCode = BusinessCode;
  356. }
  357. string pwd = AddInfo.MobilePhone.Substring(5);
  358. merchant.LoginPwd = function.MD532(pwd);
  359. MerchantParamSet query = db.MerchantParamSet.FirstOrDefault(m => m.Id == MerchantId);
  360. if (query == null)
  361. {
  362. query = new MerchantParamSet();
  363. query.IsAll = 1;
  364. db.MerchantParamSet.Add(query);
  365. db.SaveChanges();
  366. }
  367. MerchantForMobile merchantForMobile = db.MerchantForMobile.FirstOrDefault(m => m.Mobile == AddInfo.MobilePhone);
  368. if (merchantForMobile == null)
  369. {
  370. merchantForMobile = db.MerchantForMobile.Add(new MerchantForMobile()
  371. {
  372. Mobile = AddInfo.MobilePhone,
  373. }).Entity;
  374. db.SaveChanges();
  375. }
  376. merchantForMobile.MerchantId = MerchantId;
  377. db.SaveChanges();
  378. Models.Main1.MerchantLoginInfo info = db1.MerchantLoginInfo.FirstOrDefault(m => m.LoginMobile == AddInfo.MobilePhone);
  379. if (info == null)
  380. {
  381. info = db1.MerchantLoginInfo.Add(new Models.Main1.MerchantLoginInfo()
  382. {
  383. LoginMobile = AddInfo.MobilePhone,
  384. }).Entity;
  385. db1.SaveChanges();
  386. }
  387. info.LoginPwd = function.MD532(pwd);
  388. db1.SaveChanges();
  389. Models.Main1.MerchantAccountLinkInfo infolink = db1.MerchantAccountLinkInfo.FirstOrDefault(m => m.LoginId == info.Id && m.MerchantId == MerchantId && m.Kind == 2);
  390. if (infolink == null)
  391. {
  392. infolink = db1.MerchantAccountLinkInfo.Add(new Models.Main1.MerchantAccountLinkInfo()
  393. {
  394. LoginId = info.Id,
  395. MerchantId = MerchantId,
  396. Kind = 2,
  397. }).Entity;
  398. db1.SaveChanges();
  399. }
  400. if (AddInfo.Status <= 0)
  401. {
  402. //好哒新建商户
  403. string result = HaoDaHelper.Instance.AddNewMerchant(AddNewMerchantSetUtil.SetValue(AddInfo));
  404. JsonData jsonObj = JsonMapper.ToObject(result);
  405. //创建成功
  406. if (jsonObj["resultCode"].ToString() == "1")
  407. {
  408. AddInfo.WeChatRemark = "";
  409. if (string.IsNullOrEmpty(AddInfo.MchtNo))
  410. {
  411. AddInfo.MchtNo = jsonObj["data"]["mchtNo"].ToString();
  412. }
  413. AddInfo.Status = 0;
  414. merchant.Status = 0;
  415. db.SaveChanges();
  416. QueryMerchantStatus queryMerchantStatus = new QueryMerchantStatus();
  417. queryMerchantStatus.MerchantId = MerchantId.ToString();
  418. queryMerchantStatus.MerchantNo = AddInfo.MchtNo;
  419. // RedisDbconn.Instance.AddList("WeChatSignHdQueue", queryMerchantStatus);
  420. }
  421. //创建失败
  422. else
  423. {
  424. AddInfo.Status = -1;
  425. merchant.Status = -1;
  426. AddInfo.WeChatRemark = jsonObj["errorDesc"].ToString();
  427. // if (string.IsNullOrEmpty(AddInfo.MchtNo))
  428. // {
  429. // if (jsonObj.ToJson().Contains("mchtNo"))
  430. // {
  431. // AddInfo.MchtNo = jsonObj["data"]["mchtNo"].ToString();
  432. // }
  433. // }
  434. db.SaveChanges();
  435. }
  436. }
  437. }
  438. db.Dispose();
  439. db1.Dispose();
  440. }
  441. //商户开通分账
  442. public void OpenDivideAccounts(int MerchantId)
  443. {
  444. WebCMSEntities db = new WebCMSEntities();
  445. MerchantAddInfo AddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId);
  446. string result = HaoDaHelper.Instance.OpenDivideAccounts(AddInfo.OutMchtNo, AddInfo.StoreNo);
  447. db.Dispose();
  448. }
  449. //分账接收方签约
  450. public void DivideAccountsSign(int MerchantId)
  451. {
  452. WebCMSEntities db = new WebCMSEntities();
  453. MerchantAddInfo AddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId);
  454. string result = HaoDaHelper.Instance.DivideAccountsSign("230817000000000278", AddInfo.OutMchtNo, AddInfo.StoreNo);
  455. db.Dispose();
  456. }
  457. //查询实名认证状态
  458. public void QueryAuthStatus(int MerchantId)
  459. {
  460. WebCMSEntities db = new WebCMSEntities();
  461. MerchantAddInfo AddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId);
  462. string result = HaoDaHelper.Instance.QueryAuthStatus(AddInfo.OutMchtNo, AddInfo.StoreNo);
  463. db.Dispose();
  464. }
  465. //商户修改银行卡
  466. public void ChangeMerchantCard(int MerchantId)
  467. {
  468. WebCMSEntities db = new WebCMSEntities();
  469. // MerchantAddInfo AddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId);
  470. // var request = TestChangeMerchantCardSetUtil.SetValue(AddInfo);
  471. // JsonData Infos = JsonMapper.ToObject(HaoDaHelper.Instance.ChangeMerchantCard(request));
  472. // JsonData results = JsonMapper.ToObject(HaoDaHelper.Instance.QueryChangeCardStatus(AddInfo.MchtNo, Infos["taskId"].ToString()));
  473. //TODO:修改结算卡变更商户相关信息
  474. // AccountNumber
  475. // BankName
  476. // BankBranchId
  477. // BankAddressCode
  478. // BankAccountType
  479. // OpenUnionNo
  480. // OpenCollectBankCode
  481. // OpenBankRegionCode
  482. // OpenBankAccout
  483. // OpenBankAccName
  484. // ZbankRegionCode
  485. // ZBankNo
  486. db.Dispose();
  487. }
  488. public void refund()
  489. {
  490. Thread th = new Thread(refunddo);
  491. th.IsBackground = true;
  492. th.Start();
  493. }
  494. public void refunddo()
  495. {
  496. for(int month = 10; month <= 11; month ++)
  497. {
  498. for(int day = 1; day <= 31; day ++)
  499. {
  500. string content = function.ReadInstance("/log/好哒聚合支付退款/2023/" + month + "/" + day + "/content.log");
  501. if(!string.IsNullOrEmpty(content))
  502. {
  503. content = content.Replace("\n\n\n", "####");
  504. content = content.Replace("\n", "");
  505. content = content.Replace("####", "\n");
  506. MatchCollection mc = Regex.Matches(content, "请求参数.*?退款次数超出限制");
  507. foreach(Match m in mc)
  508. {
  509. string mchtNo = Regex.Match(m.Value, "\"mchtNo\":\".*?\"").Value.Replace("\"mchtNo\":\"", "").Replace("\"", "");
  510. string storeNo = Regex.Match(m.Value, "\"storeNo\":\".*?\"").Value.Replace("\"storeNo\":\"", "").Replace("\"", "");
  511. string outOrderNo = Regex.Match(m.Value, "\"outOrderNo\":\".*?\"").Value.Replace("\"outOrderNo\":\"", "").Replace("\"", "");
  512. string refundAmount = Regex.Match(m.Value, "\"refundAmount\":\".*?\"").Value.Replace("\"refundAmount\":\"", "").Replace("\"", "");
  513. function.WriteLog("mchtNo:" + mchtNo + ";storeNo:" + storeNo + ";outOrderNo:" + outOrderNo + ";refundAmount:" + refundAmount + ";", "补充退款日志");
  514. var info = HaoDaHelper.Instance.AggregatedPayRefund(mchtNo, storeNo, "HDTK" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8), outOrderNo, refundAmount);
  515. function.WriteLog(info + "\n\n", "补充退款日志");
  516. Thread.Sleep(1000);
  517. }
  518. }
  519. }
  520. }
  521. }
  522. }
  523. }