热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#微信公众平台开发(3)

1.接收事件关注取消关注事件;用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL。通过微信返回的XML,我们通过代码就可以作相应的处理;先获取返回的信息:1

1.接收事件

  关注/取消关注事件;

  用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL。

 

通过微信返回的XML,我们通过代码 就可以作相应的处理;

先获取返回的信息:

 1     if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST")
2 {
3 using (Stream stream = HttpContext.Current.Request.InputStream)
4 {
5 Byte[] postBytes = new Byte[stream.Length];
6 stream.Read(postBytes, 0, (Int32)stream.Length);
7 postString = Encoding.UTF8.GetString(postBytes);
8 EventHandle(postString);
9 }
10
11 if (!string.IsNullOrEmpty(postString))
12 {
13 responseMsg(postString, context);//关注微信,返回消息
14 }
15 }
postString  里面 就是XML;我们只需要对 XML作相应的处理就好
   System.Xml.XmlDocument postObj = new      System.Xml.XmlDocument();
postObj.LoadXml(postStr);

var eventList = postObj.GetElementsByTagName("Event");
var textpl = "";
string FromUserName = string.Empty;

for (int i = 0; i )
{
if (FromUserNameList[i].ChildNodes[0].NodeType == System.Xml.XmlNodeType.CDATA)
{
FromUserName
= FromUserNameList[i].ChildNodes[0].Value;
}
}
var toUsernameList = postObj.GetElementsByTagName("ToUserName");
string ToUserName = string.Empty;
for (int i = 0; i )
{
if (toUsernameList[i].ChildNodes[0].NodeType == System.Xml.XmlNodeType.CDATA)
{
ToUserName
= toUsernameList[i].ChildNodes[0].Value;
}
}
if (toEvent == "subscribe")
{
string rebakcHtml = @"Hi,欢迎来到我爱足球社区";
              //ReceivedText 返回文本消息的格式 textpl
= type.ReceivedText(FromUserName, ToUserName, rebakcHtml);
}

 1   /// 
2 /// 回复文本
3 ///

4 ///
5 ///
6 ///
7 ///
8 public string ReceivedText(string FromUserName, string ToUserName, string Content)
9 {
10
11 string textpl = string.Empty;
12 textpl = "" +
13 "" + FromUserName + "]]>" +
14 "" + ToUserName + "]]>" +
15 "" + ConvertDateTimeInt(DateTime.Now) + "" +
16 "" +
17 "" + Content + "]]>" +
18 "0" +
19 "";
20
21 return textpl;
22 }
文本消息

 System.Web.HttpContext.Current.Response.Write(textpl); 我们将文本信息 返回给微信;

2.点击按钮

 1 #region 微信菜单点击事件
2
3 ///
4 /// 微信菜单点击事件
5 ///

6 /// 接受消息
7 ///
8 private void EventHandle(string postStr)
9 {
10 string respOnseContent= "";
11 try
12 {
13 System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();
14 xmldoc.LoadXml(postStr);
15
16 XmlNode Event = xmldoc.SelectSingleNode("/xml/Event");
17 XmlNode EventKey = xmldoc.SelectSingleNode("/xml/EventKey");
18 XmlNode ToUserName = xmldoc.SelectSingleNode("/xml/ToUserName");
19 XmlNode FromUserName = xmldoc.SelectSingleNode("/xml/FromUserName");
20
21 if (Event != null)
22 {
23 if (EventKey.InnerText.Equals("V1001_ORDER"))//EventKey.InnerText.Equals("V1001_ORDER") 就是创建菜单时,click按钮的唯一Key
24 {
25 respOnseContent= string.Format(Message_Text,
26 FromUserName.InnerText,
27 ToUserName.InnerText,
28 DateTime.Now.Ticks,
29 "您好,小萌为您服务,请回复十四位订单号,查询订单详情。");//生成文本消息
30 }
31 respOnseContent= type.ReceivedText(FromUserName.InnerText, ToUserName.InnerText, rebakcHtml);
32 }
33 }
34
35 LogTextHelper.WriteLogToFile(responseContent + "------------------" + postStr);
36 HttpContext.Current.Response.Write(responseContent);//返回给微信
37 }
38 catch (Exception ex)
39 {
40 LogTextHelper.WriteLogToFile("微信菜单点击事件" + "||" + ex.ToString());
41 }
42 }
43
44 ///
45 /// 普通文本消息
46 ///

47 public static string Message_Text
48 {
49 get
50 {
51 return @"
52
53
54 {2}
55
56
57 ";
58 }
59 }
60
61 #endregion

3.接受消息:

 接受消息 跟关注微信号有点类似:

消息内容 

var keywordList = postObj.GetElementsByTagName("Content"); 

string COntent= string.Empty;
  for (int i = 0; i   {
    if (keywordList[i].ChildNodes[0].NodeType == System.Xml.XmlNodeType.CDATA)
      {
        COntent= keywordList[i].ChildNodes[0].Value;
      }
  }

1 if (toMsgType == "text")//接口文本消息 toMsgType是消息类型
2 {
      //ToDo 根据业务 处理消息内容
3
4 else if (toMsgType == "event")//关注
5 {
6 if (toEvent == "subscribe")
7 {
8
9

请点击我 --我爱足球


推荐阅读
author-avatar
uigrdg更好_154
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有