/// <summary> /// /// </summary> /// <param name="acountId"></param> /// <param name="url"></param> /// <returns></returns> public async Task <WechatJSTicket> GetJsApiSign(int acountId, string url) { if (string.IsNullOrEmpty(url)) { throw new ApiException(-1, "参数异常"); } var wxConfig = _config.WechatAccount.FirstOrDefault(x => x.AcountId == acountId); var accessToken = await _oathService.GetWeChatAccessTokenAsync(wxConfig); if (accessToken == null || string.IsNullOrEmpty(accessToken.Access_Token)) { throw new ApiException(-1, "获取JSAPITock失败"); } var ticketInfo = await _oathService.GetWeChatTicketAsync(accessToken.Access_Token); if (ticketInfo == null || string.IsNullOrEmpty(ticketInfo.Ticket)) { throw new ApiException(-1, "授权失败"); } var result = new WechatJSTicket { NonceStr = Guid.NewGuid().ToString().Replace("-", ""), Timestamp = DateTime.Now.ValueOf() }; url = HttpUtility.UrlDecode(url); var urlQuery = $"jsapi_ticket={ticketInfo.Ticket}&noncestr={result.NonceStr}×tamp={result.Timestamp}&url={url}"; //加密 result.Signature = urlQuery.Sha1(); Logger.WriteLog(LogLevel.Debug, $"微信加密数据 {urlQuery} {result.ToJson()}"); return(result); }
public async Task <IActionResult> WeChatUser(int acountId, string code) { if (string.IsNullOrEmpty(code)) { throw new ApiException(-1, "code不能为空"); } var wxConfig = _config.WechatAccount.FirstOrDefault(x => x.AcountId == acountId); var accessToken = await _oauthService.GetWeChatAccessTokenAsync(wxConfig, code); if (accessToken == null) { throw new ApiException(-1, "code无效"); } var result = await _oauthService.GetWeChatUserInfoAsync(accessToken.Access_Token, accessToken.OpenId); return(new ApiResult <WeChatUserInfo>(result)); }