這篇文章ASP.NET微信開發(fā)接口指南詳細介紹,微信公眾平臺的開發(fā)較為簡單,感興趣的小伙伴們可以參考一下
公眾平臺用戶提交信息后,微信服務器將發(fā)送GET請求到填寫的URL上,并且?guī)纤膫€參數:
開發(fā)者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,否則接入失敗。
signature結合了開發(fā)者填寫的token參數和請求中的timestamp參數、nonce參數。
加密/校驗流程:
1. 將token、timestamp、nonce三個參數進行字典序排序
2. 將三個參數字符串拼接成一個字符串進行sha1加密
3. 開發(fā)者獲得加密后的字符串可與signature對比,標識該請求來源于微信
/// <summary> /// 驗證簽名 /// </summary> /// <param name="signature"></param> /// <param name="timestamp"></param> /// <param name="nonce"></param> /// <returns></returns> public static bool CheckSignature(String signature, String timestamp, String nonce) { String[] arr = new String[] { token, timestamp, nonce }; // 將token、timestamp、nonce三個參數進行字典序排序 Array.Sort<String>(arr); StringBuilder content = new StringBuilder(); for (int i = 0; i < arr.Length; i++) { content.Append(arr[i]); } String tmpStr = SHA1_Encrypt(content.ToString()); // 將sha1加密后的字符串可與signature對比,標識該請求來源于微信 return tmpStr != null ? tmpStr.Equals(signature) : false; } /// <summary> /// 使用缺省密鑰給字符串加密 /// </summary> /// <param name="Source_String"></param> /// <returns></returns> public static string SHA1_Encrypt(string Source_String) { byte[] StrRes = Encoding.Default.GetBytes(Source_String); HashAlgorithm iSHA = new SHA1CryptoServiceProvider(); StrRes = iSHA.ComputeHash(StrRes); StringBuilder EnText = new StringBuilder(); foreach (byte iByte in StrRes) { EnText.AppendFormat("{0:x2}", iByte); } return EnText.ToString(); }
接入后是消息推送當普通微信用戶向公眾賬號發(fā)消息時,微信服務器將POST該消息到填寫的URL上。
protected void Page_Load(object sender, EventArgs e) { if (Request.HttpMethod.ToUpper() == "GET") { // 微信加密簽名 string signature = Request.QueryString["signature"]; // 時間戳 string timestamp = Request.QueryString["timestamp"]; // 隨機數 string nonce = Request.QueryString["nonce"]; // 隨機字符串 string echostr = Request.QueryString["echostr"]; if (WeixinServer.CheckSignature(signature, timestamp, nonce)) { Response.Write(echostr); } } else if (Request.HttpMethod.ToUpper() == "POST") { StreamReader stream = new StreamReader(Request.InputStream); string xml = stream.ReadToEnd(); processRequest(xml); } } /// <summary> /// 處理微信發(fā)來的請求 /// </summary> /// <param name="xml"></param> public void processRequest(String xml) { try { // xml請求解析 Hashtable requestHT = WeixinServer.ParseXml(xml); // 發(fā)送方帳號(open_id) string fromUserName = (string)requestHT["FromUserName"]; // 公眾帳號 string toUserName = (string)requestHT["ToUserName"]; // 消息類型 string msgType = (string)requestHT["MsgType"]; //文字消息 if (msgType == ReqMsgType.Text) { // Response.Write(str); string content = (string)requestHT["Content"]; if(content=="1") { // Response.Write(str); Response.Write(GetNewsMessage(toUserName, fromUserName)); return; } if (content == "2") { Response.Write(GetUserBlogMessage(toUserName, fromUserName)); return; } if (content == "3") { Response.Write(GetGroupMessage(toUserName, fromUserName)); return; } if (content == "4") { Response.Write(GetWinePartyMessage(toUserName, fromUserName)); return; } Response.Write(GetMainMenuMessage(toUserName, fromUserName, "你好,我是vinehoo,")); } else if (msgType == ReqMsgType.Event) { // 事件類型 String eventType = (string)requestHT["Event"]; // 訂閱 if (eventType==ReqEventType.Subscribe) { Response.Write(GetMainMenuMessage(toUserName, fromUserName, "謝謝您的關注!,")); } // 取消訂閱 else if (eventType==ReqEventType.Unsubscribe) { // TODO 取消訂閱后用戶再收不到公眾號發(fā)送的消息,因此不需要回復消息 } // 自定義菜單點擊事件 else if (eventType==ReqEventType.CLICK) { // TODO 自定義菜單權沒有開放,暫不處理該類消息 } } else if (msgType == ReqMsgType.Location) { } } catch (Exception e) { } }<pre name="code" class="csharp"> protected void Page_Load(object sender, EventArgs e) { if (Request.HttpMethod.ToUpper() == "GET") { // 微信加密簽名 string signature = Request.QueryString["signature"]; // 時間戳 string timestamp = Request.QueryString["timestamp"]; // 隨機數 string nonce = Request.QueryString["nonce"]; // 隨機字符串 string echostr = Request.QueryString["echostr"]; if (WeixinServer.CheckSignature(signature, timestamp, nonce)) { Response.Write(echostr); } } else if (Request.HttpMethod.ToUpper() == "POST") { StreamReader stream = new StreamReader(Request.InputStream); string xml = stream.ReadToEnd(); processRequest(xml); } } /// <summary> /// 處理微信發(fā)來的請求 /// </summary> /// <param name="xml"></param> public void processRequest(String xml) { try { // xml請求解析 Hashtable requestHT = WeixinServer.ParseXml(xml); // 發(fā)送方帳號(open_id) string fromUserName = (string)requestHT["FromUserName"]; // 公眾帳號 string toUserName = (string)requestHT["ToUserName"]; // 消息類型 string msgType = (string)requestHT["MsgType"]; //文字消息 if (msgType == ReqMsgType.Text) { // Response.Write(str); string content = (string)requestHT["Content"]; if(content=="1") { // Response.Write(str); Response.Write(GetNewsMessage(toUserName, fromUserName)); return; } if (content == "2") { Response.Write(GetUserBlogMessage(toUserName, fromUserName)); return; } if (content == "3") { Response.Write(GetGroupMessage(toUserName, fromUserName)); return; } if (content == "4") { Response.Write(GetWinePartyMessage(toUserName, fromUserName)); return; } Response.Write(GetMainMenuMessage(toUserName, fromUserName, "你好,我是vinehoo,")); } else if (msgType == ReqMsgType.Event) { // 事件類型 String eventType = (string)requestHT["Event"]; // 訂閱 if (eventType==ReqEventType.Subscribe) { Response.Write(GetMainMenuMessage(toUserName, fromUserName, "謝謝您的關注!,")); } // 取消訂閱 else if (eventType==ReqEventType.Unsubscribe) { // TODO 取消訂閱后用戶再收不到公眾號發(fā)送的消息,因此不需要回復消息 } // 自定義菜單點擊事件 else if (eventType==ReqEventType.CLICK) { // TODO 自定義菜單權沒有開放,暫不處理該類消息 } } else if (msgType == ReqMsgType.Location) { } } catch (Exception e) { } }
以上就是關于ASP.NET微信開發(fā)接口指南的相關內容介紹,希望對大家的學習有所幫助。
以上是ASP.NET微信開發(fā)接口指南詳細介紹的詳細內容。更多信息請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣服圖片

Undresser.AI Undress
人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機

Video Face Swap
使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

PHP是一種開源的腳本語言,廣泛應用于Web開發(fā)和服務器端編程,尤其在微信開發(fā)中得到了廣泛的應用。如今,越來越多的企業(yè)和開發(fā)者開始使用PHP進行微信開發(fā),因為它成為了一款真正的易學易用的開發(fā)語言。在微信開發(fā)中,消息的加密和解密是一個非常重要的問題,因為它們涉及到數據的安全性。對于沒有加密和解密方式的消息,黑客可以輕松獲取到其中的數據,對用戶造成威脅

在微信公眾號開發(fā)中,投票功能經常被運用。投票功能是讓用戶快速參與互動的好方式,也是舉辦活動和調查意見的重要工具。本文將為您介紹如何使用PHP實現微信投票功能。獲取微信公眾號授權首先,你需要獲取微信公眾號的授權。在微信公眾平臺上,你需要配置微信公眾號的api地址、官方賬號和公眾號對應的token。在我們使用PHP語言開發(fā)的過程中,我們需要使用微信官方提供的PH

隨著微信的普及,越來越多的企業(yè)開始將其作為營銷工具。而微信群發(fā)功能,則是企業(yè)進行微信營銷的重要手段之一。但是,如果只依靠手動發(fā)送,對于營銷人員來說是一件極為費時費力的工作。所以,開發(fā)一款微信群發(fā)工具就顯得尤為重要。本文將介紹如何使用PHP開發(fā)微信群發(fā)工具。一、準備工作開發(fā)微信群發(fā)工具,我們需要掌握以下幾個技術點:PHP基礎知識微信公眾平臺開發(fā)開發(fā)工具:Sub

微信是目前全球用戶規(guī)模最大的社交平臺之一,隨著移動互聯網的普及,越來越多的企業(yè)開始意識到微信營銷的重要性。在進行微信營銷時,客服服務是至關重要的一環(huán)。為了更好地管理客服聊天窗口,我們可以借助PHP語言進行微信開發(fā)。一、PHP微信開發(fā)簡介PHP是一種開源的服務器端腳本語言,廣泛運用于Web開發(fā)領域。結合微信公眾平臺提供的開發(fā)接口,我們可以使用PHP語言進行微信

在微信公眾號開發(fā)中,用戶標簽管理是一個非常重要的功能,可以讓開發(fā)者更好地了解和管理自己的用戶。本篇文章將介紹如何使用PHP實現微信用戶標簽管理功能。一、獲取微信用戶openid在使用微信用戶標簽管理功能之前,我們首先需要獲取用戶的openid。在微信公眾號開發(fā)中,通過用戶授權的方式獲取openid是比較常見的做法。在用戶授權完成后,我們可以通過以下代碼獲取用

隨著微信成為了人們生活中越來越重要的一個通訊工具,其敏捷的消息傳遞功能迅速受到廣大企業(yè)和個人的青睞。對于企業(yè)而言,將微信發(fā)展為一個營銷平臺已經成為趨勢,而微信開發(fā)的重要性也逐漸凸顯。在其中,群發(fā)功能更是被廣泛使用,那么,作為PHP程序員,如何實現群發(fā)消息發(fā)送記錄呢?下面將為大家簡單介紹一下。1.了解微信公眾號相關開發(fā)知識在了解如何實現群發(fā)消息發(fā)送記錄之前,我

如何使用PHP實現微信公眾號開發(fā)微信公眾號已經成為了很多企業(yè)推廣和互動的重要渠道,而PHP作為一種常用的Web語言,也可以用來進行微信公眾號的開發(fā)。本文將介紹一下使用PHP實現微信公眾號開發(fā)的具體步驟。第一步:獲取微信公眾號的開發(fā)者賬號在開始微信公眾號開發(fā)之前,需要先去申請一個微信公眾號的開發(fā)者賬號。具體的注冊流程可以參見微信公眾平臺的官方網

隨著互聯網和移動智能設備的發(fā)展,微信成為了社交和營銷領域不可或缺的一部分。在這個越來越數字化的時代,如何使用PHP進行微信開發(fā)已經成為了很多開發(fā)者的關注點。本文主要介紹如何使用PHP進行微信開發(fā)的相關知識點,以及其中的一些技巧和注意事項。一、開發(fā)環(huán)境準備在進行微信開發(fā)之前,首先需要準備好相應的開發(fā)環(huán)境。具體來說,需要安裝PHP的運行環(huán)境,以及微信公眾平臺提
