public ActionResult Edit(CardCreateEditViewModel model) { Sidebar(); var temp = db.Cards.FirstOrDefault(s => s.ID == model.ID); var tempenterprise = db.Enterprises.FirstOrDefault(s => s.ID == temp.EnterpriseID); IConfig config = new ConfigMini(); WeChatMinApi w = new WeChatMinApi(config); //防止企业用户串号修改 if (AccontData.UserType == UserType.Enterprise && temp.EnterpriseID != AccontData.EnterpriseID) { return(this.ToError("错误", "没有该操作权限", Url.Action("Index"))); } if (ModelState.IsValid) { var t = db.Cards.FirstOrDefault(s => s.ID == model.ID); t.Name = model.Name; t.Gender = model.Gender; t.Avatar = string.Join(",", model.Avatar.Images); t.PhoneNumber = model.PhoneNumber; t.Email = model.Email; t.WeChatCode = model.WeChatCode; t.Mobile = model.Mobile; t.Position = model.Position; t.Remark = model.Remark; t.Info = model.Info; t.Enable = model.Enable; t.Voice = string.Join(",", model.Voice.Images); t.Video = string.Join(",", model.Video.Images); t.Images = string.Join(",", model.Images.Images); t.Sort = model.Sort; if (string.IsNullOrWhiteSpace(temp.WeChatMiniQrCode)) { var scene = new Dictionary <string, string>(); scene.Add("CardId", model.ID.ToString()); t.WeChatMiniQrCode = w.GetWXACodeUnlimit(Common.WeChat.WeChatPage.CardDetail, scene); } db.SaveChanges(); return(RedirectToAction("Index")); } return(View(model)); }
/// <summary> /// 创建升级支付订单 /// </summary> /// <param name="code"></param> /// <param name="userID"></param> /// <returns></returns> public object CreateUpGradeOrder(string code, string userID) { //1.调用小程序登录API,获取openID IConfig config = new ConfigMiniPersonal(); WeChatMinApi miniApi = new WeChatMinApi(config); Jscode2sessionResult openIDResule = miniApi.Jscode2session(code); if (openIDResule == null || string.IsNullOrWhiteSpace(openIDResule.OpenID)) { return(new { retCode = "Error", retMsg = "无法获取openID,请确认code是否正确", objectData = "" }); } //using (ApplicationDbContext db = new ApplicationDbContext()) //{ // //防止用户重复提交订单,把Vip状态设为升级中 // var vip = db.Vips.FirstOrDefault(s => s.UserID == userID); // vip.State = Common.Enums.VipState.Uploading; // db.SaveChanges(); //} string OrderCode = CreateOrderCode(userID); //创建订单号 decimal Amount = Comm.UpGradeAmount(); //升级费用 if (string.IsNullOrEmpty(OrderCode)) { return(new { retCode = "Error", retMsg = "订单号生成失败", objectData = "" }); } //2.调用支付统一下单API #region 调用支付统一下单API UnifiedPayData payData = new UnifiedPayData() { attach = string.Empty, body = "个人升级成为VIP,提交支付费用", goods_tag = string.Empty, openid = openIDResule.OpenID, out_trade_no = OrderCode, total_fee = (int)Amount * 100, //total_fee = 1,//测试10分订单 trade_type = "JSAPI" }; RequestResult payResult = payment.GetUnifiedOrderResult(payData); WxPayData payreturnData = payResult.objectData; if (payResult.retCode != ReqResultCode.success || payreturnData == null) { return(new { retCode = "Error", retMsg = "请求微信支付统一下单失败", objectData = "" }); } #endregion //3.生成商户订单 #region 生成商户订单 int rows = 0; using (ApplicationDbContext db = new ApplicationDbContext()) { //2.生成商户订单 Order order = new Order() { Amount = 0, Code = OrderCode, ReceivableAmount = Amount, State = Common.Enums.OrderState.UnHandle, Channel = Common.Enums.PayChannel.WxPay, Type = Common.Enums.OrderType.Receivable, UserID = userID, CreateDateTime = DateTime.Now, PayCode = string.Empty, PayInput = JsonConvert.SerializeObject(payData) }; db.Orders.Add(order); rows = db.SaveChanges(); } if (rows <= 0) { return(new { retCode = "Error", retMsg = "保存订单数据失败", objectData = "" }); } #endregion //4.返回支付参数:5个参数,生成签名再返回 System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区 long ts = (long)(DateTime.Now - startTime).TotalSeconds; // 相差秒数 System.Text.StringBuilder paySignpar = new System.Text.StringBuilder(); paySignpar.Append($"appId={payreturnData.GetValue("appid")?.ToString()}"); paySignpar.Append($"&nonceStr={payreturnData.GetValue("nonce_str")?.ToString()}"); paySignpar.Append($"&package=prepay_id={payreturnData.GetValue("prepay_id")?.ToString()}"); paySignpar.Append($"&signType=MD5"); paySignpar.Append($"&timeStamp={ts.ToString()}"); paySignpar.Append($"&key={ConfigurationManager.AppSettings["wxPayKey"] ?? string.Empty}"); string strPaySignpar = paySignpar.ToString(); var sign = GetMd5Hash(strPaySignpar).ToUpper(); dynamic retModel = new { timeStamp = ts.ToString(), nonceStr = payreturnData.GetValue("nonce_str")?.ToString(), package = "prepay_id=" + payreturnData.GetValue("prepay_id")?.ToString(), signType = "MD5", paySign = sign, total_fee = payData.total_fee / 100m, }; return(new { retCode = "Success", retMsg = "成功", objectData = retModel }); }