/// <summary> /// 获取签名包 /// </summary> /// <param name="url"></param> /// <returns></returns> public static SignPackage FetchSignPackage(String url) { JSTicket jsticket = FetchJSTicket(); SignPackage signPackage = FetchSignPackage(url, jsticket); return(signPackage); }
/// <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); }
/// <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); }
//得到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); }