C#微信公眾號開發 -- (二)驗證成為開發者


接下來就是驗證成為開發者了。先來看一下驗證的界面及需要填寫的信息

在接口配置信息中填寫需要處理驗證信息的頁面或者一般性處理文件,這里以aspx頁面為例

URl中的格式為:http://XXX.com/wxapi.aspx ,其中XXX.com也即是上文提到的需要有一個外網可以訪問的域名,wxapi.aspx即為處理開發者驗證信息的頁面

Token可以隨便寫,只要與wxapi.aspx定義的token一致就行了。填寫完成之后先不要急着提交,因為這時候你的wxapi.aspx還需要加入微信開發者認證的代碼,具體代碼如下:

public partial class wxapi : System.Web.UI.Page
    {
        const string _token = "在微信公眾測試號后台寫的那個Token";
        private const string _myOpenid = "你自己微信公眾測試號的appID";
        string postStr = "";
        protected void Page_Load(object sender, EventArgs e)
        {
            //***********  驗證成為開發者之后將此代碼注釋 *************//
            string httpMethod = Request.HttpMethod.ToLower();
            if (httpMethod == "post")
            {
                //第一次驗證的時候開啟
                FirstValid();
            }
            else
            {
                Valid();  //如果不是post請求就去做開發者驗證
            }
        }

        /// <summary>
        /// 驗證成為開發者
        /// </summary>
        private void Valid()
        {
            string echoStr = Request.QueryString["echoStr"].ToString();
            if (CheckSignature())
            {
                if (!string.IsNullOrEmpty(echoStr))
                {
                    Response.Write(echoStr);
                    Response.End();
                }
            }
        }

        /// <summary>
        /// 驗證微信簽名
        /// </summary>
        /// * 將token、timestamp、nonce三個參數進行字典序排序
        /// * 將三個參數字符串拼接成一個字符串進行sha1加密
        /// * 開發者獲得加密后的字符串可與signature對比,標識該請求來源於微信。
        /// <returns></returns>
        private bool CheckSignature()
        {
            string signature = Request.QueryString["signature"].ToString();
            string timestamp = Request.QueryString["timestamp"].ToString();
            string nonce = Request.QueryString["nonce"].ToString();
            string[] ArrTmp = { _token, timestamp, nonce };
            Array.Sort(ArrTmp);     //字典排序
            string tmpStr = string.Join("", ArrTmp);
            tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
            tmpStr = tmpStr.ToLower();
            if (tmpStr == signature)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// 第一次驗證配置
        /// </summary>
        private void FirstValid()
        {
            Stream s = System.Web.HttpContext.Current.Request.InputStream;
            byte[] b = new byte[s.Length];
            s.Read(b, 0, (int)s.Length);
            postStr = Encoding.UTF8.GetString(b);
            if (!string.IsNullOrEmpty(postStr))
            {
                ResponseMsg(postStr);
            }
        }

        /// <summary>
        /// 返回信息結果(微信信息返回)
        /// </summary>
        /// <param name="weixinXML"></param>
        private void ResponseMsg(string weixinXML)
        {
            //回復消息的部分:你的代碼寫在這里
        }
}

 

其中_token就是上面提到的在微信公眾測試號后台寫的那個Token,_myOpenid即是你自己測試號信息下的appID。
然后將自己的wxapi.aspx發布到服務器上面,隨后點擊微信測試帳號接口配置信息下的提交。

若提示配置失敗則檢查自己的token和appid是否與微信測試帳號后台接口一致。

若提示配置成功即為通過了微信開發者驗證。

注:只有在這里配置成功了,才能在后面做自定義菜單創建,用戶的信息調用及向用戶發送消息、推廣消息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM