static void Main(string[] args) { SortedDictionary <string, string> parameters = new SortedDictionary <string, string>(); parameters["Token"] = "d89d32ab-f96d-4b29-be6f-8fb3f7a3cd6c"; parameters["Id"] = "44"; parameters["Province"] = "上海"; parameters["City"] = "上海"; parameters["Mobile"] = "13636651285"; parameters["CallBackUrl"] = "http//:www.kxcall.com"; string sectoken = "d89d32ab-f96d-4b29-be6f-8fb3f7a3cd6c"; StringBuilder query = new StringBuilder(); foreach (KeyValuePair <string, string> p in parameters) { if (query.ToString() == "") { query.Append(p.Key); query.Append("="); query.Append(p.Value); } else { query.Append("&"); query.Append(p.Key); query.Append("="); query.Append(p.Value); } } string sign = UrlSignUtil.GetMD5(query.ToString() + "&key=" + sectoken); }
private void GetToken(Resrouce_interface api) { lock (telcom) { Logger.Info("Gettoken..."); if (DateTimeUtil.ConvertDateTimeToInt(DateTime.Now) < expiredTime) { return; } //Logger.Info("id:"+api.Username); //Logger.Info("AppSecret:" + api.AppSecret); //Logger.Info("reqToken:" + UrlSignUtil.GetMD5(api.Username + api.AppSecret)); NameValueCollection col = new NameValueCollection(); col.Add("reqToken", UrlSignUtil.GetMD5(api.Username + api.AppSecret)); col.Add("id", api.Username); Logger.Info("URL:" + api.GetTokenUrl); string resStr = HttpSercice.PostHttpRequest(api.GetTokenUrl, col, WeChat.Adapter.Requests.RequestType.POST, null); if (!string.IsNullOrEmpty(resStr)) { try { Newtonsoft.Json.Linq.JObject jsonResult = Newtonsoft.Json.Linq.JObject.Parse(resStr); string result = jsonResult["result"].ToString(); string rtoken = jsonResult["token"] != null? jsonResult["token"].ToString():null; string message = jsonResult["resultMsg"].ToString(); Logger.Info("Request token result:" + resStr); if (!string.IsNullOrEmpty(result) && result.Trim() == "0") { token = rtoken; expiredTime = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now) + expiredInterval; } else { Logger.Error(message != null?message:"Failed to request token."); } } catch (Exception ex) { Logger.Fatal(ex); } } else { Logger.Info("Empty response."); } Logger.Info("Gettoken done!"); } }
static void charge() { SortedDictionary <string, string> parameters = new SortedDictionary <string, string>(); parameters["Token"] = "0ce9445505baa521ed1a2b0a34853164"; parameters["Id"] = "57"; //parameters["Id"] = "48"; parameters["Province"] = "河南"; parameters["City"] = "商丘"; parameters["Mobile"] = "15649939049"; parameters["MobileSP"] = "中国联通"; //parameters["Client_order_id"] = "102365"; parameters["CallBackUrl"] = "http://113.31.21.238:8200/flux/callbackservice/yifengcb.ws"; string sectoken = "0a483117-4e4d-4d97-aad4-d6576c2ffdec"; StringBuilder query = new StringBuilder(); foreach (KeyValuePair <string, string> p in parameters) { if (query.ToString() == "") { query.Append(p.Key); query.Append("="); query.Append(p.Value); } else { query.Append("&"); query.Append(p.Key); query.Append("="); query.Append(p.Value != null ? p.Value : ""); } } string urlStr = query.ToString() + "&key=" + sectoken; string sign = UrlSignUtil.GetMD5(urlStr); NameValueCollection col = new NameValueCollection(); foreach (KeyValuePair <string, string> p in parameters) { col.Add(p.Key, p.Value); } col.Add("Sign", sign); string res = WeChat.Adapter.Requests.HttpSercice.PostHttpRequest(url + "Charge", col, WeChat.Adapter.Requests.RequestType.POST, null); }
static void products() { SortedDictionary <string, string> parameters = new SortedDictionary <string, string>(); parameters["Token"] = "fd01e1c7c0e98db26b91d6f81ed20529"; string sectoken = "0c16e09b-b822-4b5a-bab4-19e6855b3211"; string query = "Token=fd01e1c7c0e98db26b91d6f81ed20529"; string sign = UrlSignUtil.GetMD5(query + "&key=" + sectoken); NameValueCollection col = new NameValueCollection(); foreach (KeyValuePair <string, string> p in parameters) { col.Add(p.Key, p.Value); } col.Add("Sign", sign); string res = WeChat.Adapter.Requests.HttpSercice.PostHttpRequest(url + "Products", col, WeChat.Adapter.Requests.RequestType.POST, null); Console.WriteLine(res); }
static void CallBack() { string url = "http://125.83.166.97:7892/"; SortedDictionary <string, string> parameters = new SortedDictionary <string, string>(); parameters["OrderId"] = "45576"; parameters["ClientOrderId"] = "20161207170612920"; parameters["Status"] = "FAILED"; parameters["Message"] = "充值失败"; StringBuilder query = new StringBuilder(); foreach (KeyValuePair <string, string> p in parameters) { if (query.ToString() == "") { query.Append(p.Key); query.Append("="); query.Append(p.Value); } else { query.Append("&"); query.Append(p.Key); query.Append("="); query.Append(p.Value != null ? p.Value : ""); } } string urlStr = query.ToString() + "&key=ce9213e7-b65f-40bf-996f-455078c8430a"; string sign = UrlSignUtil.GetMD5(urlStr); NameValueCollection col = new NameValueCollection(); col.Add("OrderId", "45576"); col.Add("ClientOrderId", "20161207170612920"); col.Add("Status", "FAILED"); col.Add("Message", "充值失败"); col.Add("Sign", sign); string res = WeChat.Adapter.Requests.HttpSercice.PostHttpRequest(url, col, WeChat.Adapter.Requests.RequestType.POST, null); }
public async Task <Users> CreateAdministrator(Users dbUser) { if (dbUser == null) { throw new KMBitException("参数不正确"); } if (string.IsNullOrEmpty(dbUser.Email)) { throw new KMBitException("邮箱地址不能为空"); } if (string.IsNullOrEmpty(dbUser.PasswordHash)) { throw new KMBitException("用户密码不能为空"); } if (!CurrentLoginUser.Permission.CREATE_USER) { throw new KMBitException("没有权限创建用户"); } using (chargebitEntities db = new chargebitEntities()) { Users u = (from usr in db.Users where usr.Email == dbUser.Email select usr).FirstOrDefault <Users>(); if (u != null) { throw new KMBitException("此邮箱已经注册过,不能重复注册"); } ApplicationUserManager manager = new ApplicationUserManager(new ApplicationUserStore(new chargebitEntities())); ApplicationUser appUser = new ApplicationUser(); appUser.Address = ""; appUser.AccessFailedCount = 0; appUser.City_id = 0; appUser.CreatedBy = CurrentLoginUser.User.Id; appUser.Credit_amount = 0; appUser.Description = ""; appUser.Email = dbUser.Email; appUser.UserName = dbUser.Email; appUser.Name = dbUser.Name; appUser.PasswordHash = dbUser.PasswordHash; appUser.Pay_type = 0; appUser.PhoneNumber = dbUser.PhoneNumber; appUser.Province_id = 0; appUser.Regtime = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now); appUser.Enabled = dbUser.Enabled; appUser.Type = 1; appUser.Update_time = appUser.Regtime; appUser.AccessToken = UrlSignUtil.GetMD5(Guid.NewGuid().ToString()); var result = await manager.CreateAsync(appUser, dbUser.PasswordHash); if (result.Succeeded) { u = (from usr in db.Users where usr.Email == dbUser.Email select usr).FirstOrDefault <Users>(); Admin_Users au = new Admin_Users() { Description = "管理员", IsSuperAdmin = false, IsWebMaster = false, User_Id = u.Id }; db.Admin_Users.Add(au); db.SaveChanges(); } return(u); } }
public ChargeResult Charge(ChargeOrder order) { Logger.Info("Charging..."); ChargeResult result = new ChargeResult() { Status = ChargeStatus.FAILED }; chargebitEntities db = null; ProceedOrder(order, out result); if (result.Status == ChargeStatus.FAILED) { return(result); } List <WebRequestParameters> parmeters = new List <WebRequestParameters>(); bool succeed = false; try { db = new chargebitEntities(); Charge_Order corder = (from co in db.Charge_Order where co.Id == order.Id select co).FirstOrDefault <Charge_Order>(); corder.Process_time = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now); KMBit.DAL.Resrouce_interface rInterface = (from ri in db.Resrouce_interface where ri.Resource_id == order.ResourceId select ri).FirstOrDefault <Resrouce_interface>(); Resource_taocan taocan = (from t in db.Resource_taocan where t.Id == order.ResourceTaocanId select t).FirstOrDefault <Resource_taocan>(); ServerUri = new Uri(rInterface.APIURL); StringBuilder body = new StringBuilder(); body.Append("{"); body.Append("usernumber:\"" + rInterface.Username + "\""); body.Append(",gavingnumber:\"" + order.MobileNumber + "\""); body.Append(",packagetype:\"1\""); body.Append(",packagecode:\"" + taocan.Serial + "\""); body.Append(",validtype:\"0\""); body.Append("}"); string appx = order.Id.ToString(); string timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string method = "ai.cuc.ll.method.gav"; string appkey = rInterface.AppKey; // "ai.cuc.ll.appkey.test"; string appSecret = rInterface.AppSecret; // "8888"; parmeters.Add(new WebRequestParameters("apptx", appx, false)); parmeters.Add(new WebRequestParameters("timestamp", timestamp, false)); parmeters.Add(new WebRequestParameters("method", method, false)); parmeters.Add(new WebRequestParameters("appkey", appkey, false)); parmeters.Add(new WebRequestParameters("msg", body.ToString(), false)); SortedDictionary <string, string> paras = new SortedDictionary <string, string>(); foreach (WebRequestParameters p in parmeters) { paras.Add(p.Name, p.Value); } string urlStr = string.Empty; foreach (KeyValuePair <string, string> p in paras) { if (urlStr == string.Empty) { urlStr = p.Key + "=" + p.Value; } else { urlStr += "&" + p.Key + "=" + p.Value; } } urlStr += "&" + UrlSignUtil.GetMD5(appSecret); string sign = UrlSignUtil.GetMD5(urlStr); parmeters.Add(new WebRequestParameters("sign", sign, false)); parmeters.Add(new WebRequestParameters("signMethod", "MD5", false)); SendRequest(parmeters, false, out succeed, RequestType.POST); //parse Response if (!string.IsNullOrEmpty(Response)) { result.Message = ChargeConstant.SUCCEED_CHARGE; result.Status = ChargeStatus.SUCCEED; try { Newtonsoft.Json.Linq.JObject jsonResult = Newtonsoft.Json.Linq.JObject.Parse(Response); string code = jsonResult["code"].ToString(); string message = jsonResult["detail"].ToString(); switch (code) { case "0000": result.Status = ChargeStatus.SUCCEED; break; case "9999": result.Status = ChargeStatus.FAILED; result.Message = message; break; default: result.Message = "未知错误"; result.Status = ChargeStatus.FAILED; break; } } catch (Exception ex) { result.Message = ex.Message; result.Status = ChargeStatus.FAILED; } } else { result.Message = "未知错误"; result.Status = ChargeStatus.FAILED; } if (result.Message != null && result.Message.Length > 5000) { result.Message = result.Message.Substring(0, 5000); } ChangeOrderStatus(order, result); } catch (Exception ex) { Logger.Fatal(ex); } finally { if (db != null) { db.Dispose(); } } Logger.Info("Charging done!"); return(result); }
public ChargeResult Charge(ChargeOrder order) { ChargeResult result = new ChargeResult() { Status = ChargeStatus.FAILED }; chargebitEntities db = null; ProceedOrder(order, out result); if (result.Status == ChargeStatus.FAILED) { return(result); } List <WebRequestParameters> parmeters = new List <WebRequestParameters>(); bool succeed = false; try { db = new chargebitEntities(); Charge_Order corder = (from co in db.Charge_Order where co.Id == order.Id select co).FirstOrDefault <Charge_Order>(); corder.Process_time = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now); KMBit.DAL.Resrouce_interface rInterface = (from ri in db.Resrouce_interface where ri.Resource_id == order.ResourceId select ri).FirstOrDefault <Resrouce_interface>(); Resource_taocan taocan = (from t in db.Resource_taocan where t.Id == order.ResourceTaocanId select t).FirstOrDefault <Resource_taocan>(); ServerUri = new Uri(rInterface.APIURL); parmeters.Add(new WebRequestParameters("V", version, false)); parmeters.Add(new WebRequestParameters("Action", "charge", false)); parmeters.Add(new WebRequestParameters("Range", taocan.Area_id > 0 ? "1" : "0", false)); SortedDictionary <string, string> paras = new SortedDictionary <string, string>(); paras["Account"] = rInterface.Username; paras["Mobile"] = order.MobileNumber; paras["Package"] = taocan.Quantity.ToString(); string signStr = ""; foreach (KeyValuePair <string, string> p in paras) { if (signStr == string.Empty) { signStr += p.Key.ToLower() + "=" + p.Value; } else { signStr += "&" + p.Key.ToLower() + "=" + p.Value; } } signStr += "&key=" + KMAes.DecryptStringAES(rInterface.Userpassword); paras["Sign"] = UrlSignUtil.GetMD5(signStr); foreach (KeyValuePair <string, string> p in paras) { parmeters.Add(new WebRequestParameters(p.Key, p.Value, false)); } SendRequest(parmeters, false, out succeed); if (!string.IsNullOrEmpty(Response)) { JObject jsonResult = JObject.Parse(Response); order.OutOrderId = jsonResult["TaskID"] != null ? jsonResult["TaskID"].ToString() : ""; string code = jsonResult["Code"] != null ? jsonResult["Code"].ToString() : ""; string message = jsonResult["Message"] != null ? jsonResult["Message"].ToString() : ""; result.Message = message; switch (code) { case "0": result.Message = ChargeConstant.CHARGING; result.Status = ChargeStatus.ONPROGRESS; break; case "001": result.Status = ChargeStatus.FAILED; break; case "002": result.Status = ChargeStatus.FAILED; break; case "003": result.Status = ChargeStatus.FAILED; break; case "004": result.Status = ChargeStatus.FAILED; result.Message = ChargeConstant.RESOURCE_NOT_ENOUGH_MONEY; break; case "005": result.Status = ChargeStatus.FAILED; break; case "006": result.Status = ChargeStatus.FAILED; break; case "007": result.Status = ChargeStatus.FAILED; break; case "008": result.Status = ChargeStatus.FAILED; break; case "009": result.Status = ChargeStatus.FAILED; break; case "100": result.Status = ChargeStatus.FAILED; break; case "999": result.Status = ChargeStatus.FAILED; break; default: result.Status = ChargeStatus.FAILED; break; } ChangeOrderStatus(order, result); } } catch (Exception ex) { Logger.Fatal(ex); }finally { if (db != null) { db.Dispose(); } } return(result); }
public void ImportProducts(int resourceId, int operate_user) { chargebitEntities db = null; try { bool succeed = false; List <WebRequestParameters> parmeters = new List <WebRequestParameters>(); parmeters.Add(new WebRequestParameters("V", version, false)); parmeters.Add(new WebRequestParameters("Action", "getPackage", false)); db = new chargebitEntities(); db.Configuration.AutoDetectChangesEnabled = false; KMBit.DAL.Resrouce_interface rInterface = (from ri in db.Resrouce_interface where ri.Resource_id == resourceId select ri).FirstOrDefault <Resrouce_interface>(); ServerUri = new Uri(rInterface.ProductApiUrl); SortedDictionary <string, string> paras = new SortedDictionary <string, string>(); paras["Account"] = rInterface.Username; paras["Type"] = "0"; string signStr = ""; foreach (KeyValuePair <string, string> p in paras) { if (signStr == string.Empty) { signStr += p.Key.ToLower() + "=" + p.Value; } else { signStr += "&" + p.Key.ToLower() + "=" + p.Value; } } signStr += "&key=" + KMAes.DecryptStringAES(rInterface.Userpassword); paras["Sign"] = UrlSignUtil.GetMD5(signStr); foreach (KeyValuePair <string, string> p in paras) { parmeters.Add(new WebRequestParameters(p.Key, p.Value, false)); } SendRequest(parmeters, false, out succeed); if (succeed) { if (!string.IsNullOrEmpty(Response)) { JObject json = JObject.Parse(Response); string code = json["Code"] != null? json["Code"].ToString():""; string message = json["Message"] != null ? json["Message"].ToString() : ""; if (!string.IsNullOrEmpty(code) && code == "0" && !string.IsNullOrEmpty(message) && message == "OK") { JArray packages = (JArray)json["Packages"]; if (packages != null) { for (int i = 0; i < packages.Count; i++) { JObject package = (JObject)packages[i]; if (package != null) { Resource_taocan taocan = null; int sp = 0; int spId = 0; int.TryParse(package["Type"].ToString(), out sp); int quantity = 0; int.TryParse(package["Package"].ToString(), out quantity); float price = 0; float.TryParse(package["Price"].ToString(), out price); if (sp == 2) { spId = 3; } else if (sp == 1) { spId = 1; } else if (sp == 3) { spId = 2; } taocan = (from t in db.Resource_taocan where t.Resource_id == rInterface.Resource_id && t.Quantity == quantity && t.Sp_id == spId select t).FirstOrDefault <Resource_taocan>(); if (taocan != null) { taocan.Purchase_price = price; taocan.UpdatedBy = operate_user; taocan.Updated_time = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now); db.SaveChanges(); } else { taocan = new Resource_taocan() { Area_id = 0, CreatedBy = operate_user, Created_time = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now), Enabled = false, EnableDiscount = true, Purchase_price = price, Quantity = quantity, Resource_id = rInterface.Resource_id, Sale_price = price, Serial = "", Sp_id = spId, Taocan_id = 0, Resource_Discount = 1 }; Taocan ntaocan = (from t in db.Taocan where t.Sp_id == taocan.Sp_id && t.Quantity == taocan.Quantity select t).FirstOrDefault <Taocan>(); Sp spO = (from s in db.Sp where s.Id == taocan.Sp_id select s).FirstOrDefault <Sp>(); if (ntaocan == null) { string taocanName = spO != null ? spO.Name + " " + taocan.Quantity.ToString() + "M" : "全网 " + taocan.Quantity.ToString() + "M"; ntaocan = new Taocan() { Created_time = taocan.Created_time, Description = taocanName, Name = taocanName, Sp_id = taocan.Sp_id, Quantity = taocan.Quantity, Updated_time = 0 }; db.Taocan.Add(ntaocan); db.SaveChanges(); } if (ntaocan.Id > 0) { taocan.Taocan_id = ntaocan.Id; db.Resource_taocan.Add(taocan); } } } } db.SaveChanges(); } } } } } catch (Exception ex) { Logger.Fatal(ex); } finally { if (db != null) { db.Dispose(); } } }
public void GetChargeStatus(int resourceId) { chargebitEntities db = new chargebitEntities(); try { List <Charge_Order> orders = (from o in db.Charge_Order where o.Status == 1 select o).ToList <Charge_Order>(); if (orders.Count <= 0) { Logger.Info("No orders need to sync status of resourceId:" + resourceId); return; } Logger.Info(string.Format("{0} orders need to sync status", orders.Count)); KMBit.DAL.Resrouce_interface rInterface = (from ri in db.Resrouce_interface where ri.Resource_id == resourceId select ri).FirstOrDefault <Resrouce_interface>(); ServerUri = new Uri(rInterface.APIURL); List <WebRequestParameters> parmeters = new List <WebRequestParameters>(); parmeters.Add(new WebRequestParameters("V", version, false)); parmeters.Add(new WebRequestParameters("Action", "getReports", false)); SortedDictionary <string, string> paras = new SortedDictionary <string, string>(); paras["Account"] = rInterface.Username; paras["Count"] = statusCount.ToString(); string signStr = ""; foreach (KeyValuePair <string, string> p in paras) { if (signStr == string.Empty) { signStr += p.Key.ToLower() + "=" + p.Value; } else { signStr += "&" + p.Key.ToLower() + "=" + p.Value; } } signStr += "&key=" + KMAes.DecryptStringAES(rInterface.Userpassword); paras["Sign"] = UrlSignUtil.GetMD5(signStr); foreach (KeyValuePair <string, string> p in paras) { parmeters.Add(new WebRequestParameters(p.Key, p.Value, false)); } bool succeed = false; SendRequest(parmeters, false, out succeed); if (succeed && !string.IsNullOrEmpty(Response)) { JObject jsonRes = JObject.Parse(Response); string code = jsonRes["Code"] != null ? jsonRes["Code"].ToString() : ""; string message = jsonRes["Message"] != null ? jsonRes["Message"].ToString() : ""; Logger.Info(string.Format("Code:{0}, Message:{1}", code, message)); if (!string.IsNullOrEmpty(code) && code == "0" && !string.IsNullOrEmpty(message) && message == "OK") { JArray charges = (JArray)jsonRes["Reports"]; if (charges != null) { Logger.Info(string.Format("Get {0} reports from resource", charges.Count)); for (int i = 0; i < charges.Count; i++) { JObject report = (JObject)charges[i]; string taskId = report["TaskID"] != null? report["TaskID"].ToString():""; string phone = report["Mobile"] != null? report["Mobile"].ToString():""; string status = report["Status"] != null? report["Status"].ToString():""; string time = report["ReportTime"] != null?report["ReportTime"].ToString():""; string rptCode = report["ReportCode"] != null? report["ReportCode"].ToString():""; Logger.Info(string.Format("TaskId:{0}, MobilePhone:{1}, Status:{2}, Time:{3}", taskId, phone, status, time)); Charge_Order order = (from o in orders where o.Out_Order_Id == taskId && o.Phone_number == phone select o).FirstOrDefault <Charge_Order>(); if (order != null && !string.IsNullOrEmpty(taskId) && !string.IsNullOrEmpty(phone) && !string.IsNullOrEmpty(status)) { DateTime cTime = DateTime.MinValue; DateTime.TryParse(time, out cTime); if (cTime != DateTime.MinValue) { order.Completed_Time = DateTimeUtil.ConvertDateTimeToInt(cTime); } if (status == "4") { order.Status = 2; order.Message = "充值成功:" + rptCode; RemoveQRCode(order); } else if (status == "5") { order.Status = 3; order.Message = "充值失败:" + rptCode; if (order.Agent_Id > 0) { if (order.MarketOrderId <= 0) { Users agency = (from u in db.Users where u.Id == order.Agent_Id select u).FirstOrDefault <Users>(); if (agency != null) { agency.Remaining_amount += order.Purchase_price; order.Refound = true; } } else { order.Message = string.Format("充值失败:{0},二维码可以重复扫码使用直到充值成功", rptCode); order.Refound = false; Marketing_Orders mOrder = (from mo in db.Marketing_Orders where mo.Id == order.MarketOrderId select mo).FirstOrDefault <Marketing_Orders>(); if (mOrder != null) { mOrder.Used = false; } } db.SaveChanges(); } } } //send back status to agent api calling if (!string.IsNullOrEmpty(order.CallBackUrl)) { this.SendStatusBackToAgentCallback(order); } } if (charges != null && charges.Count > 0) { db.SaveChanges(); } } } } } catch (KMBitException kex) { Logger.Warn(kex); }catch (Exception ex) { Logger.Fatal(ex); }finally { if (db != null) { db.Dispose(); } } }
public ActionResult DoSaoMa() { string p = Request["p"]; string number = Request["mobile_number"]; string spName = Request["SPName"]; string province = Request["Province"]; string city = Request["City"]; if (string.IsNullOrEmpty(p)) { ViewBag.Message = "参数错误,请正确扫码,输入手机号码点充值"; } else { int agentId = 0; int customerId = 0; int activityId = 0; int activityOrderId = 0; string parameters = KMEncoder.Decode(p); if (!string.IsNullOrEmpty(parameters)) { string signature = string.Empty; SortedDictionary <string, string> pvs = parseParameters(parameters, out signature); if (string.IsNullOrEmpty(signature)) { ViewBag.Message = "URL参数不正确,请重新扫码"; return(View("SaoMa")); } System.Text.StringBuilder pBuilder = new System.Text.StringBuilder(); if (pvs.Count > 0) { int count = 1; foreach (KeyValuePair <string, string> pair in pvs) { pBuilder.Append(pair.Key); pBuilder.Append("="); pBuilder.Append(pair.Value); if (count < pvs.Count) { pBuilder.Append("&"); } count++; switch (pair.Key) { case "agentId": int.TryParse(pair.Value, out agentId); break; case "customerId": int.TryParse(pair.Value, out customerId); break; case "activityId": int.TryParse(pair.Value, out activityId); break; case "activityOrderId": int.TryParse(pair.Value, out activityOrderId); break; } } CustomerManagement customerMgr = new CustomerManagement(0); int total; List <BCustomer> customers = customerMgr.FindCustomers(0, customerId, out total); if (total <= 0 || total > 1) { ViewBag.Message = "URL参数不正确,请重新扫码"; return(View("SaoMa")); } pBuilder.Append("&key="); pBuilder.Append(customers[0].Token); string sign = UrlSignUtil.GetMD5(pBuilder.ToString()); if (sign != signature) { ViewBag.Message = "URL参数不正确,请重新扫码"; return(View("SaoMa")); } ActivityManagement activityMgr = new ActivityManagement(0); BMarketOrderCharge order = new BMarketOrderCharge() { ActivityId = activityId, ActivityOrderId = activityOrderId, AgentId = agentId, CustomerId = customerId, City = city, Province = province, OpenId = "", Phone = number, SPName = spName }; KMBit.BL.Charge.ChargeResult result = activityMgr.MarketingCharge(order); ViewBag.Message = result.Message; //if(result.Status == ChargeStatus.FAILED) //{ // ViewBag.Paras = pvs; // //paras.Add("p", p); //} } } else { ViewBag.Message = "不能重复扫码,或者修改扫码后的URL地址"; } } return(View("SaoMa")); }
public static void ProcessOrders() { logger.Info("Going to process orders..."); chargebitEntities db = null; try { List <Charge_Order> orders = null; db = new chargebitEntities(); db.Configuration.AutoDetectChangesEnabled = true; if (resources == null) { resources = (from r in db.Resource where r.Enabled == true select r).ToList <Resource>(); } if (resourceAPIs == null) { resourceAPIs = (from r in db.Resrouce_interface select r).ToList <Resrouce_interface>(); } lock (o) { logger.Info("Last Max Order Id:" + lastOrderId); orders = (from o in db.Charge_Order where o.Id > lastOrderId && ((o.Payed == true && o.Charge_type == 0 && o.Status == 10) || (o.Charge_type == 1 && o.Status != 3 && o.Status != 2) || (o.Charge_type == 2 && o.Status != 3 && o.Status != 2)) orderby o.Charge_type ascending orderby o.Id ascending select o).ToList <Charge_Order>(); logger.Info(string.Format("Get {0} unprocessed orders", orders.Count)); if (orders.Count == 0) { logger.Info("No unprocessed orders, thread will exit!"); return; } lastOrderId = (from o in orders select o.Id).Max(); logger.Info("Max Order Id updated to:" + lastOrderId); } List <int> agentIds = (from o in orders where o.Agent_Id > 0 select o.Agent_Id).ToList <int>(); List <Users> agents = new List <Users>(); if (agentIds != null && agentIds.Count > 0) { int[] ids = agentIds.ToArray <int>(); agents = (from u in db.Users where ids.Contains(u.Id) select u).ToList <Users>(); } List <Charge_Order> frontEndOrders = (from o in orders where o.Payed == true && o.Charge_type == 0 && o.Status == 10 select o).ToList <Charge_Order>(); List <Charge_Order> agentOrders = (from o in orders where o.Charge_type == 1 && o.Status != 3 && o.Status != 2 select o).ToList <Charge_Order>(); List <Charge_Order> backendOrders = (from o in orders where o.Charge_type == 2 && o.Status != 3 && o.Status != 2 select o).ToList <Charge_Order>(); //logger.Info(string.Format("{0} unprocessed frontend orders", frontEndOrders.Count)); //logger.Info(string.Format("{0} unprocessed agent orders", agentOrders.Count)); //logger.Info(string.Format("{0} unprocessed backend orders", backendOrders.Count)); ChargeResult result = null; logger.Info(""); foreach (Charge_Order corder in orders) { Resource resource = (from r in resources where r.Id == corder.Resource_id select r).FirstOrDefault <Resource>(); Resrouce_interface resourceAPI = null; if (resource != null) { resourceAPI = (from api in resourceAPIs where api.Resource_id == corder.Resource_id select api).FirstOrDefault <Resrouce_interface>(); } logger.Info(string.Format("Processing order Id-{0}, Phone-{1}, Agent-{2}, ChargeType-{3}", corder.Id.ToString(), corder.Phone_number, corder.Agent_Id, corder.Charge_type)); ChargeOrder order = new ChargeOrder() { Payed = corder.Payed, ChargeType = corder.Charge_type, AgencyId = corder.Agent_Id, OperateUserId = corder.Operate_User, Id = corder.Id, Province = corder.Province, City = corder.City, MobileSP = corder.MobileSP, MobileNumber = corder.Phone_number, OutOrderId = "", ResourceId = 0, ResourceTaocanId = corder.Resource_taocan_id, RouteId = corder.RuoteId, CreatedTime = corder.Created_time }; result = cb.Charge(order); Users agent = (from u in agents where corder.Agent_Id > 0 && corder.Agent_Id == u.Id select u).FirstOrDefault <Users>(); logger.Info("Order status - " + order.Status); //just for Synchronized resources if (!string.IsNullOrEmpty(corder.CallBackUrl) && corder.Agent_Id > 0 && agent != null && resourceAPI != null && (resourceAPI.Synchronized == true || result.Status == ChargeStatus.FAILED) ) { logger.Info("Synchronized resource api or failed resource api submission."); //send back the status to agent system NameValueCollection col = new NameValueCollection(); SortedDictionary <string, string> param = new SortedDictionary <string, string>(); param.Add("OrderId", corder.Id.ToString()); param.Add("ClientOrderId", corder.Client_Order_Id != null?corder.Client_Order_Id.ToString():""); param.Add("Message", result.Message); param.Add("Status", result.Status.ToString()); string querystr = ""; foreach (KeyValuePair <string, string> p in param) { col.Add(p.Key, p.Value != null ? p.Value : ""); if (querystr == "") { querystr = p.Key + "=" + (p.Value != null ? p.Value : ""); } else { querystr += "&" + p.Key + "=" + (p.Value != null ? p.Value : ""); } } logger.Info(string.Format("Post data to callback url - {0}", corder.CallBackUrl)); logger.Info(string.Format("Data - {0}", querystr)); querystr += "&key=" + agent.SecurityStamp; string sign = UrlSignUtil.GetMD5(querystr); col.Add("Sign", sign); //logger.Info("sign=" + sign); string resStr = HttpSercice.PostHttpRequest(corder.CallBackUrl, col, WeChat.Adapter.Requests.RequestType.POST, null); if (resStr == null) { corder.PushedTimes += 1; corder.Received = true; } else if (resStr.ToLower() == "fail") { corder.PushedTimes += 1; corder.Received = false; } db.SaveChanges(); } logger.Info(string.Format("Order ID:{2} - {0} - {1}", result.Status, result.Message, corder.Id)); logger.Info(""); } } catch (Exception ex) { logger.Error(ex); } finally { if (db != null) { db.Dispose(); } } }
static string Md5(string s) { return(UrlSignUtil.GetMD5(s)); }
protected void SendStatusBackToAgentCallback(Charge_Order order) { Logger.Info("SendStatusBackToAgentCallback"); if (order == null || order.Agent_Id <= 0 || string.IsNullOrEmpty(order.CallBackUrl)) { return; } Logger.Info(string.Format("Order Id {0}", order.Id.ToString())); Logger.Info(string.Format("Order Status {0}", order.Status.ToString())); Logger.Info(string.Format("Order Message {0}", order.Message != null?order.Message:"")); chargebitEntities db = new chargebitEntities(); try { List <WebRequestParameters> parmeters = new List <WebRequestParameters>(); SortedDictionary <string, string> paras = new SortedDictionary <string, string>(); string orderId = order.Id.ToString(); string status = order.Status.ToString(); string message = order.Message != null ? order.Message : ""; Users agent = (from u in db.Users where u.Id == order.Agent_Id select u).FirstOrDefault <Users>(); Logger.Info(string.Format("Agent {0}", agent.Email)); if (agent == null) { status = "3"; message = "代理商账户没有找到"; } string token = agent.SecurityStamp; paras["OrderId"] = orderId; paras["Status"] = status; paras["Message"] = message; string signStr = ""; foreach (KeyValuePair <string, string> p in paras) { if (signStr == string.Empty) { signStr += p.Key.ToLower() + "=" + p.Value; } else { signStr += "&" + p.Key.ToLower() + "=" + p.Value; } } signStr += "&key=" + token; Logger.Info(string.Format("Sign String {0}", signStr)); Logger.Info(string.Format("Signature {0}", UrlSignUtil.GetMD5(signStr))); paras["Signature"] = UrlSignUtil.GetMD5(signStr); foreach (KeyValuePair <string, string> p in paras) { parmeters.Add(new WebRequestParameters(p.Key, p.Value, false)); } ServerUri = new Uri(order.CallBackUrl); bool succeed = false; SendRequest(parmeters, false, out succeed); if (succeed) { Logger.Info("Successfully sent back status to anegt callback API"); } else { Logger.Info("Failed sent back status to anegt callback API"); } } catch (Exception ex) { }finally { if (db != null) { db.Dispose(); } Logger.Info("Leaving SendStatusBackToAgentCallback"); } }
public HttpResponseMessage WeChatPayBack() { var resp = new HttpResponseMessage(HttpStatusCode.OK); string returnXML = null; logger.Info("PaymentController.WeChatPayBack is being called by Wechat payment notify service........................."); Stream stream = Request.InputStream; if (stream != null) { StreamReader rs = null; try { rs = new StreamReader(stream); string result = rs.ReadToEnd(); if (!string.IsNullOrEmpty(result)) { logger.Info("Below is the data posted by wechat payment service"); logger.Info(result); string paraValues = WeChatPaymentWrapper.ParsePaymentNotifySignParas(result); logger.Info(string.Format("{0} needs to be signed", paraValues)); BaseResponse baseresponse = WeChatPaymentWrapper.ParsePaymentNotify(result); PaymentNotifyResponse response = null; if (baseresponse != null) { response = (PaymentNotifyResponse)baseresponse; } logger.Info(string.Format("Signature sent by wechat is {0}", response.sign)); WeChatPayConfig config = PersistentValueManager.config; paraValues += "&key=" + config.ShopSecret; string sign = UrlSignUtil.GetMD5(paraValues).ToUpper(); logger.Info(string.Format("Signature caculated by localsystem is {0}", sign)); if (sign != response.sign) { logger.Error("Two signatures are different, the request was not sent by wechat payment system."); returnXML = "<xml><return_code>FAIL</return_code><return_msg>签名不正确</return_msg></xml>"; resp.Content = new StringContent(returnXML, System.Text.Encoding.UTF8, "text/plain"); } logger.Info("Sign verification passed"); OrderManagement orderMgr = new OrderManagement(0); PaymentManagement payMgr = new PaymentManagement(0); int paymentId = 0; int.TryParse(response.out_trade_no, out paymentId); if (paymentId > 0) { logger.Info("Going to process payment id" + paymentId); ChargeResult cResult = null; try { BPaymentHistory payment = null; int total = 0; List <BPaymentHistory> payments = payMgr.FindUnProcessedOnLinePayments(paymentId, 0, 0, out total); if (payments != null && payments.Count == 1) { payment = payments[0]; if (payment.PayType == 0)//直冲用户支付 { logger.Info("OpenId:" + response.openid); logger.Info("OpenTradeNo:" + response.transaction_id); cResult = orderMgr.ProcessOrderAfterPaid(paymentId, response.transaction_id, response.openid); logger.Info(cResult.Status.ToString()); logger.Info(cResult.Message); if (cResult.Status == ChargeStatus.SUCCEED) { logger.Info("The payment status has been successfully synced to local system."); returnXML = "<xml><return_code>SUCCESS</return_code><return_msg>OK</return_msg></xml>"; resp.Content = new StringContent(returnXML, System.Text.Encoding.UTF8, "text/plain"); return(resp); } else { logger.Error(cResult.Message); returnXML = "<xml><return_code>FAIL</return_code><return_msg>unexpected error</return_msg></xml>"; resp.Content = new StringContent(returnXML, System.Text.Encoding.UTF8, "text/plain"); return(resp); } } } else { logger.Warn("Didn't find payment by id:" + paymentId); returnXML = "<xml><return_code>FAIL</return_code><return_msg>out_trade_no is wrong</return_msg></xml>"; resp.Content = new StringContent(returnXML, System.Text.Encoding.UTF8, "text/plain"); } } catch (KMBitException e) { returnXML = "<xml><return_code>FAIL</return_code><return_msg>unexpected error</return_msg></xml>"; resp.Content = new StringContent(returnXML, System.Text.Encoding.UTF8, "text/plain"); logger.Error(e); } catch (Exception ex) { returnXML = "<xml><return_code>FAIL</return_code><return_msg>unexpected error</return_msg></xml>"; resp.Content = new StringContent(returnXML, System.Text.Encoding.UTF8, "text/plain"); logger.Fatal(ex); } } } } catch (Exception ex) { logger.Error(ex); } } logger.Info("Done..................."); return(resp); }
public JsonResult PreCharge(WeChatChargeModel model) { logger.Info("WeChatController.PreCharge......................................................"); ApiMessage message = new ApiMessage(); ChargeOrder order = null; if (ModelState.IsValid) { try { if (string.IsNullOrEmpty(model.OpenId)) { message.Status = "ERROR"; message.Message = "请从公众号菜单打开此页面"; return(Json(message, JsonRequestBehavior.AllowGet)); } //ChargeBridge cb = new ChargeBridge(); order = new ChargeOrder() { ChargeType = 0, AgencyId = 0, Id = 0, Province = model.Province, City = model.City, MobileSP = model.SPName, MobileNumber = model.Mobile, OutOrderId = "", ResourceId = 0, ResourceTaocanId = model.ResourceTaocanId, RouteId = 0, CreatedTime = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now), Payed = false, OpenId = model.OpenId, OpenAccountType = 1 }; // OrderManagement orderMgt = new OrderManagement(); ResourceManagement resourceMgr = new ResourceManagement(0); string msg = string.Empty; if (orderMgt.IsThisMonthCharged(order.MobileNumber, order.ResourceTaocanId, out msg)) { message.Status = "ERROR"; message.Message = msg; return(Json(message, JsonRequestBehavior.AllowGet)); } order = orderMgt.GenerateOrder(order); int total = 0; List <BResourceTaocan> taocans = resourceMgr.FindResourceTaocans(order.ResourceTaocanId, 0, 0, out total); if (taocans == null || taocans.Count == 0) { message.Message = "当前套餐不可用"; message.Status = "ERROR"; return(Json(message, JsonRequestBehavior.AllowGet)); } logger.Info(string.Format("Order is generated, Id - {0}, mobile - {1}", order.Id, order.MobileNumber)); BResourceTaocan taocan = taocans[0]; message.Status = "OK"; message.Message = "预充值订单已经生成"; message.Item = null; // string ip = Request.ServerVariables["REMOTE_ADDR"]; if (ip != null && ip.IndexOf("::") > -1) { ip = "127.0.0.1"; } string prepayId = WeChatPaymentWrapper.GetPrepayId(PersistentValueManager.config, Session["wechat_openid"] != null ? Session["wechat_openid"].ToString() : "", order.PaymentId.ToString(), "TEST WECHATPAY", ip, (int)taocan.Taocan.Sale_price * 100, TradeType.JSAPI); logger.Info(string.Format("Prepay Id - {0}", prepayId)); WeChatOrder weOrder = new WeChatOrder(); weOrder.Order = new ChargeOrder { Id = order.Id, Payed = order.Payed, PaymentId = order.PaymentId, MobileNumber = order.MobileNumber, MobileSP = order.MobileSP, Province = order.Province }; weOrder.PrepayId = prepayId; weOrder.PaySign = ""; message.Item = weOrder; AccessToken token = PersistentValueManager.GetWeChatAccessToken(); JSAPITicket ticket = PersistentValueManager.GetWeChatJsApiTicket(); SortedDictionary <string, string> parameters = new SortedDictionary <string, string>(); parameters.Add("appId", PersistentValueManager.config.APPID); parameters.Add("timeStamp", model.timestamp); parameters.Add("nonceStr", model.nancestr); parameters.Add("package", "prepay_id=" + prepayId); parameters.Add("signType", "MD5"); logger.Info(string.Format("timeStamp:{0}", model.timestamp)); logger.Info(string.Format("nonceStr:{0}", model.nancestr)); logger.Info(string.Format("package:{0}", "prepay_id=" + prepayId)); string querystr = null; foreach (KeyValuePair <string, string> para in parameters) { if (querystr == null) { querystr = para.Key + "=" + para.Value; } else { querystr += "&" + para.Key + "=" + para.Value; } } querystr += "&key=" + PersistentValueManager.config.ShopSecret; logger.Info(querystr); string sign = UrlSignUtil.GetMD5(querystr); model.paySign = sign.ToUpper(); model.prepay_id = prepayId; logger.Info(string.Format("paySign:{0}", sign.ToUpper())); message.Item = model; } catch (KMBitException kex) { logger.Error(kex); message.Message = kex.Message; message.Status = "ERROR"; } catch (Exception ex) { message.Message = "未知错误,请联系我们"; message.Status = "ERROR"; logger.Fatal(ex); } finally { } } logger.Info("Done."); return(Json(message, JsonRequestBehavior.AllowGet)); }
// GET: WeChat public ActionResult Index() { logger.Info(this.GetType().FullName + " - Index...."); WeChatChargeModel model = new WeChatChargeModel(); //get weichat account openid from redirect URL parameters if (!string.IsNullOrEmpty(Request["openid"])) { model.OpenId = Request["openid"].ToString(); Session["wechat_openid"] = model.OpenId; } else { if (Session["wechat_openid"] != null) { logger.Info("already has wechat openid stored."); model.OpenId = Session["wechat_openid"] != null ? Session["wechat_openid"].ToString() : ""; } else { string code = Request["code"]; if (!string.IsNullOrEmpty(code)) { logger.Info("new request from wechat public account, code is " + code); AccessToken weChatAccessToken = AuthHelper.GetAccessToken(PersistentValueManager.config, code); if (weChatAccessToken != null) { logger.Info("get wechat account openid by code " + code); model.OpenId = weChatAccessToken.OpenId; Session["wechat_openid"] = model.OpenId; } } } } if (!string.IsNullOrEmpty(model.OpenId)) { logger.Info("Wechat OpenId:" + model.OpenId); } else { logger.Error("Wechat OpenId is empty, cannot processing any more."); } model.nancestr = Guid.NewGuid().ToString().Replace("-", ""); if (model.nancestr.Length > 32) { model.nancestr = model.nancestr.Substring(0, 32); } model.appid = PersistentValueManager.config.APPID; model.timestamp = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now).ToString(); SortedDictionary <string, string> param = new SortedDictionary <string, string>(); JSAPITicket ticket = PersistentValueManager.GetWeChatJsApiTicket(); if (ticket != null) { param.Add("jsapi_ticket", ticket.Ticket); logger.Info("jsapi_ticket:" + ticket.Ticket); } //param.Add("appId", model.appid); param.Add("timestamp", model.timestamp); param.Add("noncestr", model.nancestr); param.Add("url", Request.Url.AbsoluteUri.ToString()); logger.Info(Request.Url.AbsoluteUri.ToString()); //param.Add("jsApiList", "[chooseWXPay]"); string sign = UrlSignUtil.SHA1_Hash(param); model.signature = sign; logger.Info("Done Index...."); return(View(model)); }
public string GenerateActivityQRCode(int agendId, int customerId, int activityId) { string codePath = string.Empty; agendId = agendId > 0 ? agendId : CurrentLoginUser.User.Id; AppSettings settings = AppSettings.GetAppSettings(); using (chargebitEntities db = new chargebitEntities()) { Marketing_Activities activity = (from a in db.Marketing_Activities where a.Id == activityId select a).FirstOrDefault <Marketing_Activities>(); if (activity == null) { throw new KMBitException(string.Format("编号为:{0}的活动不存在", activityId)); } if (activity.CustomerId != customerId) { throw new KMBitException(string.Format("编号为{0}的活动不属于编号为{1}的客户", activityId, customerId)); } if (activity.AgentId != agendId) { throw new KMBitException(string.Format("编号为{0}的活动不属于编号为{1}的代理的客户的活动", activityId, agendId)); } Customer customer = (from c in db.Customer where c.Id == customerId select c).FirstOrDefault <Customer>(); codePath = agendId + "\\" + customerId; string fileName = Guid.NewGuid().ToString() + ".png"; string absPath = agendId + "/" + customerId + "/" + fileName; string fullDirectory = Path.Combine(settings.RootDirectory + "\\" + settings.QRFolder, codePath); if (!string.IsNullOrEmpty(activity.CodePath) && File.Exists(Path.Combine(settings.RootDirectory + "\\" + settings.QRFolder, activity.CodePath.Replace('/', '\\')))) { return(activity.CodePath); } string parameter = string.Empty;// string.Format("agentId={0}&customerId={1}&activityId={2}", agendId, customerId, activityId); SortedDictionary <string, string> ps = new SortedDictionary <string, string>(); ps["agentId"] = activity.AgentId.ToString(); ps["customerId"] = activity.CustomerId.ToString(); ps["activityId"] = activity.Id.ToString(); StringBuilder pstr = new StringBuilder(); int count = 1; foreach (KeyValuePair <string, string> p in ps) { pstr.Append(p.Key); pstr.Append("="); pstr.Append(p.Value); if (count < ps.Count) { pstr.Append("&"); } count++; } parameter = pstr.ToString(); pstr.Append("&key="); pstr.Append(customer.Token); parameter = parameter + "&signature=" + UrlSignUtil.GetMD5(pstr.ToString()); parameter = KMEncoder.Encode(parameter); string codeContent = string.Format("{0}/Product/SaoMa?p={1}", settings.WebURL, parameter); QRCodeUtil.CreateQRCode(fullDirectory, fileName, codeContent); if (File.Exists(Path.Combine(fullDirectory, fileName))) { activity.CodePath = absPath; } db.SaveChanges(); return(absPath); } }
public void SendStatusBackToAgentCallback(object oorder) { if (oorder.GetType() != typeof(Charge_Order)) { return; } Charge_Order order = oorder as Charge_Order; Logger.Info("SendStatusBackToAgentCallback..."); if (order == null || order.Agent_Id <= 0 || string.IsNullOrEmpty(order.CallBackUrl)) { Logger.Info("Not an agent order, no need to proceed anymore."); return; } Logger.Info(string.Format("Order Id {0}", order.Id.ToString())); if (!string.IsNullOrEmpty(order.Client_Order_Id)) { Logger.Info(string.Format("Client OrderId {0}", order.Client_Order_Id.ToString())); } if (!string.IsNullOrEmpty(order.Out_Order_Id)) { Logger.Info(string.Format("Out Order Id {0}", order.Out_Order_Id.ToString())); } Logger.Info(string.Format("Order Status {0}", order.Status.ToString())); Logger.Info(string.Format("Order Message {0}", order.Message != null?order.Message:"")); chargebitEntities db = null; try { if (string.IsNullOrEmpty(order.CallBackUrl)) { Logger.Info("Order callback URL is empty, no need to callback."); return; } db = new chargebitEntities(); NameValueCollection col = new NameValueCollection(); SortedDictionary <string, string> paras = new SortedDictionary <string, string>(); string orderId = order.Id.ToString(); string status = order.Status.ToString(); string message = order.Message != null ? order.Message : ""; Users agent = (from u in db.Users where u.Id == order.Agent_Id select u).FirstOrDefault <Users>(); Logger.Info(string.Format("Agent {0}", agent.Email)); if (agent == null) { status = "3"; message = "代理商账户没有找到"; } string token = agent.SecurityStamp; paras["OrderId"] = orderId; paras["Status"] = status; paras["ClientOrderId"] = order.Client_Order_Id != null? order.Client_Order_Id:""; paras["Message"] = message; string signStr = ""; foreach (KeyValuePair <string, string> p in paras) { if (signStr == string.Empty) { signStr += p.Key.ToLower() + "=" + p.Value; } else { signStr += "&" + p.Key.ToLower() + "=" + p.Value; } } Logger.Info(string.Format("Post data {1} to {0}", order.CallBackUrl, signStr)); signStr += "&key=" + token; Logger.Info(string.Format("String to be signed {0}", signStr)); Logger.Info(string.Format("Signature is {0}", UrlSignUtil.GetMD5(signStr))); paras["Sign"] = UrlSignUtil.GetMD5(signStr); foreach (KeyValuePair <string, string> p in paras) { col[p.Key] = p.Value; } Charge_Order dborder = (from o in db.Charge_Order where o.Id == order.Id select o).FirstOrDefault <Charge_Order>(); string resStr = HttpSercice.PostHttpRequest(order.CallBackUrl, col, WeChat.Adapter.Requests.RequestType.POST, null); if (resStr == null) { dborder.PushedTimes += 1; dborder.Received = true; } else if (resStr.ToLower() == "fail") { dborder.PushedTimes += 1; dborder.Received = false; } db.SaveChanges(); } catch (Exception ex) { Logger.Error(ex); } finally { if (db != null) { db.Dispose(); } Logger.Info("Leaving SendStatusBackToAgentCallback..."); } }
public void GenerateQRCodeForMarketingOrders(int activityTaocanId) { AppSettings settings = AppSettings.GetAppSettings(); string qrfolder = System.IO.Path.Combine(settings.RootDirectory, settings.QRFolder); using (chargebitEntities db = new chargebitEntities()) { Marketing_Activities activity = null; Customer customer = null; List <Marketing_Orders> orders = (from o in db.Marketing_Orders where o.ActivityTaocanId == activityTaocanId select o).ToList <Marketing_Orders>(); if (orders.Count > 0) { foreach (Marketing_Orders order in orders) { if (order.Used) { continue; } if (!string.IsNullOrEmpty(order.CodePath)) { string tmpPhysicalPath = Path.Combine(settings.RootDirectory, order.CodePath.Replace('/', '\\')); if (File.Exists(tmpPhysicalPath)) { continue; } } if (activity == null) { activity = (from a in db.Marketing_Activities where a.Id == order.ActivityId select a).FirstOrDefault <Marketing_Activities>(); if (activity == null) { continue; } if (customer == null) { customer = (from c in db.Customer where c.Id == activity.CustomerId select c).FirstOrDefault <Customer>(); } } string midPhysicalPath = string.Format("{0}\\{1}", activity.AgentId, activity.CustomerId); string fileName = Guid.NewGuid().ToString() + ".png"; string urlAbsPath = string.Format("{0}/{1}/{2}", activity.AgentId, activity.CustomerId, fileName); string parameter = string.Empty; //string.Format("agentId={0}&customerId={1}&activityId={2}&activityOrderId={3}", activity.AgentId, activity.CustomerId,activity.Id,order.Id); SortedDictionary <string, string> ps = new SortedDictionary <string, string>(); ps["agentId"] = activity.AgentId.ToString(); ps["customerId"] = activity.CustomerId.ToString(); ps["activityId"] = activity.Id.ToString(); ps["activityOrderId"] = order.Id.ToString(); StringBuilder pstr = new StringBuilder(); int count = 1; foreach (KeyValuePair <string, string> p in ps) { pstr.Append(p.Key); pstr.Append("="); pstr.Append(p.Value); if (count < ps.Count) { pstr.Append("&"); } count++; } parameter = pstr.ToString(); pstr.Append("&key="); pstr.Append(customer.Token); parameter = parameter + "&signature=" + UrlSignUtil.GetMD5(pstr.ToString()); parameter = KMEncoder.Encode(parameter); string codeContent = string.Format("{0}/Product/SaoMa?p={1}", settings.WebURL, parameter); string fullFolder = Path.Combine(qrfolder, midPhysicalPath); QRCodeUtil.CreateQRCode(fullFolder, fileName, codeContent); if (File.Exists(Path.Combine(fullFolder, fileName))) { order.CodePath = urlAbsPath; } } db.SaveChanges(); } } }
public async Task <bool> CreateAgency(Users dbUser) { ApplicationUserManager manager = null; if (!CurrentLoginUser.Permission.CREATE_USER) { throw new KMBitException("没有权限创建代理商"); } int total = 0; List <BUser> existedUsers = FindAgencies(0, dbUser.Email, null, 0, 0, out total); if (existedUsers.Count > 0) { throw new KMBitException(string.Format("Email:{0}已经注册过")); } bool ret = false; try { manager = new ApplicationUserManager(new ApplicationUserStore(new chargebitEntities())); ApplicationUser appUser = new ApplicationUser(); appUser.Address = dbUser.Address; appUser.AccessFailedCount = 0; appUser.City_id = dbUser.City_id; appUser.CreatedBy = dbUser.CreatedBy; appUser.Credit_amount = dbUser.Credit_amount; appUser.Description = dbUser.Description; appUser.Email = dbUser.Email; appUser.UserName = dbUser.Email; appUser.Name = dbUser.Name; appUser.PasswordHash = dbUser.PasswordHash; appUser.Pay_type = dbUser.Pay_type; appUser.PhoneNumber = dbUser.PhoneNumber; appUser.Province_id = dbUser.Province_id; appUser.Regtime = dbUser.Regtime; appUser.Enabled = dbUser.Enabled; appUser.AccessToken = UrlSignUtil.GetMD5(Guid.NewGuid().ToString()); if (appUser.Regtime == 0) { appUser.Regtime = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now); } appUser.Type = dbUser.Type; appUser.Update_time = appUser.Regtime; appUser.UserName = dbUser.Email; var result = await manager.CreateAsync(appUser, dbUser.PasswordHash); if (result.Succeeded) { ret = true; } } catch { } finally { if (manager != null) { manager.Dispose(); } } return(ret); }