Example #1
0
        /// <summary>
        /// 获取签名包
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static SignPackage FetchSignPackage(String url)
        {
            JSTicket    jsticket    = FetchJSTicket();
            SignPackage signPackage = FetchSignPackage(url, jsticket);

            return(signPackage);
        }
Example #2
0
        /// <summary>
        /// 获取签名包
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static SignPackage FetchSignPackage(String url, JSTicket jsticket)
        {
            string timestamp = SignPackageHelper.ConvertToUnixTimeStamp(DateTime.Now);
            string nonceStr  = SignPackageHelper.CreateNonceStr();

            if (jsticket == null)
            {
                return(null);
            }

            // 这里参数的顺序要按照 key 值 ASCII 码升序排序
            string rawstring = Keys.jsapi_ticket + "=" + jsticket.ticket;

            rawstring += "&" + Keys.noncestr + "=" + nonceStr;
            rawstring += "&" + Keys.timestamp + "=" + timestamp;
            rawstring += "&" + Keys.url + "=" + url;
            string signature = SignPackageHelper.Sha1Hex(rawstring).ToLower();

            var signPackage = new SignPackage()
            {
                agentId   = BP.Sys.SystemConfig.Ding_AgentID,
                corpId    = BP.Sys.SystemConfig.Ding_CorpID,
                timeStamp = timestamp,
                nonceStr  = nonceStr,
                signature = signature,
                url       = url,
                rawstring = rawstring,
                jsticket  = jsticket.ticket
            };

            return(signPackage);
        }
Example #3
0
        /// <summary>
        /// 获取JS票据
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static JSTicket FetchJSTicket()
        {
            SimpleCacheProvider cache    = SimpleCacheProvider.GetInstance();
            JSTicket            jsTicket = cache.GetCache <JSTicket>(ConstVars.CACHE_JS_TICKET_KEY);

            if (jsTicket == null || DataType.IsNullOrEmpty(jsTicket.ticket))
            {
                String apiurl = FormatApiUrlWithToken(Urls.get_jsapi_ticket);
                jsTicket = Analyze.Get <JSTicket>(apiurl);
                cache.SetCache(ConstVars.CACHE_JS_TICKET_KEY, jsTicket, ConstVars.CACHE_TIME);
            }
            return(jsTicket);
        }
Example #4
0
        //得到ticket 如果文件里时间 超时则重新获取
        private string getJsApiTicket()
        {
            // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例
            string path = HttpContext.Current.Server.MapPath(@"/jssdk/jsapi_ticket.json");

            //读取文件
            FileStream file         = new FileStream(path, FileMode.Open);
            var        serializer   = new DataContractJsonSerializer(typeof(JSTicket));
            JSTicket   readJSTicket = (JSTicket)serializer.ReadObject(file);

            file.Close();
            string ticket = "";

            if (readJSTicket.expire_time < ConvertDateTimeInt(DateTime.Now))
            {
                string accessToken = getAccessToken();
                string url         = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=" + accessToken + "";
                Jsapi  api         = Desrialize <Jsapi>(new Jsapi(), httpGet(url));



                ticket = api.ticket;
                if (ticket != "")
                {
                    readJSTicket.expire_time  = ConvertDateTimeInt(DateTime.Now) + 7000;
                    readJSTicket.jsapi_ticket = ticket;


                    string json = Serialize <JSTicket>(readJSTicket);
                    StreamWriterMetod(json, path);
                }
            }
            else
            {
                ticket = readJSTicket.jsapi_ticket;
            }


            return(ticket);
        }