/// <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, "")); }
/// <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, "")); }
/// <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)); }
/// <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, "")); }