protected string GetTimeStamp_Str=""; protected string nonceStr_Str = ""; protected string signature_Str = ""; protected void Page_Load(object sender, EventArgs e) { GetTimeStamp_Str = GetTimeStamp(); //nonceStr_Str = new Guid().ToString("N"); var GetTakenStr = HttpHelper.HttpGetConnectToServer("https://api.weixin.qq.com/cgi-bin/token", "grant_type=client_credential&appid=wx6596bfb9388cc63c&secret=eb0c0d643d4e7bd3a43b61fd1031a2f2");//get Taken_Model taken_Model=JsonHelper.DeserializeObject<Taken_Model>(GetTakenStr); var jsapi_ticket_Str = HttpHelper.HttpGetConnectToServer("https://api.weixin.qq.com/cgi-bin/ticket/getticket", "access_token=" + taken_Model.access_token + "&type=jsapi");//get Jsapi_Ticket jsapi_ticket = JsonHelper.DeserializeObject<Jsapi_Ticket>(jsapi_ticket_Str); TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); var tstem = GetTimeStamp_Str;// Convert.ToInt64(ts.TotalSeconds).ToString(); var noncestr = "tianpeng"; //var jsapi_ticket = "sM4AOVdWfPE4DxkXGEs8VF-YEiVh31f4b2Z4rz5E1kuduFEPIz0RgvSnRKebdULuK-yWvsNB_21vVh3IhyR1yg"; var jmdata = "jsapi_ticket={0}&noncestr={1}×tamp={2}&url={3}"; jmdata = string.Format(jmdata, jsapi_ticket.ticket, noncestr, tstem, "http://hstwx.wisdom-gps.com:52539/SignUp/SignUp.aspx"); signature_Str = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(jmdata, "sha1"); nonceStr_Str = noncestr; } protected void btn_Login_Click(object sender, EventArgs e) { } public static string GetTimeStamp() { TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); return Convert.ToInt64(ts.TotalSeconds).ToString(); } } public class Taken_Model { public string access_token { get; set; } public int expires_in { get; set; } } public class Jsapi_Ticket { public int errcode { get; set; } public string errmsg { get; set; } public string ticket { get; set; } public int expires_in { get; set; } }
前端的寫法
前端的寫法
<script> var GetTimeStamp_Str="<%=GetTimeStamp_Str%>"; var nonceStr_Str ="<%=nonceStr_Str%>"; var signature_Str = "<%=signature_Str%>"; wx.config({ debug: true, // 開啓調試模式,調用的全部api的返回值會在客戶端alert出來,若要查看傳入的參數,能夠在pc端打開,參數信息會經過log打出,僅在pc端時纔會打印。 appId: 'wx6596bfb9388cc63c', // 必填,公衆號的惟一標識 timestamp: GetTimeStamp_Str, // 必填,生成簽名的時間戳 nonceStr: nonceStr_Str, // 必填,生成簽名的隨機串 signature: signature_Str,// 必填,簽名,見附錄1 jsApiList: ['chooseImage', 'previewImage'] // 必填,須要使用的JS接口列表,全部JS接口列表見附錄2 }); wx.ready(function(){ // config信息驗證後會執行ready方法,全部接口調用都必須在config接口得到結果以後,config是一個客戶端的異步操做,因此若是須要在頁面加載時就調用相關接口,則須把相關接口放在ready函數中調用來確保正確執行。對於用戶觸發時才調用的接口,則能夠直接調用,不須要放在ready函數中。 }); wx.error(function(res){ // config信息驗證失敗會執行error函數,如簽名過時致使驗證失敗,具體錯誤信息能夠打開config的debug模式查看,也能夠在返回的res參數中查看,對於SPA能夠在這裏更新簽名。 }); function aaaaa() { wx.chooseImage({ count: 1, // 默認9 sizeType: ['original', 'compressed'], // 能夠指定是原圖仍是壓縮圖,默認兩者都有 sourceType: ['album', 'camera'], // 能夠指定來源是相冊仍是相機,默認兩者都有 success: function (res) { var localIds = res.localIds; // 返回選定照片的本地ID列表,localId能夠做爲img標籤的src屬性顯示圖片 alert("fsdfsfsd"); } }); } </script>
若是前端
signature不合法的話 能夠在測試地址中比對http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign若是url不合法的話 在js安全域名裏面處理JS接口安全域名hstwx.wisdom-gps.com:52539 成功~~~~~(前端還要加個引用) 測試地址:http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index