国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 微信小程序 微信開發(fā) 入門C#微信開發(fā)第一步

入門C#微信開發(fā)第一步

Apr 24, 2017 pm 03:08 PM
c# 微信開發(fā)

不想廢話,直接寫了!因為是留給自己做隨筆的,所以大神們看到別噴……

?1.必須有微信公眾賬號
?2.你也可以申請測試微信號,鏈接給你http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
然后,建立mvc,你只需要點幾下vs就幫你搞定了。這不廢話?
接著,要創(chuàng)建一個一般處理程序,隨便起個名字,測試通過才是重點,抓緊時間……?

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

 if (tmpStr.ToLower() == signature)
 {
 return true;
 }
 return false;
 }

這代碼相當(dāng)于是跟微信公眾號中【開發(fā)】--》【基本配置】里面你所寫的Token 一個一對一令牌通信握手,只要互相通了,那么你就算是搞定了!

搞定是后話,還有工作沒做完,接著寫!
怎么配置,這是問題,哎只能用花生殼給測試先,至少要知道玩了半天是不是通的!
看下圖:左邊花生殼配置-----右邊iis網(wǎng)站發(fā)布綁定


看到這圖,你也明白下一步怎么玩了吧。本地iis配上了域名。這簡直屌爆了…………
下面。我們加上代碼。設(shè)置發(fā)送和自動回復(fù)測試,看看能不能玩

 #region 接收消息
 /// <summary>
 /// 接收微信發(fā)送的XML消息并且解析
 /// </summary>
 private void ReceiveXml()
 {
 var requestStream = HttpContext.Current.Request.InputStream;
 var requestByte = new byte[requestStream.Length];
 requestStream.Read(requestByte, 0, (int)requestStream.Length);
 var requestStr = Encoding.UTF8.GetString(requestByte);

 if (!string.IsNullOrEmpty(requestStr))
 {
 //封裝請求類
 var requestDocXml = new XmlDocument();
 requestDocXml.LoadXml(requestStr);
 var rootElement = requestDocXml.DocumentElement;
 if (rootElement == null) return;
 var wxXmlModel = new WxXmlModel
 {
  ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText,
  FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText,
  CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText,
  MsgType = rootElement.SelectSingleNode("MsgType").InnerText
 };

 switch (wxXmlModel.MsgType)
 {
  case "text"://文本
  wxXmlModel.Content = rootElement.SelectSingleNode("Content").InnerText;
  break;
  case "image"://圖片
  wxXmlModel.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText;
  break;
  case "event"://事件
  wxXmlModel.Event = rootElement.SelectSingleNode("Event").InnerText;
  if (wxXmlModel.Event != "TEMPLATESENDJOBFINISH")//關(guān)注類型
  {
  wxXmlModel.EventKey = rootElement.SelectSingleNode("EventKey").InnerText;
  }
  break;
  default:
  break;
 }

 ResponseXML(wxXmlModel);//回復(fù)消息
 }
 }
 #endregion

 #region 回復(fù)消息
 private void ResponseXML(WxXmlModel WxXmlModel)
 {
 var QrCodeApi = new QrCodeApi();
 var XML = "";
 switch (WxXmlModel.MsgType)
 {
 case "text"://文本回復(fù)
  XML = ResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.Content);
  break;
 case "event":
  switch (WxXmlModel.Event)
  {
  case "subscribe":
  if (string.IsNullOrEmpty(WxXmlModel.EventKey))
  {
  XML = ResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, "關(guān)注成功");
  }
  else
  {
  XML = ResponseMessage.SubScanQrcode(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.EventKey);//掃描帶參數(shù)二維碼先關(guān)注后推送事件
  }
  break;
  case "SCAN":
  XML = ResponseMessage.ScanQrcode(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.EventKey);//掃描帶參數(shù)二維碼已關(guān)注 直接推送事件
  break;
  }
  break;
 default://默認回復(fù)
  break;
 }
 HttpContext.Current.Response.Write(XML);
 HttpContext.Current.Response.End();
 }
 #endregion

上面一個發(fā)送,一個接收,還是在WhApi.ashx處理程序文件里面。我就想說清楚,呵呵!
?因為你根公眾平臺握手成功了,你肯定要發(fā)點東西過去試試對吧~~
下圖是一個接收方法和一個自動匹配回復(fù)文件的關(guān)聯(lián),別急下面我會上傳這個文件!

?還缺一個配置,就是vs要設(shè)置【調(diào)試】----【附加到進程】,只需要把下面【顯示所有用戶進程】一項打勾,你就能找到w3wp.exe 如果有多個這樣的進程,那你還是要確認【用戶名】那一列,選中跟你程序池名稱一樣的就ok,點附加,確定附加!?
接下來。好玩了…………………………………………………………
?微信掃一掃那個測試公眾號,發(fā)一條自定義消息,看看有什么回復(fù),上面的繁瑣配置,可以加斷點調(diào)試的,不然搞那么多也沒意義是吧,看看發(fā)送和接收跟你自己設(shè)定的吻合,那就ok了。?
就這樣…………寫完了。

以上是入門C#微信開發(fā)第一步的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
c#多線程和異步的區(qū)別 c#多線程和異步的區(qū)別 Apr 03, 2025 pm 02:57 PM

