public void Setup() { var handler = new FakeResponseHandler(); var historysettings = new HistorySettings { Use = true, Url = "whatever.com", Port = 3000 }; var jsApi = new JsApi(handler, historysettings); _apiProvider = new JsApiProvider(jsApi); }
// // GET: /Account/ /// <summary> /// 绑定微信 /// </summary> /// <param name="url"></param> /// <returns></returns> public ActionResult WXBind(string url) { try { JsApi jsapi = new JsApi(this); string codeUrl = jsapi.GetOpenidAndAccessToken_snsapi_userinfo(); if (codeUrl != string.Empty) { return(Redirect(codeUrl)); } WXVariousApi VariousApi = new WXVariousApi(); VariousApi.LoadWxConfigIncidentalAccess_token(); WXUserInfo wx_userinfo = VariousApi.GetUserInfo(jsapi.openid); C_UserWxInfo.UnBindWxByC_UserName(CurrentUser.UserName);//解绑微信 //用户信息,包括微信信息 C_UserWxInfo wxInfo = C_UserWxInfo.GetInfoByOpenid(jsapi.openid); if (wxInfo == null) { wxInfo = new C_UserWxInfo(); wxInfo.C_UserName = CurrentUser.UserName; wxInfo.openid = jsapi.openid; wxInfo.accesstoken = jsapi.access_token; wxInfo.nickname = wx_userinfo.nickname; wxInfo.sex = wx_userinfo.sex; wxInfo.unionid = wx_userinfo.unionid; wxInfo.headimgurl = wx_userinfo.headimgurl; wxInfo.subscribe = (wx_userinfo.subscribe == "0" ? false : true); wxInfo.country = wx_userinfo.country; wxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time); wxInfo.language = wx_userinfo.language; wxInfo.ID = wxInfo.InsertAndReturnIdentity();//新的ID } else { C_UserWxInfo.BindWxByC_UserName(CurrentUser.UserName, wxInfo.ID); } return(Redirect(HttpUtility.UrlDecode(url))); } catch (Exception ex) { DAL.Log.Instance.Write(ex.ToString(), "WXBind_error"); return(View(ErrorPage.ViewName, new ErrorPage { Message = "绑定微信失败" })); } }
protected void Page_Load(object sender, EventArgs e) { timestamp = Utils.ConvertDateTimeInt(DateTime.Now).ToString(); noncestr = timestamp; // 随机字符串也使用时间戳 url = "http://" + Utils.GetCurrentFullHost() + Request.RawUrl; var accessToken = AccessTokenBox.GetTokenValue("wxf50808b364418ffb", "bfaf8363dc64787091b3bbb7740dcf44"); if (ticket == null || ticket.expires_time < DateTime.Now) { ticket = JsApi.GetHsJsApTicket(accessToken); } sign = JsApi.GetJsApiSign(noncestr, ticket.ticket, timestamp, url); }
public ActionResult WXLogin(string url) { try { JsApi jsapi = new JsApi(this); string codeUrl = jsapi.GetOpenidAndAccessToken_snsapi_userinfo(); if (codeUrl != string.Empty) { return(Redirect(codeUrl)); } //用户信息,包括微信信息 C_UserWxVM userVM = new C_UserWxVM(); Log.Instance.Write(jsapi.openid, "OpenID"); userVM.LoadUserVMByOpenid(jsapi.openid); WXVariousApi VariousApi = new WXVariousApi(); VariousApi.LoadWxConfigIncidentalAccess_token(); WXUserInfo wx_userinfo = VariousApi.GetUserInfo(jsapi.openid); //未关注获取头像 if (wx_userinfo.subscribe == "0") { WXUserInfo new_Wx_UserInfo = VariousApi.GetUserInfo0(jsapi.openid, jsapi.access_token); if (new_Wx_UserInfo != null) { wx_userinfo.nickname = new_Wx_UserInfo.nickname; wx_userinfo.sex = new_Wx_UserInfo.sex; wx_userinfo.province = new_Wx_UserInfo.province; wx_userinfo.city = new_Wx_UserInfo.city; wx_userinfo.country = new_Wx_UserInfo.country; wx_userinfo.headimgurl = new_Wx_UserInfo.headimgurl; wx_userinfo.unionid = new_Wx_UserInfo.unionid; } } if (userVM == null || userVM.user == null) { if (wx_userinfo.unionid.Length > 0) { userVM.LoadUserVMByunionid(wx_userinfo.unionid); } } if (userVM == null || userVM.user == null) { userVM.user = new C_WxUser(); userVM.userWxInfo = new C_UserWxInfo(); //用户信息赋值 userVM.user.UserName = "******" + (C_User.GetTopUseID() + 1 + 1000); userVM.user.PassWord = ""; userVM.user.IsValid = true; userVM.user.DatRegister = DateTime.Now; userVM.user.NickName = wx_userinfo.nickname; userVM.user.PortraitUrl = wx_userinfo.headimgurl; userVM.userWxInfo.openid = jsapi.openid; userVM.userWxInfo.accesstoken = jsapi.access_token; userVM.userWxInfo.nickname = wx_userinfo.nickname; userVM.userWxInfo.sex = wx_userinfo.sex; userVM.userWxInfo.unionid = wx_userinfo.unionid; userVM.userWxInfo.headimgurl = wx_userinfo.headimgurl; userVM.userWxInfo.subscribe = (wx_userinfo.subscribe == "0" ? false : true); userVM.userWxInfo.country = wx_userinfo.country; userVM.userWxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time); userVM.userWxInfo.language = wx_userinfo.language; userVM.AddUser(); userVM.userWxInfo.C_UserName = userVM.user.UserName; } else { userVM.user.NickName = wx_userinfo.nickname; userVM.user.PortraitUrl = wx_userinfo.headimgurl; userVM.userWxInfo.openid = jsapi.openid; userVM.userWxInfo.accesstoken = jsapi.access_token; userVM.userWxInfo.nickname = wx_userinfo.nickname; userVM.userWxInfo.sex = wx_userinfo.sex; userVM.userWxInfo.unionid = wx_userinfo.unionid; userVM.userWxInfo.headimgurl = wx_userinfo.headimgurl; userVM.userWxInfo.subscribe = (wx_userinfo.subscribe == "0" ? false : true); userVM.userWxInfo.country = wx_userinfo.country; userVM.userWxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time); userVM.userWxInfo.language = wx_userinfo.language; userVM.user.UpdateByID(); } string error = string.Empty; string userName = userVM.user.UserName; userVM.userWxInfo.accesstoken = jsapi.access_token; userVM.userWxInfo.nickname = wx_userinfo.nickname; userVM.userWxInfo.groupid = wx_userinfo.groupid; userVM.userWxInfo.headimgurl = wx_userinfo.headimgurl; userVM.userWxInfo.subscribe = (wx_userinfo.subscribe == "0" ? false : true); userVM.userWxInfo.country = wx_userinfo.country; userVM.userWxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time); userVM.userWxInfo.language = wx_userinfo.language; if (!string.IsNullOrWhiteSpace(userVM.userWxInfo.nickname)) { new System.Threading.Thread(delegate() { userVM.UpdateUserWxInfo(); }).Start(); } Common.SetCookie("WxUserName", userName); DAL.Log.Instance.Write(userName + HttpUtility.UrlDecode(url) + wx_userinfo.nickname, "WXLogin_error11"); return(Redirect(HttpUtility.UrlDecode(url))); } catch (Exception ex) { DAL.Log.Instance.Write(ex.ToString(), "WXLogin_error"); return(View(ErrorPage.ViewName, new ErrorPage { Message = ex.ToString() })); } }
public ResultObj <PayStateModel> GetUrl(string m, string code, string retBack = "") { //var log = LogManager.GetLogger("FycnApi", "wechat"); //log.Info("mmmmmmmmmmmmmmmm:"+m); string url = string.Empty; //KeyJsonModel keyJsonInfo = PayHelper.AnalizeKey(k); IPay _ipay = new PayService(); WxPayConfig payConfig = _ipay.GenerateConfigModelWByClientId(m); PayStateModel payState = new PayStateModel(); if (string.IsNullOrEmpty(payConfig.APPID)) { payState.RequestState = "2"; payState.ProductJson = ""; payState.RequestData = ""; return(Content(payState)); } PayModel payInfo = new PayModel(); //JsApi.payInfo = new PayModel(); payInfo.k = m; JsApi jsApi = new JsApi(); string backUrl = "/wechat.html?clientId=" + m; if (!string.IsNullOrEmpty(retBack)) { backUrl = backUrl + HttpUtility.UrlDecode(retBack); } jsApi.GetOpenidAndAccessToken(code, payConfig, payInfo, backUrl, "snsapi_userinfo"); if (string.IsNullOrEmpty(payInfo.openid)) { payState.RequestState = "0"; payState.ProductJson = ""; payState.RequestData = payInfo.redirect_url; return(Content(payState)); } //根据code 返回access_token //string urlAcess = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", payConfig.APPID,payConfig.APPSECRET,code); //string jsonResult = HttpService.Get(urlAcess); //log.Info("access_token:" + jsonResult); //Dictionary<string,string> dicAcess = JsonHandler.GetObjectFromJson<Dictionary<string,string>>(jsonResult); string accessToken = payInfo.access_token;//dicAcess["access_token"]; //取授权用户信息 string urlUserInfo = string.Format("https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN", accessToken, payInfo.openid); string jsonUserInfo = HttpService.Get(urlUserInfo); payState.RequestState = "1"; payState.ProductJson = jsonUserInfo; payState.RequestData = ""; IWechat iwechat = new WechatService(); WechatMemberModel memberInfo = new WechatMemberModel(); memberInfo.ClientId = m; memberInfo.OpenId = payInfo.openid; List <WechatMemberModel> lstMemberInfo = iwechat.IsExistMember(memberInfo); if (lstMemberInfo.Count == 0) { WechatMemberModel createMemberInfo = JsonHandler.GetObjectFromJson <WechatMemberModel>(jsonUserInfo); createMemberInfo.ClientId = m; iwechat.CreateMember(createMemberInfo); } //if(iwechat.IsExistMember(memberInfo)) //log.Info("test"); return(Content(payState)); }
//微信支付 public ResultObj <PayStateModel> PostDataW(string clientId, string openId, string privilegeIds, string selfChosen, [FromBody] List <ProductPayModel> lstProductPay) { var log = LogManager.GetLogger("FycnApi", "wechat"); try { IPay _ipay = new PayService(); //移动支付赋值 WxPayConfig payConfig = _ipay.GenerateConfigModelWByClientId(clientId); payConfig.NOTIFY_URL = PathConfig.NotidyAddr + "/Wechat/PostPayResultW"; //结果通知方法 JsApi jsApi = new JsApi(); PayModel payInfo = new PayModel(); payInfo.openid = openId; //JsApi.payInfo = new PayModel(); //生成code 根据code取微信支付的openid和access_token //jsApi.GetOpenidAndAccessToken(code, payConfig, payInfo, "/wechat.html#/pay?clientId=" + clientId, ""); PayStateModel payState = new PayStateModel(); //JSAPI支付预处理 //string result = HttpService.Get(payInfo.redirect_url); //生成交易号 payInfo.trade_no = new PayHelper().GeneraterTradeNo(); payInfo.jsonProduct = clientId; //取商品信息 decimal totalFee = 0; string productNames = string.Empty; List <ProductListModel> lstProduct = new List <ProductListModel>(); IWechat _iwechat = new WechatService(); string waresId = string.Empty; string waresGroupId = string.Empty; foreach (ProductPayModel productInfo in lstProductPay) { waresId = waresId + productInfo.WaresId + ","; } lstProduct = _iwechat.GetProdcutAndGroupList(waresId.TrimEnd(','), waresGroupId.TrimEnd(',')); //遍历商品 foreach (ProductListModel productInfo in lstProduct) { var productPay = (from m in lstProductPay where m.WaresId == productInfo.WaresId select m).ToList <ProductPayModel>(); if (productPay.Count > 0) { totalFee = totalFee + Convert.ToInt32(productPay[0].Number) * Convert.ToDecimal(productInfo.WaresDiscountUnitPrice == 0 ? productInfo.WaresUnitPrice: productInfo.WaresDiscountUnitPrice); productNames = productNames + productInfo.WaresName + ","; productPay[0].TradeNo = payInfo.trade_no; } } payInfo.product_name = productNames.Length > 25 ? productNames.Substring(0, 25) : productNames; payState.ProductJson = JsonHandler.GetJsonStrFromObject(lstProductPay, false); /*******************优惠券信息**********************/ PrivilegeMemberRelationModel privilegeInfo = new PrivilegeMemberRelationModel(); privilegeInfo.ClientId = clientId; privilegeInfo.MemberId = openId; if (totalFee > 0.01M) { List <PrivilegeMemberRelationModel> lstPrivilege = new List <PrivilegeMemberRelationModel>(); if (string.IsNullOrEmpty(privilegeIds) && string.IsNullOrEmpty(selfChosen)) { lstPrivilege = _iwechat.GetCanUsePrivilege(privilegeInfo, privilegeIds, ref totalFee, lstProductPay); } else if (!string.IsNullOrEmpty(privilegeIds)) { lstPrivilege = _iwechat.GetChosenPrivilege(privilegeInfo, privilegeIds, ref totalFee, lstProductPay); } log.Info("ddddd" + lstPrivilege.Count); if (lstPrivilege.Count > 0) { string[] lstStr = lstPrivilege.Select(m => m.Id).ToArray(); if (string.IsNullOrEmpty(privilegeIds)) { payInfo.jsonProduct = payInfo.jsonProduct + "~" + string.Join(",", lstStr); } else { payInfo.jsonProduct = payInfo.jsonProduct + "~" + privilegeIds; } payState.PrivilegeJson = JsonHandler.GetJsonStrFromObject(lstPrivilege, false); } } //string total_fee = "1"; //检测是否给当前页面传递了相关参数 // 1.先取购买商品的详情返回给用户 并缓存到页面 2.支付成功后跳转到支付结果页并把缓存数据插入到销售记录表 //若传递了相关参数,则调统一下单接口,获得后续相关接口的入口参数 // jsApiPay.openid = openid; /* * decimal privilegeMoney = 0; * int weixinMoney = 0; * if (lstPrivilege.Count > 0) * { * if (lstPrivilege[0].Money>0) * { * privilegeMoney = lstPrivilege[0].Money; * weixinMoney = Convert.ToInt32(((totalFee - privilegeMoney) * 100)); * } * else * { * privilegeMoney = lstPrivilege[0].Discount; * weixinMoney = Convert.ToInt32(((totalFee) * 100)* (privilegeMoney/10)); * } * * } * else * { */ int weixinMoney = Convert.ToInt32((totalFee) * 100); //} payInfo.total_fee = (weixinMoney < 0 ? 1 : weixinMoney); //payInfo.jsonProduct = JsonHandler.GetJsonStrFromObject(keyJsonInfo, false); payState.TotalMoney = (totalFee < 0 ? Convert.ToDecimal(0.01) : totalFee); //写入交易中转 if (payInfo.total_fee == 0) { payState.RequestState = "2"; payState.RequestData = ""; return(Content(payState)); } RedisHelper helper = new RedisHelper(0); helper.StringSet(payInfo.trade_no.Trim(), JsonHandler.GetJsonStrFromObject(lstProductPay, false), new TimeSpan(0, 10, 30)); // FileHandler.WriteFile("data/", JsApi.payInfo.trade_no + ".wa", JsApi.payInfo.jsonProduct); WxPayData unifiedOrderResult = jsApi.GetUnifiedOrderResult(payInfo, payConfig); // Log.Write("GetDataW", "step step"); string wxJsApiParam = jsApi.GetJsApiParameters(payConfig, payInfo);//获取H5调起JS API参数 payState.RequestState = "1"; payState.RequestData = wxJsApiParam; return(Content(payState)); } catch (Exception ex) { PayStateModel payStateError = new PayStateModel(); payStateError.RequestState = "3"; payStateError.RequestData = ex.Message; return(Content(payStateError)); } return(Content(new PayStateModel())); }
// // GET: /xfz_home/ public ActionResult wxlogin(string url) { try { string openid = ""; string access_token = ""; if (!string.IsNullOrWhiteSpace(WeConfig.WxDebug)) { openid = WeConfig.WxDebug; access_token = ""; } else { JsApi jsapi = new JsApi(this); string codeUrl = jsapi.GetOpenidAndAccessToken_snsapi_userinfo(); if (codeUrl != string.Empty) { return(Redirect(codeUrl)); } openid = jsapi.openid; access_token = jsapi.access_token; } //用户信息,包括微信信息 C_ConsumerWxVM userVM = new C_ConsumerWxVM(); userVM.LoadUserVMByOpenid(openid); WXVariousApi VariousApi = new WXVariousApi(); VariousApi.LoadWxConfigIncidentalAccess_token(); WXUserInfo wx_userinfo = VariousApi.GetUserInfo(openid); if (wx_userinfo == null) { wx_userinfo = new WXUserInfo(); } //未关注获取头像 if (wx_userinfo.subscribe == "0") { WXUserInfo new_Wx_UserInfo = VariousApi.GetUserInfo0(openid, access_token); if (new_Wx_UserInfo != null) { wx_userinfo.nickname = new_Wx_UserInfo.nickname; wx_userinfo.sex = new_Wx_UserInfo.sex; wx_userinfo.province = new_Wx_UserInfo.province; wx_userinfo.city = new_Wx_UserInfo.city; wx_userinfo.country = new_Wx_UserInfo.country; wx_userinfo.headimgurl = new_Wx_UserInfo.headimgurl; wx_userinfo.unionid = new_Wx_UserInfo.unionid; } } if (userVM == null || userVM.user == null) { string guidCode = DAL.MD5Helper.GetMD5UTF8(Request.UserHostAddress + "," + Guid.NewGuid().ToString()); userVM.user = new C_Consumer(); userVM.userWxInfo = new C_UserWxInfo(); //用户信息赋值 userVM.user.UserName = "******" + (C_Consumer.GetTopUseID() + 1 + 1000 + guidCode.SubStringSafe(0, 4)); userVM.user.Pwd = ""; userVM.user.DatReg = DateTime.Now; userVM.user.Mobile = ""; userVM.user.Type = "消费者"; userVM.userWxInfo.openid = openid; userVM.userWxInfo.accesstoken = access_token; userVM.userWxInfo.nickname = wx_userinfo.nickname; userVM.userWxInfo.sex = wx_userinfo.sex; userVM.userWxInfo.unionid = wx_userinfo.unionid; userVM.userWxInfo.headimgurl = wx_userinfo.headimgurl; userVM.userWxInfo.subscribe = (wx_userinfo.subscribe == "0" ? false : true); userVM.userWxInfo.country = wx_userinfo.country; userVM.userWxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time); userVM.userWxInfo.language = wx_userinfo.language; userVM.AddUser(); userVM.userWxInfo.C_UserName = userVM.user.UserName; } userVM.userWxInfo.C_ConsumerUserName = userVM.user.UserName; string error = string.Empty; string userName = userVM.user.UserName; userVM.userWxInfo.accesstoken = access_token; userVM.userWxInfo.nickname = wx_userinfo.nickname; userVM.userWxInfo.groupid = wx_userinfo.groupid; userVM.userWxInfo.headimgurl = wx_userinfo.headimgurl; userVM.userWxInfo.subscribe = (wx_userinfo.subscribe == "0" ? false : true); userVM.userWxInfo.country = wx_userinfo.country; userVM.userWxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time); userVM.userWxInfo.language = wx_userinfo.language; if (!string.IsNullOrWhiteSpace(userVM.userWxInfo.nickname)) { new System.Threading.Thread(delegate() { userVM.UpdateUserWxInfo(); }).Start(); } Session["xfz_UserName"] = userName; return(Redirect(HttpUtility.UrlDecode(url))); } catch (Exception ex) { DAL.Log.Instance.Write(ex.ToString(), "WXLogin_error"); return(View(ErrorPage.ViewName, new ErrorPage { Message = ex.ToString() })); } }
//微信支付 public ResultObj <PayStateModel> GetDataW(string k, string code) { bool isPayByTunnel = true; try { //解码机器传过来的key值 //解析k值 KeyJsonModel keyJsonInfo = new PayHelper().AnalizeKey(k); RedisHelper redisHelper = new RedisHelper(0); if (!redisHelper.KeyExists(keyJsonInfo.m)) { PayStateModel payStateNull = new PayStateModel(); return(Content(payStateNull, ResultCode.Success, "机器不在线", new Pagination { })); } IPay _ipay = new PayService(); //移动支付赋值 WxPayConfig payConfig = _ipay.GenerateConfigModelW(keyJsonInfo.m); JsApi jsApi = new JsApi(); PayModel payInfo = new PayModel(); //JsApi.payInfo = new PayModel(); payInfo.k = k; //生成code 根据code取微信支付的openid和access_token jsApi.GetOpenidAndAccessToken(code, payConfig, payInfo, "/m.html?k=" + payInfo.k, ""); PayStateModel payState = new PayStateModel(); if (string.IsNullOrEmpty(payInfo.openid)) { payState.RequestState = "0"; payState.ProductJson = ""; payState.RequestData = payInfo.redirect_url; return(Content(payState)); } //JSAPI支付预处理 if (string.IsNullOrEmpty(keyJsonInfo.m) || keyJsonInfo.t.Count == 0) { payState.RequestState = "2"; payState.ProductJson = ""; payState.RequestData = ""; return(Content(payState)); } //生成交易号 payInfo.trade_no = new PayHelper().GeneraterTradeNo(); //取商品信息 decimal totalFee = 0; string productNames = string.Empty; List <ProductModel> lstProduct = new List <ProductModel>(); if (keyJsonInfo.t.Count > 0 && keyJsonInfo.t[0].tid.Length > 10) { isPayByTunnel = false; } //按货道付款 if (isPayByTunnel) { lstProduct = _ipay.GetProducInfo(keyJsonInfo.m, keyJsonInfo.t); //遍历商品 foreach (ProductModel productInfo in lstProduct) { var tunnelInfo = (from m in keyJsonInfo.t where m.tid == productInfo.TunnelId select m).ToList <KeyTunnelModel>(); if (tunnelInfo.Count > 0) { productInfo.Num = string.IsNullOrEmpty(tunnelInfo[0].n) ? "1" : tunnelInfo[0].n; totalFee = totalFee + Convert.ToInt32(productInfo.Num) * Convert.ToDecimal(productInfo.UnitW); productNames = productNames + productInfo.WaresName + ","; productInfo.TradeNo = payInfo.trade_no; tunnelInfo[0].p = productInfo.UnitW; tunnelInfo[0].wid = productInfo.WaresId; } } } else { lstProduct = _ipay.GetProducInfoByWaresId(keyJsonInfo.m, keyJsonInfo.t); //遍历商品 foreach (ProductModel productInfo in lstProduct) { var tunnelInfo = (from m in keyJsonInfo.t where m.tid == productInfo.WaresId select m).ToList <KeyTunnelModel>(); if (tunnelInfo.Count > 0) { productInfo.Num = string.IsNullOrEmpty(tunnelInfo[0].n) ? "1" : tunnelInfo[0].n; totalFee = totalFee + Convert.ToInt32(productInfo.Num) * Convert.ToDecimal(productInfo.UnitW); productNames = productNames + productInfo.WaresName + ","; productInfo.TradeNo = payInfo.trade_no; tunnelInfo[0].p = productInfo.UnitW; tunnelInfo[0].wid = productInfo.WaresId; tunnelInfo[0].tid = productInfo.TunnelId; } } } payInfo.product_name = productNames.Length > 25 ? productNames.Substring(0, 25) : productNames; //string total_fee = "1"; //检测是否给当前页面传递了相关参数 // 1.先取购买商品的详情返回给用户 并缓存到页面 2.支付成功后跳转到支付结果页并把缓存数据插入到销售记录表 //若传递了相关参数,则调统一下单接口,获得后续相关接口的入口参数 // jsApiPay.openid = openid; payInfo.total_fee = Convert.ToInt32((totalFee * 100)); payInfo.jsonProduct = JsonHandler.GetJsonStrFromObject(keyJsonInfo, false); //写入交易中转 /* * RedisHelper helper = new RedisHelper(0); * * helper.StringSet(JsApi.payInfo.trade_no.Trim(), JsApi.payInfo.jsonProduct, new TimeSpan(0, 10, 30)); */ // FileHandler.WriteFile("data/", JsApi.payInfo.trade_no + ".wa", JsApi.payInfo.jsonProduct); WxPayData unifiedOrderResult = jsApi.GetUnifiedOrderResult(payInfo, payConfig); // Log.Write("GetDataW", "step step"); string wxJsApiParam = jsApi.GetJsApiParameters(payConfig, payInfo);//获取H5调起JS API参数 payState.RequestState = "1"; payState.ProductJson = JsonHandler.GetJsonStrFromObject(lstProduct, false); payState.RequestData = wxJsApiParam; return(Content(payState)); } catch (Exception ex) { PayStateModel payStateError = new PayStateModel(); payStateError.RequestState = "3"; payStateError.RequestData = ex.Message; return(Content(payStateError)); } return(Content(new PayStateModel())); }