麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

C#微信公眾號開發系列教程二(新手接入指南)

2019-11-14 16:20:44
字體:
來源:轉載
供稿:網友

此系列前面已經更新了兩篇博文了,都是微信開發的前期準備工作,現在切入正題,本篇講解新手接入的步驟與方法,大神可直接跳過,也歡迎大神吐槽。


微信公眾號開發系列教程一(調試環境部署)

微信公眾號開發系列教程一(調試環境部署續:vs遠程調試)

C#微信公眾號開發系列教程二(新手接入指南)

C#微信公眾號開發系列教程三(消息體簽名及加解密)

C#微信公眾號開發系列教程四(接收普通消息)

C#微信公眾號開發系列教程五(接收事件推送與消息排重)

 C#微信公眾號開發系列教程六(被動回復與上傳下載多媒體文件)

微信公眾平臺消息接口的工作原理大概可以這樣理解:從用戶端到公眾號端一個流程是這樣的,用戶發送消息到微信服務器,微信服務器將接收到的消息post到用戶接入時填寫的url中,在url處理程序中,首先判斷消息的合法性,判斷成功后根據消息體的內容做相應的相應。原理很容易理解,接觸過socket的可能理解起來更容易。

然而,微信的文檔有的時候確實有點讓人摸不著頭腦,關于微信接入的文檔寫的確實不敢恭維啊。官方文檔寫的第一步是“申請消息接口”,這里是需要填寫一個url的,此url用來處理微信發送的消息的,但微信把url中相關的配置寫在了第二步,一不小心就把新手給坑了。下面我按照我的理解來進行解釋。

首先,開發者在接入時,微信服務器將發送get請求到你填寫的url上,此請求攜帶四個參數,分別signature(微信加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。),timestamp(時間戳),nonce(隨機數),echostr(隨機字符串).用 HttpContext.Current.Request.RawUrl可以獲取當前請求的原始url,如下圖所示:

image

開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,成為開發者成功,否則接入失敗。

加密/校驗流程如下:1. 將token、timestamp、nonce三個參數進行字典序排序2. 將三個參數字符串拼接成一個字符串進行sha1加密3. 開發者獲得加密后的字符串可與signature對比,標識該請求來源于微信。
下面是代碼實現。
首先,在你的處理程序中(我是新建了一個一般處理程序wx.ashx),判斷當前請求的類型,因為接入時,是發送的GET請求,消息處理是發送的POST請求。如下圖:
image
這里我對驗證url的方法進行封裝。
/// <summary>        /// 驗證url權限, 接入服務器        /// </summary>        /// <param name="token"></param>        /// <returns></returns>        public static bool ValidUrl(string token)        {            string echoStr = VqiRequest.GetQueryString("echoStr");            if (CheckSignature(token))            {                if (!string.IsNullOrEmpty(echoStr))                {                    Utils.ResponseWrite(echoStr);                    return true;                }            }            return false;        }/// <summary>        /// 驗證微信簽名        /// </summary>        /// * 將token、timestamp、nonce三個參數進行字典序排序        /// * 將三個參數字符串拼接成一個字符串進行sha1加密        /// * 開發者獲得加密后的字符串可與signature對比,標識該請求來源于微信。        /// <returns></returns>        public static bool CheckSignature(string token)        {            string signature = VqiRequest.GetQueryString("signature");            string timestamp = VqiRequest.GetQueryString("timestamp");            string nonce = VqiRequest.GetQueryString("nonce");            string[] ArrTmp = { token, timestamp, nonce };            Array.Sort(ArrTmp);     //字典排序            string tmpStr = string.Join("", ArrTmp);            tmpStr = Utils.HashPassWordForStoringInConfigFile(tmpStr, "SHA1");            tmpStr = tmpStr.ToLower();            if (tmpStr == signature)            {                return true;            }            else            {                return false;            }        }

 

注:代碼VqiRequest.GetQueryString是封裝的QueryString請求的方法,使用的時候可以改成QueryString[“”]

處理過程如圖:

image

image

將signature,timestamp,nonce三個參數放在數組中,

image

image

排序后的ArrTmp:

image

將三個將三個參數字符串拼接成一個字符串:

image

將tmpStr進行sha1加密,加密后的字符串轉換成小寫:

image

然后和簽名進行對比,相同則表示驗證成功。

image

驗證成功將echoStr返回給微信。

image

/// <summary>        /// 根據指定的密碼和哈希算法生成一個適合于存儲在配置文件中的哈希密碼        /// </summary>        /// <param name="str">要進行哈希運算的密碼</param>        /// <param name="type"> 要使用的哈希算法</param>        /// <returns>經過哈希運算的密碼</returns>        public static string HashPasswordForStoringInConfigFile(string str, string type)        {            return FormsAuthentication.HashPasswordForStoringInConfigFile(str, type);        }        public static void ResponseWrite(string str)        {            HttpContext.Current.Response.Write(str);            HttpContext.Current.Response.End();        }

 

處理程序編寫完畢后,部署到iis(方法請參照教程一),登錄微信管理后臺https://mp.weixin.QQ.com/在開發者中心頁,點擊“修改配置按鈕”填寫URL、Token和EncodingAESKey,其中URL是開發者用來接收微信服務器數據的接口URL。Token可由開發者可以任意填寫,用作生成簽名(該Token會和接口URL中包含的Token進行比對,從而驗證安全性)。EncodingAESKey由開發者手動填寫或隨機生成,將用作消息體加解密密鑰。同時,開發者可選擇消息加解密方式:明文模式、兼容模式和安全模式。模式的選擇與服務器配置在提交后都會立即生效。加解密方式的默認狀態為明文模式。加解密模式將在后期的系列中與大家共享,敬請期待。

如圖所示:

image

image

 

點擊提交后,微信服務器將get請求到上文中編寫的url中。驗證成功,則綁定成功。

image

 

 

END

 

如有疑問加群一起交流,我需要廣大屌絲小伙伴的反饋與建議,   點擊這里給我發消息

如果覺得本文對你有幫助,請點擊文章下面的推薦哦,去幫助更多的小伙伴了解微信開發的流程。

如果你是土豪,想支持筆者繼續更新本系列教程,可以掃描下面的二維碼懸賞一下,你的支持是筆者繼續更新下去的動力。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 经典三级在线视频 | 性高跟鞋xxxxhd4kvideos | 在线播放视频一区二区 | 精品视频一区二区三区四区 | 精品中文字幕在线播放 | 国产精品久久av | 在线a亚洲视频播放在线观看 | 久草在线新时代视觉 | 欧美一级aa免费毛片 | 色综合网在线观看 | 毛片免| 国产亚洲精品久久午夜玫瑰园 | 国产精品久久久久久久久久尿 | 在线中文字幕不卡 | 涩涩伊人 | 黄色网页在线看 | 国产精品99久久久久久久 | 国产精品视频中文字幕 | 成年人网站国产 | av成人免费在线观看 | 久久久久久久久久久一区 | 日本欧美视频 | 亚洲视频综合 | 国产亚洲高清在线精品不卡 | 一级黄色欧美 | 色诱亚洲精品久久久久久 | 黄色久| 国产精品午夜未成人免费观看 | 黄色试看视频 | 夜添久久精品亚洲国产精品 | 精品无码一区在线观看 | av观看网站 | 国产一区网址 | 最近日本电影hd免费观看 | 国产999精品久久久久 | 久久久www成人免费精品 | 久久精品中文字幕 | 九色激情网 | 一级黄色欧美 | 欧美色视频免费 | 视频在线中文字幕 |