快速开发微信公众平台框架:简介

年底了,比较忙,大家都在展望未来,对于30+的我来说,发展和稳定是个难以取舍的问题。最近发了些求职信,鸟无音讯,没事做,做点帮助大家的东西吧。

之前做了个微信公众平台的查询系统,在开发中,发觉了一些微信公众平台的接口问题《对微信公众平台开发的消息处理》,开发起来比较痛苦,对于微信过来的消息,需要解析后一个一个来返回,编写之痛苦,相信有人明白。在开发中,一直考虑着如何来简化开发,暂时想不到好的模式来开发,就自己胡乱写了一个,希望对大家有帮助。

代码已发布到github:https://github.com/JamesYing/JCWX

第一步:创建Model类库,我把微信发送来的消息,事件、返回回去的消息,都写成了Demo

RequestMessage:微信发送过来的消息、事件。此类是个虚类,继承自WXMessage。

ResponseMessage:返回给微信服务器端的消息,同样也是虚类,继承自WXMessage。

在《对微信公众平台开发的消息处理》中,已经知道,微信服务器端通过Post方式,发来一段xml,通过Request.InputStream获取,是个Stream类型,之前一直考虑着,用XmlSerializer.Deserialize(stream)来解析成对象,但在实践当中,发觉无法判断MsgType,我必须先判断再解析,从性能上来说不太合适,所以我又重写了RequestMessage的构造函数,RequestMessage(XElement),把Stream –> XElement,就可以构造RequestMessage(要使用.net framework 3.5以上版本,您也可以自己修改成适合3.5以下版本)。不过我还是保留了原先的Deserialize方式,使用方法:RequestMessage.Deserializ<RequestMessage>(stream),具体可以参考我的源代码。

我们知道返回给用户的也是一个Xml信息,您可以直接使用ResponseMessage.Serializable()返回给用户xml文档。ResponseMessage的构造函数中,有一个ResponseMessage(RequestMessage message),这是为了把FromUserName, ToUserName转换一下,后续文章会继续讲解。

第二步:创建了Business类库,提供一些公开接口,方便大家来进行开发。

IMessageRole:信息处理规则,规则的具体实现,请继承此接口

IMessageHandler:信息处理,根据信息,反馈给用户。

NotHandlerMessage:继承自IMessageHandler,这是一个在无法处理情况下,返回一个null的实现,您也可以自己来写。

IMessageRole接口中,只有一个IMessageHandler MessageRole(XElement xml);方法,为了提高性能,我把过来的Stream转换成了XElement,通过xml.Element(“MsgType”)进行类型判断,返回一个IMessageHandler。

IMEssageHandler:ResponseMessage HandlerRequestMessage(XElement xml);根据不同的Request返回给用户不同的ResponseMessage。

这个快速框架就这些,很简单,实践的话,需要自己编写:

1、信息处理规则,继承IMessageRole,在处理中,您可以根据MsgType进行分析,也可以根据不同Text内容进行分析,返回不同IMessageHanlder就可以了。

2、信息处理,继承IMessageHandler,这个可能要写很多个,看你的项目要求了。

微信公众平台提供了测试接口,但暂时我还没有用,就简单自己模拟了下。

创建一个RequestTextMessage(文本信息):

var request = new RequestTextMessage
            {
                ToUserName = "sh_bus",
                FromUserName = "jamesying1",
                MsgId = 123123123L,
                CreateTime = 1231231322L,
                Content = "my request message"
            };

模拟成Stream:

StringWriter sw = new StringWriter();
           var xmlSerializer = new XmlSerializer(typeof(RequestTextMessage));
           var ns = new XmlSerializerNamespaces();
           ns.Add("", "");
           xmlSerializer.Serialize(sw, request, ns);
           Console.WriteLine(sw.ToString());
           Stream stream = new MemoryStream(sw.Encoding.GetBytes(sw.ToString()));

返回栏目页:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索开发
, request.inputstream
, 微信接口
, 微信公众平台开发
, 测试结果自动发了回去
, xmlserializer
, 消息
, 微信公众平台 开发
, 微信公众平台开发者
, 信息
, 处理
, sw二次开发
, 微信开发微信支付
, 一个
公众
,以便于您获取更多的相关知识。

时间: 2024-10-30 20:58:49

快速开发微信公众平台框架:简介的相关文章

微信快速开发框架(二) -- 快速开发微信公众平台框架---简介

年底了,比较忙,大家都在展望未来,对于30+的我来说,发展和稳定是个难以取舍的问题.最近发了些求职信,鸟无音讯,没事做,做点帮助大家的东西吧. 之前做了个微信公众平台的查询系统,在开发中,发觉了一些微信公众平台的接口问题<对微信公众平台开发的消息处理>,开发起来比较痛苦,对于微信过来的消息,需要解析后一个一个来返回,编写之痛苦,相信有人明白.在开发中,一直考虑着如何来简化开发,暂时想不到好的模式来开发,就自己胡乱写了一个,希望对大家有帮助. 代码已发布到github:https://githu

