微信開發之(一)微信驗證


   基於微信公眾測試平台進行開發測試,並在網上找了很多資料再此聲明(如有占用代碼請聯系以備修改),由於比較雜不一一說明謝謝他們的努力。供有需要的人參考。

首先是實現微信的認證,登錄微信測試平台我們可以看到系統自動給了一個微信號,測試號信息:appID和appsecret。

在接口配置信息中,有URL和Token 二個文本框,我們分別在URL上寫上我們的服務器測試文件的地址,采用的是一般處理程序類似(http://yourdomain.com/valided.ashx).

Token的值我們可以自定義。

  然后我們新建一個項目,新建valided.ashx文件用於驗證。

 //在ProcessRequest方法里面寫上如下代碼:
 if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST")
     {
              //do something
    }else{

           AuthWechat(); //采用GET方法判斷進入驗證方法
    } 
        ///認證微信
        private void AuthWechat()
        {
            string token = "testweixin";//Token的值
     
            string echoString = HttpContext.Current.Request.QueryString["echoStr"];
            string signature = HttpContext.Current.Request.QueryString["signature"];
            string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
            string nonce = HttpContext.Current.Request.QueryString["nonce"];

            if (CheckSignature(token, signature, timestamp, nonce))
            {
                if (!string.IsNullOrEmpty(echoString))
                {
                    HttpContext.Current.Response.Write(echoString);
                    HttpContext.Current.Response.End();
                }
            }

        }

        /// <summary>
        /// 對微信傳入參數進行封裝到數組,拼接字符串,進行加密操作
        /// </summary>
        private bool CheckSignature(string token, string signature, string timestamp, string nonce)
        {
            string[] ArrTmp = { token, timestamp, nonce };//將參數放進數組

            Array.Sort(ArrTmp);//對數組進行排序

            string tmpStr = string.Join("", ArrTmp);//將數組進行拼接

            ///對拼接后的字符串進行加密操作
           // tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");

            tmpStr=Membership.CreateUser(tmpStr, "SHA1").ToString();

            //轉換成小寫形式
            tmpStr = tmpStr.ToLower();

            //比對成功返回
            if (tmpStr == signature)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

 

上圖中的相關參數說明:

  描述
signature 微信加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。
timestamp 時間戳
nonce 隨機數
echostr 隨機字符串

 

參考官方文檔地址解析:驗證消息真實性

將上面的代碼保存后我們編譯下然后發布到服務器,在剛剛的測試號里面寫好發布對應的地址,點擊保存的時候系統會提示你是否配置成功,有時可能是網絡原因會提示配置失敗,建議多試幾次,如果沒有問題一般都會提示配置成功!這就實現了驗證和簽名。完成了重要的一步為其他接口的開發和實現奠定了基礎。

 


免責聲明!

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



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