|
|
|
@ -2,6 +2,7 @@ |
|
|
|
using BWP.B3WeChat.BO; |
|
|
|
using BWP.B3WeChat.Entities; |
|
|
|
using Forks.Utils; |
|
|
|
using Forks.Utils.Caching; |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.IO; |
|
|
|
@ -140,6 +141,37 @@ namespace BWP.B3WeChat.Utils |
|
|
|
GetRequest<WeChatResponseBase>(url); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static DateTime? ticketExpiredTime; |
|
|
|
|
|
|
|
static string GetJsApiTicket() |
|
|
|
{ |
|
|
|
var time = DateTime.Now; |
|
|
|
if (ticketExpiredTime == null || ticketExpiredTime.Value > time) |
|
|
|
{ |
|
|
|
//过期时间是2小时,不过这里小一些,避免边界问题
|
|
|
|
ticketExpiredTime = time.Add(new TimeSpan(1, 30, 30)); |
|
|
|
} |
|
|
|
|
|
|
|
var key = string.Format("{0}_GetJsApiTicket_{1}", TOKEN, ticketExpiredTime.Value.Ticks); |
|
|
|
|
|
|
|
return CacheManager.GetOrSet(key, (args) => |
|
|
|
{ |
|
|
|
var url = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", TOKEN); |
|
|
|
var res = GetRequest<GetTicketResponse>(url); |
|
|
|
return res.ticket; |
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public static string GetJsApiSignature(string noncestr, string timestamp, string url) |
|
|
|
{ |
|
|
|
var origin = string.Format("jsapi_ticket={0}&=noncestr{1}×tamp={2}&url={3}", GetJsApiTicket(),noncestr, timestamp, url); |
|
|
|
return FormsAuthentication.HashPasswordForStoringInConfigFile(origin, "SHA1").ToLower(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static List<string> GetOpenIDList() |
|
|
|
{ |
|
|
|
|
|
|
|
|