using HZQR.Common; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EShang.Common { public class MiniProgram { /// /// session_key和openId不应该传输到客户端 ,加密处理 /// /// session_key是微信服务器生成的针对用户数据加密的秘钥 /// /// 返回加密串 public static string CreateMiniProToken(string session_key, string openid) { var jo = new JObject(); jo["session_key"] = session_key; jo["openid"] = openid; jo["datetime"] = DateTime.Now; return jo.ToEncrypt(); } /// /// 验证加密串中的session_key是否过期 /// /// 第一次登录生成的加密串 /// public static Result CheckSessionKey(string wechatMiniproToken) { Result result = new Result(); JObject tokenObj = (JObject)JsonConvert.DeserializeObject(wechatMiniproToken.ToDecrypt()); DateTime startTime = Convert.ToDateTime(tokenObj["datetime"]);//生成加密串的时间 DateTime endTime = DateTime.Now;//当前时间 TimeSpan ts = endTime - startTime; int validSecond = 2 * 60 * 60;//设置2小时过期 if (ts.TotalSeconds >= validSecond) { result.Result_Code = 200; result.Result_Desc = "session已过期"; return result; } return result; } public static bool CheckSession(DateTime sessionAddTime) { bool isValid = true;//是否有效 DateTime startTime = sessionAddTime; DateTime endTime = DateTime.Now; TimeSpan ts = endTime - startTime; int validSecond = 2 * 60 * 60;//设置2小时过期 //int validSecond = 5 * 60; if (ts.TotalSeconds >= validSecond) { isValid = false; LogUtil.WriteLog(null, "CheckSession,session已过期", DateTime.Now.ToString("yyyyMMdd_") + "WeChatLog"); return isValid; } return isValid; } } }