/// <summary> /// 使用AccessToken进行操作时,如果遇到AccessToken错误的情况,重新获取AccessToken一次,并重试。 /// 使用此方法之前必须使用AccessTokenContainer.Register(_appId, _appSecret);或JsApiTicketContainer.Register(_appId, _appSecret);方法对账号信息进行过注册,否则会出错。 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="fun"></param> /// <param name="accessTokenOrAppId">AccessToken或AppId。如果为null,则自动取已经注册的第一个appId/appSecret来信息获取AccessToken。</param> /// <param name="retryIfFaild">请保留默认值true,不用输入。</param> /// <returns></returns> public static T TryCommonApi <T>(Func <string, T> fun, string accessTokenOrAppId = null, bool retryIfFaild = true) where T : WxJsonResult { string appId = null; string accessToken = null; if (accessTokenOrAppId == null) { appId = AccessTokenContainer.GetFirstOrDefaultAppId(); if (appId == null) { throw new WeixinException("尚无已经注册的AppId,请先使用AccessTokenContainer.Register完成注册(全局执行一次即可)!"); } } else if (ApiUtility.IsAppId(accessTokenOrAppId)) { if (!AccessTokenContainer.CheckRegistered(accessTokenOrAppId)) { throw new WeixinException("此appId尚未注册,请先使用AccessTokenContainer.Register完成注册(全局执行一次即可)!"); } appId = accessTokenOrAppId; } else { //accessToken accessToken = accessTokenOrAppId; } T result = null; try { if (accessToken == null) { var accessTokenResult = AccessTokenContainer.GetTokenResult(appId, false); accessToken = accessTokenResult.access_token; } result = fun(accessToken); } catch (ErrorJsonResultException ex) { if (!retryIfFaild && appId != null && ex.JsonResult.errcode == ReturnCode.获取access_token时AppSecret错误或者access_token无效) { //尝试重新验证 var accessTokenResult = AccessTokenContainer.GetTokenResult(appId, true); accessToken = accessTokenResult.access_token; result = TryCommonApi(fun, appId, false); } else { result = Activator.CreateInstance <T>(); result.errcode = ex.JsonResult.errcode; result.errmsg = ex.JsonResult.errmsg; } } return(result); }
public void SendWorkOrderTemplateMessage(long memberId, string billCode, string title, string progress, string person) { var memberInfo = _memberRepository.FirstOrDefault(t => t.Id == memberId); if (memberInfo == null) { throw new UserFriendlyException("会员信息不存在!"); } if (string.IsNullOrEmpty(memberInfo.Openid)) { throw new UserFriendlyException("会员未绑定微信!"); } string openid = memberInfo.Openid; var host = _settingManager.GetSettingValue(AppSettings.Wuye.Host); string url = host.TrimEnd('/') + "/weixin/linkbill/view?EType=2&EDType=3&BillCode=" + billCode; try { var appid = _settingManager.GetSettingValue(AppSettings.Weixin.AppId); var appsecret = _settingManager.GetSettingValue(AppSettings.Weixin.AppSecret); var workOrderTemplateId = GetTemplateMessageId(_settingManager.GetSettingValue(AppSettings.TemplateKey.WorkOrder)); if (!AccessTokenContainer.CheckRegistered(appid)) { AccessTokenContainer.Register(appid, appsecret); } var result = TemplateApi.SendTemplateMessage(appid, openid, new TemplateMessage_WorkOrderNotice(title, billCode, progress, person, "点击查看详情", workOrderTemplateId, url)); } catch (Exception ex) { _logger.Error("发送模板消息", ex); throw new UserFriendlyException(ex.Message, ex); } }
/// <summary> /// 使用AccessToken进行操作时,如果遇到AccessToken错误的情况,重新获取AccessToken一次,并重试。 /// 使用此方法之前必须使用AccessTokenContainer.Register(_appId, _appSecret);或JsApiTicketContainer.Register(_appId, _appSecret);方法对账号信息进行过注册,否则会出错。 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="fun"></param> /// <param name="accessTokenOrAppKey">AccessToken或AppKey。如果为null,则自动取已经注册的第一个corpId/corpSecret来信息获取AccessToken。</param> /// <param name="retryIfFaild">请保留默认值true,不用输入。</param> /// <returns></returns> public static T TryCommonApi<T>(Func<string, T> fun, string accessTokenOrAppKey, bool retryIfFaild = true) where T : WorkJsonResult { Func<string> accessTokenContainer_GetFirstOrDefaultAppIdFunc = () => AccessTokenContainer.GetFirstOrDefaultAppId(); Func<string, bool> accessTokenContainer_CheckRegisteredFunc = appKey => { /* * 对于企业微信来说,AppId = key = CorpId+'@'+CorpSecret */ return AccessTokenContainer.CheckRegistered(appKey); }; Func<string, bool, IAccessTokenResult> accessTokenContainer_GetAccessTokenResultFunc = (appKey, getNewToken) => { /* * 对于企业微信来说,AppId = key = CorpId+'@'+CorpSecret */ return AccessTokenContainer.GetTokenResult(appKey, getNewToken); }; int invalidCredentialValue = (int)ReturnCode_Work.获取access_token时Secret错误_或者access_token无效; var result = ApiHandlerWapperBase. TryCommonApiBase( PlatformType.Work, accessTokenContainer_GetFirstOrDefaultAppIdFunc, accessTokenContainer_CheckRegisteredFunc, accessTokenContainer_GetAccessTokenResultFunc, invalidCredentialValue, fun, accessTokenOrAppKey, retryIfFaild); return result; }
public string GetNickname(string openid, string defaultName = "□□□") { var appid = _settingManager.GetSettingValue(AppSettings.Weixin.AppId); var appsecret = _settingManager.GetSettingValue(AppSettings.Weixin.AppSecret); if (!AccessTokenContainer.CheckRegistered(appid)) { AccessTokenContainer.Register(appid, appsecret); } var userInfo = UserApi.Info(appid, openid); if (userInfo == null) { throw new UserFriendlyException("获取微信昵称失败!"); } Regex regEx = new Regex(@"\p{Cs}"); string nickname = regEx.Replace(userInfo.nickname, "").Trim(); if (string.IsNullOrEmpty(nickname)) { return(defaultName); } return(nickname); }
private static void Register() { if (!AccessTokenContainer.CheckRegistered(appId)) { AccessTokenContainer.Register(appId, secret); } }
public void SendVoteTemplateMessage(long memberId, string title, string name, string content, string range, string beginTime, string endTime, string url) { var memberInfo = _memberRepository.FirstOrDefault(t => t.Id == memberId); if (memberInfo == null) { throw new UserFriendlyException("会员信息不存在!"); } if (string.IsNullOrEmpty(memberInfo.Openid)) { throw new UserFriendlyException("会员未绑定微信!"); } string openid = memberInfo.Openid; try { var appid = _settingManager.GetSettingValue(AppSettings.Weixin.AppId); var appsecret = _settingManager.GetSettingValue(AppSettings.Weixin.AppSecret); var noticeTemplateId = GetTemplateMessageId(_settingManager.GetSettingValue(AppSettings.TemplateKey.Vote)); if (!AccessTokenContainer.CheckRegistered(appid)) { AccessTokenContainer.Register(appid, appsecret); } var result = TemplateApi.SendTemplateMessage(appid, openid, new TemplateMessage_VoteNotice(title, name, content, range, beginTime, endTime, "点击查看详情", noticeTemplateId, url)); } catch (Exception ex) { _logger.Error("发送模板消息", ex); throw new UserFriendlyException(ex.Message, ex); } }
public void SendRefundOrderAcceptMessage(long memberId, long orderId, string amount, string productName, string orderNo) { var memberInfo = _memberRepository.FirstOrDefault(t => t.Id == memberId); if (memberInfo == null) { throw new UserFriendlyException("会员信息不存在!"); } if (string.IsNullOrEmpty(memberInfo.Openid)) { throw new UserFriendlyException("会员未绑定微信!"); } string openid = memberInfo.Openid; try { var appid = _settingManager.GetSettingValue(AppSettings.Weixin.AppId); var appsecret = _settingManager.GetSettingValue(AppSettings.Weixin.AppSecret); var host = _settingManager.GetSettingValue(AppSettings.Wuye.Host); var noticeTemplateId = GetTemplateMessageId(_settingManager.GetSettingValue(AppSettings.TemplateKey.RefundOrderAccept)); if (!AccessTokenContainer.CheckRegistered(appid)) { AccessTokenContainer.Register(appid, appsecret); } string url = host + "/weixin/mall/refund/view?id=" + orderId; var result = TemplateApi.SendTemplateMessage(appid, openid, new TemplateMessage_RefundOrderAccept(productName, amount, noticeTemplateId, url)); } catch (Exception ex) { _logger.Error("发送模板消息", ex); } }
private static void Register() { if (!AccessTokenContainer.CheckRegistered(CorpID)) { AccessTokenContainer.Register(CorpID, Secret); } }
public void SendJoinGrouponMessage(long memberId, long grouponOrderId, string productName, decimal price, string leader, int memberCount, DateTime expireTime) { var memberInfo = _memberRepository.FirstOrDefault(t => t.Id == memberId); if (memberInfo == null) { throw new UserFriendlyException("会员信息不存在!"); } if (string.IsNullOrEmpty(memberInfo.Openid)) { throw new UserFriendlyException("会员未绑定微信!"); } string openid = memberInfo.Openid; try { var appid = _settingManager.GetSettingValue(AppSettings.Weixin.AppId); var appsecret = _settingManager.GetSettingValue(AppSettings.Weixin.AppSecret); var host = _settingManager.GetSettingValue(AppSettings.Wuye.Host); var noticeTemplateId = GetTemplateMessageId(_settingManager.GetSettingValue(AppSettings.TemplateKey.JoinGroupon)); if (!AccessTokenContainer.CheckRegistered(appid)) { AccessTokenContainer.Register(appid, appsecret); } string url = host + "/weixin/mall/groupon/order?id=" + grouponOrderId; var result = TemplateApi.SendTemplateMessage(appid, openid, new TemplateMessage_JoinGroupon(productName, price, leader, memberCount, expireTime, noticeTemplateId, url)); } catch (Exception ex) { _logger.Error("发送模板消息", ex); } }
/// <summary> /// 发送信息 /// </summary> public bool Send(string open_id, string template_id, string link_url, object data) { try { if (!AccessTokenContainer.CheckRegistered(appId)) //检查是否已经注册 { AccessTokenContainer.Register(appId, appSecret); //如果没有注册则进行注册 } string access_token = AccessTokenContainer.GetAccessTokenResult(appId).access_token; //AccessToken SendTemplateMessageResult sendResult = TemplateApi.SendTemplateMessage(access_token, open_id, template_id, link_url, data); //发送成功 if (sendResult.errcode.ToString() == "请求成功") { LogHelper.WriteDebugLog("[wx push msg]:" + open_id + " send success"); return(true); } else { LogHelper.WriteDebugLog("[wx push msg]:" + open_id + " send failed"); return(false); } } catch (Exception ex) { LogHelper.WriteDebugLog("[wx push msg]:" + ex.Message); return(false); } }
/// <summary> /// 使用AccessToken进行操作时,如果遇到AccessToken错误的情况,重新获取AccessToken一次,并重试。 /// 使用此方法之前必须使用AccessTokenContainer.Register(_appId, _appSecret);或JsApiTicketContainer.Register(_appId, _appSecret);方法对账号信息进行过注册,否则会出错。 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="fun"></param> /// <param name="accessTokenOrAppId">AccessToken或AppId。如果为null,则自动取已经注册的第一个appId/appSecret来信息获取AccessToken。</param> /// <param name="retryIfFaild">请保留默认值true,不用输入。</param> /// <returns></returns> public static T TryCommonApi <T>(Func <string, T> fun, string accessTokenOrAppId = null, bool retryIfFaild = true) where T : WxJsonResult { string appId = null; string accessToken = null; if (accessTokenOrAppId == null) { appId = AccessTokenContainer.GetFirstOrDefaultAppId(); if (appId == null) { throw new UnRegisterAppIdException(null, "尚无已经注册的AppId,请先使用AccessTokenContainer.Register完成注册(全局执行一次即可)!"); } } else if (ApiUtility.IsAppId(accessTokenOrAppId)) { if (!AccessTokenContainer.CheckRegistered(accessTokenOrAppId)) { throw new UnRegisterAppIdException(accessTokenOrAppId, string.Format("此appId({0})尚未注册,请先使用AccessTokenContainer.Register完成注册(全局执行一次即可)!", accessTokenOrAppId)); } appId = accessTokenOrAppId; } else { accessToken = accessTokenOrAppId;//accessToken } T result = null; try { if (accessToken == null) { var accessTokenResult = AccessTokenContainer.GetAccessTokenResult(appId, false); accessToken = accessTokenResult.access_token; } result = fun(accessToken); } catch (ErrorJsonResultException ex) { if (retryIfFaild && appId != null && ex.JsonResult.errcode == ReturnCode.获取access_token时AppSecret错误或者access_token无效) { //尝试重新验证 var accessTokenResult = AccessTokenContainer.GetAccessTokenResult(appId, true);//强制获取并刷新最新的AccessToken accessToken = accessTokenResult.access_token; result = TryCommonApi(fun, appId, false); } else { throw; } } return(result); }
private static string _JsCorpSecret = Util.Config.GetValue("JsCorpSecret"); //管理员组ID public static string GetToken() { if (!AccessTokenContainer.CheckRegistered(CORPID)) { AccessTokenContainer.Register(CORPID, _CorpSecret); } return(AccessTokenContainer.GetToken(CORPID, _CorpSecret)); }
public static string GetAccessToken(AccountInfo accountInfo) { if (AccessTokenContainer.CheckRegistered(accountInfo.AppID) == false) { AccessTokenContainer.Register(accountInfo.AppID, accountInfo.AppSecret); } return(AccessTokenContainer.GetToken(accountInfo.AppID)); }
private void init() { //注册appid和appsecret if (!AccessTokenContainer.CheckRegistered(Variables.AppId)) { AccessTokenContainer.Register(Variables.AppId, Variables.AppSecret); } }
/// <summary> /// 异步方法】使用AccessToken进行操作时,如果遇到AccessToken错误的情况,重新获取AccessToken一次,并重试。 /// 使用此方法之前必须使用AccessTokenContainer.Register(_clientId, _clientSecret); /// </summary> /// <typeparam name="T"></typeparam> /// <param name="fun"></param> /// <param name="requestPolicy"></param> /// <param name="retryIfFaild"></param> /// <returns></returns> public static async Task <T> TryCommonApiAsync <T>( Func <Com.Alibaba.Entities.Request.RequestPolicy, Task <T> > fun, Com.Alibaba.Entities.Request.RequestPolicy requestPolicy, bool retryIfFaild = true) where T : AliJsonResult { if (string.IsNullOrEmpty(requestPolicy.ClientId)) { requestPolicy.ClientId = AccessTokenContainer.GetFirstOrDefaultClientId(); if (string.IsNullOrEmpty(requestPolicy.ClientId)) { throw new UnRegisterClientIdException(null, "尚无已经注册的ClientId,请先使用AccessTokenContainer.Register完成注册(全局执行一次即可)!"); } } else { if (!AccessTokenContainer.CheckRegistered(requestPolicy.ClientId)) { throw new UnRegisterClientIdException(requestPolicy.ClientId, string.Format("此clientId({0})尚未注册,请先使用AccessTokenContainer.Register完成注册(全局执行一次即可)!", requestPolicy.ClientId)); } } Task <T> result = null; try { if (string.IsNullOrEmpty(requestPolicy.AccessToken)) { var accessTokenResult = await AccessTokenContainer.GetAccessTokenResultAsync(requestPolicy.ClientId, false, requestPolicy.SessionType, requestPolicy.RequestSchema); requestPolicy.AccessToken = accessTokenResult.access_token; } result = fun(requestPolicy); } catch (ErrorJsonResultException ex) { if (retryIfFaild && !string.IsNullOrEmpty(requestPolicy.ClientId) && (ex.JsonResult.code > 0 || !string.IsNullOrEmpty(ex.JsonResult.errorCode))) { //尝试重新验证 //var accessTokenResult = AccessTokenContainer.GetAccessTokenResultAsync(clientId, true, sessionType); var accessTokenResult = AccessTokenContainer.RefreshAccessTokenResultAsync(requestPolicy.ClientId, requestPolicy.SessionType, requestPolicy.RequestSchema); //强制获取并刷新最新的AccessToken requestPolicy.AccessToken = accessTokenResult.Result.access_token; result = TryCommonApiAsync(fun, requestPolicy, false); } else { throw; } } return(await result); }
/// <summary> /// 使用AccessToken进行操作时,如果遇到AccessToken错误的情况,重新获取AccessToken一次,并重试。 /// 使用此方法之前必须使用AccessTokenContainer.Register(_clientId, _clientSecret); /// </summary> /// <typeparam name="T"></typeparam> /// <param name="fun"></param> /// <param name="clientId"></param> /// <param name="accessToken">AccessToken 如果为null,则自动取已经注册的第一个clientId/appSecret来信息获取AccessToken。</param> /// <param name="retryIfFaild">请保留默认值true,不用输入。</param> /// <returns></returns> public static T TryCommonApi <T>(Func <string, T> fun, string clientId = null, string accessToken = null, SessionType sessionType = SessionType.Prod, bool retryIfFaild = true) where T : WishJsonResult { if (clientId == null) { clientId = AccessTokenContainer.GetFirstOrDefaultClientId(); if (clientId == null) { throw new UnRegisterClientIdException(null, "尚无已经注册的ClientId,请先使用AccessTokenContainer.Register完成注册(全局执行一次即可)!"); } } else { if (!AccessTokenContainer.CheckRegistered(clientId)) { throw new UnRegisterClientIdException(clientId, string.Format("此clientId({0})尚未注册,请先使用AccessTokenContainer.Register完成注册(全局执行一次即可)!", clientId)); } } T result = null; try { if (accessToken == null) { var accessTokenResult = AccessTokenContainer.GetAccessTokenResult(clientId, false, sessionType); accessToken = accessTokenResult.data.access_token; } result = fun(accessToken); } catch (ErrorJsonResultException ex) { if (retryIfFaild && clientId != null && ex.JsonResult.code > 0) { //尝试重新验证 //var accessTokenResult = AccessTokenContainer.GetAccessTokenResult(clientId, true); var accessTokenResult = AccessTokenContainer.RefreshAccessTokenResult(clientId, sessionType); //强制获取并刷新最新的AccessToken accessToken = accessTokenResult.data.access_token; result = TryCommonApi(fun, clientId, accessToken, sessionType, false); } else { ex.ClientId = clientId; throw; } } catch (WishException ex) { ex.ClientId = clientId; throw; } return(result); }
public void AccessTokenCon() { if (!AccessTokenContainer.CheckRegistered("wx38d036665a0652d8")) //检查是否已经注册 { AccessTokenContainer.Register("wx38d036665a0652d8", ""); //如果没有注册则进行注册 } var result = AccessTokenContainer.GetAccessTokenResult("wx38d036665a0652d8"); //获取AccessToken结果 var xx = ""; }
public static string GetToken() { if (!AccessTokenContainer.CheckRegistered(GetAppSettings.AppID)) //检查是否已经注册 { AccessTokenContainer.Register(GetAppSettings.AppID, GetAppSettings.AppSecret); //如果没有注册则进行注册 } var result = AccessTokenContainer.GetAccessTokenResult(GetAppSettings.AppID); //获取AccessToken结果 return(result.access_token); }
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { var options = app.ApplicationServices.GetService <IOptions <WechatTemplateSendOptions> >() .Value; if (!AccessTokenContainer.CheckRegistered(options.AppId))//检查是否已经注册 { AccessTokenContainer.Register(options.AppId, options.AppSecret); } }
public bool WeixinSendMsg(int userId, string content, string url, ref ErrorInfo err) { string openId = ""; using (DBEntities db = new DBEntities()) { var entList = db.YL_WEIXIN_USER.Where(x => x.USER_ID == userId).OrderByDescending(x => x.TAKE_TIME).ToList(); if (entList.Count() == 0) { return(false); } var ent = entList[0]; if (ent == null || string.IsNullOrEmpty(ent.OPENID)) { err.IsError = true; err.Message = "该用户不是微信用户"; return(false); } openId = ent.OPENID; } string EncodingAESKey = WebConfigurationManager.AppSettings["WeixinEncodingAESKey"]; //与微信公众账号后台的EncodingAESKey设置保持一致,区分大小写。 string AppId = WebConfigurationManager.AppSettings["WeixinAppId"]; //与微信公众账号后台的AppId设置保持一致,区分大小写。 string AppSecret = WebConfigurationManager.AppSettings["WeixinAppSecret"]; //与微信公众账号后台的AppId设置保持一致,区分大小写。 if (!AccessTokenContainer.CheckRegistered(AppId)) { AccessTokenContainer.Register(AppId, AppSecret); } var result = AccessTokenContainer.GetAccessTokenResult(AppId); //CommonAPIs.CommonApi.GetToken(appId, appSecret); try { var allAtricle = new List <Senparc.Weixin.MP.Entities.Article>(); allAtricle.Add(new Senparc.Weixin.MP.Entities.Article() { Title = content, Url = string.Format(url, "?code=" + openId) }); var wxJsonResult = Senparc.Weixin.MP.AdvancedAPIs.CustomApi.SendNews(result.access_token, openId, allAtricle); if (wxJsonResult.errcode != 0) { err.IsError = true; err.Message = wxJsonResult.errmsg; } else { err.IsError = false; } } catch (Exception e) { err.IsError = true; err.Message = e.Message; } return(!err.IsError); }
private string GetToken() { if (!AccessTokenContainer.CheckRegistered(base.AppId)) { AccessTokenContainer.Register(AppId, AppSecret); } var result = AccessTokenContainer.TryGetAccessToken(base.AppId, base.AppSecret); return(result.ToString()); }
public ActionResult WxSignature(string url) { try { if (!AccessTokenContainer.CheckRegistered(appid)) //检查是否已经注册 { AccessTokenContainer.Register(appid, secret); //如果没有注册则进行注册 } var tokenResult = HttpRuntimeCache.GetCache("LocalAccessToken") as LocalAccessToken; var useCache = true; if (tokenResult == null || string.IsNullOrWhiteSpace(tokenResult?.access_token) || tokenResult.ExpiresTime == null || System.DateTime.Now > tokenResult.ExpiresTime) //过期 { useCache = false; var result = AccessTokenContainer.GetAccessTokenResult(appid, true); if (!string.IsNullOrWhiteSpace(result?.errmsg)) { return(Json(new { ErrMsg = JsonConvert.SerializeObject(result) }, JsonRequestBehavior.AllowGet)); //return Json(new { data = JsonConvert.SerializeObject(new { appid, secret }), ErrMsg = JsonConvert.SerializeObject(tokenResult) }, JsonRequestBehavior.AllowGet); } tokenResult = new LocalAccessToken(result) { }; HttpRuntimeCache.SetCache("LocalAccessToken", tokenResult, 7260); } var ticket = JsApiTicketContainer.GetJsApiTicket(appid); var model = new WXShare() { appId = appid, timestamp = JSSDKHelper.GetTimestamp(), nonce = JSSDKHelper.GetNoncestr(), url = Server.UrlDecode(url), ticket = ticket, //result = JsonConvert.SerializeObject(tokenResult), useCache = useCache }; model.signature = JSSDKHelper.GetSignature(ticket, model.nonce, model.timestamp, model.url); return(Json(model, JsonRequestBehavior.AllowGet)); } catch (System.Exception ex) { return(Json(new { ErrMsg = ex.Message, StackTrace = JsonConvert.SerializeObject(ex.StackTrace) }, JsonRequestBehavior.AllowGet)); } }
public ActionResult TestA() { string appId = "wx965f031c1746f165"; string appSecret = "daa338083c32106a72c62d439129c478"; if (!AccessTokenContainer.CheckRegistered(appId)) //检查是否已经注册 { AccessTokenContainer.Register(appId, appSecret); //如果没有注册则进行注册 } var AccessToken = AccessTokenContainer.GetAccessTokenResult(appId); //获取AccessToken结果 return(Content(AccessToken.access_token)); // return Content(result); }
/// <summary> /// 获取AccessToken /// </summary> /// <param name="appId"></param> /// <param name="appSecret"></param> /// <param name="getNewToken">是否刷新缓存</param> /// <returns></returns> public string TryGetToken(string appId, string appSecret, bool getNewToken = false) { //AccessTokenContainer的TryGetToken有问题,所以自己实现一遍 if (!AccessTokenContainer.CheckRegistered(appId)) { lock (_locker) if (!AccessTokenContainer.CheckRegistered(appId)) { AccessTokenContainer.Register(appId, appSecret); } } return(AccessTokenContainer.GetToken(appId, getNewToken)); }
/// <summary> /// 获取token(无缓存) /// </summary> /// <returns></returns> public string GetAccessToken(string appid = "") { if (appid == "") { appid = _senparcWeixinSetting.WeixinAppId; } //根据appId判断获取 if (!AccessTokenContainer.CheckRegistered(_senparcWeixinSetting.WeixinAppId)) //检查是否已经注册 { //如果没有注册则进行注册 AccessTokenContainer.RegisterAsync(_senparcWeixinSetting.WeixinAppId, _senparcWeixinSetting.WeixinAppSecret); } return(AccessTokenContainer.GetAccessToken(appid)); }
public ActionResult GetToken(string appId, string appSecret) { try { if (!AccessTokenContainer.CheckRegistered(appId)) { AccessTokenContainer.Register(appId, appSecret); } var result = AccessTokenContainer.GetTokenResult(appId); //CommonAPIs.CommonApi.GetToken(appId, appSecret); return(Json(result, JsonRequestBehavior.AllowGet)); } catch (Exception) { //TODO:为简化代码,这里不处理异常(如Token过期) return(Json(new { error = "执行过程发生错误!" }, JsonRequestBehavior.AllowGet)); } }
public ActionResult GetToken(string appId, string appSecret) { try { if (!AccessTokenContainer.CheckRegistered(appId)) { AccessTokenContainer.Register(appId, appSecret); } var result = AccessTokenContainer.GetTokenResult(appId); return(Json(result, JsonRequestBehavior.AllowGet)); } catch (Exception) { return(Json(new { error = "执行过程发生错误!" }, JsonRequestBehavior.AllowGet)); } }
public OAuthUserInfo GetAuthInfo(OAuthAccessTokenResult token) { try { var appid = _settingManager.GetSettingValue(AppSettings.Weixin.AppId); var appsecret = _settingManager.GetSettingValue(AppSettings.Weixin.AppSecret); if (!AccessTokenContainer.CheckRegistered(appid)) { AccessTokenContainer.Register(appid, appsecret); } var ret = Senparc.Weixin.MP.AdvancedAPIs.OAuthApi.GetUserInfo(token.access_token, token.openid); return(ret); } catch (Exception ex) { _logger.Error("获取微信授权信息", ex); return(null); } }
public string GetAuthorizeUrl(string redirect) { try { var appid = _settingManager.GetSettingValue(AppSettings.Weixin.AppId); var appsecret = _settingManager.GetSettingValue(AppSettings.Weixin.AppSecret); if (!AccessTokenContainer.CheckRegistered(appid)) { AccessTokenContainer.Register(appid, appsecret); } var ret = Senparc.Weixin.MP.AdvancedAPIs.OAuthApi.GetAuthorizeUrl(appid, redirect, "0", OAuthScope.snsapi_userinfo); return(ret); } catch (Exception ex) { _logger.Error("获取微信授权地址", ex); return(""); } }
static void Main(string[] args) { //微信查询用户信息 string appId = ""; string appSecret = ""; string openId = ""; //检查是否已经注册 if (!AccessTokenContainer.CheckRegistered(appId)) { //如果没有注册则进行注册,2小时token过期 AccessTokenContainer.Register(appId, appSecret); } string token = AccessTokenContainer.GetAccessToken(appId); //如果appId,appSecret和openId不配套,报错:微信请求发生错误!错误代码:40003,说明:invalid openid hint: [2BZbQA00621527] var info = UserApi.Info(token, openId); info = UserApi.Info(appId, openId); }