目錄
1、微信帳號
2、微信選單定義
 3、接入微信的鏈接處理
4、使用開發方式建立選單
4、我創建的菜單案例
首頁 微信小程式 微信開發 C#開發微信入口網站及應用(1)--開始使用微信接口

C#開發微信入口網站及應用(1)--開始使用微信接口

Feb 16, 2017 pm 04:27 PM

微信應用如火如荼,許多公司都希望搭上資訊快車,這個是一個商機,也是一個技術的方向,因此,有空研究下、學習下微信的相關開發,也就成為日常計劃的重要事情之一了。本系列文章希望從一個循序漸進的角度上,全面介紹微信的相關開發過程和相關經驗總結,希望給大家了解一下相關的開發歷程。本隨筆主要針對微信開發過程的前期準備和一些初始的工作的介紹。

在寫下本文的之前一周時間裡,我主要是參考一些介紹文章以及微信公眾平台的相關接口說明,並結合C#的代碼開發,整理了自己公司的門戶界面,實現了微信工作號的初步使用者互動和資訊展示工作,隨著工作的進一步開展,越來越多的功能可能加入,並希望從應用角度上擴展微信的接口,從而實現我對微信接口的技術探秘和了解過程。

1、微信帳號

要開發使用微信的平台API,就需要到微信的公眾平台(https://mp.weixin.qq.com/)去註冊,擁有一個服務號碼訂閱號,服務號碼主要面對企業和組織,訂閱號碼主要面向組織和個人,他們之間有一定的差異,根據不同的需要自己申請對應的帳號即可。

為了使用一些高級的接口,你可能需要擁有服務號和高級的認證。帳號註冊過程,需要下載一個申請表格,列印並蓋公章,另外還需要申請人拿著身分證拍照(有點怪異,呵呵),然後上傳到伺服器進行審核,一般很快就能取得核准。

我以公司名義申請了服務號,帳號註冊後,會在主界面上顯示你的相關信息,另外給你申請一個二維碼的東西,掃描二維碼即可進入公司的微信關注確認對話框,非常方便。如下就是我申請後的公司帳號二維碼,可以直接使用掃描。

C#開發微信入口網站及應用(1)--開始使用微信接口

2、微信選單定義

微信有兩種方式的選單定義,一種是編輯模式,一種是開發模式,兩者互斥,也就是說,一旦我們採用了開發模式,就不能使用編輯模式了,反過來也一樣。編輯下的選單,其實也是可以管理的,但微信不支持,覺得很不爽。

一般情況下,如果我們剛剛申請了微信號碼,可以使用編輯選單測試一下,根據說明編輯一些選單試試。雖然微信說24小時內更新,不過一般很快,最快可能一兩分鐘就更新了,感覺還是不錯的。

使用開發者模式,你需要根據微信的要求,在伺服器上放置一個頁面鏈接,使用C#開發的,可以採用***.ashx的命名方式,使用Asp.NET的一般處理程序即可,不需要使用普通的頁面。

使用開發模式的選單,也就是可以呼叫微信API進行選單建立的工作,對於呼叫微信的API(微信有很多API可以呼叫),我們需要知道,有幾個參數的重要性,所以在開發模式打開的時候,會給你列出這些參數,如下圖。

C#開發微信入口網站及應用(1)--開始使用微信接口

 3、接入微信的鏈接處理

上面說了,你申請開發模式對菜單或對其他API的調用,你需要順利通過接入微信的測試,也就是確認你填寫的鏈接存在並能順利經過微信的回調測試。微信提供了一個PHP的頁面處理例子,如果我們是C#開發的呢,可以搜一下就會得到答案,我的處理方式如下所示。

創建一個一般處理程序,然後在其處理頁裡面增加一個處理邏輯,如果是非POST方式的內容,就是表示微信進行的Get測試,你需要增加一些處理邏輯,把它給你的內容傳回去即可,如果是POST方式的,就是微信伺服器對介面訊息的請求操作了,後面介紹。

    /// <summary>
    /// 微信接口。统一接收并处理信息的入口。    /// </summary>
    public class wxapi : IHttpHandler
    {        public void ProcessRequest(HttpContext context)
        {            string postString = string.Empty;            if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST")
            {                using (Stream stream = HttpContext.Current.Request.InputStream)
                {
                    Byte[] postBytes = new Byte[stream.Length];
                    stream.Read(postBytes, 0, (Int32)stream.Length);
                    postString = Encoding.UTF8.GetString(postBytes);
                }                if (!string.IsNullOrEmpty(postString))
                {
                    Execute(postString);
                }
            }            else
            {                Auth(); //微信接入的测试            }
        }
登入後複製

一般來說,Auth函數裡面,就是要對相關的參數進行獲取,然後進行處理返回給微信伺服器。

            string token = "****";//你申请的时候填写的Token

            string echoString = HttpContext.Current.Request.QueryString["echoStr"];            string signature = HttpContext.Current.Request.QueryString["signature"];            string timestamp = HttpContext.Current.Request.QueryString["timestamp"];            string nonce = HttpContext.Current.Request.QueryString["nonce"];
登入後複製

完整的Author函數程式碼如下所示,其中我把業務邏輯進行進一步抽取到了一個新的類別裡面,方便業務邏輯的管理。

        /// <summary>
        /// 成为开发者的第一步,验证并相应服务器的数据        /// </summary>
        private void Auth()
        {            string token = ConfigurationManager.AppSettings["WeixinToken"];//从配置文件获取Token
            if (string.IsNullOrEmpty(token))
            {
                LogTextHelper.Error(string.Format("WeixinToken 配置项没有配置!"));
            }            string echoString = HttpContext.Current.Request.QueryString["echoStr"];            string signature = HttpContext.Current.Request.QueryString["signature"];            string timestamp = HttpContext.Current.Request.QueryString["timestamp"];            string nonce = HttpContext.Current.Request.QueryString["nonce"];            if (new BasicApi().CheckSignature(token, signature, timestamp, nonce))
            {                if (!string.IsNullOrEmpty(echoString))
                {
                    HttpContext.Current.Response.Write(echoString);
                    HttpContext.Current.Response.End();
                }
            }
        }
登入後複製

而對微信參數的簽章並回傳的操作CheckSignature,程式碼如下圖所示。

        /// <summary>
        /// 验证微信签名        /// </summary>
        public bool CheckSignature(string token, string signature, string timestamp, string nonce)
        {            string[] ArrTmp = { token, timestamp, nonce };

            Array.Sort(ArrTmp);            string tmpStr = string.Join("", ArrTmp);

            tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
            tmpStr = tmpStr.ToLower();            if (tmpStr == signature)
            {                return true;
            }            else
            {                return false;
            }
        }
登入後複製

4、使用開發方式建立選單

一旦你順利通過微信的認證,那麼它就讓你以開發方式呼叫它的API,並且可以隨意創建你的選單了。

創建選單的方式,你可以透過下面的位置進入到他的API處理介面裡面。

C#開發微信入口網站及應用(1)--開始使用微信接口

進入後,你會發現微信把很多訊息的處理,分門別類放到不同的分類裡面了。

C#開發微信入口網站及應用(1)--開始使用微信接口

其實我們現在初步要做的就是如何看看,使用程式碼方式呼叫建立選單,進入選單的API偵錯介面裡面。

C#開發微信入口網站及應用(1)--開始使用微信接口

你會發現裡面還需要輸入一個Access_Token的東西,這個是一個會話身份認證,因此你還需要到介面裡面去找這個如何創建的。下面圖的兩個紅色部分,就是我們開始的時候,微信提示我們「開發者憑證」的兩個關鍵參數。

C#開發微信入口網站及應用(1)--開始使用微信接口

弄完這些,你就可以根據獲得的Access_Token進行選單的創建工作了,根據選單的定義,它分為幾類,可以分為URL方式(View),事件方式(Click)。

click:用戶點擊click類型按鈕後,微信伺服器會透過訊息介面推播訊息類型為event 的結構給開發者(參考訊息介面指南),並且帶上按鈕中開發者填寫的key值,開發者可以透過自訂的key值與使用者互動;
view:使用者點擊view類型按鈕後,微信用戶端將會開啟開發者在按鈕中填寫的url值 (即網頁連結),達到開啟網頁的目的,建議與網頁授權取得使用者基本資訊介面結合,取得使用者的登入個人資訊。

 

4、我創建的菜單案例

在隨筆的開始,我公佈了一個二維碼,一旦使用微信掃一掃,進行關注服務號後,那麼就可以看到我自己創建的菜單了。主選單一般最多三列,每個主選單還可以有子選單,他們的文字都有限制的。

我們來看看我公司的微信門戶菜單,看起來是不是很酷呢。

C#開發微信入口網站及應用(1)--開始使用微信接口

 

更多C#開發微信入口網站及應用(1)--開始使用微信介面相關文章請關注PHP中文網!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

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整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)