Ejemplo n.º 1
0
        /// <summary>
        /// 微信分享时获取配置参数
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public async Task <HttpRequestResult> GetJsApiConfigAsync()
        {
            var accessTokenResult = await GetAccessTokenAsync();

            var url           = $"https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token={accessTokenResult.Data.ToString()}";
            var requestResult = await _aSampleHttpClient.GetAsync <JsApiResult>(url);

            if (requestResult.ErrCode != "0")
            {
                return(HttpRequestResult.Error(requestResult.ErrMsg));
            }

            var dic       = new SortedDictionary <string, object>();
            var noncestr  = WeChatPayUtility.GeneratorNonceStr();
            var timestamp = WeChatPayUtility.GenerateTimeStamp();

            dic.SetValue("noncestr", noncestr);
            dic.SetValue("timestamp", timestamp);
            dic.SetValue("url", url);
            dic.SetValue("jsapi_ticket", requestResult.Ticket);

            var shaStr    = dic.ToUrlString();
            var signature = WeChatPayUtility.MakeSign(shaStr, _wechatOption.MechKey);
            var result    = new JsApiConfigResult
            {
                AppId     = _wechatOption.WxAppId,
                TimeStamp = timestamp,
                NonceStr  = noncestr,
                Signature = signature,
            };

            return(HttpRequestResult.Success(result, ""));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取用户基本信息
        /// </summary>
        /// <returns></returns>
        public async Task <HttpRequestResult> GetBasicInfoAsync(string openId)
        {
            var accessTokenResult = await GetAccessTokenAsync();

            if (accessTokenResult.IsError)
            {
                return(HttpRequestResult.Error(accessTokenResult.Message));
            }
            var accessToken = accessTokenResult.Data.ToString();
            var url         = $"https://api.weixin.qq.com/cgi-bin/user/info?access_token={accessToken}&openid={openId}&lang=zh_CN";
            var result      = await _aSampleHttpClient.GetAsync <WxUserInfoResult>(url);

            return(HttpRequestResult.Success <WxUserInfoResult>(result, ""));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 创建菜单按钮
        /// </summary>
        /// <param name="menuJsonStr"></param>
        /// <returns></returns>
        public async Task <HttpRequestResult> CreateMenuAsync(string menuJsonStr)
        {
            //获取微信令牌
            var accessToken = await GetAccessTokenAsync();

            //创建菜单
            var createMenuUrl = $"https://api.weixin.qq.com/cgi-bin/menu/create?access_token={accessToken.Data.ToString()}";
            var result        = await _aSampleHttpClient.PostAsync <CreateMenuResult>(createMenuUrl, menuJsonStr);

            if (result.ErrorCode == "0")
            {
                return(HttpRequestResult.Success(result, ""));
            }
            return(HttpRequestResult.Error(result.ErrorMsg));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 获取微信accesstoken, 优先从缓存获取,其次重新请求获取
        /// </summary>
        /// <returns></returns>
        public async Task <HttpRequestResult> GetAccessTokenAsync()
        {
            var accessToken = await _aSampleRedisCache.GetStringAsync(_wechatKey);

            if (!string.IsNullOrWhiteSpace(accessToken))
            {
                return(HttpRequestResult.Success(accessToken, ""));
            }
            var result = await RequestAccessTokenAsync();

            if (string.IsNullOrWhiteSpace(result.AccessToken))
            {
                return(HttpRequestResult.Error("AccessToken is null"));
            }
            await _aSampleRedisCache.SetStringAsync(_wechatKey, result.AccessToken, 120);

            return(HttpRequestResult.Success(result.AccessToken, ""));
        }