多線程和異步的區(qū)別在于,多線程同時執(zhí)行多個線程,而異步在不阻塞當(dāng)前線程的情況下執(zhí)行操作。多線程用于計算密集型任務(wù),而異步用于用戶交互操作。多線程的優(yōu)勢是提高計算性能,異步的優(yōu)勢是不阻塞 UI 線程。選擇多線程還是異步取決于任務(wù)性質(zhì):計算密集型任務(wù)使用多線程,與外部資源交互且需要保持 UI 響應(yīng)的任務(wù)使用異步。

C#與C:歷史,進化和未來前景 C#與C:歷史,進化和未來前景 Apr 19, 2025 am 12:07 AM

C#和C 的歷史與演變各有特色,未來前景也不同。1.C 由BjarneStroustrup在1983年發(fā)明,旨在將面向?qū)ο缶幊桃隒語言,其演變歷程包括多次標準化,如C 11引入auto關(guān)鍵字和lambda表達式,C 20引入概念和協(xié)程,未來將專注于性能和系統(tǒng)級編程。2.C#由微軟在2000年發(fā)布,結(jié)合C 和Java的優(yōu)點,其演變注重簡潔性和生產(chǎn)力,如C#2.0引入泛型,C#5.0引入異步編程,未來將專注于開發(fā)者的生產(chǎn)力和云計算。

xml怎么轉(zhuǎn)換成json xml怎么轉(zhuǎn)換成json Apr 03, 2025 am 09:09 AM

將 XML 轉(zhuǎn)換為 JSON 的方法包括:使用編程語言(如 Python、Java、C#)編寫腳本或程序進行轉(zhuǎn)換;使用在線工具(如 XML 轉(zhuǎn)換為 JSON、Gojko's XML 轉(zhuǎn)換器、XML 在線工具)粘貼或上傳 XML 數(shù)據(jù)并選擇 JSON 格式輸出;使用 XML 到 JSON 轉(zhuǎn)換器(如 Oxygen XML Editor、Stylus Studio、Altova XMLSpy)執(zhí)行轉(zhuǎn)換任務(wù);使用 XSLT 樣式表將 XML 轉(zhuǎn)換為 JSON;使用數(shù)據(jù)集成工具(如 Informatic

c#多線程編程是什么  c#多線程編程用處 c#多線程編程是什么 c#多線程編程用處 Apr 03, 2025 pm 02:45 PM

C# 多線程編程是一種讓程序同時執(zhí)行多項任務(wù)的技術(shù),它可以通過提升性能、提高響應(yīng)能力和實現(xiàn)并行處理來提高程序效率。雖然 Thread 類提供了直接創(chuàng)建線程的方法,但 Task 和 async/await 等高級工具可以提供更安全的異步操作和更簡潔的代碼結(jié)構(gòu)。多線程編程中常見的難題包括死鎖、競態(tài)條件和資源泄漏,需要仔細設(shè)計線程模型和使用適當(dāng)?shù)耐綑C制來避免這些問題。

C#.NET:使用.NET生態(tài)系統(tǒng)構(gòu)建應(yīng)用程序 C#.NET:使用.NET生態(tài)系統(tǒng)構(gòu)建應(yīng)用程序 Apr 27, 2025 am 12:12 AM

如何利用.NET構(gòu)建應(yīng)用?使用.NET構(gòu)建應(yīng)用可以通過以下步驟實現(xiàn):1)了解.NET基礎(chǔ)知識,包括C#語言和跨平臺開發(fā)支持;2)學(xué)習(xí)核心概念,如.NET生態(tài)系統(tǒng)的組件和工作原理;3)掌握基本和高級用法,從簡單控制臺應(yīng)用到復(fù)雜的WebAPI和數(shù)據(jù)庫操作;4)熟悉常見錯誤與調(diào)試技巧,如配置和數(shù)據(jù)庫連接問題;5)應(yīng)用性能優(yōu)化與最佳實踐,如異步編程和緩存。

從網(wǎng)絡(luò)到桌面:C#.NET的多功能性 從網(wǎng)絡(luò)到桌面:C#.NET的多功能性 Apr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

c#多線程的好處有哪些 c#多線程的好處有哪些 Apr 03, 2025 pm 02:51 PM

多線程的好處在于能提升性能和資源利用率,尤其適用于處理大量數(shù)據(jù)或執(zhí)行耗時操作。它允許同時執(zhí)行多個任務(wù),提高效率。然而,線程過多會導(dǎo)致性能下降,因此需要根據(jù) CPU 核心數(shù)和任務(wù)特性謹慎選擇線程數(shù)。另外,多線程編程涉及死鎖和競態(tài)條件等挑戰(zhàn),需要使用同步機制解決,需要具備扎實的并發(fā)編程知識,權(quán)衡利弊并謹慎使用。

.NET框架與C#:解碼術(shù)語 .NET框架與C#:解碼術(shù)語 Apr 21, 2025 am 12:05 AM

.NETFramework是一個軟件框架,C#是一種編程語言。1..NETFramework提供庫和服務(wù),支持桌面、Web和移動應(yīng)用開發(fā)。2.C#設(shè)計用于.NETFramework,支持現(xiàn)代編程功能。3..NETFramework通過CLR管理代碼執(zhí)行,C#代碼編譯成IL后由CLR運行。4.使用.NETFramework可快速開發(fā)應(yīng)用,C#提供如LINQ的高級功能。5.常見錯誤包括類型轉(zhuǎn)換和異步編程死鎖,調(diào)試需用VisualStudio工具。

See all articles