/// <summary> /// singature签名的生成比较麻烦。 /// 首先生成获取access_token /// (有效期7200秒,开发者必须在自己的服务全局缓存access_token) /// </summary> /// <returns></returns> public static string Getaccesstoken() { string appid = PayConfig.WxAppid(); string secret = PayConfig.WxAppSecret(); string urljson = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret; string strjson = ""; UTF8Encoding encoding = new UTF8Encoding(); HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(urljson); myRequest.Method = "GET"; myRequest.ContentType = "application/x-www-form-urlencoded"; HttpWebResponse response; Stream responseStream; StreamReader reader; string srcString; response = myRequest.GetResponse() as HttpWebResponse; responseStream = response.GetResponseStream(); reader = new System.IO.StreamReader(responseStream, Encoding.UTF8); srcString = reader.ReadToEnd(); reader.Close(); if (srcString.Contains("access_token")) { //CommonJsonModel model = new CommonJsonModel(srcString); CommonJsonModel model = new CommonJsonModel(srcString); strjson = model.GetValue("access_token"); SessionTools.SetSession("access_tokenzj", strjson); } return(strjson); }
private static Sys_User Registered(string code) { try { var client = new System.Net.WebClient(); client.Encoding = System.Text.Encoding.UTF8; // 通过code换取网页授权access_token var strTokenUrl = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", PayConfig.WxAppid(), PayConfig.WxAppSecret(), code); var strTokenData = client.DownloadString(strTokenUrl); var TokenEntity = JsonHelper.DeserializeObject <WxAccessToken>(strTokenData); if (TokenEntity == null || string.IsNullOrEmpty(TokenEntity.access_token)) { return(null); } // 通过access_token和openid 拉取用户信息 var strUserUrl = string.Format("https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN", TokenEntity.access_token, TokenEntity.openid); var strUserData = client.DownloadString(strUserUrl); var UserEntity = JsonHelper.DeserializeObject <WxUserInfo>(strUserData); if (UserEntity == null || string.IsNullOrEmpty(UserEntity.openid)) { return(null); } // 注册 var User = new UserService().Regist(UserEntity); if (User != null) { SessionTools.UserID = User.UserID; SessionTools.UserName = User.UserName; return(User); } } catch (Exception ex) { throw ex; } return(null); }