/// <summary> /// 获取Accesstoken /// </summary> /// <param name="config">小程序配置,为NULL则自动获取默认</param> /// <returns></returns> public IAccesstokenInfo Get(IMiniProgramConfig config = null) { config = config ?? AppConfig; //判断Accesstoken是否从其他函数中获取,比如中控服务器 if (MiniProgramConfigManager.Current.GetAccessTokenFunc != null) { var token = MiniProgramConfigManager.Current.GetAccessTokenFunc(config); MiniProgramConfigManager.Current.AccessTokenConcurrentDictionary.AddOrUpdate(config.MiniProgramAppId, token, (tKey, existingVal) => token); return(token); } if (config == null) { throw new MiniProgramArgumentException("没有找到小程序配置信息,请配置!"); } var url = $"{ApiRoot}/cgi-bin/token?grant_type=client_credential&appid={config.MiniProgramAppId}&secret={config.MiniProgramAppSecret}"; var result = Get <GetAccesstokenOutput>(url); if (!result.IsSuccess()) { throw new MiniProgramArgumentException("获取接口访问凭据失败:" + result.GetFriendlyMessage() + "(" + result.DetailResult + ")"); } result.ExpiresTime = DateTime.Now.AddSeconds(result.Expires - 30); //存储 MiniProgramConfigManager.Current.AccessTokenConcurrentDictionary.AddOrUpdate(config.MiniProgramAppId, result, (tKey, existingVal) => result); return(result); }
/// <summary> /// 安全获取AccessToken /// </summary> /// <returns></returns> public IAccesstokenInfo SafeGet(IMiniProgramConfig config = null) { config = config ?? AppConfig; if (MiniProgramConfigManager.Current.AccessTokenConcurrentDictionary.ContainsKey(config.MiniProgramAppId)) { var token = MiniProgramConfigManager.Current.AccessTokenConcurrentDictionary[config.MiniProgramAppId]; //判断Token是否过期 if (DateTime.Now < token.ExpiresTime) { return(token); } } return(Get()); }
/// <summary> /// 获取配置 /// </summary> /// <param name="key">唯一Key</param> /// <returns></returns> public IMiniProgramConfig GetConfig(string key = null) { if (key == null) { key = GetKey(); } if (key == null) { throw new Exception("Key不能为NULL!"); } IMiniProgramConfig weChatConfig = null; if (MiniProgramConfigs.ContainsKey(key)) { weChatConfig = MiniProgramConfigs[key]; } if (weChatConfig != null) { return(weChatConfig); } var result = GetConfigByKeyFunc(key); weChatConfig = result as IMiniProgramConfig ?? throw new Exception(string.Format("通过Key:{0}获取Config失败!", key)); if (weChatConfig == null) { throw new MiniProgramArgumentException("获取微信配置失败。Key:" + key); } if (string.IsNullOrWhiteSpace(weChatConfig.MiniProgramAppId)) { throw new MiniProgramArgumentException("微信配置错误,参数不能为空。Key:" + key, "AppId"); } if (string.IsNullOrWhiteSpace(weChatConfig.MiniProgramAppSecret)) { throw new MiniProgramArgumentException("微信配置错误,参数不能为空。Key:" + key, "AppSecret"); } MiniProgramConfigs.AddOrUpdate(key, weChatConfig, (tKey, existingVal) => weChatConfig); return(weChatConfig); }
public AccessTokenManager(IMiniProgramConfig miniProgramConfig) { _miniProgramConfig = miniProgramConfig; }
public UniformMessageTest() { _uniformMessageService = Resolve <UniformMessageAppService>(); _miniProgramConfig = Resolve <IMiniProgramConfig>(); }
public SnsAppService(IMiniProgramConfig config) { _config = config; }
/// <summary> /// /// </summary> /// <param name="miniProgramConfig"></param> public LogisticsAppService(IMiniProgramConfig miniProgramConfig) { _miniProgramConfig = miniProgramConfig; }
/// <summary> /// 刷新配置以及访问凭据 /// </summary> /// <param name="key"></param> /// <param name="config"></param> public void RefreshConfigAndAccessToken(string key, IMiniProgramConfig config) { RefreshConfig(key, config); RefreshAccessToken(key); }
/// <summary> /// 刷新配置 /// </summary> /// <param name="key">存储配置key</param> /// <param name="config">微信配置</param> public void RefreshConfig(string key, IMiniProgramConfig config) => MiniProgramConfigs.AddOrUpdate(key, config, (tKey, existingVal) => { return(config); });
public TokenAppService(IMiniProgramConfig config) { _config = config; }
/// <summary> /// /// </summary> /// <param name="miniProgramConfig"></param> public UniformMessageAppService(IMiniProgramConfig miniProgramConfig) { _miniProgramConfig = miniProgramConfig; }