基本简介
微信公众平台是腾讯公司在微信基础平台上新增的功能模块,通过微信公众平台,每一个人都可以用一个QQ号码,打造自己的一个微信的公众号,并在微信平台上实现和特定群体的文字、图片、语音的全方位沟通、互动。
微信公众平台的功能定位
群发推送:公号主动向用户推送重要通知或趣味内容。
自动回复:用户根据指定关键字,主动向公号提取常规消息;
1对1交流:公号针对用户的特殊疑问,为用户提供1对1的对话解答服务。
说明
压缩包中包含三个文件夹:Senparc.Weixin.MP、Senparc.Weixin.MP.BuildOutPut、Senparc.Weixin.MP.Sample,分别对应Senparc.Weixin.MP.dll源代码项目、Senparc.Weixin.MP.dll输出目录、Web示例,Web示例建议放到公网测试,让微信公众平台自动发送
注意:开始开发之前需要到上面申请一个公众账号,并开启“关键词自动回复 =>公众平台消息接口”,根据提示设置token等信息。
相关示例
效果测试账号(添加后发送文本、位置、图片信息,测试反馈效果):
Senparc.Weixin.MP所有项目文件如下:
Senparc.Weixin.MP几个关键类介绍如下:
Entities/Request*.cs 用于接收微信平台自动发送到服务器的实体(发送过来的是XML),包括文本、位置、图片三类
Entities/Response*.cs 用于反馈给发送人的信息实体(最终会转成XML),包括文本、新闻(图文)两类
Helpers/EntityHelper.cs 用于实体和XML之间的转换(由于其中有许多需要特殊处理的字段和类型,这里不能简单用XML序列化)
Helpers/MsgTypeHelper.cs 用于获取消息类型
CheckSignature.cs 验证请求合法性类
Enums.cs 各种枚举
RequestMessageFactory.cs 用于自动生成不同Request类型的实体,并作必要的数据填充
Senparc.Weixin.MP几个关键类及重要方法(按一般使用过程排序)
生成验证字符串:Senparc.Weixin.MP.CheckSignature.GetSignature(string timestamp, string nonce, string token = null),返回根据微信平台提供的数据,SHA1加密后的验证字符串(注意token必须跟公众平台的设置一直)
验证请求:Senparc.Weixin.MP.CheckSignature.Check(string signature, string timestamp, string nonce, string token = null),验证请求是否合法
获取请求实体:var requestMessage = Senparc.Weixin.MP.RequestMessageFactory.GetRequestEntity(XDocument doc); 根据不同请求的类型,自动生成可用于操作的实体(doc只需要用XDocument.Parse(xmlString)就能生成),requestMessage.MsgType就是请求枚举类型。
进行判断及各类操作。
根据需要,创建响应类型的实体,如:var responseMessage = ResponseMessageBase.CreateFromRequestMessage(requestMessage, ResponseMsgType.Text) as ResponseMessageText; 即可返回文本类型信息。
由于目前微信只接受XML的返回数据,所以在返回之前还需要做一次转换:XDocument responseDoc = Senparc.Weixin.MP.Helpers.EntityHelper.ConvertEntityToXml(responseMessage); var xmlString =responseDoc.ToString();
至此整个微信公众账号的自动响应过程结束。
有用
有用
有用