PHP使用Face++接口开发微信公众平台人脸识别系统的方法_php实例

本文实例讲述了PHP使用Face++接口开发微信公众平台人脸识别系统的方法.分享给大家供大家参考.具体如下: 效果图如下: 具体步骤如下: 首先,先登录Face++的官网注册账号:官网链接 注册之后会获取到api_secret和api_key,这些在调用接口的时候需要用到. 然后接下来的就是使用PHP脚本调用API了. 在使用PHP开发微信公共平台的时候,推荐使用Github上的一款不错的框架:wechat-php-sdk 对于微信的常用接口做了一些封装,核心文件wechat.class.php

asp.net开发微信公众平台之获取用户消息并处理

  这篇文章主要介绍了asp.net开发微信公众平台之获取用户消息并处理的相关资料,需要的朋友可以参考下 获取用户消息 用户发送的消息是在微信服务器发送的一个HTTP POST请求中包含的,获取用户发送的消息要从POST请求的数据流中获取 微信服务器推送消息到服务器的HTTP请求报文示例 POST /cgi-bin/wxpush? msg_signature=477715d11cdb4164915debcba66cb864d751f3e6×tamp=1409659813&nonce=137262

asp.net开发微信公众平台之验证消息的真实性

  这篇文章主要介绍了asp.net开发微信公众平台之验证消息的真实性的相关资料,需要的朋友可以参考下 验证消息的真实性 在MVC Controller所在项目中添加过滤器,在过滤器中重写 public override void OnActionExecuting(ActionExecutingContext filterContext)方法 新建数据模型 注:服务器接收消息时,不再是signature而是msg_signature 微信服务器推送消息到服务器的HTTP请求报文示例 POST

微信公众平台开发-微信公众平台开(echostr校验失败,请您检查是否正确解密并输出明文echost)

问题描述 微信公众平台开(echostr校验失败,请您检查是否正确解密并输出明文echost) 开发-微信公众平台开(echostr校验失败,请您检查是否正确解密并输出明文echost)-echostr校验失败">企业号开启回调模式 echostr校验失败,请您检查是否正确解密并输出明文echostr 在新浪日志中看到签名验证失败,ase解密失败 .大牛们能不能解决呀.用的是Java 开发 解决方案 这个能解决么:http://www.cnblogs.com/txw1958/p/token

微信公众平台开发-微信公众平台的系统设计

问题描述 微信公众平台的系统设计 大神们,请问做一个微信公众平台的系统会用到什么技术?难不难实现,最近在搞毕业论文,不知道要不要写这个题目,所以想要大神们给点意见,告诉我要不要选一个这种题目,我目前只会做用java写的系统,求解答--开发-微信公众平台的系统设计-微信公众平台答题系统"> 解决方案 ? 最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的- ? ? 今天来分享一下开发经验~ 微信公众平台提供的接口很简单,先看看消息交互流程: ? ? 说的通俗一些,用户使用微信发送消

服务器-关于用java开发微信公众平台开发 token验证失败的问题

问题描述 关于用java开发微信公众平台开发 token验证失败的问题 大家好,最近在学习用java开发微信公众平台,第一次写的代码token验证通过了,用的是阿里云的服务器换系统(server2008->2003)后就怎么也通过不过验证.直接输入域名www.zhenggufang.com/aip/longin网页显示404.域名也已经备过案.服务器上的tomcat也启动正常tomcat/conf/server也修改了.多谢提交还是token验证失败.请各位帮忙看看代码如下: package s

微信开发-微信公众平台响应失败的疑问

问题描述 微信公众平台响应失败的疑问 开发-微信公众平台响应失败的疑问-微信公众平台扫码失败"> 最近用java在写微信公众平台,遇到了一个问题,不知道大家有没有什么好的解决办法. 就是我对用户发出的不同类型的消息做出相应的回复,但是,有时正常回复,有时就会提示说"该公众号暂时无法提供服务,请稍后再试". 我觉得应该不是代码的问题吧,不然不会时好时坏的 解决方案 哪些类型的会提示 "该公众号暂时无法提供服务,请稍后再试"? 你的微信号是 服务号 还是

java-谁能给以个JAVA开发微信公众平台JSSDK使用的教程

问题描述 谁能给以个JAVA开发微信公众平台JSSDK使用的教程 谁能给以个JAVA开发微信公众平台JSSDK使用的教程, 以前没接触过 自己研究又时间太紧 跪求一个教程!!! 解决方案 java微信公众平台开发教程分享微信公众平台开发教程Java版(六) 事件处理(菜单点击/关注/取消关注)微信公众平台开发教程Java版(一)环境准备篇---------------------- 解决方案二: 到微信公众平台开发者中心查阅相关资料 解决方案三: 官方去找例子吧,这样的资料好少,也可以问官方的客