微信开发基础教程

微信开发学习笔记----

1.正确填写服务器配置信息

其中Url为我们的要接收并处理微信服务器发送的消息的一般处理程序地址,如:http://sadi.qrenlei.cn/WXTest.ashx

Token是一个开发者自定义的验证字符串,可任意填写。

点击提交前,需要把咱们的包含一般处理程序的网站发布到服务器上。

2.一般处理程序的编写

          if (Request.HttpMethod.ToLower() == "get")
            {
                Validate();
            } 

        public void Validate()
        {
                 //微信接口接入验证代码
                string signature = Request["signature"];
                string token = "Your token";
                string timestamp = Request["timestamp"];
                string nonce = Request["nonce"];
                string echostr = Request["echostr"];

                string[] temp = { token, timestamp, nonce };
                Array.Sort(temp);
                string str = string.Join("", temp);
                string sha1Str = FormsAuthentication.HashPasswordForStoringInConfigFile(str, "SHA1");

                if (sha1Str.ToLower() == signature.ToLower())
                {
                    Response.Write(echostr);
                }
        }

服务器端配置好后,点击“提交”按钮,就会提示成功接入的信息。

3.接收消息

当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。

            else if (Request.HttpMethod.ToLower() == "post")
            {
                //微信服务器发送信息是通过post请求,向发送者以流的形式发送xml
                Stream xmlStream = Request.InputStream;
                XmlDocument doc = new XmlDocument();
                doc.Load(xmlStream);
                XmlElement root = doc.DocumentElement;
                string toUserName = root.SelectSingleNode("ToUserName").InnerText;
                string fromUserName = root.SelectSingleNode("FromUserName").InnerText;
                int createTime = int.Parse(root.SelectSingleNode("CreateTime").InnerText);
                string msgType = root.SelectSingleNode("MsgType").InnerText;
                string content = root.SelectSingleNode("Content").InnerText;
                long msgId = Int64.Parse(root.SelectSingleNode("MsgId").InnerText);

            }
     //因为服务器返回的是时间戳,即现在的时间与1970年1月1日8时0分0秒的秒数差,所以可以用此函数对时间进行处理
        public DateTime GetDateTime(int timeSpan)
        {
            return new DateTime(1970,1,1,8,0,0).AddSeconds(timeSpan);
        }

4.返回消息

