public JsApiTicket GetJsApiTicket(int wid, out string errorMessage) { lock (Obj) { try { var appInfo = _appInfoRepository.GetAppInfo(wid); if (appInfo == null) { errorMessage = string.Format("当前系统无wid为{0}相应公众号的配置", wid); return(null); } if (string.IsNullOrEmpty(appInfo.AppId) || string.IsNullOrEmpty(appInfo.AppSecret)) { errorMessage = string.Format("当前系统wid为{0}相应公众号的配置不完整,AppId或者AppSecret未填写完全,请在[我的公众帐号]里补全信息!", wid); return(null); } var jsApiTicketFromDb = _jsApiTicketRepository.GetJsApiTicket(appInfo); //判断是否存在或者是否过期 if (jsApiTicketFromDb == null || jsApiTicketFromDb.IsExpired()) { //更改已过期的数据 _jsApiTicketRepository.SetJsApiTicketExpire(jsApiTicketFromDb); //重新从微信申请ticket string tokenErrorMessage; var token = new AccessTokenService().GetAccessToken(wid, out tokenErrorMessage); if (token == null || !string.IsNullOrEmpty(tokenErrorMessage)) { throw new Exception(string.Format("获取JsApiTicket失败:{0}", tokenErrorMessage)); } var result = OneGulp.WeChat.MP.CommonAPIs.CommonApi.GetTicket(token.Ticket); var newJsApiTicket = new JsApiTicket() { Id = Guid.NewGuid(), AppId = wid, Ticket = result.ticket, Expires = result.expires_in, SysDateTime = DateTime.Now }; _jsApiTicketRepository.Add(newJsApiTicket); errorMessage = string.Empty; return(newJsApiTicket); } errorMessage = string.Empty; return(jsApiTicketFromDb); } catch (Exception exception) { errorMessage = exception.Message; return(null); } } }
public JsApiTicket GetJsApiTicket(int wid, out string errorMessage) { lock (Obj) { try { var appInfo = _appInfoRepository.GetAppInfo(wid); if (appInfo == null) { errorMessage = string.Format("当前系统无wid为{0}相应公众号的配置", wid); return null; } if (string.IsNullOrEmpty(appInfo.AppId) || string.IsNullOrEmpty(appInfo.AppSecret)) { errorMessage = string.Format("当前系统wid为{0}相应公众号的配置不完整,AppId或者AppSecret未填写完全,请在[我的公众帐号]里补全信息!", wid); return null; } var jsApiTicketFromDb = _jsApiTicketRepository.GetJsApiTicket(appInfo); //判断是否存在或者是否过期 if (jsApiTicketFromDb == null || jsApiTicketFromDb.IsExpired()) { //更改已过期的数据 _jsApiTicketRepository.SetJsApiTicketExpire(jsApiTicketFromDb); //重新从微信申请ticket string tokenErrorMessage; var token = new AccessTokenService().GetAccessToken(wid, out tokenErrorMessage); if (token == null || !string.IsNullOrEmpty(tokenErrorMessage)) throw new Exception(string.Format("获取JsApiTicket失败:{0}", tokenErrorMessage)); var result = OneGulp.WeChat.MP.CommonAPIs.CommonApi.GetTicket(token.Ticket); var newJsApiTicket = new JsApiTicket() { Id = Guid.NewGuid(), AppId = wid, Ticket = result.ticket, Expires = result.expires_in, SysDateTime = DateTime.Now }; _jsApiTicketRepository.Add(newJsApiTicket); errorMessage = string.Empty; return newJsApiTicket; } errorMessage = string.Empty; return jsApiTicketFromDb; } catch (Exception exception) { errorMessage = exception.Message; return null; } } }
public void GetAccessToken() { var iAccessToken = DependencyManager.Resolve<IAccessTokenRepository>(); var token = iAccessToken.GetAccessToken(1); AccessTokenService accessTokenService = new AccessTokenService(); string errorMessage; var result = accessTokenService.GetAccessToken(1, out errorMessage); Assert.IsTrue(result != null && !result.IsExpired()); }
/// <summary> /// 获取微信用户信息 /// </summary> /// <param name="appId"></param> /// <param name="openId"></param> /// <returns></returns> public UserInfo GetUserInfo(int appId, string openId) { //判断appId是否合法 var appInfo = _appInfoRepository.GetAppInfo(appId); if (appInfo == null) throw new Exception(string.Format("获取用户信息失败:通过参数{0}获取到的公众号信息为空", appId)); var userInfoFromDb = _userRepository.GetUserInfo(appId, openId); //如果从数据库获取用户为空,则需要重新从微信更新 string tokenErrorMessage; var accessToken = new AccessTokenService().GetAccessToken(appId, out tokenErrorMessage); if (accessToken == null || !string.IsNullOrEmpty(tokenErrorMessage)) throw new Exception(string.Format("获取用户信息失败:", tokenErrorMessage)); if (userInfoFromDb != null) return userInfoFromDb; var newUserInfoFromWeiXin = UserApi.Info(accessToken.Ticket, openId); if (newUserInfoFromWeiXin == null) throw new Exception("获取用户信息失败:从微信获取到的用户为空"); var newUserInfo = new UserInfo { AppId = appId, Openid = newUserInfoFromWeiXin.openid, City = newUserInfoFromWeiXin.city, Country = newUserInfoFromWeiXin.country, Groupid = newUserInfoFromWeiXin.groupid, Headimgurl = newUserInfoFromWeiXin.headimgurl, Language = newUserInfoFromWeiXin.language, Nickname = newUserInfoFromWeiXin.nickname, Province = newUserInfoFromWeiXin.province, Remark = newUserInfoFromWeiXin.remark, Sex = newUserInfoFromWeiXin.sex, //Subscribe = newUserInfoFromWeiXin.subscribe, SubscribeTime = newUserInfoFromWeiXin.subscribe_time }; //缓存到数据库 _userRepository.Add(newUserInfo); return newUserInfo; }