using Google.Protobuf.WellKnownTypes; using System; using System.Collections.Generic; using System.Net; using System.Net.Http; using System.Text; namespace Appointment.Entity { public class WechatHelper { private static HttpClient _HttpClient = null; static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(WechatHelper)); static WechatHelper() { _HttpClient = new HttpClient(new HttpClientHandler()); } public object JsonConvert { get; private set; } /// /// 根据小程序登录code获取用户信息 /// /// /// public ApiResult Code2Session(string code) { string appId = BaseConfig.App(new string[] { "WeChat", "AppId" }); if (string.IsNullOrWhiteSpace(appId)) ApiResult.Failed("缺少配置参数 [AppId]!"); string appSecret = BaseConfig.App(new string[] { "WeChat", "AppSecret" }); if (string.IsNullOrWhiteSpace(appSecret)) ApiResult.Failed("缺少配置参数 [AppSecret]!"); if (string.IsNullOrWhiteSpace(code) || string.IsNullOrWhiteSpace(appId) || string.IsNullOrWhiteSpace(appSecret)) { return ApiResult.Failed("获取小程序配置信息出错"); } string url = $"https://api.weixin.qq.com/sns/jscode2session?appid={appId}&secret={appSecret}&js_code={code}&grant_type=authorization_code"; var res = _HttpClient.GetAsync(url).Result; if (res.StatusCode == HttpStatusCode.OK) { var result = Encoding.Default.GetString(res.Content.ReadAsByteArrayAsync().Result); log.Info($"jscode2session:{result}"); if (string.IsNullOrWhiteSpace(result) || result.IndexOf("session_key") == -1) { return ApiResult.Failed("调用微信接口失败,可能code已失效"); } var weChatDto = Newtonsoft.Json.JsonConvert.DeserializeObject(result); return ApiResult.Success("", weChatDto); } else { return ApiResult.Failed("调用微信接口失败"); } } // public class LoveInnGetAccessTokenReq { public string AppId { get; set; } public string AppName { get; set; } public string AppSecret { get; set; } } /// /// 模版信息 /// /// public static string BuildTemlMsg(string toUser, string tmplId, string url, string first, string remark, params object[] args) { string appId = BaseConfig.App(new string[] { "WeChat", "AppId" }); if (string.IsNullOrWhiteSpace(appId)) ApiResult.Failed("缺少配置参数 [AppId]!"); StringBuilder sbMsg = new StringBuilder(); sbMsg.Append("{"); sbMsg.AppendFormat("\"touser\":\"{0}\",", toUser); sbMsg.AppendFormat("\"template_id\":\"{0}\",", tmplId); sbMsg.Append("\"miniprogram\":{"); sbMsg.AppendFormat("\"appid\":\"{0}\",", appId); sbMsg.AppendFormat("\"pagepath\":\"{0}\"", url); sbMsg.Append("},"); sbMsg.Append("\"topcolor\":\"#FF0000\","); sbMsg.Append("\"data\":"); sbMsg.Append("{"); sbMsg.Append("\"first\":"); sbMsg.Append("{"); sbMsg.AppendFormat("\"value\":\"{0}\",", first); sbMsg.AppendFormat("\"color\":\"{0}\"", "#333333"); sbMsg.Append("},"); for (int i = 0; i < args.Length; i++) { sbMsg.AppendFormat("\"keyword{0}\":", i + 1); sbMsg.Append("{"); sbMsg.AppendFormat("\"value\":\"{0}\",", args[i]); sbMsg.AppendFormat("\"color\":\"{0}\"", "#333333"); sbMsg.Append("},"); } sbMsg.Append("\"remark\":"); sbMsg.Append("{"); sbMsg.AppendFormat("\"value\":\"{0}\",", remark); sbMsg.AppendFormat("\"color\":\"{0}\"", "#333333"); sbMsg.Append("}"); sbMsg.Append("}"); sbMsg.Append("}"); return sbMsg.ToString(); } } }