using System; using System.Collections.Generic; using System.Net; using System.Text; using System.Web; using Quiz.Models; using Quiz.Utility; using WeixinApi; namespace Quiz.SiteBase { public class WeixinJS { /// <summary> /// 获取JS SDK配置 /// </summary> /// <returns></returns> public static WeixinConfig GetWeixinConfig(string typeid) { var noncestr = Utility.Helper.RandomNumString(16); var timestamp = Utility.Helper.GetTimeStamp(); var url = SiteHelper.CurrentUrl;//"http://" + HttpContext.Current.Request.Headers["host"] + HttpContext.Current.Request.RawUrl; var weixin = Cache.CacheManage.Weixin.CacheData.Find(o => o.Account == typeid); if (weixin == null) return null; //从中心服务站点获取jsticket WebClient client = new WebClient(); client.Encoding = Encoding.UTF8; url = string.Format("http://10.25.3.21:81/Index.aspx?typeid={0}", weixin.Account); WxAccount account = JsonHelper.ParseFromJson<WxAccount>(client.DownloadString(url)); Helper.SaveLog("jsticket="+account.JsapiTicket,"jsticket"); return new WeixinConfig() { AppId = weixin.AppId, NonceStr = noncestr, Timestamp = timestamp, Signature = Utility.Helper.GetSha1(string.Format("jsapi_ticket={0}&noncestr={1}×tamp={2}&url={3}", account.JsapiTicket, noncestr, timestamp, url)) }; } /// <summary> /// JS SDK配置 /// </summary> public class WeixinConfig { private const string ApiList = "'checkJsApi','onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','hideMenuItems','showMenuItems','hideAllNonBaseMenuItem','showAllNonBaseMenuItem','translateVoice','startRecord','stopRecord','onRecordEnd','playVoice','pauseVoice','stopVoice','uploadVoice','downloadVoice','chooseImage','previewImage','uploadImage','downloadImage','getNetworkType','openLocation','getLocation','hideOptionMenu','showOptionMenu','closeWindow','scanQRCode','chooseWXPay','openProductSpecificView','addCard','chooseCard','openCard'"; public string AppId { get; set; } public string Timestamp { get; set; } public string NonceStr { get; set; } public string Signature { get; set; } /// <summary> /// 配置JS API, 输出到页面 /// </summary> /// <param name="jsapi"></param> /// <returns></returns> public string Register(params string[] jsapi) { StringBuilder sb = new StringBuilder(); sb.Append("<script src=\"http://res.wx.qq.com/open/js/jweixin-1.0.0.js\" type=\"text/javascript\"></script>"); sb.Append("<script type=\"text/javascript\">wx.config({"); sb.AppendFormat("debug:false,appId: '{0}',timestamp: {1},nonceStr: '{2}',signature: '{3}',", AppId, Timestamp, NonceStr, Signature); sb.AppendFormat("jsApiList: [{0}]", jsapi == null || jsapi.Length <= 0 ? ApiList : "'" + string.Join("','", jsapi) + "'"); sb.Append("});</script>"); return sb.ToString(); } /// <summary> /// 配置JS API, 输出到页面 /// </summary> /// <param name="jsapi"></param> /// <returns></returns> public string RegisterDebug(params string[] jsapi) { StringBuilder sb = new StringBuilder(); sb.Append("<script src=\"http://res.wx.qq.com/open/js/jweixin-1.0.0.js\" type=\"text/javascript\"></script>"); sb.Append("<script type=\"text/javascript\">wx.config({"); sb.AppendFormat("debug:true,appId: '{0}',timestamp: {1},nonceStr: '{2}',signature: '{3}',", AppId, Timestamp, NonceStr, Signature); sb.AppendFormat("jsApiList: [{0}]", jsapi == null || jsapi.Length <= 0 ? ApiList : "'" + string.Join("','", jsapi) + "'"); sb.Append("});</script>"); return sb.ToString(); } } } }