微信應(yīng)用如火如荼,很多公司都希望搭上信息快車,這個是一個商機(jī),也是一個技術(shù)的方向,因此,有空研究下、學(xué)習(xí)下微信的相關(guān)開發(fā),也就成為日常計劃的重要事情之一了。本系列文章希望從一個循序漸進(jìn)的角度上,全面介紹微信的相關(guān)開發(fā)過程和相關(guān)經(jīng)驗總結(jié),希望給大家了解一下相關(guān)的開發(fā)歷程。本隨筆主要針對微信開發(fā)過程的前期準(zhǔn)備和一些初始的工作的介紹。
在寫下本文的之前一周時間里,我主要就是參考一些介紹文章以及微信公眾平臺的相關(guān)接口說明,并結(jié)合C#的代碼開發(fā),整理了自己公司的門戶界面,實現(xiàn)了微信工作號的初步用戶交互和信息展示工作,隨著工作的進(jìn)一步開展,越來越多的功能可能加入,并希望從應(yīng)用角度上擴(kuò)展微信的接口,從而實現(xiàn)我對微信接口的技術(shù)探秘和了解過程。
1、微信賬號
要開發(fā)使用微信的平臺API,就需要到微信的公眾平臺(https://mp.weixin.qq.com/)去注冊,擁有一個服務(wù)號或者訂閱號,服務(wù)號主要面對企業(yè)和組織,訂閱號主要面向組織和個人,他們之間有一定的差異,根據(jù)不同的需要自己申請對應(yīng)的賬號即可。
為了使用一些高級的接口,你可能需要擁有服務(wù)號和高級的認(rèn)證。賬號注冊過程,需要下載一個申請表格,打印并蓋公章,另外還需要申請人拿著身份證拍照(有點(diǎn)怪異,呵呵),然后上傳到服務(wù)器進(jìn)行審核,一般很快就能獲取批復(fù)。
我以公司名義申請了服務(wù)號,賬號注冊后,會在主界面上顯示你的相關(guān)信息,另外給你申請一個二維碼的東西,掃描二維碼即可進(jìn)入公司的微信關(guān)注確認(rèn)對話框,非常方便。如下就是我申請后的公司賬號二維碼,可以直接使用掃描。
2、微信菜單定義
微信有兩種方式的菜單定義,一種是編輯模式,一種是開發(fā)模式,兩者互斥,也就是說,一旦我們采用了開發(fā)模式,就不能使用編輯模式了,反過來也一樣。編輯下的菜單,其實也是可以管理的,但是微信不支持,覺得很不爽。
一般情況下,如果我們剛剛申請了微信號碼,可以使用編輯菜單測試一下,根據(jù)說明編輯一些菜單試試。雖然微信說24小時內(nèi)更新,不過一般很快,最快可能一兩分鐘就更新了,感覺還是不錯的。
使用開發(fā)者模式,你需要根據(jù)微信的要求,在服務(wù)器上放置一個頁面鏈接,使用C#開發(fā)的,可以采用***.ashx的命名方式,使用Asp.NET的一般處理程序即可,不需要使用普通的頁面。
使用開發(fā)模式的菜單,也就是可以調(diào)用微信API進(jìn)行菜單創(chuàng)建的工作,對于調(diào)用微信的API(微信有很多API可以調(diào)用),我們需要知道,有幾個參數(shù)的重要性,所以在開發(fā)模式打開的時候,會給你列出這些參數(shù),如下所示。
?3、接入微信的鏈接處理
上面說了,你申請開發(fā)模式對菜單或者對其他API的調(diào)用,你需要順利通過接入微信的測試,也就是確認(rèn)你填寫的鏈接存在并能順利經(jīng)過微信的回調(diào)測試。微信提供了一個PHP的頁面處理例子,如果我們是C#開發(fā)的呢,可以搜一下就會得到答案,我的處理方式如下所示。
創(chuàng)建一個一般處理程序,然后在其處理頁面里面增加一個處理邏輯,如果是非POST方式的內(nèi)容,就是表示微信進(jìn)行的Get測試,你需要增加一些處理邏輯,把它給你的內(nèi)容傳回去即可,如果是POST方式的,就是微信服務(wù)器對接口消息的請求操作了,后面介紹。
????///?<summary> ????///?微信接口。統(tǒng)一接收并處理信息的入口。????///?</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函數(shù)里面,就是要對相關(guān)的參數(shù)進(jìn)行獲取,然后進(jìn)行處理返回給微信服務(wù)器。
????????????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函數(shù)代碼如下所示,其中我把業(yè)務(wù)邏輯進(jìn)行進(jìn)一步抽取到了一個新的類里面,方便業(yè)務(wù)邏輯的管理。
????????///?<summary> ????????///?成為開發(fā)者的第一步,驗證并相應(yīng)服務(wù)器的數(shù)據(jù)????????///?</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(); ????????????????} ????????????} ????????}
而對微信參數(shù)的簽名并返回的操作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、使用開發(fā)方式創(chuàng)建菜單
一旦你順利通過微信的認(rèn)證,那么它就讓你以開發(fā)方式調(diào)用它的API,并且可以隨意創(chuàng)建你的菜單了。
創(chuàng)建菜單的方式,你可以通過下面的位置進(jìn)入到他的API處理界面里面。
進(jìn)入后,你會發(fā)現(xiàn)微信把很多消息的處理,分門別類放到不同的分類里面了。
其實我們現(xiàn)在初步要做的就是如何看看,使用代碼方式調(diào)用創(chuàng)建菜單,進(jìn)入菜單的API調(diào)試界面里面。
你會發(fā)現(xiàn)里面還需要輸入一個Access_Token的東西,這個是一個會話身份認(rèn)證,因此你還需要到接口里面去找這個如何創(chuàng)建的。下面圖中的兩個紅色部分,就是我們開始的時候,微信提示我們“開發(fā)者憑據(jù)”的兩個關(guān)鍵參數(shù)。
弄完這些,你就可以根據(jù)獲得的Access_Token進(jìn)行菜單的創(chuàng)建工作了,根據(jù)菜單的定義,它分為幾類,可以分為URL方式(View),事件方式(Click)。
click:用戶點(diǎn)擊click類型按鈕后,微信服務(wù)器會通過消息接口推送消息類型為event 的結(jié)構(gòu)給開發(fā)者(參考消息接口指南),并且?guī)习粹o中開發(fā)者填寫的key值,開發(fā)者可以通過自定義的key值與用戶進(jìn)行交互;
view:用戶點(diǎn)擊view類型按鈕后,微信客戶端將會打開開發(fā)者在按鈕中填寫的url值 (即網(wǎng)頁鏈接),達(dá)到打開網(wǎng)頁的目的,建議與網(wǎng)頁授權(quán)獲取用戶基本信息接口結(jié)合,獲得用戶的登入個人信息。
?
4、我創(chuàng)建的菜單案例
在隨筆的開始,我公布了一個二維碼,一旦使用微信掃一掃,進(jìn)行關(guān)注服務(wù)號后,那么就可以看到我自己創(chuàng)建的菜單了。主菜單一般最多三列,每個主菜單還可以有子菜單,他們的文字都有所限制的。
我們來看看我公司的微信門戶菜單,看起來是不是很酷呢。
?
更多C#開發(fā)微信門戶及應(yīng)用(1)--開始使用微信接口相關(guān)文章請關(guān)注PHP中文網(wǎng)!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)