婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > .NET微信公眾號開發之公眾號消息處理

.NET微信公眾號開發之公眾號消息處理

熱門標簽:辦公用地圖標注網點怎么操作 南昌自動外呼系統線路 云南外呼系統代理 聊城智能電銷機器人電話 上海市三維地圖標注 安陸市地圖標注app 寧德防封版電銷卡 海東防封電銷卡 西寧電銷外呼系統公司

一.前言

  微信公眾平臺的消息處理還是比較完善的,有最基本的文本消息,到圖文消息,到圖片消息,語音消息,視頻消息,音樂消息其基本原理都是一樣的,只不過所post的xml數據有所差別,在處理消息之前,我們要認真閱讀,官方給我們的文檔:http://mp.weixin.qq.com/wiki/14/89b871b5466b19b3efa4ada8e577d45e.html。首先我們從最基本的文本消息處理開始。

xml>
ToUserName>![CDATA[toUser]]>/ToUserName>
FromUserName>![CDATA[fromUser]]>/FromUserName>
CreateTime>12345678/CreateTime>
MsgType>![CDATA[text]]>/MsgType>
Content>![CDATA[你好]]>/Content>
/xml>

  我們可以看到這是消息處理的一個最基本的模式,有發送者,接受者,創建時間,類型,內容等等。

首先我們來創建一個消息處理的類,這個類用來捕獲,所有的消息請求,根據不同的消息請求類型來處理不同的消息回復。

public class WeiXinService
  {
    /// summary>
    /// TOKEN
    /// /summary>
    private const string TOKEN = "finder";
    /// summary>
    /// 簽名
    /// /summary>
    private const string SIGNATURE = "signature";
    /// summary>
    /// 時間戳
    /// /summary>
    private const string TIMESTAMP = "timestamp";
    /// summary>
    /// 隨機數
    /// /summary>
    private const string NONCE = "nonce";
    /// summary>
    /// 隨機字符串
    /// /summary>
    private const string ECHOSTR = "echostr";
    /// summary>
    /// 
    /// /summary>
    private HttpRequest Request { get; set; }
    /// summary>
    /// 構造函數
    /// /summary>
    /// param name="request">/param>
    public WeiXinService(HttpRequest request)
    {
      this.Request = request;
    }
    /// summary>
    /// 處理請求,產生響應
    /// /summary>
    /// returns>/returns>
    public string Response()
    {
      string method = Request.HttpMethod.ToUpper();
      //驗證簽名
      if (method == "GET")
      {
        if (CheckSignature())
        {
          return Request.QueryString[ECHOSTR];
        }
        else
        {
          return "error";
        }
      }

      //處理消息
      if (method == "POST")
      {
        return ResponseMsg();
      }
      else
      {
        return "無法處理";
      }
    }

    /// summary>
    /// 處理請求
    /// /summary>
    /// returns>/returns>
    private string ResponseMsg()
    {
      string requestXml = CommonWeiXin.ReadRequest(this.Request);
      IHandler handler = HandlerFactory.CreateHandler(requestXml);
   
      if (handler != null)
      {
        return handler.HandleRequest();
      }

      return string.Empty;
    }
    /// summary>
    /// 檢查簽名
    /// /summary>
    /// param name="request">/param>
    /// returns>/returns>
    private bool CheckSignature()
    {
      string signature = Request.QueryString[SIGNATURE];
      string timestamp = Request.QueryString[TIMESTAMP];
      string nonce = Request.QueryString[NONCE];

      Liststring> list = new Liststring>();
      list.Add(TOKEN);
      list.Add(timestamp);
      list.Add(nonce);
      //排序
      list.Sort();
      //拼串
      string input = string.Empty;
      foreach (var item in list)
      {
        input += item;
      }
      //加密
      string new_signature = SecurityUtility.SHA1Encrypt(input);
      //驗證
      if (new_signature == signature)
      {
        return true;
      }
      else
      {
        return false;
      }
    }
  }

