来源:自学PHP网 时间:2015-04-14 12:58 作者: 阅读:次
[导读] 微信开发学习笔记----1 正确填写服务器配置信息其中Url为我们的要接收并处理微信服务器发送的消息的一般处理程序地址,Token是一个开发者自定义的验证字符串,可任意填写。点击提交...
微信开发学习笔记----1.正确填写服务器配置信息其中Url为我们的要接收并处理微信服务器发送的消息的一般处理程序地址, 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秒后会自动回复你!
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com