public static class JssdkTicketApi
{
private static object locker = new object();
private static Dictionary<string, DateTime> expiresDic = new Dictionary<string, DateTime>();
private static Dictionary<string, string> ticketDic = new Dictionary<string, string>();
/// <summary>
/// 获得Ticket
/// </summary>
/// <returns></returns>
public static string GetJssdkTicket(string appid, string secret)
{
//异步加锁
lock (locker)
{
DateTime now = DateTime.Now;
//获得过期时间
DateTime expires = expiresDic.ContainsKey(appid) ? expiresDic[appid] : now;
double span = (now - expires).TotalSeconds;
//如果ticket不存在,或者超过7000秒,则重新获取token
if (!ticketDic.ContainsKey(appid) || span > 7000)
{
string access_token = TokenApi.GetToken(appid, secret);
//DbHelperSQL.ExecuteSql("insert into test (content) values ('" + access_token + "')");
string ticketUrl = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=" + access_token;
string json = Utilities.HttpHelper.GetJson(ticketUrl);
JssdkTicket jssdkTicket = Utilities.JsonHelper.JsonToObject<JssdkTicket>(json);
//缓存token
ticketDic.Remove(appid);
ticketDic.Add(appid, jssdkTicket.ticket);
//过期时间
expiresDic.Remove(appid);
expiresDic[appid] = DateTime.Now;
}
return ticketDic[appid];
}
}
}