C#開發微信公衆號(1)

目錄
一、微信公衆號開發說明
二、微信公衆號開發準備----域名和服務器
三、微信公衆號正式開發
3.1、微信開發原理
3.2、正式開發
3.2.1、配置微信官網服務器
3.2.2、開發者的響應方法
3.2.3、源碼下載

一、 微信公衆號開發說明

微信公衆號可以到官網進行申請(官網)。目前微信公衆號分爲兩類:訂閱號、服務號。其服務的主體不一樣。訂閱號主要側重於個人及內容提供者。而服務號側重企業級用戶,更加側重功能及高級接口(例如,微信支付等),所以若是個人,只能申請訂閱號,若是公司,訂閱號和服務號都可以申請。另外,訂閱號和服務號都有是否認證。因此微信公衆平臺共有:未認證訂閱號、認證訂閱號、未認證服務號、認證服務號四種情況。其權限和能夠使用接口的也是逐漸增強和增多。
另外,個人主體申請的訂閱號,目前微信不支持認證,所以個人的訂閱號都是:未認證的訂閱號。支持認證的全部爲企業或單位。按騰訊的收費規則,認證費用是:300元/次/年。因爲微信公衆號的認證是由騰訊授權的第三方完成的,所以需要相關的認證費用。
不同類型的微信公衆號,其權限的說明可以參見:官網說明
這兒有個坑,需要注意!想學習微信公衆號開發的初學者,往往只能成爲未認證的訂閱號,而此類型的公衆號的接口功能比較少,沒法完成類似微信支付等高級功能開發及學習,所以這個地方是個坑。騰訊官網稍微填了點坑,推出了微信公衆號的測試賬號(微信測試賬號),測試賬號提供了部分功能,可以爲開發者提供了一個功能稍微多點的賬號,但是還是沒有很多功能,所以說到底,還是一個坑。這兒要注意!
不過,好在微信公衆號的開發觸類旁通,基本上測試賬號的功能開發的差不多,那其他的接口,雖沒有用過,也能摸到門道,知道個123了。下面開始正式的微信公衆號的開發

二、微信公衆號開發準備----域名和服務器

微信公衆號的開發需要服務器的支持。目前分爲兩種:一種是通過外網穿透工具,將自己電腦的IP地址暴露到公網,供外部訪問。另一種是採用正式的服務器租賃。前者省錢、費事、IP、域名經常換;後者穩定、省事兒、花點錢。建議初學者使用第一種方案,先用自己的電腦作爲服務器練練手進行開發。若怕麻煩,可以網上租個服務器(阿里雲、百度雲等),若有了正式的服務器,那還需要申請一個域名。
這兒有兩個坑,提前說一下。若到網上租用服務器,需要看一下是否爲固定IP地址。當用戶點擊你的微信公衆號後,微信會將相關的內容推送到指定的服務器的IP地址及端口上。若租用的服務器,IP地址是非固定的,則你需要在你的微信公衆號上的IP地址白名單中將服務器的IP地址添加,並且可能會隨時變化,不過好在只是進行開發學習,沒有實際業務,對實際不造成影響,只是稍微麻煩點。當微信服務器返回的代碼標識IP地址不在白名單時,需要登錄公衆號,將此時的IP地址添加到白名單中
第二個坑是域名申請中的,其實也不算坑,只是域名備案時間比較長。域名申請完後,需要向政府備案,一般域名提供商也提供備案協助服務,按要求準備材料即可。唯一一點,辦理時間比較長,一般備案週期在20個工作日左右。有可能短,也有可能長。有了域名和服務器後,就可以正式開始微信公衆號的開發了。

三、微信公衆號正式開發

3.1、微信開發原理

微信公衆號的原理如下圖所示:
微信公衆號的原理示例
當用戶在微信客戶端發起一個請求後(例如:在公衆號裏的輸入一些文字),微信客戶端會將請求傳送到微信官網服務器(如上圖中1所示)。當微信官網服務器收到這個請求後,會將用戶的請求組成規定的格式,然後轉發給開發者服務器(如圖2所示)。開發者服務器經過處理後,會將返回的內容,按照微信指定的格式,返回給微信服務器(如圖3所示)。最後微信官網服務器會將返回的內容,返回至微信客戶端(如圖4所示)。這樣,整個過程就完成。其實,完全可以這麼理解,微信服務器就是一個前端工程師,提前把方法寫好了,你作爲後端的開發者,需要按照前端工程師的方法參數,進行處理,並返回結果。
另外,微信官網服務器不僅僅是轉發請求,它還是一個服務器。這意味着,它不僅僅能接受到微信客戶端發出的請求,它還可以接受開發者服務器發出的請求,並作出響應。例如:你希望自定義開發自己公衆號的菜單功能,所以你可以按照規定的格式組織完菜單數據後,通過你的服務器將菜單設定數據(JSON類型)發送到微信官網的服務器,那麼你的微信公衆號就會展現出你設定的菜單。原理圖如下圖所示
上傳設定的微信服務器

3.2、正式開發

說了這麼多,開始正式進入開發。
本人的開發環境:win10,vs2017社區版,服務器端使用ASP.NET MVC5

3.2.1、配置微信官網服務器

進行微信開發第一步,就是要讓微信官網服務器“承認/認證”開發者的服務器。就是最上面開發原理圖中的步驟2,就是微信服務器收到消息後,要轉發到你的服務器,首先得需要保證它的承認你!具體步驟如下所示
進入微信公衆號後,在左側菜單欄中找到:開發—>基本配置。
基本配置
進入界面後,找到基本配置,填寫服務器配置的界面。如下圖所示:
驗證內容截圖
這裏面填寫的參數,就是要進行微信官網驗證你服務器的相關配置。下面逐項說明各參數的含義:
URL:這個參數就是微信服務器將請求轉發到開發者服務器的URL。這個URL只允許有一個。所以隱含的含義就是:微信服務器會將所有的請求數據統一轉發到這個URL上(也就是開發者服務器上某個特定的方法)。所以開發者必須在這個方法內部完成所有類型的消息處理。
Token:這個可自定義填寫。
Encod:這個可自定義填寫。
填寫完以上的信息後,點擊右下角的提交按鈕,微信官網服務器就會向指定的服務器發出一個GET請求,開發者服務器需要處理該請求,並返回處理後的內容。

3.2.2、開發者的響應方法

在MVC的Controller中實現對請求的處理,實現方法如下:

        public ActionResult BTCHWeChat()
        {
            #region 驗證代碼
            string token = "zhenglin";
            if (string.IsNullOrWhiteSpace(token))
            {
                return null;
            }

            string echoStr = Request.QueryString["echoStr"];//隨機字符串 
            string signature = Request.QueryString["signature"];//微信加密簽名
            string timestamp = Request.QueryString["timestamp"];//時間戳 
            string nonce = Request.QueryString["nonce"];//隨機數 
            string[] ArrTmp = { token, timestamp, nonce };
            Array.Sort(ArrTmp);     //字典排序
            string tmpStr = string.Join("", ArrTmp);
            tmpStr = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
            tmpStr = tmpStr.ToLower();
            if (tmpStr == signature)
            {
                return Content(echoStr);
            }
            else
            {
                return Content("");
            }
            #endregion
        }

此處需要注意的地方:我填寫的URL是:http://www.xxxx.com/Home/BTCHWeChat。這兒要注意好對照。
之後,將自己的代碼發佈到服務器上,然後在微信官網上點擊提交按鈕,就能驗證通過!

3.2.3、源碼下載

驗證的源碼下載:源碼下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章