• 章节:29
  • 访问:1998
  • 时长:00:12:59
  • 日期:2017-03-20 09:13

下面这幅图是Senparc.Weixin博客园提供的,本教程也是基于它
原理图很简单
就是危险服务器帮我们
将用户发你的公众号的消息
进行转发给网站来处理
网站处理好 再发给微信服务器
微信服务器才交给危险客户端

我们关心哪里?

以上五个步骤,其实作为开发者,我们主要是在我们网站这边 也就是步骤三
步骤三,说白了 也就是处理三个问题
1 取得微信服务器Post过来的数据 通常是XML文档
2 在C#代码里面 进行逻辑的处理 比如自动回复
3 将2中处理的结果 封装称XML 再发给微信服务器(可能是Get或者Post)
1 和3 这两个 其实senparc已经帮我么做了

XML文档格式

微信服务器和我们网站基本是使用XML的字符串进行通讯
用户微信客户端--(文字 语言 图片 图文等的XML文档)-->微信服务器
下面是一个常用的XML文档
其他的文档格式也差不多
只是字段多了或者少了一些
XML文档里面的节点都是比较常用的
作为开发者 理解一下 节点的意思 也是很有必要的

XML文档节点解析

我们网站收到的请求文档RequestMessage

我们网站发给微信服务器的响应文档ResponseMessage

开发中注意的问题
XML文档不能太大,如文本消息,内容Content不要超过600字
上面的5个步骤中,步骤3的处理事件不能超过5秒,如果超过了 即时再进行步骤4 微信客户端也是收不到消息的


在文本消息中,是允许添加<a>标签来放置连接的,但是有许多朋友测试之后发现iOS没问题,Android上链接无法点击,其实原因是(至少目前为止):Android的微信客户端对<a>标签格式的判定比较严格,请严格按照这个格式书写:<a href="http://xxxx">内容</a>,href后不要使用单引号,也不要添加其他属性
上面XML节点中的FromUserName即微信用户的OpenId,对于同一个公众账号,这个OpenId的前6位是一致的,并且在整个公众平台的记录中也是唯一的。也就是说同一个用户关注了两个不同的公众账号,他会有两个不同的OpenId
CreateTime使用的是Unix时间,因此如果使用C#的话,需要做一个转换

Senparc.Weixin的主要作用

作者原话:帮助C#开发者简化整个通讯过程,面向对象地处理消息,把主要精力放到业务逻辑上,而非繁琐的API上
说白了 就是作者帮我们封装好了微信服务器的接收和响应接口,我们不需要再拆解xml和封装xml 然后POST和Get数据了
我们只需要关心我们的业务逻辑如何处理
当然,如果大家想理解微信公众平台基础接口 可以看我们北盟网校的另外一套微信接口的课程
可以到这里下载Senparc.Weixin 源码
http://github.com/JeffreySu/WeiXinMPSDK/