/// <summary>
        /// 获取预授权码。
        /// 先从本地缓存获取,没有则从微信端获取。
        /// </summary>
        /// <param name="manager"></param>
        /// <param name="suiteId"></param>
        /// <param name="appIds"></param>
        /// <param name="suiteAccessToken"></param>
        /// <returns></returns>
        public string GetPreAuthCode(string suiteId, IList <int> appIds, string suiteAccessToken, out string errMessage)
        {
            errMessage = string.Empty;
            string cacheKey = string.Empty;

            appIds = appIds == null ? new List <int>() : appIds;

            if (appIds == null || appIds.Count() == 0)
            {
                cacheKey = string.Format("PREAUTHCODE:{0}:{1}:all:{2}", suiteId, suiteAccessToken, APIType.Weixin);
            }
            else
            {
                cacheKey = string.Format("PREAUTHCODE:{0}:{1}:{2}:{3}", suiteId, suiteAccessToken, string.Join("-", appIds.OrderBy(p => p)), APIType.Weixin);
            }

            string pre_auth_code = CacheManager.Instance().Get <string>(cacheKey);

            if (!string.IsNullOrEmpty(pre_auth_code))
            {
                return(pre_auth_code);
            }

            var request = new GetPreAuthCodeReqeust();

            request.suite_id = suiteId;
            request.appid    = appIds.ToList();
            //request.SetUrl(WeixinUrls.Instance().Qy_GetPreAuthCode(suiteAccessToken));
            var result = APIHelper.Instance().Qy().GetPreAuthCode(request, suiteAccessToken);

            if (result.errcode != 0)
            {
                errMessage = string.Format("GetPreAuthCode: errcode:{0},errmsg:{1}", result.errcode, result.errmsg);
                return(pre_auth_code);
            }

            //缓存pre_auth_code
            pre_auth_code = result.pre_auth_code;
            CacheManager.Instance().Set(cacheKey, pre_auth_code, result.expires_in);

            return(pre_auth_code);
        }
Example #2
0
        /// <summary>
        /// 获取预授权码
        /// 该API用于获取预授权码。预授权码用于企业号授权时的应用提供商安全验证。
        /// </summary>
        /// <param name="helper"></param>
        /// <param name="request"></param>
        /// <param name="suiteAccessToken"></param>
        /// <returns></returns>
        public static GetPreAuthCodeResult GetPreAuthCode(this IQyHelper helper, GetPreAuthCodeReqeust request, string suiteAccessToken)
        {
            string url = string.Format("{0}service/get_pre_auth_code?suite_access_token={1}", baseUrl, suiteAccessToken);

            return(HttpHelper.HttpPost.GetJsonResult <GetPreAuthCodeReqeust, GetPreAuthCodeResult>(request, url));
        }