匿名通过本文主要向大家介绍了C# .net微信开发等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
成为开发者
string[] ArrTmp = { "token",
Request["timestamp"],
Request["nonce"] };
Array.Sort(ArrTmp);
//字典排序string tmpStr = string.Join("", ArrTmp);
tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
tmpStr = tmpStr.ToLower();if (tmpStr != Request["signature"].ToLower())
{
Response.Write(Request["echostr"]);
}关注帐号,触发消息,自动应答,事件响应

namespace ElegantWM.WebUI.Areas.WeiXin.Controllers
{
/// <summary>
/// 微信公共服务类
/// </summary>
public class RobotController : BaseController
{
/// <summary>
/// 接收微信请求接口,认证的接口
/// </summary>
/// <returns></returns>
public ContentResult Index()
{
string result = AnalyzeXmlFromWeiXin();
return Content(result);
}
/// <summary>
/// 分析微信POST到本服务器的XML数据
/// </summary>
/// <param name="xmlStream"></param>
/// <returns></returns>
private string AnalyzeXmlFromWeiXin()
{
StreamReader reader = new StreamReader(Request.InputStream);
string xml = reader.ReadToEnd();
//获取MsgType
log.Info(xml);
string msgType = XmlHelper.ReadXmlStr(xml, "/xml/MsgType", "");
switch (msgType)
{
case "event"://如果是事件
return OnAttention(xml);
case "text"://如果是文本消息
return OnReceiveTextMsg(xml);
default:
return "不被支持的关键字!";
}
}
/// <summary>
/// 响应文本消息
/// </summary>
/// <param name="xml"></param>
/// <returns></returns>
private string OnReceiveTextMsg(string xml)
{
WxTextMsg msg = XmlEntityExchange<WxTextMsg>.ConvertXml2Entity(xml);
//返回消息,互换收发用户
string toUser = msg.FromUserName;
msg.FromUserName = msg.ToUserName;
msg.ToUserName = toUser;
switch (msg.Content.Trim())
{
case "?":
msg.Content = HelpDocument();
break;
case "?":
msg.Content = HelpDocument();
break;
case "1":
msg.Content = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
break;
case "2":
msg.Content = Tools.HttpCrossDomain.Get("http://www.weather.com.cn/data/sk/101210301.html");
break;
case "3":
msg.Content = "来吧,想唠点什么呢? [偷笑]";
break;
case "你是男的女的":
msg.Content = "姑娘一枚 [偷笑]";
break;
default:
msg.Content = "抱歉哦,我不认识您输入的命令。/害羞 /:,@-D";
break;
}
return XmlEntityExchange<WxTextMsg>.ConvertEntity2Xml(msg);
}
/// <summary>
/// 获取帮助菜单文档
/// </summary>
/// <returns></returns>
private string HelpDocument()
{
StringBuilder sb = new StringBuilder();
sb.Append("HI,请回复数字,选择服务").Append("\n\n");
sb.Append("1. 当前时间").Append("\n");
sb.Append("2. 天气信息").Append("\n");
sb.Append("3. 聊天唠嗑").Append("\n");
sb.Append("n. 更多服务开发中...").Append("\n");
sb.Append("回复【?】显示此帮助菜单");
return sb.ToString();
}
/// <summary>
/// 当用户关注微信帐号的时候触发,事件响应
/// </summary>
/// <param name="xml"></param>
private string OnAttention(string xml)
{
WxEvent wxevent = XmlEntityExchange<WxEvent>.ConvertXml2Entity(xml);
WxTextMsg msg = new WxTextMsg();
msg.ToUserName = wxevent.FromUserName;
msg.FromUserName = wxevent.ToUserName;
msg.CreateTime = DateTime.Now.Ticks;
msg.MsgType = "text";
//如果是关注,则发送欢迎消息
switch (wxevent.Event)
{
case "subscribe":
msg.Content = System.Configuration.ConfigurationManager.AppSettings["DefaultWxMsg"];
break;
case "CLICK":
msg.Content = "您单击的是:" + wxevent.EventKey;
break;
default:
msg.Content = "暂未处理的事件:Event" + wxevent.Event + ";EventKey:" + wxevent.EventKey;
break;
}
string rst = XmlEntityExchange<WxTextMsg>.ConvertEntity2Xml(msg);
log.Info(rst);
return rst;
}
}
}辅助类
//实体
public class WxEvent
{
/// <summary>
/// 接收人
/// </summary>
public string ToUserName { get; set; }
/// <summary>
/// 发送人
/// </summary>
public string FromUserName { get; set; }
/// <summary>
/// 时间
/// </summary>
public string CreateTime { get; set; }
/// <summary>
/// 类型
/// </summary>
public string MsgType { get; set; }
/// <summary>
/// 事件
/// </summary>
public string Event { get; set; }
public string EventKey { get; set; }
}
public class WxTextMsg
{
/// <summary>
/// 接收人
/// </summary>
public string ToUserName { get; set; }
/// <summary>
/// 发送人
/// </summary>
public string FromUserName { get; set; }
/// <summary>
/// 时间
/// </summary>
public long CreateTime { get; set; }

