【摘要】微信(We Chat)是時(shí)下最受關(guān)注的移動(dòng)互聯(lián)網(wǎng)產(chǎn)品應(yīng)用,微信公眾平臺(tái)已在各個(gè)行業(yè)中廣泛應(yīng)用。但微信團(tuán)隊(duì)公開的開發(fā)者文檔中接口實(shí)例是用PHP語言進(jìn)行說明的,對(duì)于不熟悉PHP語言的開發(fā)者來說是一個(gè)弊端。筆者在教學(xué)中熟練使用C#語言,因此筆者在微信公眾平臺(tái)開發(fā)模式中,使用C#語言對(duì)數(shù)據(jù)庫中數(shù)據(jù)進(jìn)行操作,力圖為探索基于微信平臺(tái)的微慕課打下基礎(chǔ)。本文在NET環(huán)境下,使用C#語言通過微信平臺(tái)開發(fā)模式接口,對(duì)數(shù)據(jù)庫中的數(shù)據(jù)表進(jìn)行操作,涉及到開發(fā)模式的配置、數(shù)據(jù)庫的配置、微信數(shù)據(jù)發(fā)送、微信數(shù)據(jù)接收等關(guān)鍵技術(shù)點(diǎn)。用戶向公眾賬號(hào)上發(fā)送了一條消息,并收到了公眾賬號(hào)回復(fù)的消息,在這短暫的時(shí)間里(最長5秒鐘),到底發(fā)生了哪些事情,消息經(jīng)歷了哪些處理過程,是本文論述的重點(diǎn)。
【關(guān)鍵詞】 C# .NET;微信;微慕課
1.引言
微信是騰訊公司2011年1月21日推出的一款為智能手機(jī)提供即時(shí)通訊服務(wù)的應(yīng)用,微信支持跨通信運(yùn)營商、跨手機(jī)操作系統(tǒng)(如安卓、蘋果、Windows Phone等),通過網(wǎng)絡(luò)發(fā)送語音、圖片、視頻和文字等信息。
微信用戶、微信服務(wù)器、公眾賬號(hào)服務(wù)器之間的消息交互流程描述如下:
A.微信用戶通過手機(jī)微信平臺(tái)向公眾賬號(hào)發(fā)送消息,微信服務(wù)器接收此消息。
B.微信服務(wù)器把此消息通過HTTP POST 方式傳遞到URL指向的公眾賬號(hào)服務(wù)器。
C.公眾賬號(hào)服務(wù)器對(duì)此數(shù)據(jù)進(jìn)行處理后,發(fā)送給微信服務(wù)器。
D.微信服務(wù)器再把處理后的消息通過公眾賬號(hào)發(fā)送給微信用戶。
2.實(shí)現(xiàn)功能
2.1 注冊(cè)公眾平臺(tái)賬號(hào)
首先到https://mp.weixin.qq.com 中注冊(cè)一個(gè)屬于自己的公眾平臺(tái),具體注冊(cè)流程可參考注冊(cè)頁面中的詳細(xì)介紹。
2.2 啟用開發(fā)模式
開發(fā)模式主要是針對(duì)具有開發(fā)能力的賬號(hào)運(yùn)營者,在開發(fā)模式下,公眾賬號(hào)的功能可以通過編程來實(shí)現(xiàn)。
公眾賬號(hào)審核通過后,就可以正式使用了,登錄到微信公眾平臺(tái)后,可以設(shè)置自己的Logo、賬號(hào)信息等內(nèi)容。
在高級(jí)功能中,默認(rèn)情況下,公眾平臺(tái)開啟的是編輯模式,如果我們想開啟開發(fā)模式,我們必須先完善好資料成為開發(fā)者。要使用公眾平臺(tái)的開發(fā)模式,必須先填寫好配置信息中的URL和Token,事先需要開發(fā)者在公網(wǎng)上有一個(gè)服務(wù)器空間。
URL:http://服務(wù)器空間IP地址/default.aspx
Token:MyToken
2.3 消息接收
當(dāng)微信用戶向公眾賬號(hào)上發(fā)消息時(shí),微信服務(wù)器將POST消息的XML數(shù)據(jù)包發(fā)送到筆者填寫的URL中的default.aspx文件響應(yīng)。開發(fā)的請(qǐng)求校驗(yàn)程序必須能處理HTTP GET請(qǐng)求,而且還要對(duì)請(qǐng)求者的身份進(jìn)行驗(yàn)證,公眾賬號(hào)服務(wù)器與微信服務(wù)器之間的數(shù)據(jù)傳輸格式是XML。剛開始定義了Token值,這個(gè)Token值非常重要,和2.2章節(jié)中配置Token時(shí)必須保持一致。
2.4 消息發(fā)送
對(duì)于每一位微信用戶發(fā)過來的消息,需要處理這些消息,處理完成后,響應(yīng)包中返回的特定XML結(jié)構(gòu),并對(duì)該消息進(jìn)行響應(yīng)。目前支持的消息有文本、圖片、語音、視頻、音樂、圖文。
3.測試
當(dāng)筆者使用手機(jī)微信,向自己的微信公眾賬號(hào)中輸入“合肥”點(diǎn)擊“發(fā)送”,系統(tǒng)會(huì)自動(dòng)把“0551”發(fā)送到筆者手機(jī)中。至此可以驗(yàn)證本文功能已實(shí)現(xiàn)。
4.結(jié)束語
通過以上代碼實(shí)例筆者實(shí)現(xiàn)了,微信用戶從手機(jī)微信平臺(tái)向筆者公眾賬號(hào)上發(fā)送信息,筆者服務(wù)器default.aspx文件接收到信息后,在數(shù)據(jù)庫中進(jìn)行查詢,對(duì)查詢到的數(shù)值推送給微信用戶,從而實(shí)現(xiàn)了微信用戶、微信服務(wù)器、公眾賬號(hào)服務(wù)器(筆者部署default.aspx文件的服務(wù)器)之間數(shù)據(jù)交互的功能。
參考文獻(xiàn)
[1]Christian Nagel.C#高級(jí)編程(第7版)[M].清華大學(xué)出版社,2010-1-1.
[2]Andrew Troelsen.C#與.NET 4高級(jí)程序設(shè)計(jì)(第5版)[M].人民郵電出版社,2011-4-1.
[3]柳峰.微信公眾平臺(tái)應(yīng)用開發(fā)方法、技巧與案例[M].機(jī)械工業(yè)出版社,2014,3.
[4]鐘志勇.微信公眾平臺(tái)應(yīng)用開發(fā)實(shí)戰(zhàn)[M].機(jī)械工業(yè)出版社,2014,1.
基金項(xiàng)目:精品資源共享課程項(xiàng)目(2013gxk160);安徽省質(zhì)量工程項(xiàng)目(2012sjjd073)。