Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="acountId"></param>
        /// <param name="url"></param>
        /// <returns></returns>
        public async Task <WechatJSTicket> GetJsApiSign(int acountId, string url)
        {
            if (string.IsNullOrEmpty(url))
            {
                throw new ApiException(-1, "参数异常");
            }
            var wxConfig    = _config.WechatAccount.FirstOrDefault(x => x.AcountId == acountId);
            var accessToken = await _oathService.GetWeChatAccessTokenAsync(wxConfig);

            if (accessToken == null || string.IsNullOrEmpty(accessToken.Access_Token))
            {
                throw new ApiException(-1, "获取JSAPITock失败");
            }
            var ticketInfo = await _oathService.GetWeChatTicketAsync(accessToken.Access_Token);

            if (ticketInfo == null || string.IsNullOrEmpty(ticketInfo.Ticket))
            {
                throw new ApiException(-1, "授权失败");
            }
            var result = new WechatJSTicket
            {
                NonceStr  = Guid.NewGuid().ToString().Replace("-", ""),
                Timestamp = DateTime.Now.ValueOf()
            };

            url = HttpUtility.UrlDecode(url);
            var urlQuery = $"jsapi_ticket={ticketInfo.Ticket}&noncestr={result.NonceStr}&timestamp={result.Timestamp}&url={url}";

            //加密
            result.Signature = urlQuery.Sha1();

            Logger.WriteLog(LogLevel.Debug, $"微信加密数据 {urlQuery} {result.ToJson()}");

            return(result);
        }