在來看看我們的首先是如何捕獲消息的。首頁Default.ashx的代碼如下

    public void ProcessRequest(HttpContext context)
    {
      context.Response.ContentType = "text/html";
      

      string postString = string.Empty;
      if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST")
      {
        //由微信服務接收請求,具體處理請求
        WeiXinService wxService = new WeiXinService(context.Request);
        string responseMsg = wxService.Response();
        context.Response.Clear();
        context.Response.Charset = "UTF-8";
        context.Response.Write(responseMsg);
        context.Response.End();
      }
      else
      {
        string token = "wei2414201";
        if (string.IsNullOrEmpty(token))
        {
          return;
        }

        string echoString = HttpContext.Current.Request.QueryString["echoStr"];
        string signature = HttpContext.Current.Request.QueryString["signature"];
        string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
        string nonce = HttpContext.Current.Request.QueryString["nonce"];

        if (!string.IsNullOrEmpty(echoString))
        {
          HttpContext.Current.Response.Write(echoString);
          HttpContext.Current.Response.End();
        }
      }


    }

從上面的代碼中我們可以看到WeiXinService.cs類中的消息相應至關重要。

    /// summary>
    /// 處理請求
    /// /summary>
    /// returns>/returns>
    private string ResponseMsg()
    {
      string requestXml = CommonWeiXin.ReadRequest(this.Request);
      IHandler handler = HandlerFactory.CreateHandler(requestXml);
   
      if (handler != null)
      {
        return handler.HandleRequest();
      }

      return string.Empty;
    }

IHandler是一個消息處理接口,其下面有EventHandler,TextHandler處理類實現這個接口。代碼如下

  /// summary>
  /// 處理接口
  /// /summary>
  public interface IHandler
  {
    /// summary>
    /// 處理請求
    /// /summary>
    /// returns>/returns>
    string HandleRequest();
  }

EventHandler

class EventHandler : IHandler
  {
    /// summary>
    /// 請求的xml
    /// /summary>
    private string RequestXml { get; set; }
    /// summary>
    /// 構造函數
    /// /summary>
    /// param name="requestXml">/param>
    public EventHandler(string requestXml)
    {
      this.RequestXml = requestXml;
    }
    /// summary>
    /// 處理請求
    /// /summary>
    /// returns>/returns>
    public string HandleRequest()
    {
      string response = string.Empty;
      EventMessage em = EventMessage.LoadFromXml(RequestXml);
      if (em.Event.Equals("subscribe", StringComparison.OrdinalIgnoreCase))//用來判斷是不是首次關注
      {


        PicTextMessage tm = new PicTextMessage();//我自己創建的一個圖文消息處理類
        tm.ToUserName = em.FromUserName;
        tm.FromUserName = em.ToUserName;
        tm.CreateTime = CommonWeiXin.GetNowTime();
        response = tm.GenerateContent();

      }

      return response;
    }
  }

TextHandler

  /// summary>
  /// 文本信息處理類
  /// /summary>
  public class TextHandler : IHandler
  {
    string openid { get; set; }
    string access_token { get; set; }

    /// summary>
    /// 請求的XML
    /// /summary>
    private string RequestXml { get; set; }
    /// summary>
    /// 構造函數
    /// /summary>
    /// param name="requestXml">請求的xml/param>
    public TextHandler(string requestXml)
    {
      this.RequestXml = requestXml;
    }
    /// summary>
    /// 處理請求
    /// /summary>
    /// returns>/returns>
    public string HandleRequest()
    {
      string response = string.Empty;
      TextMessage tm = TextMessage.LoadFromXml(RequestXml);
      string content = tm.Content.Trim();
      if (string.IsNullOrEmpty(content))
      {
        response = "您什么都沒輸入,沒法幫您啊。";
      }
      else
      {
          string username = System.Configuration.ConfigurationManager.AppSettings["weixinid"].ToString();
          AccessToken token = AccessToken.Get(username);
          access_token = token.access_token;
          openid = tm.FromUserName;
          response = HandleOther(content);
        
      }
      tm.Content = response;
      //進行發送者、接收者轉換
      string temp = tm.ToUserName;
      tm.ToUserName = tm.FromUserName;
      tm.FromUserName = temp;
      response = tm.GenerateContent();
      return response;
    }
    /// summary>
    /// 處理其他消息
    /// /summary>
    /// param name="tm">/param>
    /// returns>/returns>
    private string HandleOther(string requestContent)
    {
      string response = string.Empty;
      if (requestContent.Contains("你好") || requestContent.Contains("您好"))
      {
        response = "您也好~";
      }else if (requestContent.Contains("openid") || requestContent.Contains("id") || requestContent.Contains("ID"))//用來匹配用戶輸入的關鍵字
      {
        response = "你的Openid: "+openid;
      }
      else if (requestContent.Contains("token") || requestContent.Contains("access_token"))
      {
        response = "你的access_token: " + access_token;
      }else 
      {
        response = "試試其他關鍵字吧。";
      }
      return response;
    }
  }

