public ActionResult ToOrder(Enums.Enums.OrderType body, RechargeType type, string userID) { if (!db.tb_userinfos.Any(s => s.UserID == userID)) { return(Json(Comm.ToJsonResult("Error", "用户不存在"), JsonRequestBehavior.AllowGet)); } if (body != Enums.Enums.OrderType.Recharge && body != Enums.Enums.OrderType.OrderPay) { return(Json(Comm.ToJsonResult("Error", "请求参数错误"), JsonRequestBehavior.AllowGet)); } if (type != Enums.Enums.RechargeType.Fifty && type != Enums.Enums.RechargeType.FiveHundred && type != Enums.Enums.RechargeType.Hundred && type != Enums.Enums.RechargeType.Ten && type != Enums.Enums.RechargeType.Thirty && type != Enums.Enums.RechargeType.TwoHundred) { return(Json(Comm.ToJsonResult("Error", "请求参数错误"), JsonRequestBehavior.AllowGet)); } WxPayData parmdata = new WxPayData(); string out_trade_no = WxPayApi.GenerateOutTradeNo(); parmdata.SetValue("body", ((Enums.Enums.OrderType)body).GetDisplayName()); //商品描述 parmdata.SetValue("attach", "逸趣网络科技有限公司"); //附加数据 parmdata.SetValue("out_trade_no", out_trade_no); //商户订单号 parmdata.SetValue("total_fee", Convert.ToInt32(type.GetDisplayName())); //总金额 * 100 parmdata.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); //交易起始时间 parmdata.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); //交易结束时间 parmdata.SetValue("goods_tag", ""); //商品标记 parmdata.SetValue("trade_type", "APP"); //交易类型 //parmdata.SetValue("product_id", productid);//商品ID WxPayData resultdata = WxPayApi.UnifiedOrder(parmdata); string resultcode = resultdata.GetValue("return_code").ToString(); if (resultcode.Equals("SUCCESS")) { string signstr = resultdata.GetValue("sign").ToString(); string noncestr = WxPayApi.GenerateNonceStr(); string result_code = resultdata.GetValue("result_code").ToString(); string prepay_id = string.Empty; if (result_code.Equals("SUCCESS")) { prepay_id = resultdata.GetValue("prepay_id").ToString(); //var stringA = $"appid={WxPayConfig.APPID}&noncestr={noncestr}&package=Sign=WXPay&partnerid={WxPayConfig.MCHID}&prepayid={prepay_id}×tamp={Unite.GenerateTimeStamp(DateTime.Now)}&key={WxPayConfig.KEY}"; //var sign = Unite.ToMD5New(stringA).ToUpper(); //保存下单信息到数据库 PayOrder model = new PayOrder(); model.OrderState = Enums.Enums.OrderState.UnHandle; model.out_trade_no = out_trade_no; model.Paynoncestr = noncestr; model.PayPrepay_id = prepay_id; model.settlement_total_fee = Convert.ToInt32(type.GetDisplayName()); model.CreateTime = DateTime.Now; model.Sign = signstr; model.total_fee = Convert.ToInt32(type.GetDisplayName()); model.User_ID = userID; model.OrderType = body; db.PayOrders.Add(model); int resultrow = db.SaveChanges(); //保存订单数据结果 if (resultrow > 0) { 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={resultdata.GetValue("appid")?.ToString()}"); paySignpar.Append($"&noncestr={noncestr}"); paySignpar.Append($"&package=Sign=WXPay&partnerid={WxPayConfig.MCHID}"); paySignpar.Append($"&prepayid={resultdata.GetValue("prepay_id")?.ToString()}"); //paySignpar.Append($"&signType=MD5"); paySignpar.Append($"×tamp={ts.ToString()}"); paySignpar.Append($"&key={WxPayConfig.KEY ?? string.Empty}"); string strPaySignpar = paySignpar.ToString(); var sign = Unite.GetMd5Hash(strPaySignpar).ToUpper(); //dynamic retModel = new //{ // timeStamp = ts.ToString(), // nonceStr = resultdata.GetValue("nonce_str")?.ToString(), // package = "prepay_id=" + resultdata.GetValue("prepay_id")?.ToString(), // signType = "MD5", // paySign = sign, // total_fee = model.total_fee / 100m, //}; var returndata = new { result = resultcode, timestamp = ts.ToString(), prepay_id = prepay_id, noncestr = noncestr, sign = sign }; return(Json(Comm.ToJsonResult("Success", "成功", returndata), JsonRequestBehavior.AllowGet)); } else { return(Json(Comm.ToJsonResult("Error", "下单失败"), JsonRequestBehavior.AllowGet)); } } else { return(Json(Comm.ToJsonResult("Error", "下单失败"), JsonRequestBehavior.AllowGet)); } } else { return(Json(Comm.ToJsonResult("Error", "下单失败"), JsonRequestBehavior.AllowGet)); } }