Пример #1
0
        /// <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}&timestamp={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);
        }
Пример #4
0
 public JsScanModel(IOptions <MpSettings> settings, IJsapiTicketManager jsapi)
 {
     _settings = settings.Value;
     _jsapi    = jsapi;
 }