HandlerFactory

  /// summary>
  /// 處理器工廠類
  /// /summary>
  public class HandlerFactory
  {
    /// summary>
    /// 創建處理器
    /// /summary>
    /// param name="requestXml">請求的xml/param>
    /// returns>IHandler對象/returns>
    public static IHandler CreateHandler(string requestXml)
    {
      IHandler handler = null;
      if (!string.IsNullOrEmpty(requestXml))
      {
        //解析數據
        XmlDocument doc = new System.Xml.XmlDocument();
        doc.LoadXml(requestXml);
        XmlNode node = doc.SelectSingleNode("/xml/MsgType");
        if (node != null)
        {
          XmlCDataSection section = node.FirstChild as XmlCDataSection;
          if (section != null)
          {
            string msgType = section.Value;

            switch (msgType)
            {
              case "text":
                handler = new TextHandler(requestXml);
                break;
              case "event":
                handler = new EventHandler(requestXml);
                break;
            }
          }
        }
      }

      return handler;
    }
  }

 在這里基本的一些類已經完成了,現在我們來完成,關注我們的微信公眾號,我們就發送一條圖文消息,同時輸入我們的一些關鍵字,返回一些消息,比如輸入id返回用戶的openid等等。

二.PicTextMessage

public class PicTextMessage : Message
  {
    /// summary>
    /// 模板靜態字段
    /// /summary>
    private static string m_Template;

    /// summary>
    /// 默認構造函數
    /// /summary>
    public PicTextMessage()
    {
      this.MsgType = "news";
    }
    /// summary>
    /// 從xml數據加載文本消息
    /// /summary>
    /// param name="xml">/param>
    public static PicTextMessage LoadFromXml(string xml)
    {
      PicTextMessage tm = null;
      if (!string.IsNullOrEmpty(xml))
      {
        XElement element = XElement.Parse(xml);
        if (element != null)
        {
          tm = new PicTextMessage();
          tm.FromUserName = element.Element(CommonWeiXin.FROM_USERNAME).Value;
          tm.ToUserName = element.Element(CommonWeiXin.TO_USERNAME).Value;
          tm.CreateTime = element.Element(CommonWeiXin.CREATE_TIME).Value;
        }
      }

      return tm;
    }
    /// summary>
    /// 模板
    /// /summary>
    public override string Template
    {
      get
      {
        if (string.IsNullOrEmpty(m_Template))
        {
          LoadTemplate();
        }

        return m_Template;
      }
    }
    /// summary>
    /// 生成內容
    /// /summary>
    /// returns>/returns>
    public override string GenerateContent()
    {
      this.CreateTime = CommonWeiXin.GetNowTime();
      string str= string.Format(this.Template, this.ToUserName, this.FromUserName, this.CreateTime);
      return str;
    }


    /// summary>
    /// 加載模板
    /// /summary>
    private static void LoadTemplate()
    {
      m_Template= @"xml>
              ToUserName>![CDATA[{0}]]>/ToUserName>
              FromUserName>![CDATA[{1}]]>/FromUserName>
              CreateTime>{2}/CreateTime>
              MsgType>![CDATA[news]]>/MsgType>
              ArticleCount>1/ArticleCount>
              Articles>
                item>
                Title>![CDATA[有位停車歡迎你!]]>/Title> 
                Description>![CDATA[如有問題請致電400-6238-136或直接在微信留言,我們將第一時間為您服務!]]>/Description>
                PicUrl>![CDATA[http://www.baidu.com/youwei.jpg]]>/PicUrl>
                Url>![CDATA[http://www.baidu.com]]>/Url>
                /item>
              /Articles>
            /xml> ";
    }
  }

最后我們的效果如下所示;

以上所述就是本文的全部內容了,希望大家能夠喜歡

您可能感興趣的文章:
  • asp.net微信開發(永久素材管理)
  • asp.net微信開發(高級群發圖文)
  • asp.net微信開發(高級群發文本)
  • asp.net微信開發(自定義會話管理)
  • .NET微信公眾號開發之準備工作
  • asp.net開發微信公眾平臺之驗證消息的真實性
  • asp.net開發微信公眾平臺之獲取用戶消息并處理
  • Android仿微信發朋友圈瀏覽圖片效果
  • 基于js實現微信發送好友如何分享到朋友圈、微博
  • .Net語言Smobiler開發之如何仿微信朋友圈的消息樣式

標簽:青海 汕尾 南寧 贛州 洛陽 平涼 崇左 衢州

巨人網絡通訊聲明:本文標題《.NET微信公眾號開發之公眾號消息處理》,本文關鍵詞  .NET,微信,公眾,號開,發之,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《.NET微信公眾號開發之公眾號消息處理》相關的同類信息!
  • 本頁收集關于.NET微信公眾號開發之公眾號消息處理的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人小视频在线| 99久久99久久精品免费看蜜桃| 中文子幕无线码一区tr| 亚洲天天做日日做天天谢日日欢| 国产欧美一区二区精品婷婷| 亚洲少妇屁股交4| 精品一区二区三区影院在线午夜| 国产精品99久久不卡二区| 色综合久久综合网欧美综合网| 欧美日韩精品一区二区天天拍小说| 日韩欧美自拍偷拍| 日本不卡一区二区三区高清视频| av电影在线观看不卡| 日韩一区二区中文字幕| 亚洲色图欧洲色图婷婷| 看电影不卡的网站| 777亚洲妇女| 视频一区中文字幕| 91精品国产一区二区三区蜜臀| 亚洲激情图片小说视频| 成人国产在线观看| 国产精品久久福利| 欧美伊人久久大香线蕉综合69| 国产欧美日韩综合| 色婷婷久久99综合精品jk白丝| 国产精品国产三级国产aⅴ入口 | 一区二区三区中文在线| 99国产精品久久久久| 日本一区二区电影| 粉嫩高潮美女一区二区三区| 国产精品亚洲一区二区三区在线| 亚洲国产高清不卡| 精品视频一区 二区 三区| 亚洲色图在线看| 欧美日韩高清影院| 9久草视频在线视频精品| 亚洲欧洲综合另类在线| 欧美日本一区二区三区| 精品在线视频一区| 91在线国内视频| 国产寡妇亲子伦一区二区| 亚洲五月六月丁香激情| 亚洲精品成a人| 欧洲一区二区三区免费视频| 国产精品一区二区久久不卡| 亚洲九九爱视频| 欧美精品久久99| 69成人精品免费视频| 欧美精品丝袜中出| 欧美乱妇一区二区三区不卡视频| 欧美精品久久一区| 国产伦精品一区二区三区免费| 日韩黄色在线观看| 久久国产精品无码网站| 日本成人在线网站| 久久精品国产色蜜蜜麻豆| 国产在线精品一区二区| 久久国产综合精品| 国产成人在线观看免费网站| 成人小视频免费观看| 在线观看一区日韩| 在线91免费看| 欧美电影精品一区二区| 91精品国产一区二区三区| 国产精品网站一区| 亚洲精品国产无天堂网2021 | 精品国产乱码久久久久久图片 | 91日韩在线专区| 国产精品久久久久久久久果冻传媒| 91福利视频网站| 国产不卡视频在线观看| 奇米影视在线99精品| 一区二区三区在线播放| 中文字幕中文字幕一区| 国产精品免费看片| 中文字幕精品三区| 国产色综合久久| 国产亚洲欧洲一区高清在线观看| 欧美老女人第四色| 日韩午夜在线影院| 五月综合激情网| 91香蕉视频污| 这里只有精品电影| 欧美一区二区三区影视| 91精品国产一区二区三区| 欧美性受xxxx黑人xyx性爽| 欧美性色综合网| 久久九九国产精品| 99久久久久久99| 欧美一区二区网站| 久久久久国产免费免费| 亚洲综合久久av| 狠狠色丁香婷婷综合| 不卡av电影在线播放| 欧美人与性动xxxx| 综合在线观看色| 麻豆精品一二三| 欧美肥妇bbw| 亚洲综合另类小说| 国产精品一区不卡| 国产成a人亚洲| 中文字幕久久午夜不卡| 极品少妇xxxx精品少妇偷拍| 色噜噜夜夜夜综合网| 欧美精品 国产精品| 亚洲同性gay激情无套| 国产在线播精品第三| 欧美艳星brazzers| 欧美tickling挠脚心丨vk| 婷婷开心激情综合| 国产麻豆视频一区| 久久综合av免费| 精品一区二区综合| 国产欧美日韩三级| 国产制服丝袜一区| 国产亚洲制服色| 成人午夜激情视频| 久久久久久久久久久久久夜| 国产大陆精品国产| 色综合天天性综合| 99视频在线观看一区三区| 亚洲三级小视频| 欧美视频在线播放| 国产a久久麻豆| 国产精品高清亚洲| 日韩精品一区二| 成人美女视频在线看| 日韩一区二区三区观看| 午夜电影一区二区三区| 欧美一级欧美一级在线播放| 爽爽淫人综合网网站| 欧美三区免费完整视频在线观看| 在线视频一区二区三区| 久久免费看少妇高潮| 国产精品久久久久久户外露出| 亚洲综合色视频| 久久精品日韩一区二区三区| 日本一区二区三区电影| 艳妇臀荡乳欲伦亚洲一区| 日韩在线a电影| 中文字幕中文在线不卡住| 免费日韩伦理电影| 色婷婷狠狠综合| 成人黄色在线看| 一区二区三区高清在线| 国产成人免费视| 欧美精品一区二区精品网| 尤物视频一区二区| 亚洲国产综合视频在线观看| 精品99久久久久久| 美腿丝袜亚洲三区| 欧美性猛交xxxxxxxx| 欧美国产乱子伦| 成人午夜精品在线| 国产精品剧情在线亚洲| 国产精品亚洲午夜一区二区三区 | 国产精品99久久久久久宅男| 亚洲高清一区二区三区| 亚洲综合视频网| 伊人色综合久久天天人手人婷| 一区二区高清免费观看影视大全| 国产色综合久久| 最新国产精品久久精品| 日韩高清电影一区| 亚洲国产成人高清精品| 另类小说图片综合网| 狠狠色伊人亚洲综合成人| 国产精品国模大尺度视频| 久久九九久久九九| 综合激情网...| 国产精品情趣视频| 免费观看成人鲁鲁鲁鲁鲁视频| 琪琪久久久久日韩精品| www.视频一区| 黑人巨大精品欧美黑白配亚洲| 在线中文字幕一区二区| 久久亚洲综合色一区二区三区| 亚洲午夜精品网| fc2成人免费人成在线观看播放| 91麻豆精品久久久久蜜臀| 高清不卡一二三区| 久久女同精品一区二区| 亚洲精品国产一区二区精华液 | 欧美va在线播放| 欧美美女激情18p| 亚洲精品日韩专区silk| 欧美精品自拍偷拍| 精品成人免费观看| 韩国中文字幕2020精品| 悠悠色在线精品| 久久精品国产亚洲5555| 天堂va蜜桃一区二区三区漫画版| 精油按摩中文字幕久久| 国产69精品久久777的优势| 大美女一区二区三区| 国产目拍亚洲精品99久久精品 | 国产成人免费在线| 欧美视频一区二区在线观看| 中文字幕欧美一| 欧美性感一类影片在线播放|