您的位置:首页 > 博客中心 > 前端开发 >

[转]C#开发微信公众平台-就这么简单

时间:2022-04-06 11:00

本文转自:http://www.it165.net/pro/html/201403/11102.html

 

 

写在前面

服务号和订阅号 URL配置 创建菜单 查询、删除菜单 接受消息 发送消息(图文、菜单事件响应) 示例Demo下载 后记

  最近公司在做微信开发,其实就是接口开发,网上找了很多资料,当然园友也写了很多教程,但都是理论说了一大堆,实用指导或代码很少。如果你自己仔细研究下,其实就那么点东西,C#实现起来也很简单,原本不想写这篇文章的,但是本人当时摸索走了很多弯路,这边总结下,希望初次接触微信公众平台的朋友别像当时的我一样。

  自己动手,丰衣足食。

服务号和订阅号

  服务号是公司申请的微信公共账号,订阅号是个人申请的,我个人也申请了一个,不过没怎么用。

  服务号

1个月(30天)内仅可以发送1条群发消息。 发给订阅用户(粉丝)的消息,会显示在对方的聊天列表中。 在发送消息给用户时,用户将收到即时的消息提醒。 服务号会在订阅用户(粉丝)的通讯录中。 可申请自定义菜单。 

  订阅号

每天(24小时内)可以发送1条群发消息。 发给订阅用户(粉丝)的消息,将会显示在对方的订阅号文件夹中。 在发送消息给订阅用户(粉丝)时,订阅用户不会收到即时消息提醒。 在订阅用户(粉丝)的通讯录中,订阅号将被放入订阅号文件夹中。 订阅号不支持申请自定义菜单。

URL配置

  启用开发模式需要先成为开发者,而且编辑模式和开发模式只能选择一个,进入微信公众平台-开发模式,如下:

gxlsystem.com,布布扣

  刚开始做的时候,我以为这两种应该不是用的同一个接口,但是在文档中找了半天也没有找到除这个之外的,就试了下两个图文消息,发现就是这个接口发送的,如果多个的话,item中的Description会失效,只会显示Title,大家试下就知道了,示例代码:

view sourceprint? 01.1         //事件 02. 2         public string EventHandle(XmlDocument xmldoc) 03. 3         { 04. 4             string responseContent = ""; 05. 5             XmlNode Event = xmldoc.SelectSingleNode("/xml/Event"); 06. 6             XmlNode EventKey = xmldoc.SelectSingleNode("/xml/EventKey"); 07. 7             XmlNode ToUserName = xmldoc.SelectSingleNode("/xml/ToUserName"); 08. 8             XmlNode FromUserName = xmldoc.SelectSingleNode("/xml/FromUserName"); 09. 9             if (Event!=null) 10.10             { 11.11                 //菜单单击事件 12.12                 if (Event.InnerText.Equals("CLICK")) 13.13                 { 14.14                     if (EventKey.InnerText.Equals("click_one"))//click_one 15.15                     { 16.16                         responseContent = string.Format(ReplyType.Message_Text, 17.17                             FromUserName.InnerText, 18.18                             ToUserName.InnerText, 19.19                             DateTime.Now.Ticks, 20.20                             "你点击的是click_one"); 21.21                     } 22.22                     else if (EventKey.InnerText.Equals("click_two"))//click_two 23.23                     { 24.24                         responseContent = string.Format(ReplyType.Message_News_Main, 25.25                             FromUserName.InnerText, 26.26                             ToUserName.InnerText, 27.27                             DateTime.Now.Ticks, 28.28                             "2", 29.29                              string.Format(ReplyType.Message_News_Item,"我要寄件","", 30.30                              "http://www.soso.com/orderPlace.jpg", 31.31                              "http://www.soso.com/")+ 32.32                              string.Format(ReplyType.Message_News_Item, "订单管理", "", 33.33                              "http://www.soso.com/orderManage.jpg", 34.34                              "http://www.soso.com/")); 35.35                     } 36.36                     else if (EventKey.InnerText.Equals("click_three"))//click_three 37.37                     { 38.38                         responseContent = string.Format(ReplyType.Message_News_Main, 39.39                             FromUserName.InnerText, 40.40                             ToUserName.InnerText, 41.41                             DateTime.Now.Ticks, 42.42                             "1", 43.43                              string.Format(ReplyType.Message_News_Item, "标题", "摘要", 44.44                              "http://www.soso.com/jieshao.jpg", 45.45                              "http://www.soso.com/")); 46.46                     } 47.47                 } 48.48             } 49.49             return responseContent; 50.50         } 51.51         /// <summary> 52.52         /// 图文消息主体 53.53         /// </summary> 54.54         public static string Message_News_Main 55.55         { 56.56             get 57.57             { 58.58                 return @"<xml> 59.59                             <ToUserName><![CDATA[{0}]]></ToUserName> 60.60                             <FromUserName><![CDATA[{1}]]></FromUserName> 61.61                             <CreateTime>{2}</CreateTime> 62.62                             <MsgType><![CDATA[news]]></MsgType> 63.63                             <ArticleCount>{3}</ArticleCount> 64.64                             <Articles> 65.65                             {4} 66.66                             </Articles> 67.67                             </xml> "; 68.68             } 69.69         } 70.70         /// <summary> 71.71         /// 图文消息项 72.72         /// </summary> 73.73         public static string Message_News_Item 74.74         { 75.75             get 76.76             { 77.77                 return @"<item> 78.78                             <Title><![CDATA[{0}]]></Title> 79.79                             <Description><![CDATA[{1}]]></Description> 80.80                             <PicUrl><![CDATA[{2}]]></PicUrl> 81.81                             <Url><![CDATA[{3}]]></Url> 82.82                             </item>"; 83.83             } 84.84         }

  需要注意的是:XmlNode Event = xmldoc.SelectSingleNode("/xml/Event")表示获取的是事件类型,XmlNode EventKey = xmldoc.SelectSingleNode("/xml/EventKey")表示事件标示,就是我们创建菜单添加click的key,通过key我们就可以判断出是点的哪个菜单。

  还有一点是回复超链接,有时候在服务号会发送一些链接,我们打开直接就会链接到相关网址,只需要在回复内容中添加:<a href="http://www.baidu.com">点击进入</a>,就可以了。

示例Demo下载

  下载地址:http://pan.baidu.com/s/1i3kMpwh

后记

  关于微信公众平台当然还有许多其他的东西,本篇只是一些经验之谈,希望可以起到抛砖引玉的作用。有时候我们发现一些新鲜事物,觉得很难,就远远的看着,如果你用心的去感受它,其实也就这么回事。

不要高估别人,低估自己,其实深入内心,很多你自以为很了不起的人,其实也没什么,真是这样。

  如果你觉得本篇文章对你有所帮助,请点击右下部“推荐”,^_^

延伸阅读:

  • 1、微信公众平台开发教程(七)Session处理
  • 2、C#在x64平台引用Dll出错[BadImageFormatException未处理 (0x8007000B)]
  • 3、.net平台下深拷贝和浅拷贝
  • 4、微信公共服务平台开发(.Net的实现)1 认证“成为开发者”
  • 5、微信公共服务平台开发(.Net的实现)2 获得ACCESSTOKEN

[转]C#开发微信公众平台-就这么简单,布布扣,bubuko.com

本类排行

今日推荐

热门手游