本篇文章主要介绍了" NET微信公众号开发之公众号消息处理",主要涉及到方面的内容,对于.NETjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
一.前言 微信公众平台的消息处理还是比较完善的,有最基本的文本消息,到图文消息,到图片消息,语音消息,视频消息,音乐消息其基本原理都是一样的,只不过所post...
一.前言
微信公众平台的消息处理还是比较完善的,有最基本的文本消息,到图文消息,到图片消息,语音消息,视频消息,音乐消息其基本原理都是一样的,只不过所post的xml数据有所差别,在处理消息之前,我们要认真阅读,官方给我们的文档:http://mp.weixin.qq.com/wiki/14/89b871b5466b19b3efa4ada8e577d45e.html。首先我们从最基本的文本消息处理开始。
12345678
我们可以看到这是消息处理的一个最基本的模式,有发送者,接受者,创建时间,类型,内容等等。
首先我们来创建一个消息处理的类,这个类用来捕获,所有的消息请求,根据不同的消息请求类型来处理不同的消息回复。
public class WeiXinService
{
///
/// TOKEN
///
private const string TOKEN = "finder";
///
/// 签名
///
private const string SIGNATURE = "signature";
///
/// 时间戳
///
private const string TIMESTAMP = "timestamp";
///
/// 随机数
///
private const string NONCE = "nonce";
///
/// 随机字符串
///
private const string ECHOSTR = "echostr";
///
///
///
private HttpRequest Request { get; set; }
///
/// 构造函数
///
///
public WeiXinService(HttpRequest request)
{
this.Request = request;
}
///
/// 处理请求,产生响应
///
///
public string Response()
{
string method = Request.HttpMethod.ToUpper();
//验证签名
if (method == "GET")
{
if (CheckSignature())
{
return Request.QueryString[ECHOSTR];
}
else
{
return "error";
}
}
//处理消息
if (method == "POST")
{
return ResponseMsg();
}
else
{
return "无法处理";
}
}
///
/// 处理请求
///
///
private string ResponseMsg()
{
string requestXml = CommonWeiXin.ReadRequest(this.Request);
IHandler handler = HandlerFactory.CreateHandler(requestXml);
if (handler != null)
{
return handler.HandleRequest();
}
return string.Empty;
}
///
/// 检查签名
///
///
///
private bool CheckSignature()
{
string signature = Request.QueryString[SIGNATURE];
string timestamp = Request.QueryString[TIMESTAMP];
string nonce = Request.QueryString[NONCE];
List list = new List();
list.Add(TOKEN);
list.Add(timestamp);
list.Add(nonce);
//排序
list.Sort();
//拼串
string input = string.Empty;
foreach (var item in list)
{
input += item;
}
//加密
string new_signature = SecurityUtility.SHA1Encrypt(input);
//验证
if (new_signature == signature)
{
return true;
}
else
{
return false;
}
}
}
在来看看我们的首先是如何捕获消息的。首页Default.ashx的代码如下