• 微信开发基础教程


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

    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秒后会自动回复你!

  • 相关阅读:
    sqlalchemy
    nginx配置文件,做多个项目代理
    pyspider
    Mysql原理+ 多实例 +表损坏
    Spring 学习-AOP
    java 基础 --- 动态代理和静态代理
    Spring 学习-IoC
    [转]字符编码笔记:ASCII,Unicode 和 UTF-8
    JVM(五) class类文件的结构
    数据结构(四)--- 红黑树(RedBlock-Tree)
  • 原文地址:https://www.cnblogs.com/sunniest/p/4337369.html
Copyright © 2020-2023  润新知