Esempio n. 1
0
        /// <summary>
        /// 发送接口请求
        /// 注: 使用internal内部限定,减少外部引用时命名空间的引入
        /// </summary>
        /// <param name="req"></param>
        /// <param name="funcFormat"></param>
        /// <returns></returns>
        internal static async Task <TResp> ExecuteAsync <TResp>(this WechatBaseTokenReq <TResp> req, Func <HttpResponseMessage, Task <TResp> > funcFormat)
            where TResp : WechatBaseResp, new()
        {
            if (req.app_config == null)
            {
                throw new NotImplementedException("微信接口请求配置信息为空,请设置!");
            }

            var apiPath = req.GetApiPath();

            var accessTokenRes = await WechatPlatformHelper.AccessTokenProvider.GetAccessToken(req.app_config);

            if (!accessTokenRes.IsSuccess())
            {
                return(new TResp().WithResp(accessTokenRes));
            }

            var accessToken = accessTokenRes.data;

            if (string.IsNullOrEmpty(accessToken))
            {
                return(new TResp().WithResp(RespTypes.OperateFailed, "未能获取有效AccessToken!"));
            }

            req.address_url = string.Concat(WechatPlatformHelper.ApiHost, apiPath,
                                            (apiPath.IndexOf('?') > 0 ? "&" : "?"), "access_token=", accessToken);

            return(await SendAsync(req, funcFormat));
        }