这里给出的demo是具备整体框架的微信公众平台源码, 所谓demo就是拿过去就可以直接演示使用的东西, 当然不会具备非常详细的具体到业务层面、数据层面的东西, 每个人都可以在此基础上自由发挥, 只要看完前6篇的也一定能开发出自己的东西。
demo简单易理解,任何人都可以看明白,这里说明下demo跟我实际项目中的区别:
1、demo没有连接数据库。 demo下载可以直接使用,连接数据库并不是每个人都很方便,且第1篇中已经把完完整整的数据库开源了,包括设计时的可视化界面, 想要连接数据库的,创建数据库之后添加一个EF连接就好, 连接方法在第2篇
2、demo没有封装接收到的微信消息模型。 因为收到的消息封装的目的是为了进行消息记录,添加到数据库,既然没有1,这个就也没有了, 消息封装第3篇已经写出;
3、demo入口处没有验证加密签名。 因为demo是要任何人拿回去就能用的,如果加上加密签名验证很多人可能调不通,本地测试的话根本没有加密签名供验证(实际上本地测试可以直接return true),为了任何人都能弄懂,就把验证方法去掉了, 验证方法的代码在第2篇一字不漏;
4、demo没有IOC注入和缓存相关。 并不是每个业务需求都用得上缓存和IOC注入,也并不是每个人都接触过这些, 为了通用,就去掉了。 若你在其他项目中遇到IOC注入和缓存处理相关的问题,都可以问我, 很乐意解答
总结:demo就是个完整的微信公众平台简易的框架,且适合任何一个开发者; 实际项目需要使用的数据库相关的在之前文章也全都有代码和操作方法;
根据demo任何人都可以超快速的做出属于自己的微信公众平台。
最重要的是分享整体思想~ 微信公众平台其实很简单,大多数人都是没有理清消息接收、处理的来龙去脉,就拿入口来说,就这些不同的case可能很多开发者都要很久才能理清(与技术能力无关,主要是有些朋友不能一下子想明白),分享出这个demo源码,让任何人都可以入门
1 public void LookMsgType(string msgType) 2 { 3 4 #region 判断消息类型 5 switch (msgType) 6 { 7 case "text": 8 RText mText = new RText(); 9 mText = ReadXml.GetModel<RText>(mText, xmlModel); 10 BLLWei.DoText(dbHome, mText);//文本消息 11 break; 12 case "image": 13 RImg mImg = new RImg(); 14 mImg = ReadXml.GetModel<RImg>(mImg, xmlModel); 15 BLLWei.DoImg(dbHome,mImg);//图片 16 break; 17 case "voice": //声音 18 RVoice mVoice = new RVoice(); 19 mVoice = ReadXml.GetModel<RVoice>(mVoice, xmlModel); 20 BLLWei.DoVoice(dbHome,mVoice); 21 break; 22 23 case "video"://视频 24 RVideo mVideo = new RVideo(); 25 mVideo = ReadXml.GetModel<RVideo>(mVideo, xmlModel); 26 BLLWei.DoVideo(dbHome, mVideo); 27 break; 28 29 case "location"://地理位置 30 RLocation mLocation = new RLocation(); 31 mLocation = ReadXml.GetModel<RLocation>(mLocation, xmlModel); 32 BLLWei.DoLocation(dbHome,mLocation); 33 break; 34 case "link"://链接 35 RLink mLink = new RLink(); 36 mLink = ReadXml.GetModel<RLink>(mLink, xmlModel); 37 BLLWei.DoLink(dbHome,mLink); 38 break; 39 #region 事件 40 case "event": 41 42 switch (ReadXml.ReadModel("Event", xmlModel)) 43 { 44 case "subscribe": 45 46 if (ReadXml.ReadModel("EventKey", xmlModel).IndexOf("qrscene_") >= 0) 47 { 48 RCodeNotSub mNotSub = new RCodeNotSub(); 49 mNotSub = ReadXml.GetModel<RCodeNotSub>(mNotSub, xmlModel); 50 BLLWei.DoCodeNotSub(dbHome,mNotSub);//未关注的新用户,扫描带参数的二维码关注 51 } 52 else 53 { 54 RSub mSub = new RSub(); 55 mSub = ReadXml.GetModel<RSub>(mSub, xmlModel); 56 BLLWei.DoSub(dbHome,mSub);//普通关注 57 } 58 break; 59 case "unsubscribe": 60 RUnsub mUnSub = new RUnsub (); 61 mUnSub = ReadXml.GetModel<RUnsub>(mUnSub, xmlModel); 62 BLLWei.DoUnSub(dbHome,mUnSub);//取消关注 63 break; 64 65 case "SCAN": 66 RCodeSub mCodeSub = new RCodeSub(); 67 mCodeSub = ReadXml.GetModel<RCodeSub>(mCodeSub, xmlModel); 68 BLLWei.DoCodeSub(dbHome,mCodeSub);//已经关注的用户扫描带参数的二维码 69 break; 70 case "LOCATION"://用户上报地理位置 71 72 RSubLocation mSubLoc = new RSubLocation(); 73 mSubLoc = ReadXml.GetModel<RSubLocation>(mSubLoc, xmlModel); 74 75 BLLWei.DoSubLocation(dbHome, mSubLoc); 76 break; 77 case "CLICK"://自定义菜单点击 78 79 RMenuClick mMenuClk = new RMenuClick(); 80 mMenuClk = ReadXml.GetModel<RMenuClick>(mMenuClk, xmlModel); 81 BLLWei.DoMenuClick(dbHome, mMenuClk); 82 break; 83 case "VIEW"://自定义菜单跳转事件 84 85 RMenuView mMenuVw = new RMenuView(); 86 mMenuVw = ReadXml.GetModel<RMenuView>(mMenuVw, xmlModel); 87 BLLWei.DoMenuView(dbHome, mMenuVw); 88 break; 89 }; 90 break; 91 #endregion 92 } 93 #endregion 94 }
后续我还会写文章,分享过程, 只为了分享开发历程,大家可以看到我这么些篇文章中所有的截图都把微信号、名称等P掉了,虽然写文章时截图也是用的没有任何用户的一般号做测试的。
很多人下载之后无法正常使用,鉴于此刚刚新建的QQ群,有问题可以问我:群号183695596
群里提供两种形式的源码下载,方便使用。