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();
}
}
}