using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using MySystem.Models.Main; using Library; using LitJson; using System.Threading; namespace MySystem { /// /// 好哒测试服务 /// public class TestHaoDaService { public readonly static TestHaoDaService Instance = new TestHaoDaService(); private TestHaoDaService() { } public void Start() { Thread th = new Thread(StartListen); th.IsBackground = true; th.Start(); } public void StartListen() { //开户意愿申请 // RedisDbconn.Instance.AddList("AlipayForHaoDaQueue",824); // RedisDbconn.Instance.AddList("WeChatForHaoDaQueue",824); // AlipayAddInfo(826);//提交支付宝开户意愿申请单 // AlipayAddInfo(828,"202309011037906510");//查询支付宝开户意愿申请状态 // WeChatAddInfo(826);//提交微信开户意愿申请单 // WeChatAddInfo(825,"2000002424428809");//查询微信开户意愿申请状态 // QueryMerchantStatus(824);//新建商户查询状态 // QueryAuthStatus(826);//查询实名认证状态 // ConfiemMer(808);//新建商户 // ChangeMerchantCard(1);//商户修改银行卡 } //新建商户查询状态 public void QueryMerchantStatus(int MerchantId) { WebCMSEntities db = new WebCMSEntities(); MerchantAddInfo AddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId); var returnInfo = HaoDaHelper.Instance.QueryMerchantStatus(HaoDaHelper.BrhCode, AddInfo.MchtNo); // string result = HaoDaHelper.Instance.AddNewMerchant(AddNewMerchantSetUtil.SetValue(AddInfo)); db.Dispose(); } //提交支付宝开户意愿申请单 public void AlipayAddInfo(int Id) { try { WebCMSEntities db = new WebCMSEntities(); MerchantAddInfo info = db.MerchantAddInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantAddInfo(); string result = AlipayFunctionForHD.Instance.AuthOrderCreate(info, info.AlipayAuthToken); JsonData jsonObj = JsonMapper.ToObject(result); Dictionary reqdic = new Dictionary(); reqdic.Add("Id", Id); // 商户Id string req = Newtonsoft.Json.JsonConvert.SerializeObject(reqdic); LogHelper.Instance.WriteLog(req, "提交支付宝商户意愿申请单"); Dictionary headdic = HaoDaHelper.Instance.GetHeader(req); string head = Newtonsoft.Json.JsonConvert.SerializeObject(headdic); LogHelper.Instance.WriteLog("请求参数\n" + req, "提交支付宝商户意愿申请单"); LogHelper.Instance.WriteLog(result, "提交支付宝商户意愿申请单"); if (jsonObj["alipay_merchant_indirect_authorder_create_response"]["code"].ToString() == "10000") { LogHelper.Instance.WriteLog("success", "提交支付宝商户意愿申请单"); string order_no = jsonObj["alipay_merchant_indirect_authorder_create_response"]["order_no"].ToString(); RedisDbconn.Instance.AddList("AlipayResultForHaoDaQueue", "{\"MerchantId\":\"" + Id + "\",\"order_no\":\"" + order_no + "\"}"); LogHelper.Instance.WriteLog("end", "提交支付宝商户意愿申请单"); } else { LogHelper.Instance.WriteLog("false", "提交支付宝商户意愿申请单"); MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo(); info.QueryCount = -1; merchant.QueryCount = -1; info.AlipayRemark = jsonObj["alipay_merchant_indirect_authorder_create_response"]["msg"].ToString(); LogHelper.Instance.WriteLog("end", "提交支付宝商户意愿申请单"); db.SaveChanges(); } db.Dispose(); } catch (Exception ex) { LogHelper.Instance.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "支付宝开户意愿申请异常"); } } //查询支付宝开户意愿申请状态 public void AlipayAddInfo(int Id, string OrderNo) { try { LogHelper.Instance.WriteLog("start", "查询支付宝商户意愿申请状态"); WebCMSEntities db = new WebCMSEntities(); MerchantAddInfo info = db.MerchantAddInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantAddInfo(); string result = AlipayFunctionForHD.Instance.AuthOrderQuery(OrderNo); JsonData jsonObj = JsonMapper.ToObject(result); Dictionary reqdic = new Dictionary(); reqdic.Add("Id", Id); // 商户Id reqdic.Add("OrderNo", OrderNo); // 商户Id string req = Newtonsoft.Json.JsonConvert.SerializeObject(reqdic); LogHelper.Instance.WriteLog(req, "查询支付宝商户意愿申请状态"); Dictionary headdic = HaoDaHelper.Instance.GetHeader(req); string head = Newtonsoft.Json.JsonConvert.SerializeObject(headdic); LogHelper.Instance.WriteLog("请求参数\n" + req, "查询支付宝商户意愿申请状态"); LogHelper.Instance.WriteLog(result, "查询支付宝商户意愿申请状态"); if (jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["code"].ToString() == "10000") { LogHelper.Instance.WriteLog("start1", "查询支付宝商户意愿申请状态"); string order_status = jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["order_status"].ToString(); if (order_status == "CONTACT_CONFIRM") { LogHelper.Instance.WriteLog("start1", "查询支付宝商户意愿申请状态"); MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo(); info.QueryCount = 1; merchant.QueryCount = 1; info.AlipayRemark = ""; info.AlipaySignUrl = jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["qr_code"].ToString(); db.SaveChanges(); RedisDbconn.Instance.AddList("HaoDaAuthQueryHelper", "{\"MerchantId\":\"" + Id + "\",\"MchtNo\":\"" + info.MchtNo + "\",\"StoreNo\":\"" + info.StoreNo + "\"}"); LogHelper.Instance.WriteLog("start1end", "查询支付宝商户意愿申请状态"); } else if (order_status == "AUDIT_REJECT" || order_status == "AUDIT_FREEZE") { LogHelper.Instance.WriteLog("start2", "查询支付宝商户意愿申请状态"); MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo(); info.QueryCount = -1; merchant.QueryCount = -1; info.AlipayRemark = jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["msg"].ToString(); LogHelper.Instance.WriteLog("start2end", "查询支付宝商户意愿申请状态"); db.SaveChanges(); } else if (order_status == "AUDIT_PASS") { LogHelper.Instance.WriteLog("start2", "查询支付宝商户意愿申请状态"); MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo(); info.QueryCount = 2; merchant.QueryCount = 2; info.AlipayRemark = ""; LogHelper.Instance.WriteLog("start2end", "查询支付宝商户意愿申请状态"); db.SaveChanges(); } else { RedisDbconn.Instance.AddList("AlipayResultForHaoDaQueue", "{\"MerchantId\":\"" + Id + "\",\"order_no\":\"" + OrderNo + "\"}"); } } else { MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo(); info.QueryCount = -1; merchant.QueryCount = -1; info.AlipayRemark = jsonObj["alipay_merchant_indirect_authorder_querystatus_response"]["msg"].ToString(); db.SaveChanges(); } db.Dispose(); } catch (Exception ex) { LogHelper.Instance.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "支付宝开户意愿申请异常"); } } //提交微信开户意愿申请单 public void WeChatAddInfo(int Id) { try { WebCMSEntities db = new WebCMSEntities(); MerchantAddInfo info = db.MerchantAddInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantAddInfo(); string result = WeChatFunctionForHD.Instance.MerchantApply(info); Dictionary reqdic = new Dictionary(); reqdic.Add("Id", Id); // 商户Id string req = Newtonsoft.Json.JsonConvert.SerializeObject(reqdic); LogHelper.Instance.WriteLog(req, "提交微信商户意愿申请单"); Dictionary headdic = HaoDaHelper.Instance.GetHeader(req); string head = Newtonsoft.Json.JsonConvert.SerializeObject(headdic); LogHelper.Instance.WriteLog("请求参数\n" + req, "提交微信商户意愿申请单"); LogHelper.Instance.WriteLog(result, "提交微信商户意愿申请单"); if (result.Contains("\"applyment_id\":")) { LogHelper.Instance.WriteLog("success", "提交微信商户意愿申请单"); JsonData json = JsonMapper.ToObject(result); string applyment_id = json["applyment_id"].ToString(); RedisDbconn.Instance.AddList("WeChatResultForHaoDaQueue", "{\"MerchantId\":\"" + Id + "\",\"ApplymentId\":\"" + applyment_id + "\"}"); LogHelper.Instance.WriteLog("end", "提交微信商户意愿申请单"); } else if (result.Contains("\"message\":")) { LogHelper.Instance.WriteLog("false", "提交微信商户意愿申请单"); MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo(); JsonData jsonObj = JsonMapper.ToObject(result); info.Status = -1; merchant.Status = -1; info.WeChatRemark = jsonObj["message"].ToString(); LogHelper.Instance.WriteLog("end", "提交微信商户意愿申请单"); db.SaveChanges(); } db.Dispose(); } catch (Exception ex) { LogHelper.Instance.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "微信开户意愿申请异常"); } } //查询微信开户意愿申请状态 public void WeChatAddInfo(int Id, string ApplymentId) { try { WebCMSEntities db = new WebCMSEntities(); MerchantAddInfo info = db.MerchantAddInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantAddInfo(); string result = WeChatFunctionForHD.Instance.QueryMerchant(ApplymentId); Dictionary reqdic = new Dictionary(); reqdic.Add("Id", Id); // 商户Id reqdic.Add("ApplymentId", ApplymentId); // 商户Id string req = Newtonsoft.Json.JsonConvert.SerializeObject(reqdic); LogHelper.Instance.WriteLog(req, "提交微信商户意愿申请单"); Dictionary headdic = HaoDaHelper.Instance.GetHeader(req); string head = Newtonsoft.Json.JsonConvert.SerializeObject(headdic); LogHelper.Instance.WriteLog("请求参数\n" + req, "提交微信商户意愿申请单"); JsonData jsonObj = JsonMapper.ToObject(result); if (jsonObj["applyment_state"].ToString() == "APPLYMENT_STATE_WAITTING_FOR_CONFIRM_CONTACT") { MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo(); info.Status = 1; merchant.Status = 1; info.WeChatRemark = ""; info.WeChatSignUrl = jsonObj["qrcode_data"].ToString(); db.SaveChanges(); RedisDbconn.Instance.AddList("HaoDaAuthQueryHelper", "{\"MerchantId\":\"" + Id + "\",\"MchtNo\":\"" + info.MchtNo + "\",\"StoreNo\":\"" + info.StoreNo + "\"}"); } else if (jsonObj["applyment_state"].ToString() == "APPLYMENT_STATE_REJECTED") { MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo(); info.Status = -1; merchant.Status = -1; info.WeChatRemark = jsonObj["reject_reason"].ToString(); db.SaveChanges(); } else { RedisDbconn.Instance.AddList("WeChatResultForHaoDaQueue", "{\"MerchantId\":\"" + Id + "\",\"ApplymentId\":\"" + ApplymentId + "\"}"); } db.Dispose(); } catch (Exception ex) { LogHelper.Instance.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "微信开户意愿申请异常"); } } //添加分账接收方账户 public void AddOpenDivideAccounts(int MerchantId) { WebCMSEntities db = new WebCMSEntities(); MerchantAddInfo AddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId); string result = HaoDaHelper.Instance.AddOpenDivideAccounts(AddOpenDivideAccountsUtil.AddValue(AddInfo)); db.Dispose(); } public void ConfiemMer(int MerchantId) { WebCMSEntities db = new WebCMSEntities(); Models.Main1.WebCMSEntities db1 = new Models.Main1.WebCMSEntities(); MerchantAddInfo AddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId); MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == MerchantId); if (AddInfo != null && merchant != null) { string BusinessCode = AddInfo.BusinessCode; if (string.IsNullOrEmpty(BusinessCode)) { BusinessCode = "LKB" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(5); AddInfo.BusinessCode = BusinessCode; } string pwd = AddInfo.MobilePhone.Substring(5); merchant.LoginPwd = function.MD532(pwd); MerchantParamSet query = db.MerchantParamSet.FirstOrDefault(m => m.Id == MerchantId); if (query == null) { query = new MerchantParamSet(); query.IsAll = 1; db.MerchantParamSet.Add(query); db.SaveChanges(); } MerchantForMobile merchantForMobile = db.MerchantForMobile.FirstOrDefault(m => m.Mobile == AddInfo.MobilePhone); if (merchantForMobile == null) { merchantForMobile = db.MerchantForMobile.Add(new MerchantForMobile() { Mobile = AddInfo.MobilePhone, }).Entity; db.SaveChanges(); } merchantForMobile.MerchantId = MerchantId; db.SaveChanges(); Models.Main1.MerchantLoginInfo info = db1.MerchantLoginInfo.FirstOrDefault(m => m.LoginMobile == AddInfo.MobilePhone); if (info == null) { info = db1.MerchantLoginInfo.Add(new Models.Main1.MerchantLoginInfo() { LoginMobile = AddInfo.MobilePhone, }).Entity; db1.SaveChanges(); } info.LoginPwd = function.MD532(pwd); db1.SaveChanges(); Models.Main1.MerchantAccountLinkInfo infolink = db1.MerchantAccountLinkInfo.FirstOrDefault(m => m.LoginId == info.Id && m.MerchantId == MerchantId && m.Kind == 2); if (infolink == null) { infolink = db1.MerchantAccountLinkInfo.Add(new Models.Main1.MerchantAccountLinkInfo() { LoginId = info.Id, MerchantId = MerchantId, Kind = 2, }).Entity; db1.SaveChanges(); } if (AddInfo.Status <= 0) { //好哒新建商户 string result = HaoDaHelper.Instance.AddNewMerchant(AddNewMerchantSetUtil.SetValue(AddInfo)); JsonData jsonObj = JsonMapper.ToObject(result); //创建成功 if (jsonObj["resultCode"].ToString() == "1") { AddInfo.WeChatRemark = ""; if (string.IsNullOrEmpty(AddInfo.MchtNo)) { AddInfo.MchtNo = jsonObj["data"]["mchtNo"].ToString(); } AddInfo.Status = 0; merchant.Status = 0; db.SaveChanges(); QueryMerchantStatus queryMerchantStatus = new QueryMerchantStatus(); queryMerchantStatus.MerchantId = MerchantId.ToString(); queryMerchantStatus.MerchantNo = AddInfo.MchtNo; RedisDbconn.Instance.AddList("WeChatSignHdQueue", queryMerchantStatus); } //创建失败 else { AddInfo.Status = -1; merchant.Status = -1; AddInfo.WeChatRemark = jsonObj["errorDesc"].ToString(); // if (string.IsNullOrEmpty(AddInfo.MchtNo)) // { // if (jsonObj.ToJson().Contains("mchtNo")) // { // AddInfo.MchtNo = jsonObj["data"]["mchtNo"].ToString(); // } // } db.SaveChanges(); } } } db.Dispose(); db1.Dispose(); } //商户开通分账 public void OpenDivideAccounts(int MerchantId) { WebCMSEntities db = new WebCMSEntities(); MerchantAddInfo AddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId); string result = HaoDaHelper.Instance.OpenDivideAccounts(AddInfo.OutMchtNo, AddInfo.StoreNo); db.Dispose(); } //分账接收方签约 public void DivideAccountsSign(int MerchantId) { WebCMSEntities db = new WebCMSEntities(); MerchantAddInfo AddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId); string result = HaoDaHelper.Instance.DivideAccountsSign("230817000000000278", AddInfo.OutMchtNo, AddInfo.StoreNo); db.Dispose(); } //查询实名认证状态 public void QueryAuthStatus(int MerchantId) { WebCMSEntities db = new WebCMSEntities(); MerchantAddInfo AddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId); string result = HaoDaHelper.Instance.QueryAuthStatus(AddInfo.OutMchtNo, AddInfo.StoreNo); db.Dispose(); } //商户修改银行卡 public void ChangeMerchantCard(int MerchantId) { WebCMSEntities db = new WebCMSEntities(); // MerchantAddInfo AddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId); // var request = TestChangeMerchantCardSetUtil.SetValue(AddInfo); // JsonData Infos = JsonMapper.ToObject(HaoDaHelper.Instance.ChangeMerchantCard(request)); // JsonData results = JsonMapper.ToObject(HaoDaHelper.Instance.QueryChangeCardStatus(AddInfo.MchtNo, Infos["taskId"].ToString())); //TODO:修改结算卡变更商户相关信息 // AccountNumber // BankName // BankBranchId // BankAddressCode // BankAccountType // OpenUnionNo // OpenCollectBankCode // OpenBankRegionCode // OpenBankAccout // OpenBankAccName // ZbankRegionCode // ZBankNo db.Dispose(); } } }