/// <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;
 }
示例#7
0
 /// <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;
 }
示例#11
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="miniProgramConfig"></param>
 public UniformMessageAppService(IMiniProgramConfig miniProgramConfig)
 {
     _miniProgramConfig = miniProgramConfig;
 }