public AccessTokenModel GetAccessToken(string corpid, string corpsecret) { var accessToken = _accessTokeStore.GetAccessToken(corpid, corpsecret); if (accessToken == null || DateTime.Now >= accessToken.ExpiresTime) { lock (lockObj) { try { string url = WechatUrlHelper.GettokenUrl(corpid, corpsecret); var res = _httpClient.SendGet <AccessTokenMessage>(url); if (res.HttpStatusCode == System.Net.HttpStatusCode.OK) { var accessTokenMsg = res.Result; if (accessTokenMsg.ErrCode == 0) { accessToken = AccessTokenMsgMap(accessTokenMsg); var tmpAccessToken = _accessTokeStore.GetAccessToken(corpid, corpsecret); if (tmpAccessToken == null || DateTime.Now >= tmpAccessToken.ExpiresTime) { _accessTokeStore.SaveAccessToken(corpid, corpsecret, accessToken); return(accessToken); } return(tmpAccessToken); } else { _logger.LogError($"获取accessToken失败,错误码:{accessTokenMsg.ErrCode},错误消息:{accessTokenMsg.ErrMsg},corpid:{corpid},corpsecret:{corpsecret}"); return(null); } } else { _logger.LogError($"请求accessToken失败,http错误码:{res.HttpStatusCode},Url:{url}"); return(null); } } catch (Exception ex) { _logger.LogError($"获取accessToken发生异常,{ex.Message}", ex); return(null); } } } else { return(accessToken); } }
public OperationResult <WechatUserInfo> GetWechatUserInfo(string access_token, string code) { string url = WechatUrlHelper.GetuserinfoUrl(access_token, code); var res = _httpClient.SendGet <UserInfoMessage>(url); if (res.HttpStatusCode == System.Net.HttpStatusCode.OK && res.Result != null) { var msg = res.Result; if (msg.ErrCode == 0) { string openId = string.IsNullOrEmpty(msg.UserId) ? msg.OpenId : msg.UserId; return(OperationResult <WechatUserInfo> .CreateSuccessResult(new WechatUserInfo(openId, msg.DeviceId))); } else { return(OperationResult <WechatUserInfo> .CreateFailedResult($"ErrCode:{msg.ErrCode} ErrMsg:{msg.ErrMsg}")); } } else { return(OperationResult <WechatUserInfo> .CreateFailedResult($"http error code {res.HttpStatusCode}")); } }
public string GetOAuthConnect(string corpID, string redirect_uri, string state = null) { return(WechatUrlHelper.OAuthConnect(corpID, redirect_uri, state)); }