? ? 這裡給出的demo是具備整體框架的微信公眾平臺(tái)源碼, 所謂demo就是拿過(guò)去就可以直接演示使用的東西, ?當(dāng)然不會(huì)具備非常詳細(xì)的具體到業(yè)務(wù)層面、數(shù)據(jù)層面的東西, 每個(gè)人都可以在此基礎(chǔ)上自由發(fā)揮, ?只要看完前6篇的也一定能發(fā)展出自己的東西。?
demo簡(jiǎn)單易理解,任何人都可以看懂,這裡說(shuō)明下demo跟我實(shí)際專案中的差異:
1、demo沒(méi)有連接資料庫(kù)。 demo下載可以直接使用,連接資料庫(kù)並不是每個(gè)人都很方便,且第1篇中已經(jīng)把完完整整的資料庫(kù)開(kāi)源了,包括設(shè)計(jì)時(shí)的視覺(jué)化介面, 想要連接資料庫(kù)的,在建立資料庫(kù)之後再新增一個(gè)EF連接就好, ?連接方法在第2篇
2、demo沒(méi)有封裝接收到的微信訊息模型。 因?yàn)槭盏降挠嵪⒎庋b的目的是為了進(jìn)行訊息記錄,加入到資料庫(kù),既然沒(méi)有1,這個(gè)就也沒(méi)有了, 訊息封裝第3篇已經(jīng)寫(xiě)出;
3、demo入口處沒(méi)有驗(yàn)證加密簽章。 因?yàn)閐emo是要任何人拿回去就能用的,如果加上加密簽名驗(yàn)證很多人可能調(diào)不通,本地測(cè)試的話根本沒(méi)有加密簽名供驗(yàn)證(實(shí)際上本地測(cè)試可以直接return ? true),為了任何人都能弄清楚,就把驗(yàn)證方法去掉了, ? ? 驗(yàn)證方法的程式碼在第2篇一字不漏;
4、demo沒(méi)有IOC注入和快取相關(guān)。?? 並不是每個(gè)業(yè)務(wù)需求都用得上快取和IOC注入,也並不是每個(gè)人都接觸過(guò)這些,? 為了通用,就去掉了。若你在其他專案中遇到與IOC注入和快取處理相關(guān)的問(wèn)題,都可以問(wèn)我, 很樂(lè)意解答
? ? ?總結(jié):demo就是個(gè)完整的微信公眾平臺(tái)簡(jiǎn)易的框架,且適合任何一個(gè)開(kāi)發(fā)者; ? 實(shí)際專案需要使用的資料庫(kù)相關(guān)的在之前文章也全都有程式碼和操作方法;
根據(jù)demo任何人都可以超快速的做出屬於自己的微信公眾平臺(tái)。
? ? 最重要的是分享整體想法~ ? ? 微信公眾平臺(tái)其實(shí)很簡(jiǎn)單,大多數(shù)人都是沒(méi)有理清訊息接收、處理的來(lái)龍去脈,就拿入口來(lái)說(shuō),就這些不同的case可能很多開(kāi)發(fā)者要很久才能理清(與技術(shù)能力無(wú)關(guān),主要是有些朋友不能一下子想明白),分享出這個(gè)demo源碼,讓任何人都可以入門
public?void?LookMsgType(string?msgType) ????????{ ????????????#region?判斷消息類型 ????????????switch?(msgType) ????????????{ ????????????????case?"text": ????????????????????RText?mText?=?new?RText(); ????????????????????mText?=?ReadXml.GetModel<RText>(mText,?xmlModel); ????????????????????BLLWei.DoText(dbHome,?mText);//文本消息 ????????????????????break; ????????????????case?"image": ????????????????????RImg?mImg?=?new?RImg(); ????????????????????mImg?=?ReadXml.GetModel<RImg>(mImg,?xmlModel); ????????????????????BLLWei.DoImg(dbHome,mImg);//圖片 ????????????????????break; ????????????????case?"voice":?//聲音 ????????????????????RVoice?mVoice?=?new?RVoice(); ????????????????????mVoice?=?ReadXml.GetModel<RVoice>(mVoice,?xmlModel); ????????????????????BLLWei.DoVoice(dbHome,mVoice); ????????????????????break; ????????????????case?"video"://視頻 ????????????????????RVideo?mVideo?=?new?RVideo(); ????????????????????mVideo?=?ReadXml.GetModel<RVideo>(mVideo,?xmlModel); ????????????????????BLLWei.DoVideo(dbHome,?mVideo); ????????????????????break; ????????????????case?"location"://地理位置 ????????????????????RLocation?mLocation?=?new?RLocation(); ????????????????????mLocation?=?ReadXml.GetModel<RLocation>(mLocation,?xmlModel); ????????????????????BLLWei.DoLocation(dbHome,mLocation); ????????????????????break; ????????????????case?"link"://鏈接 ????????????????????RLink?mLink?=?new?RLink(); ????????????????????mLink?=?ReadXml.GetModel<RLink>(mLink,?xmlModel); ????????????????????BLLWei.DoLink(dbHome,mLink); ????????????????????break; ????????????????#region?事件 ????????????????case?"event": ????????????????????switch?(ReadXml.ReadModel("Event",?xmlModel)) ????????????????????{ ????????????????????????case?"subscribe": ????????????????????????????if?(ReadXml.ReadModel("EventKey",?xmlModel).IndexOf("qrscene_")?>=?0) ????????????????????????????{ ????????????????????????????????RCodeNotSub?mNotSub?=?new?RCodeNotSub(); ????????????????????????????????mNotSub?=?ReadXml.GetModel<RCodeNotSub>(mNotSub,?xmlModel); ????????????????????????????????BLLWei.DoCodeNotSub(dbHome,mNotSub);//未關(guān)注的新用戶,掃描帶參數(shù)的二維碼關(guān)注 ????????????????????????????} ????????????????????????????else ????????????????????????????{ ????????????????????????????????RSub?mSub?=?new?RSub(); ????????????????????????????????mSub?=?ReadXml.GetModel<RSub>(mSub,?xmlModel); ????????????????????????????????BLLWei.DoSub(dbHome,mSub);//普通關(guān)注 ????????????????????????????} ????????????????????????????break; ????????????????????????case?"unsubscribe": ????????????????????????????RUnsub?mUnSub?=?new?RUnsub?(); ????????????????????????????mUnSub?=?ReadXml.GetModel<RUnsub>(mUnSub,?xmlModel); ????????????????????????????BLLWei.DoUnSub(dbHome,mUnSub);//取消關(guān)注 ????????????????????????????break; ????????????????????????case?"SCAN": ????????????????????????????RCodeSub?mCodeSub?=?new?RCodeSub(); ????????????????????????????mCodeSub?=?ReadXml.GetModel<RCodeSub>(mCodeSub,?xmlModel); ????????????????????????????BLLWei.DoCodeSub(dbHome,mCodeSub);//已經(jīng)關(guān)注的用戶掃描帶參數(shù)的二維碼 ????????????????????????????break; ????????????????????????case?"LOCATION"://用戶上報(bào)地理位置 ????????????????????????????RSubLocation?mSubLoc?=?new?RSubLocation(); ????????????????????????????mSubLoc?=?ReadXml.GetModel<RSubLocation>(mSubLoc,?xmlModel); ????????????????????????????BLLWei.DoSubLocation(dbHome,?mSubLoc); ????????????????????????????break; ????????????????????????case?"CLICK"://自定義菜單點(diǎn)擊 ????????????????????????????RMenuClick?mMenuClk?=?new?RMenuClick(); ????????????????????????????mMenuClk?=?ReadXml.GetModel<RMenuClick>(mMenuClk,?xmlModel); ????????????????????????????BLLWei.DoMenuClick(dbHome,?mMenuClk); ????????????????????????????break; ????????????????????????case?"VIEW"://自定義菜單跳轉(zhuǎn)事件 ????????????????????????????RMenuView?mMenuVw?=?new?RMenuView(); ????????????????????????????mMenuVw?=?ReadXml.GetModel<RMenuView>(mMenuVw,?xmlModel); ????????????????????????????BLLWei.DoMenuView(dbHome,?mMenuVw); ????????????????????????????break; ????????????????????}; ????????????????????break; ????????????????#endregion ????????????} ????????????#endregion ????????}
? ?後續(xù)我還會(huì)寫(xiě)文章,分享過(guò)程, 只為了分享開(kāi)發(fā)歷程,大家可以看到我這麼些篇文章中所有的截圖都把微信號(hào)、名稱等P掉了,雖然寫(xiě)文章時(shí)截圖也是用的沒(méi)有任何用戶的一般號(hào)做測(cè)試的。 ??
更多asp.net開(kāi)發(fā)微信大眾平臺(tái)(7)前6篇的整體架構(gòu)demo原始碼相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

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

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)