public ActionResult PayShop() { string RealName = Request.Form["RealName"]; string ContactNumber = Request.Form["ContactNumber"]; string Address = Request.Form["Addr"]; string Remarks = Request.Form["Remarks"]; int PayType = int.Parse(Request.Form["PayType"]); //订单类型 Type=0 非借用订单 int ReturnType = int.Parse(Request.Form["ReturnType"]); string OrderNo = RandStr.CreateOrderNO(); decimal RMB = 0;//全部订单金额 using (EFDB db = new EFDB()) { Guid MGid = LCookie.GetMemberGid(); //如果是积分支付先验证支付密码 var m = db.Member.Where(l => l.Gid == MGid).FirstOrDefault(); //待发货利润 decimal DFHProfit = 0; //待发货等级比例 decimal DFHLV = db.Level.Where(l => l.LV == m.CLLevel).FirstOrDefault().EquityProfit; if (PayType == 5) { if (m.PayPWD != MD5.GetMD5ljsheng(Request.Form["PayPWD"])) { return(Helper.Redirect("失败", "history.go(-1);", "支付密码错误!")); } } //购物车转化成订单 var c = db.Cart.Where(l => l.MemberGid == MGid && l.State == 1).ToList(); if (c != null) { foreach (var dr in c) { //借用订单的产品Gid string pg = ""; decimal Price = 0;//订单金额 //扣除库存 var od = db.OrderDetails.Where(l => l.OrderGid == dr.Gid).ToList(); foreach (var d in od) { var p = db.ShopProduct.Where(l => l.Gid == d.ProductGid).FirstOrDefault(); pg = p.Gid.ToString(); if (p.DFH == 3) { DFHProfit += p.Price * DFHLV; } if (ReturnType == 0 || (ReturnType != 0 && p.Borrow == 1 && db.ShopOrder.Where(l => l.Product == pg && l.PayStatus == 1).Count() == 0)) { if (p.Stock >= d.Number) { //扣除库存 p.Stock = p.Stock - d.Number; if (db.SaveChanges() == 1) { //库存扣除状态 if (db.OrderDetails.Where(l => l.Gid == d.Gid).Update(l => new OrderDetails { State = 1 }) == 1) { RMB += d.Number * p.Price; Price += d.Number * p.Price; } else { LogManager.WriteLog("库存扣除成功更新OD失败", "Gid=" + d.Gid); } } } else { //库存不足的直接删除 db.OrderDetails.Where(l => l.Gid == d.Gid).Delete(); } } else { return(Helper.Redirect("你下手慢了", "history.go(-1);", "你下手慢了,已被借用")); } } //生成订单 var b = new ShopOrder(); b.Gid = dr.Gid; b.AddTime = DateTime.Now; b.MemberGid = MGid; b.ShopGid = dr.ShopGid; b.OrderNo = OrderNo; b.PayStatus = 2; b.PayType = PayType; b.RMB = 0; b.TotalPrice = Price; b.Price = Price; b.CouponPrice = 0; b.PayPrice = 0; b.Profit = 0; b.ConsumptionCode = RandStr.CreateValidateNumber(8); b.ReturnType = ReturnType; if (ReturnType != 0) { b.BorrowTime = b.AddTime.AddMonths(3); b.Product = pg; } b.Status = 1; b.ExpressStatus = 1; b.Remarks = Remarks; b.Address = Address; b.ContactNumber = ContactNumber; b.RealName = RealName; //待发货 b.DFHProfit = DFHProfit; b.DFHLV = DFHLV; b.DFHState = 1; b.DFH = 1; db.ShopOrder.Add(b); if (db.SaveChanges() == 1) { if (ReturnType != 0 && pg != "") { Guid PGid = Guid.Parse(pg); if (db.ShopProduct.Where(l => l.Gid == PGid).Update(l => new ShopProduct { Borrow = 2 }) != 1) { LogManager.WriteLog("借用订单状态失败", "产品Gid=" + pg + ",订单号=" + b.Gid); } } if (db.Cart.Where(l => l.Gid == dr.Gid).Delete() != 1) { LogManager.WriteLog("删除购物车订单失败", "Gid=" + dr.Gid); } } else { LogManager.WriteLog("购物车转订单失败", "Gid=" + dr.Gid); return(Helper.Redirect("失败", "history.go(-1);", "购物车转订单失败")); } } if (RMB > 0) { switch (PayType) { case 1: return(Alipay(OrderNo, "商城订单支付", RMB.ToString(), 2, Request.Form["ReturnType"])); //return MPay(paramJson["OrderNo"].ToString(), paramJson["body"].ToString(), paramJson["TotalPrice"].ToString(), Guid.Parse(paramJson["OrderGid"].ToString())); case 5: return(MShopPay(OrderNo, "商城订单支付", RMB, m.Integral, Request.Form["ReturnType"])); case 3: db.ShopOrder.Where(l => l.OrderNo == OrderNo && l.PayType == 3).Update(l => new ShopOrder { RMB = RMB }); return(new RedirectResult("/Home/Bank?Type=2&OrderNo=" + OrderNo + "&Money=" + RMB.ToString())); case 2: if (!string.IsNullOrEmpty(LCookie.GetCookie("openid"))) { string beizhu = "shop"; //备注 //开始微信统一下单 JObject j = WX.WXPay.Get_RequestHtml(LCookie.GetCookie("openid"), OrderNo, "彩链商城订单", beizhu, RMB.ToString()); return(Json(new AjaxResult(new { OrderNo, appId = j["appId"].ToString(), timeStamp = j["timeStamp"].ToString(), nonceStr = j["nonceStr"].ToString(), package = j["package"].ToString(), paySign = j["paySign"].ToString(), signType = j["signType"].ToString() }))); } else { return(Json(new AjaxResult(301, "微信支付,请在微信里打开重新登录进行支付"))); } default: return(Helper.Redirect("失败", "history.go(-1);", "非法支付")); } } else { return(Helper.Redirect("失败", "history.go(-1);", "提交订单失败!")); } } else { return(Helper.Redirect("失败", "history.go(-1);", "购物车发生变化!")); } } }
/// <summary> /// 下订单返回支付参数 /// </summary> /// <param>修改备注</param> /// 2014-5-20 林建生 public object order(HttpContext context) { try { string json = ""; using (StreamReader sr = new StreamReader(context.Request.InputStream)) { json = HttpUtility.UrlDecode(sr.ReadLine()); //Server.UrlDecode } //解析参数 JObject paramJson = JsonConvert.DeserializeObject(json) as JObject; //商品列表 string product = paramJson["product"].ToString(); //购买类型[1=真柏 2=视频 3=课程] int type = int.Parse(paramJson["type"].ToString()); //会员的gid Guid member_gid = Guid.Parse(paramJson["member_gid"].ToString()); //会员的登录标识 string login_identifier = paramJson["login_identifier"].ToString(); //收货地址 string contact_number = paramJson["contact_number"].ToString(); string consignee = paramJson["consignee"].ToString(); string address = paramJson["address"].ToString(); string remarks = paramJson["remarks"].ToString(); using (EFDB db = new EFDB()) { var member = db.member.Where(l => l.gid == member_gid).FirstOrDefault(); if (member.login_identifier == login_identifier) { string order_no = RandStr.CreateOrderNO(); string _package = Helper.wxpay(order_no, product, member_gid, member.openid, type, remarks, address, consignee, contact_number); string APPID = Help.appid; string PARTNER_KEY = Help.api_key; SortedDictionary <string, string> pay_dic = new SortedDictionary <string, string>(); string wx_timeStamp = WXPay.getTimestamp(); string wx_nonceStr = WXPay.getNoncestr(); pay_dic.Add("appId", APPID); pay_dic.Add("timeStamp", wx_timeStamp); pay_dic.Add("nonceStr", wx_nonceStr); pay_dic.Add("package", _package); pay_dic.Add("signType", "MD5"); string paySign = WXPay.BuildRequest(pay_dic, PARTNER_KEY); return(new AjaxResult(new { timeStamp = wx_timeStamp, nonceStr = wx_nonceStr, signType = "MD5", paySign = paySign, package = _package, order_no = order_no })); } else { return(new AjaxResult(300, "请重新登录!")); } } } catch (Exception err) { return(new AjaxResult(300, new { Message = err.Message, Source = err.Source, StackTrace = err.StackTrace })); } }