//微信服务器接收信息是通过post请求,向接收者以流的形式发送xml
                /*
                 格式为:
                    <xml>
                    <ToUserName><![CDATA[toUser]]>          </ToUserName>
                    <FromUserName><![CDATA[fromUser]]></FromUserName>
                    <CreateTime>12345678</CreateTime>
                    <MsgType><![CDATA[text]]></MsgType>
                    <Content><![CDATA[你好]]></Content>
                    </xml>
                 */
                string reXml = string.Format(@"<xml>
                    <ToUserName><![CDATA[{0}]]></ToUserName>
                    <FromUserName><![CDATA[{1}]]></FromUserName>
                    <CreateTime>{2}</CreateTime>
                    <MsgType><![CDATA[text]]></MsgType>
                    <Content><![CDATA[{3}]]></Content>
                    </xml>", fromUserName, toUserName, GetSecond(), "已接收到你的消息[服务器自动回复]");
                Response.Write(reXml);
       public int GetSecond()
          {
              return (int)(DateTime.Now - new DateTime(1970, 1, 1, 8, 0, 0)).TotalSeconds;
          }  

现在可以测试一下你的公众号,向公众号发送一个文本消息,公众号在5秒后会自动回复你!

时间: 2024-10-14 05:38:25

微信开发基础教程的相关文章

微信开发系列教程:(1)订阅号和服务号深入分析

微信开发系列教程,将以一个实际的微信平台项目为案例,深入浅出的讲解微信开发.应用各环节的实现方案和技术细节. 原创内容,欢迎转载,转载请注明出处. 首先在第1章节中,我们先理清什么是订阅号,什么又是服务号,以及两者的关键性区别. 订阅号和服务号统称为微信公众号. 订阅号强调媒体资讯属性,为会员提供信息订阅,适用于新闻传媒类企业.订阅号从某种意义上来讲,是拿来做内容的,如果你没有原创作品,对用户没有任何意义. 服务号强调服务和应用属性,旨在为会员提供服务并与之互动.支持所有微信高级接口,几乎所有的

iOS 9音频应用开发基础教程

iOS 9音频应用开发基础教程(大学霸内部资料) 介绍:iOS 9音频应用开发基础教程(内部资料)是iOS 9音频应用开发专向教程.本书采用Swift 2.0语言开发基于iOS 9的音频应用.实现的功能不仅包括音频播放和录音等基本功能,还包括播放列表.歌词功能.流媒体音乐.均衡器.可视化效果.文本朗读等高级功能. 学习建议:学习本教程内容,需要掌握Swift语言基础和iOS开发基础.如果不具备这两方面,建议用户阅读本店的以下教程: Swift语言快速入门 iOS 9应用开发基础教程 试读文档下载

Unity2D游戏开发基础教程1.2 项目、资源和场景

Unity2D游戏开发基础教程1.2 项目.资源和场景 如果使用Unity制作游戏,就一定会接触到项目(Project.资源(Asset)和场景(Scene).本节将依次介绍它们. 1.2.1项目 Unity是一个基于项目的应用.这就意味着每开发一个新游戏,都要创建一个新项目.一个项目就代表一个游戏,不管游戏是2D还是3D的.开发人员可以把项目当做容器,它包含了开发游戏时,自动生成还有引入的所有文件.本文选自<Unity2D游戏开发基础教程大学霸> 要在Unity里创建一个新项目,可以单击Fi

AndoridSQLite数据库开发基础教程(10)

AndoridSQLite数据库开发基础教程(10) 添加触发器 触发器(TRIGGER)是由事件来触发某个操作.这些事件包括INSERT.DELETE.UPDATE和UPDATE OF.当数据库系统执行这些事件时,会激活触发其执行相应的操作.下面为数据库添加触发器.操作步骤如下: (1)打开的数据库,单击左下角的齿轮按钮,选择其中的Create Trigger选项,弹出Trigger Creator对话框,如图1.23所示. 图1.23  Trigger Creator对话框 (2)在Trig

Xamarin图表开发基础教程(3)OxyPlot框架

Xamarin图表开发基础教程(3)OxyPlot框架 Xamarin.Android中使用OxyPlot框架 在Xamarin.Android平台上实现图表显示需要完成以下的步骤: 1.添加OxyPlot.Xamarin.Android组件 打开Xamarin.Android项目,使用Nuget将OxyPlot.Xamarin.Android组件添加到项目的引入中. 2.布局PlotView视图 在界面布局axml文件中,使用PlotView视图进行布局,其语法形式如下: <OxyPlot.X

Xamarin图表开发基础教程(4)OxyPlot框架

Xamarin图表开发基础教程(4)OxyPlot框架 XamaminAndroid中绘制线图OxyPlotAndroidDemo [示例1-1:OxyPlotAndroidDemo]下面实现线图的绘制.具体的操作步骤如下: (1)打开Xamarin.Android项目. (2)将OxyPlot.Xamarin.Android组件添加到项目中的引入中. (3)打开activity_main.axml文件,使用PlotView进行布局.代码如下: <?xml version="1.0&quo

Xamarin图表开发基础教程(6)OxyPlot框架

Xamarin图表开发基础教程(6)OxyPlot框架 Xamamin iOS中绘制线图OxyPlotiOSDemo [示例OxyPlotiOSDemo]下面将实现线图的显示.具体的操作步骤如下: (1)打开Xamarin.iOS项目. (2)将OxyPlot.Xamarin.iOS组件添加到项目中的引入中. (3)打开ViewController.cs文件,完成剩余的步骤,即创建PlotView视图.绘制图表.设置显示模式以及显示PlotView.代码如下: using Foundation;

【小蜜蜂老师主讲】基于STM32CubeMX的嵌入式开发基础教程

基于STM32CubeMX的嵌入式开发基础教程 广东职业技术学院/小蜜蜂笔记网  欧浩源 [第01单元]:STM32CubeMX的安装与快速入门 教案资源链接,视频教程链接. [第02单元]:STM32的GPIO开发基础 教案资源链接,视频教程链接. [第03单元]:STM32的按键开发基础 教案资源链接,视频教程链接. [第04单元]:STM32的中断系统与外部中断基础 教案资源链接,视频教程链接. [第05单元]:STM32的定时器开发基础 教案资源链接,视频教程链接. [第06单元]:ST

Daydream从入门到精通——快速入门开发基础教程二:Android端开发环境配置二

开始部署 上篇介绍了开发Daydream Android VR需要的基本环境,这篇我们来看看如何部署和运用官方示例. -------------------------------------------------------------------------------------------------------------------- Daydream快速入门开发基础教程一:Android端开发环境配置一 http://blog.csdn.net/jaikydota163/arti