/// <summary> /// 生成 jsapi 中的 wx.config 方法需要的参数 /// </summary> /// <param name="ticketManager">jsapi-ticket 的管理者</param> /// <param name="appId">微信应用唯一标识</param> /// <param name="url">需要调用 wx.config 页面的完整网址</param> /// <param name="jsApiList">需要的接口名称列表</param> /// <param name="debug">是否开启调度模式</param> /// <returns></returns> public static async Task <JsConfig> Generate(IJsapiTicketManager ticketManager, string appId, string url, string[] jsApiList, bool debug = false) { var hashIndex = url.IndexOf('#'); if (hashIndex > 0) { url = url.Substring(0, hashIndex); } var result = new JsConfig { debug = debug, appId = appId, timestamp = DateTime.UtcNow.ToWeixinTimestamp(), jsApiList = jsApiList, nonceStr = Guid.NewGuid().ToString("n"), }; var ticket = await ticketManager.GetTicket().ConfigureAwait(false); var string1 = $"jsapi_ticket={ticket}&noncestr={result.nonceStr}×tamp={result.timestamp:D}&url={url}"; using (var sha1 = SHA1.Create()) { var signatureData = sha1.ComputeHash(Encoding.UTF8.GetBytes(string1)); result.signature = string.Concat(signatureData.Select(x => x.ToString("x2"))); } return(result); }
/// <summary> /// 刷新 jsapi_ticket /// </summary> /// <param name="manager"></param> /// <param name="oldTicket">过期的 jsapi_ticket</param> /// <returns></returns> public static async Task <string> RefreshTicket(this IJsapiTicketManager manager, string oldTicket = null) { var info = await manager.RefreshTicketInfo(oldTicket).ConfigureAwait(false); return(info.Ticket); }
/// <summary> /// 获取 jsapi_ticket /// </summary> /// <param name="manager"></param> /// <returns></returns> public static async Task <string> GetTicket(this IJsapiTicketManager manager) { var info = await manager.GetTicketInfo().ConfigureAwait(false); return(info.Ticket); }
public JsScanModel(IOptions <MpSettings> settings, IJsapiTicketManager jsapi) { _settings = settings.Value; _jsapi = jsapi; }