// GET: Account public ActionResult Index() { GetOpenid getopenid = ReGetOpenId(); WxUserData userdata = null; if (getopenid.status == "OK") { //拿到了openid,去数据库看是否有绑定,有绑定就获得用户信息。 using (var userBll = new UserBLL()) { userdata = userBll.GetUserBlanceInfo(getopenid.openid); } if (userdata.Result == "该用户未绑定") { // System.Web.HttpContext.Current.Response.Redirect("Account/Register"); return(View("Register")); } } return(View(userdata)); }
/// <summary> /// 获得用户登录进来的openid /// </summary> public static GetOpenid ReGetOpenId() { string CodeUrl = ""; string url = ""; GetOpenid getopenid = new GetOpenid(); //先要判断是否是获取code后跳转过来的 if (System.Web.HttpContext.Current.Request.QueryString["code"] == "" || System.Web.HttpContext.Current.Request.QueryString["code"] == null) { //Code为空时,那就先去先获取Code url = System.Web.HttpContext.Current.Request.Url.AbsoluteUri; //获取当前url url = System.Web.HttpUtility.UrlEncode(url); //对url进行编码 CodeUrl = string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + WxPayConfig.APPID + "&redirect_uri=" + url + "?action=viewtest&response_type=code&scope=snsapi_base&state=1#wechat_redirect"); System.Web.HttpContext.Current.Response.Redirect(CodeUrl);//先跳转到微信的服务器,取得code后会跳回来这页面的 } else { // 跳回来后根据Code获取用户的openid、access_token url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + WxPayConfig.APPID + "&secret=" + WxPayConfig.APPSECRET + "&code=" + System.Web.HttpContext.Current.Request.QueryString["Code"] + "&grant_type=authorization_code"; //设置HttpClientHandler的AutomaticDecompression var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip }; //创建HttpClient using (var http = new HttpClient(handler)) { HttpResponseMessage response = http.GetAsync(url).Result; if (response.IsSuccessStatusCode) { string responseJson = response.Content.ReadAsStringAsync().Result; //序列化 OAuth_Token ac = new OAuth_Token(); ac = JSONHelper.JsonDeserialize <OAuth_Token>(responseJson); WxPayData data = new WxPayData(); data.SetValue("openid", ac.openid); data.SetValue("access_token", ac.access_token); data.SetValue("expires_in", ac.expires_in); data.SetValue("scope", ac.scope); data.SetValue("refresh_token", ac.refresh_token); System.Web.HttpContext.Current.Session["openid"] = ac.openid; getopenid.openid = ac.openid; getopenid.code = System.Web.HttpContext.Current.Request.QueryString["code"]; getopenid.status = "OK"; } else { getopenid.code = System.Web.HttpContext.Current.Request.QueryString["code"]; getopenid.status = "error,StatusCode:" + response.StatusCode.ToString(); } } } return(getopenid); }