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

  如果覺得還不錯,歡迎轉載。


免責聲明!

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



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