C#-MVC开发微信应用(1)--开始使用微信接口
1、微信賬號
要開發使用微信的平臺API,就需要到微信的公眾平臺(https://mp.weixin.qq.com/)去注冊,擁有一個服務號或者訂閱號,服務號主要面對企業和組織,訂閱號主要面向組織和個人,他們之間有一定的差異,根據不同的需要自己申請對應的賬號即可。
為了使用一些高級的接口,你可能需要擁有服務號和高級的認證。賬號注冊過程,需要下載一個申請表格,打印并蓋公章,另外還需要申請人拿著身份證拍照(有點怪異,呵呵),然后上傳到服務器進行審核,一般很快就能獲取批復。
我以個人申請了一個測試賬號,能用里面的基本上所有的功能。
2、微信菜單定義
微信有兩種方式的菜單定義,一種是編輯模式,一種是開發模式,兩者互斥,也就是說,一旦我們采用了開發模式,就不能使用編輯模式了,反過來也一樣。編輯下的菜單,其實也是可以管理的,但是微信不支持,覺得很不爽。
一般情況下,如果我們剛剛申請了微信號碼,可以使用編輯菜單測試一下,根據說明編輯一些菜單試試。雖然微信說24小時內更新,不過一般很快,最快可能一兩分鐘就更新了,感覺還是不錯的。
使用開發者模式,你需要根據微信的要求,在服務器上放置一個頁面鏈接,使用C#開發的,可以采用***.ashx的命名方式,使用Asp.NET的一般處理程序即可,不需要使用普通的頁面,或者也可以使用MVC進行對接。
使用開發模式的菜單,也就是可以調用微信API進行菜單創建的工作,對于調用微信的API(微信有很多API可以調用),我們需要知道,有幾個參數的重要性,所以在開發模式打開的時候,會給你列出這些參數,如下所示。
在進入自己的訂閱號后里面有一個開發工具:
之后可以申請一個開發測試賬號
進入測試賬號如下:
填寫一下上面的url地址,做為微信響應信息的地址。
?3、接入微信的鏈接處理
上面說了,你申請開發模式對菜單或者對其他API的調用,你需要順利通過接入微信的測試,也就是確認你填寫的鏈接存在并能順利經過微信的回調測試。微信提供了一個PHP的頁面處理例子,如果我們是C#開發的呢,可以搜一下就會得到答案,我的處理方式如下所示。
創建一個MVC處理程序,然后在其處理頁面里面增加一個處理邏輯,如果是非POST方式的內容,就是表示微信進行的Get測試,你需要增加一些處理邏輯,把它給你的內容傳回去即可,如果是POST方式的,就是微信服務器對接口消息的請求操作了,后面介紹。
/// <summary>/// 微信后臺驗證地址(使用Get),微信后臺的“接口配置信息”的Url/// </summary> [HttpGet][ActionName("Index")]public ActionResult Get(string signature, string timestamp, string nonce, string echostr){if (string.IsNullOrEmpty(SNFWeiXinProcess.TOKEN)) return Content("請先設置Token!");var ent = "";if (!BasicAPI.CheckSignature(signature, timestamp, nonce, SNFWeiXinProcess.TOKEN, out ent)){return Content("參數錯誤!");}return Content(echostr); //返回隨機字符串則表示驗證通過 }?
通用驗證方法:
/// <summary>/// 檢查簽名是否正確:/// http://mp.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97/// </summary>/// <param name="signature"></param>/// <param name="timestamp"></param>/// <param name="nonce"></param>/// <param name="token">AccessToken</param>/// <returns>/// true: check signature success/// false: check failed, 非微信官方調用!/// </returns>public static bool CheckSignature(string signature, string timestamp, string nonce, string token, out string ent){var arr = new[] { token, timestamp, nonce }.OrderBy(z => z).ToArray();var arrString = string.Join("", arr);var sha1 = System.Security.Cryptography.SHA1.Create();var sha1Arr = sha1.ComputeHash(Encoding.UTF8.GetBytes(arrString));StringBuilder enText = new StringBuilder();foreach (var b in sha1Arr){enText.AppendFormat("{0:x2}", b);}ent = enText.ToString();return signature == enText.ToString();}?
?
如果是post請求就是開始進行交互了:
/// <summary>/// 用戶發送消息后,微信平臺自動Post一個請求到這里,并等待響應XML。/// </summary> [HttpPost][ActionName("Index")]public ActionResult Post(string signature, string timestamp, string nonce, string echostr){Stream requestStream = System.Web.HttpContext.Current.Request.InputStream;byte[] requestByte = new byte[requestStream.Length];requestStream.Read(requestByte, 0, (int)requestStream.Length);string requestStr = Encoding.UTF8.GetString(requestByte);SNFWeiXinProcess.Log("請求值:" + requestStr);return Content(SNFWeiXinProcess.Run(requestStr));//return Content(sss(signature, timestamp, nonce, echostr) );//return Content(ReceiveXml()); }?
以上就是從申請到MVC程序連接微信賬號的過程,之后會講到怎么與微信進行交互
作者: 王春天 2015-12-24作者Blog:http://www.cnblogs.com/spring_wang 出處: http://www.cnblogs.com/spring_wang/p/5073670.html
? 如果覺得還不錯,歡迎轉載。
本系列文章列表如下:
基于SNF-快速開發平臺框架的系列文章:
C#-MVC開發微信應用(8)--菜單管理的實現
C#-MVC開發微信應用(7)--在管理系統中同步微信用戶分組信息
C#-MVC開發微信應用(6)--用戶分組信息管理
C#-MVC開發微信應用(5)--自動應答系統-自動回復機器人
C#-MVC開發微信應用(4)--微信門戶菜單的管理操作
C#-MVC開發微信應用(3)--文本消息和圖文消息的應答
C#-MVC開發微信應用(2)--微信消息的處理和應答?
C#-MVC開發微信應用(1)--開始使用微信接口
轉載于:https://www.cnblogs.com/spring_wang/p/5073670.html
總結
以上是生活随笔為你收集整理的C#-MVC开发微信应用(1)--开始使用微信接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows 2012 如何设置取消禁
- 下一篇: 视图小问题