2025-03-28 09:49:56 +08:00

69 lines
2.5 KiB
C#

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
{
/// <summary>
/// session_key和openId不应该传输到客户端 ,加密处理
/// </summary>
/// <param name="session_key">session_key是微信服务器生成的针对用户数据加密的秘钥</param>
/// <param name="openid"></param>
/// <returns>返回加密串</returns>
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();
}
/// <summary>
/// 验证加密串中的session_key是否过期
/// </summary>
/// <param name="wechatMiniproToken">第一次登录生成的加密串</param>
/// <returns></returns>
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;
}
}
}