public ActionResult WXPayOrder(string orderId, string openid) { WXPayModel models = new WXPayModel(); models.openid = openid; models.OrderId = orderId; return(View(models)); }
/// <summary> /// 创建语音口令红包 /// </summary> /// <param name="uniacid"></param> /// <param name="accountID"></param> /// <param name="packetsModel"></param> /// <returns></returns> internal async Task <string> CreateVoicePackets(string uniacid, ObjectId accountID, VoicePacketsModel packetsModel) { CheckPeopleNum(packetsModel); CheckText(packetsModel.TextCmd); packetsModel.uniacid = uniacid; packetsModel.CreateTime = DateTime.Now; return(await Task.Run(() => { var account = GetModelByIDAndUniacID(accountID, uniacid); if (account == null) { var e = new ExceptionModel() { MethodFullName = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName, Content = $"用户为空:accountID={accountID.ToString()},uniacid={uniacid}", ExceptionDate = DateTime.Now }; e.Save(); throw e; } var serviceMoney = GetServiceMoney(uniacid, packetsModel.Amount); var balance = account.Balances - (packetsModel.Amount + serviceMoney); packetsModel.PacketsID = ObjectId.GenerateNewId(); packetsModel.CreatePeople = new Participant { AccountID = account.AccountID, AccountAvatar = account.AccountAvatar, AccountName = account.AccountName, CreateTime = DateTime.Now }; if (balance < 0) { WeChatOrder weChatOrder; WXPayModel wXPayModel = GetCreatePacketsPayParams(-balance, packetsModel, uniacid, account, out weChatOrder); return new BaseResponseModel3 <bool, string, WXPayModel>() { StatusCode = ActionParams.code_ok, JsonData = false, JsonData1 = packetsModel.PacketsID.ToString(), JsonData2 = wXPayModel }.ToJson(); } CreateVoicePackets(account, packetsModel, serviceMoney, balance); return new BaseResponseModel2 <bool, string>() { StatusCode = ActionParams.code_ok, JsonData = true, JsonData1 = packetsModel.PacketsID.ToString() }.ToJson(); })); }
/// <summary> /// 充值 /// </summary> /// <param name="uniacid"></param> /// <param name="accountID"></param> /// <param name="money"></param> /// <returns></returns> public string PushBalance(string uniacid, string accountID, decimal money) { try { WXPayModel wpm = thisData.PushBalance(uniacid, new ObjectId(accountID), money); return(new BaseResponseModel <WXPayModel>() { StatusCode = ActionParams.code_ok, JsonData = wpm }.ToJson()); } catch (Exception e) { e.Save(); return(JsonResponseModel.ErrorJson); } }
public ActionResult Index(string orderId) { string openid = ""; WXPayModel models = new WXPayModel(); //检测是否给当前页面传递了相关参数 if (Session["openid"] != null) { openid = Session["openid"].ToString(); } else { return(Content("<script>alert('数据错误!请重新支付');history.back();</script>")); } models.openid = openid; models.OrderId = orderId; return(View(models)); }
/// <summary> /// 申请邮寄 /// </summary> /// <param name="uniacid">商户ID</param> /// <param name="accountID">用户ID</param> /// <returns></returns> public IActionResult CreateOrder(string uniacid, string accountID) { try { string json = new StreamReader(Request.Body).ReadToEnd(); Order order = JsonConvert.DeserializeObject <Order>(json); order.OrderID = ObjectId.GenerateNewId(); WXPayModel wpm = thisData.CreateOrder(uniacid, new ObjectId(accountID), order); return(new JsonResponse2 <string, WXPayModel>() { JsonData = order.OrderID.ToString(), JsonData1 = wpm }.ToJsonResult(this)); } catch (Exception e) { e.Save(); return(this.JsonErrorStatus()); } }
/// <summary> /// 获取微信支付签名信息 /// 调用前请先配置wxPayV3Info属性,否则会支付失败,如果paySign = "ERROR",请查看package内容信息 /// 目前提供最基本的签名字段,有时间的话可以增加基础以外字段的动态增加,一般情况下,基础的字段也能满足支付需求了 /// 微信支付步骤:</summary> /// 1.$.post调用GetWXPayInfo()获取WXPayModel数据,其中包含签名数据 /// 2.wxpay.js调用 WeixinJSBridge.invoke('getBrandWCPayRequest')发起微信支付 /// 3.处理回调,成功后返回success /// <param name="payorder"></param> /// <param name="openid"></param> /// <param name="tfee">支付的金额</param> /// <param name="body">备注</param> /// <param name="pid">产品信息</param> /// <param name="sp_billno">订单号码</param> /// <returns>返回签名数据,Response给JS呼出微信支付控件,返回WXPayModel.paySign=ERROR时报错</returns> public static WXPayModel GetWXPayInfo(PayOrder payorder, string openid, string tfee, string body, string pid, string sp_billno) { try { string timeStamp = ""; string nonceStr = ""; string package = ""; string paySign = ""; //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(null); //初始化 packageReqHandler.Init(); //调起微信支付签名 timeStamp = TenPayV3Util.GetTimestamp(); nonceStr = TenPayV3Util.GetNoncestr(); //设置package订单参数 packageReqHandler.SetParameter("appid", wxPayV3Info.AppId); //公众账号ID packageReqHandler.SetParameter("mch_id", wxPayV3Info.MchId); //商户号 packageReqHandler.SetParameter("nonce_str", nonceStr); //随机字符串 packageReqHandler.SetParameter("body", body); packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家订单号 packageReqHandler.SetParameter("spbill_create_ip", HttpContext.Current.Request.UserHostAddress); packageReqHandler.SetParameter("total_fee", tfee); packageReqHandler.SetParameter("notify_url", wxPayV3Info.TenPayV3Notify); //接收财付通通知的URL packageReqHandler.SetParameter("trade_type", TenPayV3Type.JSAPI.ToString()); //交易类型 packageReqHandler.SetParameter("openid", openid);//OPENID //获取package包 string sign = packageReqHandler.CreateMd5Sign("key", wxPayV3Info.Key); packageReqHandler.SetParameter("sign", sign); string data = packageReqHandler.ParseXML(); var result = TenPayV3.Unifiedorder(data); var res = XDocument.Parse(result); if (res.Element("xml").Element("prepay_id") == null) { string err_code = res.Element("xml").Element("return_msg").Value; return new WXPayModel() { paySign = "ERROR", package = err_code }; } string prepayId = res.Element("xml").Element("prepay_id").Value; package = string.Format("prepay_id={0}", prepayId); //设置支付参数 RequestHandler paySignReqHandler = new RequestHandler(null); paySignReqHandler.SetParameter("appId", wxPayV3Info.AppId); paySignReqHandler.SetParameter("timeStamp", timeStamp); paySignReqHandler.SetParameter("nonceStr", nonceStr); paySignReqHandler.SetParameter("package", package); paySignReqHandler.SetParameter("signType", "MD5"); paySign = paySignReqHandler.CreateMd5Sign("key", wxPayV3Info.Key); WXPayModel wm = new WXPayModel() { appId = wxPayV3Info.AppId, nonceStr = nonceStr, package = package, payNo = sp_billno, paySign = paySign, timeStamp = timeStamp }; //payorder(wm, openid, tfee, body, pid, param, sp_billno); payorder(wm); return wm; } catch (Exception ex) { return new WXPayModel() { paySign = "ERROR", package = "抛出异常:" + ex.ToString() }; } }
public BaseResult WXPay(WXPayModel wxModel) { BaseResult br = new BaseResult(); try { var paramters = new Dictionary <string, string>(); paramters.Add("sub_mch_id", wxModel.sub_mch_id); paramters.Add("body", wxModel.body); paramters.Add("out_trade_no", wxModel.out_trade_no); paramters.Add("total_fee", wxModel.total_fee.ToString()); paramters.Add("auth_code", wxModel.auth_code); string mySign = CYUtils.SignRequestNew(paramters, PublicSign.localKey); paramters.Add("sign", mySign); var result = new WebUtils().DoPost(PublicSign.wxPayUrl, paramters, 200000); WXPayResultModel reqMicropay = XmlUtil.Deserialize(typeof(WXPayResultModel), result.Replace("</xml>", "</WXPayResultModel>").Replace("<xml>", "<WXPayResultModel>")) as WXPayResultModel; if (reqMicropay.result_code == "SUCCESS" && reqMicropay.return_code == "SUCCESS") { br.Success = true; br.Data = reqMicropay; return(br); } else { if (reqMicropay.err_code == "BANKERROR" || reqMicropay.err_code == "SYSTEMERROR") { br.Success = false; br.Message.Add(string.Format("支付结果未知 需要查询结果 描述:" + reqMicropay.err_code_des)); br.Level = ErrorLevel.Warning; return(br); } else if (reqMicropay.err_code == "USERPAYING") { br.Success = false; br.Message.Add(string.Format("用户支付中,需要输入密码 描述:" + reqMicropay.err_code_des)); br.Level = ErrorLevel.Warning; return(br); } else if (reqMicropay.err_code == "ORDERPAID") { br.Success = true; br.Message.Add(string.Format("订单已被支付 描述:" + reqMicropay.err_code_des)); br.Data = reqMicropay; return(br); } else { br.Success = false; br.Message.Add(string.Format("微信返回失败 描述:" + reqMicropay.err_code_des)); return(br); } } } catch (Exception ex) { br.Success = false; br.Message.Add(string.Format("微信支付时发生异常 单号:" + wxModel.out_trade_no + " 请查询确定结果 以免带来损失!")); return(br); } }
public BaseResult OutOrderPay(Hashtable param) { #region 定义参数 BaseResult br = new BaseResult(); Hashtable ht = new Hashtable(); string dh_ec = ""; string ec_tradeno = ""; decimal add_je = 0; decimal add_je_zs = 0; decimal je_qm = 0; decimal je_qm_zs = 0; #endregion #region 验证参数 if (param == null || param["id_shop"] == null || string.IsNullOrEmpty(param["id_shop"].ToString()) || param["id_masteruser"] == null || string.IsNullOrEmpty(param["id_masteruser"].ToString()) || param["json_param"] == null || string.IsNullOrEmpty(param["json_param"].ToString()) || param["dh"] == null || string.IsNullOrEmpty(param["dh"].ToString()) || param["payList"] == null || param["sign"] == null || string.IsNullOrEmpty(param["sign"].ToString()) ) { br.Success = false; br.Message.Add("必要参数不可以为空."); return(br); } var payList = (List <Money_OrderPayList>)param["payList"]; if (payList.Count() != 1) { br.Success = false; br.Message.Add("支付参数不符合要求."); return(br); } if (payList.Where(d => d.type != "wx" && d.type != "zfb" && d.type != "hy").Count() > 0) { br.Success = false; br.Message.Add("支付类型错误 目前只支持微信/支付宝/储值卡支付."); return(br); } if (payList.Sum(d => d.money) <= 0) { br.Success = false; br.Message.Add("金额出现错误."); return(br); } #endregion #region 获取支付配置信息 int i = 1; ht.Clear(); ht.Add("id_masteruser", param["id_masteruser"].ToString()); ht.Add("id_shop", param["id_shop"].ToString()); var payConfigList = DAL.QueryList <Tb_Pay_Config>(typeof(Tb_Pay_Config), ht); #endregion #region 调用接口处理 //遍历执行支付 foreach (var item in payList) { if (item.money == 0) { continue; } switch (item.type) { case "hy": //会员支付 #region 会员支付 HY_OrderPayModel hyCostModel = new HY_OrderPayModel(); try { hyCostModel = Utility.JSON.Deserialize <HY_OrderPayModel>(item.data); if (string.IsNullOrEmpty(hyCostModel.id_hy)) { br.Success = false; br.Message.Add(string.Format("会员支付数据 data 的 id_hy 不符合.")); return(br); } } catch (Exception ex) { br.Success = false; br.Message.Add(string.Format("会员支付数据 data 不符合.")); br.Level = ErrorLevel.Alert; throw new CySoftException(br); } ht.Clear(); ht.Add("id_shop", param["id_shop"].ToString()); ht.Add("id_masteruser", param["id_masteruser"].ToString()); ht.Add("id_hy", hyCostModel.id_hy); ht.Add("id_bill", hyCostModel.id_bill); ht.Add("bm_djlx", hyCostModel.bm_djlx); ht.Add("rq", DateTime.Now); ht.Add("je", item.money); ht.Add("bz", hyCostModel.bz); ht.Add("password", hyCostModel.password); ht.Add("Type", "XF"); br = Tz_Hy_JeBLL.Active(ht); if (!br.Success) { br.Level = ErrorLevel.Alert; if (br.Message.Count() > 0 && br.Message[0].ToString().Contains("密码不正确")) { br.Level = ErrorLevel.Question; } throw new CySoftException(br); } decimal.TryParse(br.Data.GetType().GetProperty("add_je").GetValue(br.Data).ToString(), out add_je); decimal.TryParse(br.Data.GetType().GetProperty("add_je_zs").GetValue(br.Data).ToString(), out add_je_zs); decimal.TryParse(br.Data.GetType().GetProperty("je_qm").GetValue(br.Data).ToString(), out je_qm); decimal.TryParse(br.Data.GetType().GetProperty("je_qm_zs").GetValue(br.Data).ToString(), out je_qm_zs); #endregion break; case "zfb": //支付宝 #region 检查有没有设置支付类型 if (payConfigList == null || payConfigList.Where(d => d.flag_type == 4).Count() <= 0) { br.Success = false; br.Message.Add(string.Format("没有设置支付宝支付类型,不能支付.")); return(br); } if (payConfigList.Where(d => d.flag_type == 4 && d.parmcode == "pay_alipay_is_use" && d.parmvalue == "1").Count() <= 0) { br.Success = false; br.Message.Add(string.Format("没有启用支付宝支付,不能支付.")); return(br); } #endregion #region 序列化Model AliPayModel aliModel = new AliPayModel(); try { aliModel = Utility.JSON.Deserialize <AliPayModel>(item.data); } catch (Exception ex) { br.Success = false; br.Message.Add(string.Format("支付宝支付数据 data 不符合.")); throw new CySoftException(br); } #endregion #region 旧的支付----已注释 //#region 获取私钥和APP_ID信息 //if (payConfigList == null || payConfigList.Count() <= 0 // || payConfigList.Where(d => d.flag_type == 4 && d.parmcode == "pay_alipay_rsakey1" && d.parmvalue != "").Count() <= 0 // || payConfigList.Where(d => d.flag_type == 4 && d.parmcode == "pay_alipay_rsakey2" && d.parmvalue != "").Count() <= 0 // || payConfigList.Where(d => d.flag_type == 4 && d.parmcode == "pay_alipay_rsakey3" && d.parmvalue != "").Count() <= 0 // || payConfigList.Where(d => d.flag_type == 4 && d.parmcode == "pay_alipay_rsakey4" && d.parmvalue != "").Count() <= 0 // ) //{ // br.Success = false; // br.Message.Add(string.Format("设置的支付宝私钥错误,不能支付.")); // return br; //} //if (payConfigList == null || payConfigList.Count() <= 0 || payConfigList.Where(d => d.flag_type == 4 && d.parmcode == "pay_alipay_partner" && d.parmvalue != "").Count() <= 0) //{ // br.Success = false; // br.Message.Add(string.Format("没有设置支付宝开发帐号,不能支付.")); // return br; //} //string privateKey = payConfigList.Where(d => d.flag_type == 4 && d.parmcode == "pay_alipay_rsakey1").FirstOrDefault().parmvalue // + payConfigList.Where(d => d.flag_type == 4 && d.parmcode == "pay_alipay_rsakey2").FirstOrDefault().parmvalue // + payConfigList.Where(d => d.flag_type == 4 && d.parmcode == "pay_alipay_rsakey3").FirstOrDefault().parmvalue // + payConfigList.Where(d => d.flag_type == 4 && d.parmcode == "pay_alipay_rsakey4").FirstOrDefault().parmvalue; //#endregion //#region 调接口处理 ////开发者帐号 //aliModel.app_id = payConfigList.Where(d => d.flag_type == 4 && d.parmcode == "pay_alipay_partner").FirstOrDefault().parmvalue; //aliModel.method = "alipay.trade.pay"; //aliModel.charset = "utf-8"; //aliModel.sign_type = "RSA"; //aliModel.timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //aliModel.version = "1.0"; //aliModel.sign = privateKey; //aliModel.out_trade_no = param["dh"].ToString(); //aliModel.scene = "bar_code"; //aliModel.total_amount = (decimal)Frame.Common.OperationHelper.Digit(item.money, 2);//总金额 //aliModel.discountable_amount = 0;//优惠金额 //aliModel.undiscountable_amount = aliModel.total_amount;//不参与优惠计算的金额 //br = this.AliPay(aliModel); //if (br.Success == false) //{ // throw new CySoftException(br); //} //AliPayResultModel aliPayResultModel = (AliPayResultModel)br.Data; //dh_ec = aliModel.out_trade_no; //ec_tradeno = aliPayResultModel.trade_no; //br.Data = new { dh = param["dh"].ToString(), dh_ec = aliModel.out_trade_no, ec_tradeno = aliPayResultModel.trade_no }; //#endregion #endregion #region 获取私钥和APP_ID信息 if (payConfigList == null || payConfigList.Count() <= 0 || payConfigList.Where(d => d.flag_type == 4 && d.parmcode == "pay_alipay_partner" && d.parmvalue != "").Count() <= 0) { br.Success = false; br.Message.Add(string.Format("没有设置支付宝商户身份ID,不能支付.")); return(br); } if (payConfigList == null || payConfigList.Count() <= 0 || payConfigList.Where(d => d.flag_type == 4 && d.parmcode == "pay_alipay_store_id" && d.parmvalue != "").Count() <= 0) { br.Success = false; br.Message.Add(string.Format("没有设置支付宝商户门店编号,不能支付.")); return(br); } if (string.IsNullOrEmpty(aliModel.auth_code)) { br.Success = false; br.Message.Add(string.Format("没有支付授权码,不能支付.")); return(br); } if (string.IsNullOrEmpty(aliModel.subject)) { br.Success = false; br.Message.Add(string.Format("没有订单标题,不能支付.")); return(br); } #endregion #region 调接口处理 //开发者帐号 aliModel.m_code = payConfigList.Where(d => d.flag_type == 4 && d.parmcode == "pay_alipay_partner").FirstOrDefault().parmvalue; aliModel.scene = "bar_code"; aliModel.total_amount = (decimal)Frame.Common.OperationHelper.Digit(item.money, 2); //总金额 aliModel.store_id = payConfigList.Where(d => d.flag_type == 4 && d.parmcode == "pay_alipay_store_id").FirstOrDefault().parmvalue; aliModel.out_trade_no = param["dh"].ToString(); //terminal_id //auth_code //operator_id //body //subject br = this.AliPayNew(aliModel); if (br.Success == false) { throw new CySoftException(br); } AliPayResultModel aliPayResultModel = (AliPayResultModel)br.Data; dh_ec = aliModel.out_trade_no; ec_tradeno = aliPayResultModel.trade_no; br.Data = new { dh = param["dh"].ToString(), dh_ec = aliModel.out_trade_no, ec_tradeno = aliPayResultModel.trade_no }; #endregion break; case "wx": //微信 #region 检查有没有设置支付类型 if (payConfigList == null || payConfigList.Where(d => d.flag_type == 5).Count() <= 0) { br.Success = false; br.Message.Add(string.Format("没有设置微信支付类型,不能支付.")); return(br); } if (payConfigList.Where(d => d.flag_type == 5 && d.parmcode == "pay_wx_is_use" && d.parmvalue == "1").Count() <= 0) { br.Success = false; br.Message.Add(string.Format("没有启用微信支付,不能支付.")); return(br); } #endregion #region 序列化Model WXPayModel wxModel = new WXPayModel(); try { wxModel = Utility.JSON.Deserialize <WXPayModel>(item.data); wxModel.out_trade_no = param["dh"].ToString(); wxModel.total_fee = (int)((decimal)(item.money * 100)); wxModel.body = "Pos"; } catch (Exception ex) { br.Success = false; br.Message.Add(string.Format("微信类型支付数据不符合")); throw new CySoftException(br); } #endregion #region 获取子商户号信息 if (payConfigList == null || payConfigList.Count() <= 0 || payConfigList.Where(d => d.flag_type == 5 && d.parmcode == "pay_wx_mch_id_child" && d.parmvalue != "").Count() <= 0) { br.Success = false; br.Message.Add(string.Format("没有设置微信支付子商户号,不能支付.")); return(br); } #endregion #region 调接口处理 wxModel.sub_mch_id = payConfigList.Where(d => d.flag_type == 5 && d.parmcode == "pay_wx_mch_id_child").FirstOrDefault().parmvalue; wxModel.out_trade_no = param["dh"].ToString(); br = this.WXPay(wxModel); if (br.Success == false) { throw new CySoftException(br); } WXPayResultModel wxPayResultModel = (WXPayResultModel)br.Data; dh_ec = wxPayResultModel.out_trade_no; ec_tradeno = wxPayResultModel.transaction_id; br.Data = new { dh = param["dh"].ToString(), dh_ec = wxPayResultModel.out_trade_no, ec_tradeno = wxPayResultModel.transaction_id }; #endregion break; default: br.Success = false; br.Message.Add(string.Format("含有未知的支付类型 不予处理!")); return(br); } i++; } #endregion br.Success = true; br.Data = new { dh = param["dh"].ToString(), dh_ec = dh_ec, ec_tradeno = ec_tradeno, msg = "", add_je = add_je, add_je_zs = add_je_zs, je_qm = je_qm, je_qm_zs = je_qm_zs }; return(br); }
/// <summary> /// 获取微信支付签名信息 /// 调用前请先配置wxPayV3Info属性,否则会支付失败,如果paySign = "ERROR",请查看package内容信息 /// 目前提供最基本的签名字段,有时间的话可以增加基础以外字段的动态增加,一般情况下,基础的字段也能满足支付需求了 /// 微信支付步骤:</summary> /// 1.$.post调用GetWXPayInfo()获取WXPayModel数据,其中包含签名数据 /// 2.wxpay.js调用 WeixinJSBridge.invoke('getBrandWCPayRequest')发起微信支付 /// 3.处理回调,成功后返回success /// <param name="payorder"></param> /// <param name="openid"></param> /// <param name="tfee">支付的金额</param> /// <param name="body">备注</param> /// <param name="pid">产品信息</param> /// <param name="sp_billno">订单号码</param> /// <returns>返回签名数据,Response给JS呼出微信支付控件,返回WXPayModel.paySign=ERROR时报错</returns> public static WXPayModel GetWXPayInfo(PayOrder payorder, string openid, string tfee, string body, string pid, string sp_billno) { try { string timeStamp = ""; string nonceStr = ""; string package = ""; string paySign = ""; //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(null); //初始化 packageReqHandler.Init(); //调起微信支付签名 timeStamp = TenPayV3Util.GetTimestamp(); nonceStr = TenPayV3Util.GetNoncestr(); //设置package订单参数 packageReqHandler.SetParameter("appid", wxPayV3Info.AppId); //公众账号ID packageReqHandler.SetParameter("mch_id", wxPayV3Info.MchId); //商户号 packageReqHandler.SetParameter("nonce_str", nonceStr); //随机字符串 packageReqHandler.SetParameter("body", body); packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家订单号 packageReqHandler.SetParameter("spbill_create_ip", HttpContext.Current.Request.UserHostAddress); packageReqHandler.SetParameter("total_fee", tfee); packageReqHandler.SetParameter("notify_url", wxPayV3Info.TenPayV3Notify); //接收财付通通知的URL packageReqHandler.SetParameter("trade_type", TenPayV3Type.JSAPI.ToString()); //交易类型 packageReqHandler.SetParameter("openid", openid); //OPENID //获取package包 string sign = packageReqHandler.CreateMd5Sign("key", wxPayV3Info.Key); packageReqHandler.SetParameter("sign", sign); string data = packageReqHandler.ParseXML(); var result = TenPayV3.Unifiedorder(data); var res = XDocument.Parse(result); if (res.Element("xml").Element("prepay_id") == null) { string err_code = res.Element("xml").Element("return_msg").Value; return(new WXPayModel() { paySign = "ERROR", package = err_code }); } string prepayId = res.Element("xml").Element("prepay_id").Value; package = string.Format("prepay_id={0}", prepayId); //设置支付参数 RequestHandler paySignReqHandler = new RequestHandler(null); paySignReqHandler.SetParameter("appId", wxPayV3Info.AppId); paySignReqHandler.SetParameter("timeStamp", timeStamp); paySignReqHandler.SetParameter("nonceStr", nonceStr); paySignReqHandler.SetParameter("package", package); paySignReqHandler.SetParameter("signType", "MD5"); paySign = paySignReqHandler.CreateMd5Sign("key", wxPayV3Info.Key); WXPayModel wm = new WXPayModel() { appId = wxPayV3Info.AppId, nonceStr = nonceStr, package = package, payNo = sp_billno, paySign = paySign, timeStamp = timeStamp }; //payorder(wm, openid, tfee, body, pid, param, sp_billno); payorder(wm); return(wm); } catch (Exception ex) { return(new WXPayModel() { paySign = "ERROR", package = "抛出异常:" + ex.ToString() }); } }