微信JS-SDK怎樣使用


         前兩天要用到微信JS庫的的一句話——wx.closeWindow();但是整個調用過程有點兒淚奔了。。javascript

。。html


     

     儘管開發人員平臺上說的清清楚楚,但是使用起來就是not ok!java



     一,綁定域名


           登陸到微信公衆平臺:api

            在公衆號設置裏面:
安全


          



             找到功能設置,填入JS接口安全域名:微信


       


     二,引入JS

     

  <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"> </script>

   

    三。經過config接口注入權限驗證配置


      感受這裏的調用仍是至關繁瑣的,但願微信能作個安全方便的接口來調用。app


 //         wx.config({
        //                debug: false, // 開啓調試模式,調用的所有api的返回值會在clientalert出來,若要查看傳入的參數,可以在pc端打開。參數信息會經過log打出,僅在pc端時纔會打印。
        //                appId: '<%=appId%>', // 必填,公衆號的惟一標識
        //                timestamp: <%=timestamp%>, // 必填。生成簽名的時間戳
        //                nonceStr: '<%=nonceStr%>', // 必填,生成簽名的隨機串
        //                signature: '<%=Signature%>',// 必填。簽名。見附錄1
        //                jsApiList: ['closeWindow'] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2
        //            });

    wx對象提供了很是多方法調用,而這些方法的返回值可以在config裏面設置。方便調試的時候觀察報錯信息。

   appid。timestamp,noncestr,jsApiList都是比較好填寫的參數。惟一比較麻煩的是簽名。微信公衆平臺


   簽名步驟比較小複雜:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html工具


    

 /// <summary>
        /// 生成簽名
        /// </summary>
        /// <param name="jsapi_ticket">The jsapi_ticket.</param>
        /// <param name="noncestr">The noncestr.</param>
        /// <param name="timestamp">The timestamp.</param>
        /// <param name="url">The URL.</param>
        /// <returns>System.String.</returns>
        /// <remarks>Editor:v-liuhch CreateTime:2015/6/1 18:20:43</remarks>
        private string GetSignature()
        {

            WxAccount wa = WxAccountAdapter.Instance.LoadByCode(PubAccCode);//獲取當前公衆號
            WebClientBase wcb = new WebClientBase();

            //獲取Access_token信息
            string strAccess_token = wcb.RequestMyWebClient(EnumSubmitMethod.Get, "", "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wa.AppID + "&secret=" + wa.AppSecret);
            access_tokenEntity at = WxAPITools.JSONUtil<access_tokenEntity>.FromJsonToObject<access_tokenEntity>(strAccess_token);

            string strJson = wcb.RequestMyWebClient(EnumSubmitMethod.Get, "", "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + at.access_token + "&type=jsapi");

            jsapi_ticket jt = WxAPITools.JSONUtil<jsapi_ticket>.FromJsonToObject<jsapi_ticket>(strJson);//轉化爲對象
            string url = HttpContext.Current.Request.Url.ToString();
            url = url.IndexOf("#") >= 0 ? url.Substring(0, url.IndexOf("#")) : url;
            string tmpStr = "jsapi_ticket=" + jt.ticket + "&noncestr=" + nonceStr + "×tamp=" + timestamp + "&url=" + url;
            return FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");

        }



        /// <summary>
        /// jsapi_ticket是公衆號用於調用微信JS接口的暫時票據
        /// </summary>
        /// <remarks>Editor:v-liuhch CreateTime:2015/6/1 18:25:27</remarks>
        public class jsapi_ticket
        {

            public string errcode { get; set; }
            public string errmsg { get; set; }
            public string ticket { get; set; }
            public string expires_in { get; set; }

        }

        /// <summary>
        /// Class access_tokenEntity
        /// </summary>
        /// <remarks>Editor:v-liuhch CreateTime:2015/6/1 21:08:07</remarks>
        public class access_tokenEntity
        {
            public string access_token { get; set; }
            public string expires_in { get; set; }

        }

     需要注意的是URL地址究竟取的是哪一部分。獲取數據的方式都是get。對所有待簽名參數依照字段名的ASCII 碼從小到大排序post


       假設開啓debug後,返回一個config:ok就說明成功了。


            PS:確認接口簽名的時候。可以使用微信提供的這個網頁調試工具:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign

相關文章
相關標籤/搜索