微信開發基礎教程


微信開發學習筆記----

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秒后會自動回復你!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM