欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > .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微信公眾號開發之公眾號消息處理的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    黑人狂躁日本娇小| 久久久久久免费| 亚洲欧美日韩国产另类专区| 国产精品88888| 美国一级黄色录像| 欧美精品一区二区三区很污很色的 | 男女男精品视频网| 成年人小视频在线观看| 欧美撒尿777hd撒尿| 一区二区免费在线| 972aa.com艺术欧美| 色av成人天堂桃色av| 中文字幕亚洲一区二区va在线| 岛国一区二区三区| 成年人一级黄色片| 最新不卡av在线| 91麻豆精东视频| 精品视频资源站| 亚洲成av人片观看| 三级黄色片网站| 欧美岛国在线观看| 精品一区二区三区蜜桃| 手机免费观看av| 国产精品久久久久天堂| av网站免费线看精品| 日本福利一区二区| 亚洲国产综合人成综合网站| 大尺度做爰床戏呻吟舒畅| 日韩一区二区三区精品视频| 日韩va亚洲va欧美va久久| 欧美激情亚洲色图| 亚洲国产成人私人影院tom| 不卡的电视剧免费网站有什么| 色天天综合色天天久久| 一二三区精品福利视频| 日韩av无码一区二区三区不卡| 日韩欧美中文字幕制服| 国内精品久久久久影院薰衣草 | 欧美亚洲高清一区二区三区不卡| 亚洲在线视频一区| 不卡一区二区在线观看| 国产欧美中文在线| 91麻豆swag| 欧美不卡一区二区| 国产寡妇亲子伦一区二区| 色婷婷综合久久久久中文一区二区| 亚洲综合视频网| 中文字幕免费视频| 自拍偷拍国产亚洲| 黑丝av在线播放| 国产精品青草久久| 东京热av一区| 国产三级一区二区三区| 91蜜桃在线观看| 日韩美女在线视频| 岛国av在线一区| 91麻豆精品国产自产在线观看一区 | 国产视频不卡在线| 亚洲人成网站影音先锋播放| 亚洲欧美日本一区| 国产精品乱码一区二三区小蝌蚪| 精品伦一区二区三区| 久久综合国产精品| ass极品水嫩小美女ass| 2020国产精品久久精品美国| 99国产精品一区| 精品国产亚洲一区二区三区在线观看| 成人精品国产一区二区4080| 91精品国产综合久久久久久久久久 | 成人羞羞国产免费图片| 日韩电影一区二区三区| 欧美特级一级片| 蜜桃久久久久久| 欧美在线视频全部完| 国产一区二区三区美女| 欧美狂野另类xxxxoooo| 丁香啪啪综合成人亚洲小说| 欧美一卡2卡3卡4卡| av不卡一区二区三区| 精品第一国产综合精品aⅴ| 性生活在线视频| 国产欧美一区二区三区在线看蜜臀| 国产一精品一aⅴ一免费| 欧美韩国日本一区| 国产艳俗歌舞表演hd| 亚洲精品国久久99热| 人妻无码一区二区三区免费| 丝袜美腿高跟呻吟高潮一区| 色婷婷亚洲婷婷| 国产一区二区精品久久91| 欧美一区二区网站| 中文字幕乱妇无码av在线| 中文字幕av资源一区| 波多野结衣a v在线| 亚洲成人手机在线| 日本韩国欧美在线| 国产成人av电影在线观看| 欧美xxxxx裸体时装秀| 成人做爰www看视频软件| 亚洲欧美另类小说| 老司机精品免费视频| 麻豆精品国产91久久久久久| 91超碰这里只有精品国产| 99久久免费视频.com| 国产精品美女久久久久av爽李琼 | 朝桐光av一区二区三区| 有码一区二区三区| 色综合久久综合网97色综合| 国产精品69毛片高清亚洲| 久久亚洲捆绑美女| 一卡二卡三卡四卡| 日韩—二三区免费观看av| 欧美日韩视频一区二区| 小日子的在线观看免费第8集| 中文字幕日韩一区二区| 污污的视频在线免费观看| 国产毛片精品国产一区二区三区| 精品999在线播放| 久久久久久久久久久久| 久久国产剧场电影| 精品欧美乱码久久久久久| av在线网站观看| 免费高清在线一区| 日韩欧美国产一区二区在线播放| 午夜av免费看| 日韩精品欧美精品| 日韩亚洲欧美在线| 手机av免费看| 久久成人综合网| 久久综合资源网| 国产传媒在线看| 韩国女主播成人在线观看| 久久久久久久久久久久久久久99| 欧美性猛交xxxx乱| 国模无码大尺度一区二区三区| 精品福利在线导航| 在线观看日本黄色| 国产综合一区二区| 国产精品成人免费在线| 在线观看xxx| 成人欧美精品一区二区| 午夜精品爽啪视频| 欧美videos中文字幕| 国产三级在线观看完整版| 粉嫩欧美一区二区三区高清影视 | 国产午夜精品一区二区三区四区| www成人啪啪18软件| 高潮精品一区videoshd| 国产精品不卡在线| 欧美午夜在线一二页| 性欧美18—19sex性高清| 日韩福利电影在线| 国产亚洲短视频| 色综合久久久久综合体桃花网| 99久久国产综合色|国产精品| 亚洲综合视频在线| 精品国产人成亚洲区| 午夜精品久久久久99蜜桃最新版| 成人app在线观看| 亚洲一区二区三区四区不卡| 欧美一区二区视频在线观看 | 国产成人福利片| 亚洲老司机在线| 日韩午夜在线影院| 特黄一区二区三区| 91丨九色丨蝌蚪丨老版| 日韩不卡手机在线v区| 国产精品欧美久久久久一区二区 | 成人在线视频一区二区| 亚洲综合色视频| 欧美mv日韩mv亚洲| 农村妇女精品一区二区| 一边摸一边做爽的视频17国产| 精品一区二区三区在线播放| 中文字幕亚洲一区二区va在线| 欧美一区二区在线不卡| 日韩欧美综合视频| 污污污www精品国产网站| 国产成人亚洲综合色影视| 亚洲线精品一区二区三区八戒| 精品欧美乱码久久久久久| 色视频成人在线观看免| 少妇大叫太粗太大爽一区二区| 丁香另类激情小说| 日本不卡一区二区三区高清视频| 中文成人综合网| 欧美一区二区免费视频| 三级全黄做爰视频| 污污内射在线观看一区二区少妇| 国产jizzjizz一区二区| 日韩经典一区二区| 综合久久久久久| 精品毛片乱码1区2区3区| 日本韩国一区二区| 欧美三级视频网站| 无码国产精品一区二区免费式直播| 国产精品一区二区91| 石原莉奈在线亚洲三区| 亚洲视频在线观看三级| 久久影院午夜论|