public static bool GetAccessToken(out string accessToken, out string errMsg) { accessToken = string.Empty; errMsg = string.Empty; if (SAppAccessTokenBusiness.GetAccessToken(out accessToken)) { //如果缓存中存在访问access_token,直接返回缓存的access_token return(true); } else { //如果缓存中不存在访问access_token,调用微信接口获取,并写入缓存 string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", WeiXinConfig.WXSmallAppId, WeiXinConfig.WXSmallAppSecret); string json = Utils.WebClientDownloadString(url); Dictionary <string, object> dict = new Dictionary <string, object>(); if (WeiXinJsonHelper.GetResponseJsonResult(json, ref dict)) { accessToken = dict["access_token"].ToString(); int expires = int.Parse(dict["expires_in"].ToString()); SAppAccessTokenBusiness.AddAccessToken(accessToken, expires - 60); return(true); } else { errMsg = dict["errmsg"].ToString(); return(false); } } }
public static bool GetOpenTokenForScanQR(string code, out string accsess_token, out string refresh_token, out string openId, out string unionId) { accsess_token = string.Empty; refresh_token = string.Empty; openId = string.Empty; unionId = string.Empty; string url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code"; url = string.Format(url, WeiXinConfig.OpenAppId, WeiXinConfig.OpenAppSecret, code); string str = Utils.WebClientDownloadString(url); Dictionary <string, object> dict = new Dictionary <string, object>(); if (WeiXinJsonHelper.GetResponseJsonResult(str, ref dict)) { accsess_token = dict["access_token"].ToString(); refresh_token = dict["refresh_token"].ToString(); openId = dict["openid"].ToString(); //unionId当且仅当该网站应用已获得该用户的userinfo授权时,才会出现该字段。 unionId = dict.ContainsKey("unionid") ? dict["unionid"].ToString() : string.Empty; return(true); } else { return(false); } }
public static bool GetUnionIdFromOpen(string openId, string accsess_token, out string unionId, out string errMsg) { unionId = string.Empty; errMsg = string.Empty; if (XCCloudUnionIDBusiness.GetUnionID(openId, out unionId)) { //如果缓存中存在访问unionId,直接返回缓存的unionId return(true); } else { //获取用户基本信息 string url = "https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}"; url = string.Format(url, accsess_token, openId); string list = Utils.WebClientDownloadString(url); Dictionary <string, object> dict = new Dictionary <string, object>(); if (WeiXinJsonHelper.GetResponseJsonResult(list, ref dict)) { if (dict.ContainsKey("errcode")) { errMsg = dict["errmsg"].ToString(); return(false); } unionId = dict["unionid"].ToString(); return(true); } else { errMsg = "获取用户基本信息出错"; return(false); } } }
public static bool GetTokenForScanQR(string code, out string accsess_token, out string refresh_token, out string openId, out string errMsg) { accsess_token = string.Empty; refresh_token = string.Empty; openId = string.Empty; errMsg = string.Empty; string url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code"; url = string.Format(url, WeiXinConfig.AppId, WeiXinConfig.AppSecret, code); string str = Utils.WebClientDownloadString(url); Dictionary <string, object> dict = new Dictionary <string, object>(); if (WeiXinJsonHelper.GetResponseJsonResult(str, ref dict)) { accsess_token = dict["access_token"].ToString(); refresh_token = dict["refresh_token"].ToString(); openId = dict["openid"].ToString(); return(true); } else { errMsg = dict["errmsg"].ToString(); return(false); } }
/// <summary> /// 获取微信访问openid /// </summary> /// <returns></returns> public static bool GetOpenId(string code, string key, out string openId) { openId = string.Empty; if (RegisterOpenIDBusiness.GetOpenId(Constant.WeiXinOpenId + key, out openId)) { //如果缓存中存在访问openId,直接返回缓存的openId return(true); } else { //如果缓存中不存在访问openId,调用微信接口获取,并写入缓存 string url = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", WeiXinConfig.AppId, WeiXinConfig.AppSecret, code); string json = Utils.WebClientDownloadString(url); Dictionary <string, object> dict = new Dictionary <string, object>(); if (WeiXinJsonHelper.GetResponseJsonResult(json, ref dict)) { openId = dict["openid"].ToString(); int expires = int.Parse(dict["expires_in"].ToString()); RegisterOpenIDBusiness.AddOpenId(Constant.WeiXinOpenId + key, openId, expires - 60); return(true); } else { return(false); } } }
public static bool GetWeiXinSAppUserSession(string code, ref WeiXinSAppSessionModel sessionModel, out string serverSessionKey, out string errMsg) { sessionModel = null; errMsg = string.Empty; serverSessionKey = string.Empty; string url = string.Format("https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code", WeiXinConfig.WXSmallAppId, WeiXinConfig.WXSmallAppSecret, code); string str = Utils.WebClientDownloadString(url); Dictionary <string, object> dict = new Dictionary <string, object>(); LogHelper.SaveLog(TxtLogType.WeiXin, TxtLogContentType.Common, TxtLogFileType.Day, str); if (WeiXinJsonHelper.GetResponseJsonResult(str, ref dict)) { sessionModel = new WeiXinSAppSessionModel(); sessionModel.OpenId = dict["openid"].ToString(); sessionModel.SessionKey = dict["session_key"].ToString(); sessionModel.UnionId = dict.ContainsKey("unionid") ? dict["unionid"].ToString():""; if (WeiXinSAppSessionBussiness.Add(sessionModel, WeiXinConfig.WXSmallAppSessionTime, out serverSessionKey)) { return(true); } else { return(false); } } else { errMsg = dict["errmsg"].ToString(); return(false); } }
private bool getWxUser <T>(string openId, out T userInfo, out string errMsg) { userInfo = default(T); errMsg = string.Empty; string accsess_token = string.Empty; if (TokenMana.GetAccessToken(out accsess_token)) { string url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}"; url = string.Format(url, accsess_token, openId); string str = Utils.WebClientDownloadString(url); Dictionary <string, object> dict = new Dictionary <string, object>(); if (WeiXinJsonHelper.GetResponseJsonResult(str, ref dict)) { userInfo = Utils.DataContractJsonDeserializer <T>(str); } else { errMsg = "获取用户信息出错:" + dict["errcode"].ToString() + " " + dict["errmsg"].ToString(); return(false); } return(true); } else { errMsg = "获取微信令牌出错"; return(false); } }
private bool getWxUsers <T>(string nextOpenId, out UserInfoCollection <T> userInfoCollection, out string errMsg) { userInfoCollection = null; errMsg = string.Empty; string accsess_token = string.Empty; string openId = string.Empty; if (TokenMana.GetAccessToken(out accsess_token)) { string url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token={0}&next_openid={1}"; url = string.Format(url, accsess_token, nextOpenId); string list = Utils.WebClientDownloadString(url); Dictionary <string, object> dict = new Dictionary <string, object>(); if (WeiXinJsonHelper.GetResponseJsonResult(list, ref dict)) { var openidarr = ((Dictionary <string, object>)dict["data"])["openid"] as object[]; if (openidarr != null && openidarr.Length > 0) { var userinfoarr = new object[openidarr.Length]; for (int i = 0; i < openidarr.Length; i++) { userinfoarr[i] = new { openid = openidarr[i].ToString() }; } var pushData = new { user_list = userinfoarr }; string json = Utils.SerializeObject(pushData).ToString(); url = "https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token={0}"; url = string.Format(url, accsess_token); string str = Utils.HttpPost(url, json); if (WeiXinJsonHelper.GetResponseJsonResult(str, ref dict)) { userInfoCollection = Utils.DataContractJsonDeserializer <UserInfoCollection <T> >(str); } else { errMsg = "获取用户基本信息出错:" + dict["errcode"].ToString() + " " + dict["errmsg"].ToString(); return(false); } } } else { errMsg = "获取用户列表出错:" + dict["errcode"].ToString() + " " + dict["errmsg"].ToString(); return(false); } return(true); } else { errMsg = "获取微信令牌出错"; return(false); } }
public static bool GetUnionId(string openId, out string unionId, out string errMsg) { unionId = string.Empty; errMsg = string.Empty; if (XCCloudUnionIDBusiness.GetUnionID(openId, out unionId)) { //如果缓存中存在访问unionId,直接返回缓存的unionId return(true); } else { //获取用户基本信息 string access_token = string.Empty; if (TokenMana.GetAccessToken(out access_token)) { string url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}"; url = string.Format(url, access_token, openId); string list = Utils.WebClientDownloadString(url); Dictionary <string, object> dict = new Dictionary <string, object>(); if (WeiXinJsonHelper.GetResponseJsonResult(list, ref dict)) { if (dict.ContainsKey("errcode")) { errMsg = dict["errmsg"].ToString(); return(false); } if (dict["subscribe"].ToString().Equals("0")) { errMsg = "该用户未关注微信公众号"; return(false); } unionId = dict["unionid"].ToString(); XCCloudUnionIDBusiness.SetUnionID(openId, unionId); return(true); } else { errMsg = "获取用户基本信息出错"; return(false); } } else { errMsg = "获取微信令牌出错"; return(false); } } }
public static bool IsValid(string access_token) { string url = "https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token={0}"; url = string.Format(url, access_token); string list = Utils.WebClientDownloadString(url); Dictionary <string, object> dict = new Dictionary <string, object>(); //LogHelper.SaveLog("access_token:" + access_token); if (WeiXinJsonHelper.GetResponseJsonResult(list, ref dict)) { //LogHelper.SaveLog("ip_list.length:" + ((object[])dict["ip_list"]).Length); return(true); } else { LogHelper.SaveLog("errcode:" + dict["errcode"].ToString() + " " + dict["errmsg"].ToString()); return(false); } }
private static bool Push <TConfig, TData>(string openId, string accessToken, string form_id, TData dataModel, out string errMsg) { errMsg = string.Empty; TConfig configModel = default(TConfig); if (!SAppMsgConfig.GetMsgTemplateConfig <TConfig>(ref configModel, CommonConfig.SAppMessagePushXmlFilePath)) { errMsg = "读取微信消息配置文件出错"; return(false); } if (string.IsNullOrEmpty(accessToken)) { if (!SAppTokenMana.GetAccessToken(out accessToken, out errMsg)) { errMsg = "获取微信令牌出错"; return(false); } } string json = SAppMessagePushFactory.CreateMsgJson <TConfig, TData>(openId, form_id, configModel, dataModel); string url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token={0}"; url = string.Format(url, accessToken); string str = Utils.HttpPost(url, json); Dictionary <string, object> dict = new Dictionary <string, object>(); if (WeiXinJsonHelper.GetResponseJsonResult(str, ref dict)) { return(true); } else { errMsg = dict["errmsg"].ToString(); return(false); } }
private bool getWxFans <T>(string tagName, string nextOpenId, out UserInfoCollection <T> userInfoCollection, out string errMsg) { userInfoCollection = null; errMsg = string.Empty; string accsess_token = string.Empty; string openId = string.Empty; if (TokenMana.GetAccessToken(out accsess_token)) { string url = "https://api.weixin.qq.com/cgi-bin/tags/get?access_token={0}"; url = string.Format(url, accsess_token); Dictionary <string, object> dict = new Dictionary <string, object>(); string list = Utils.WebClientDownloadString(url); if (WeiXinJsonHelper.GetResponseJsonResult(list, ref dict)) { var tagId = 0; var tags = (object[])dict["tags"]; if (tags != null && tags.Length > 0) { foreach (IDictionary <string, object> el in tags) { if (el != null) { var dicPara = new Dictionary <string, object>(el, StringComparer.OrdinalIgnoreCase); string name = dicPara.ContainsKey("name") ? dicPara["name"].ToString() : string.Empty; if (name.Equals(tagName, StringComparison.OrdinalIgnoreCase)) { int.TryParse(dicPara["id"].ToString(), out tagId); break; } } } } if (tagId == 0) { errMsg = "该标签不存在"; return(false); } var pushData = new { tagid = tagId, next_openid = nextOpenId }; string json = Utils.SerializeObject(pushData).ToString(); url = "https://api.weixin.qq.com/cgi-bin/user/tag/get?access_token={0}"; url = string.Format(url, accsess_token); string str = Utils.HttpPost(url, json); if (WeiXinJsonHelper.GetResponseJsonResult(str, ref dict)) { var openidarr = ((Dictionary <string, object>)dict["data"])["openid"] as object[]; if (openidarr != null && openidarr.Length > 0) { var userinfoarr = new object[openidarr.Length]; for (int i = 0; i < openidarr.Length; i++) { userinfoarr[i] = new { openid = openidarr[i].ToString() }; } var pushData2 = new { user_list = userinfoarr }; json = Utils.SerializeObject(pushData2).ToString(); url = "https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token={0}"; url = string.Format(url, accsess_token); str = Utils.HttpPost(url, json); if (WeiXinJsonHelper.GetResponseJsonResult(str, ref dict)) { userInfoCollection = Utils.DataContractJsonDeserializer <UserInfoCollection <T> >(str); } else { errMsg = "获取用户基本信息出错:" + dict["errcode"].ToString() + " " + dict["errmsg"].ToString(); return(false); } } } else { errMsg = "获取标签粉丝信息出错:" + dict["errcode"].ToString() + " " + dict["errmsg"].ToString(); return(false); } } else { errMsg = "获取标签列表出错:" + dict["errcode"].ToString() + " " + dict["errmsg"].ToString(); return(false); } return(true); } else { errMsg = "获取微信令牌出错"; return(false); } }