public const string WeiXin_User_GetInfoUrl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN"; /// <summary> /// 根据OpenID 获取用户在微信的基本信息(需关注公众号) /// </summary> /// <param name="openId"></param> public static WeiXinUserInfo GetUserInfo(string openId) { WeiXinUserInfo info = new WeiXinUserInfo(); try { var token = GetAccsss_token(); string url = string.Format(WeiXin_User_GetInfoUrl, token, openId); string result = GetData(url); if (string.IsNullOrEmpty(result)) return null; info = JsonConvert.DeserializeObject<WeiXinUserInfo>(result); }catch(Exception ex){ LogHelper.WriteFileLog("getUserWeixinInfoError", ex.Message); } return info; } /// <summary> /// 保存用户信息 /// </summary> public void SaveUserInfo(string FromUserName) { //第一次关注 WeiXinCommom.WeiXinUserInfo info = WeiXinCommom.GetUserInfo(FromUserName); string SaveUserWeiXinInfurl = RequestUrl.ServiceUrl + RequestUrl.SaveUserWeiXinInfo; Entity SaveUserWeiXinInfdata = new Entity(new PropertyCollection()); string WeixinQrCodePath = ConfigurationManager.AppSettings["UserHeadUploadPath"].TryString(); string rootpath = System.AppDomain.CurrentDomain.BaseDirectory;//程序运行地址 string path = rootpath + WeixinQrCodePath; //文件夹绝对路径 if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string Guidcode = Guid.NewGuid().TryString(); string HeadImgPath = path + "/" + Guidcode + ".jpg";//用户头像的绝对路径 string SaveImg = "/" + WeixinQrCodePath + "/" + Guidcode + ".jpg"; WeiXinCommom.SaveUrlImage(info.HeadImgUrl, HeadImgPath); SaveUserWeiXinInfdata.AddSimple("WeiXinOpenID", FromUserName, typeof(string)); SaveUserWeiXinInfdata.AddSimple("NickName", (info.NickName == null ? "" : info.NickName), typeof(string)); SaveUserWeiXinInfdata.AddSimple("HeadImgUrl", SaveImg, typeof(string)); SaveUserWeiXinInfdata.AddSimple("Subscribe", 1, typeof(int)); RequestUrl.RequestWebByPost(SaveUserWeiXinInfurl, SaveUserWeiXinInfdata);//更新用户关注状态 } /// <summary> /// 保存网络图片 /// </summary> /// <param name="stUrl"></param> /// <param name="imgPath"></param> /// <returns></returns> public static void SaveUrlImage(string stUrl, string imgPath) { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(stUrl); req.Method = "GET"; using (WebResponse wr = req.GetResponse()) { HttpWebResponse myResponse = (HttpWebResponse)req.GetResponse(); string strpath = myResponse.ResponseUri.ToString(); WebClient mywebclient = new WebClient(); try { mywebclient.DownloadFile(strpath, imgPath); } catch (Exception ex) { LogHelper.WriteFileLog("WebResponse", ex.Message); } } }