这里给出的demo是微信公众平台的源码,整体框架。 所谓demo就是过去可以直接演示和使用的东西。 当然,它不会有非常详细的具体到业务层面和数据层面的东西。 在此基础上,你可以自由发挥,只要读完前6篇,就能开发出属于自己的东西。
该演示简单易懂,任何人都可以理解。 这是演示和我的实际项目之间的区别:
1、demo没有连接数据库。 可以直接使用demo下载。 每个人都不容易连接到数据库。 在第一篇文章中,完整的数据库已经开源,包括设计时的可视化界面。 如果要连接数据库,请在创建数据库后添加一个 EF。 连接即可,连接方法在Part 2
2、demo没有封装接收到的微信消息模型。 因为接收到的消息封装的目的是记录消息并添加到数据库中,既然没有1,就没有这个东西。 消息封装的第三部分已经写好了;
3. 加密签名在demo入口未验证。 因为这个demo谁拿回来都可以用,如果加上加密签名验证,可能很多人都无法调整,而且本地测试根本没有加密签名进行验证(其实就是本地测试 可以直接返回true),这样大家如果看懂了就去掉验证方法,验证方法的代码在第二部分就不省略了;
4、demo与IOC注入和缓存无关。 不是每个业务需求都可以使用缓存和 IOC 注入,也不是每个人都接触过这些。 出于一般目的,它们被删除。 如果你在其他项目中遇到IOC注入和缓存处理相关的问题,可以问我,我很乐意为你解答
总结:demo是微信公众平台一个完整简单的框架,适合任何开发者; 前面文章中需要用到的实际项目相关的数据库也都有代码和操作方法;
根据演示,任何人都可以超快地制作自己的微信公众平台。
最重要的是分享整体思路~微信公众平台其实很简单。 大多数人不了解消息接收和处理的来龙去脉。 以入口为例,很多开发者可能需要很长时间才能理解这些不同的案例。 清晰(和技术能力无关,主要是有些朋友一下子看不懂),分享这个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 }
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!