網站建設

城市: 北京 天津 湖北 廣東 湖南 江西 河南 河北 陜西 吉林 遼寧 黑龍江 福建 上海 云南 貴州 四川 成都 更多
  當前位置:首頁 > 微信開發 > 公眾號開發 >

.net微信「微信公眾號報名活動怎么弄」公眾號開發消息與事件

作者:深圳seo 來源:網絡整理 發布時間:2019-05-07 瀏覽

0

本文介紹如何處理微信公眾號開發中的消息與事件,包括:(1)消「微店商城首頁」息(事件)概況;(2)驗證消息的真實「微商城開微商城在哪里進過」性;(3)解析消息;(4)被動回復消息;「多用戶微「微信公眾號和訂閱號的區別」商城」(5)發送其他消息。1 消息(事件)概況 當普通微信用戶向...

本文介紹如何處理微信公眾號開發中的消息與事件,包括:(1)消息(事件)概況;(2)驗證消息的真實性;(3)解析消息;(4)被動回復消息;(5)發送其他消息。
1 消息(事件)概況

當普通微信用戶向公眾號發消息或者微信服務器向公眾號推送事件時,微信服務器將POST消息(事件)的XML數據包到開發者填寫的公眾號服務器URL上;公眾號服務器然后對消息作出響應。
1.1 消息的流轉過程
為了便于區分,我們將微信服務器發往公眾號服務器的消息稱為請求(Request)消息;將公眾號服務器發往微信服務器的消息稱為響應(Response)消息;將推送事件看成特殊的請求消息。
請求與響應消息的流轉過程如下圖所示:

.net微信公眾號開發消息與事件

1.2 請求消息
請求消息有很多種,我們為其一一建立了對應的類,類層次結構如下圖所示:

.net微信公眾號開發消息與事件

有些請求消息,我們可以做出響應,有些則不能,詳見下表:

消息類型是否事件能夠被動回復備注
文本×
圖片×
聲音×
視頻×未知接收不到視頻消息,不知道是否能被動回復
地理位置×
鏈接×
訂閱
取消訂閱×
掃描二維碼×
上報地理位置×
點擊菜單拉取消息
點擊菜單跳轉鏈接×
點擊菜單掃碼推×
點擊菜單掃碼等待回復
點擊菜單系統發圖未知接收不到系統發圖事件;微信服務器會發送圖片消息,可回復
點擊菜單拍照或相冊發圖×微信服務器會發送圖片消息,可回復
點擊菜單微信發圖×微信服務器會發送圖片消息,可回復
點擊菜單選擇地理位置×微信服務器會發送地理位置消息,可回復
推送群發消息結果×
推送發送模板消息結果×

1.3 響應消息
響應消息的類層次結構如下圖所示:

.net微信公眾號開發消息與事件


2 驗證消息的真實性
「小程序微信開發費用」公眾號服務器接收到微信服務器的請求之后,第一件事情是驗證消息的真實性。
Utility.CheckSignature方法用于驗證消息簽名是否正確。
示例如下:

/// <summary>
    /// 驗證消息的有效性
    /// </summary>
    /// <param name="context"></param>
    /// <returns>如果消息有效,返回true;否則返回false。</returns>
    private bool Validate(HttpContext context)
    {
        s「微信淘寶購物群」tring username = RequestEx.TryGetQueryString("username");  //在接口配置的URL中加入了username參數,表示哪個微信公眾號
        AccountInfo account = AccountInfoCollection.GetAccountInfo(username);
        if (account == null)
            return false;
        string token = account.Token;
        string signature = RequestEx.TryG「做微信公眾號商城」etQueryString("signature");
        string timestamp = RequestEx.TryGetQueryString("timestamp");
        string nonce = RequestEx.TryGetQueryString("nonce");
        if (string.IsNullOrWhiteSpace(signature) || string.IsNullOrWhiteSpace(timestamp) || string.IsNullOrWhiteSpace(nonce))
            return false;
        return xr「微信公眾號費用」wang.weixin.Public「微信分銷系統系統」Account.Utility.CheckSignature(signature, token, timestamp, nonce);
    }

驗證消息真實性

驗證消息真實性

3 解析消息

如果消息簽名通過驗證,我們需要將XML格式的消息文本解析成請求消息對象,RequestMessageHelper類用于完成這項工作。

RequestMessageHelper helper = new RequestMessageHelper(context.Request);
「人民網微信公眾號」if(helper.Message != null)
{
    //消息解析成功,對它進行處理
}

消息解析成功之后,helper.Message為消息基類RequestBaseMessage,我們可以根據屬性MsgType及Event判斷到底是哪種消息(事件),并轉換成適當的子類型。例如:

RequestBaseMessage bm=helper.Message;
switch(bm.MsgType)
{
    case RequestMessageTypeEnum.text:  //文本消息
        HandleTextMessage((RequestTextMess「微信app定制」age)bm);
        break;
    case RequestMessageTypeEnum.image: //圖片消息
        HandleImageMessage((RequestImageMessage)bm);
        break;
    //處理其他消息
    case RequestM「好微商城系統」essageTypeEnum.event:    //事件
  「第三方微信公眾號平臺」      RequestEventMessage ev=(RequestEventMessage)bm;
        switch(ev.Event)
        {
            case RequestEventTypeEnum.subscribe:    //訂閱
                HandleSubscribeMessage((RequestSubscribeMessage)ev);
                break;
            case RequestEventTypeEnum.unsubscribe:    //取消訂閱
                HandleUnsubscribeMessage((RequestUnsubscribeMessage)ev);
                break;
            //處理其他事件
        }
        break;
    default:
        break;
}

解析消息的細節請參看源代碼:http://git.oschina.net/xrwang2/xrwang.weixin.PublicAccount/blob/master/PublicAccount/RequestMessage/RequestMessageHelper.cs

4 被動回復消息
從微信服務器接收到消息(事件)之后,我們可以在5秒之內直接(被動)回復消息;也可以先直接回復空字符串,然后再在48小時內回復客服消息。
先初始化ResponseXxxMessage,然后用ToXml方法得到響應消息內容。
被動回復消息的示例如下:

/// <summary>
    /// 處理微信的POST請求
    /// </summary>
    /// <param name="context"></param>
    /// <returns>返回xml響應</returns>
    private string HandlePost(HttpContext context)
    {
        RequestMessageHelper helper = new RequestMessageHelper(context.Request);
        if (helper.Message != null)
        {
            ResponseBaseMessage responseMessage = HandleRequestMessage(helper.Message);
            return responseMessage.ToXml(helper.EncryptType);
        }
        else
            return string.Empty;
    }

    /// <summary>
    /// 處理請求消息,返回響應消息
    /// </summary>
    /// <returns>返回響應消息&l「微信小程序開發什么價」t;/returns>
    private ResponseBaseMessage HandleRequestMessage(RequestBaseMessage requestMessage)
    {
        ResponseTextMessage response = new ResponseTextMessage(requestMessage.FromUserName, requestMessage.ToUserName, 
            DateTime.Now, string.Format("自動回復,請求內容如下:\r\n{0}", requestMessage));
        return response;
    }


5 發送其他消息

除了被動回復消息之外,我們還可以發送客服消息、群發消息、發送模板消息,這些內容將在后續文章中一一道來。

以上就是.net微信公眾號開發消息與事件的詳細內容,更多請關注php中文網其它相關文章!

相關熱詞搜索:消息 事件 公眾 服務器 回復

歡迎轉載,轉載請注明原文網址: http://www.navjrq.live/gzhkaifa/50802.html

1.本站遵循行業規范,任何轉載的稿件都會明確標注作者和來源;2.本站的原創文章,請轉載時務必注明文章作者和來源,不尊重原創的行為我們將追究責任;3.作者投稿可能會經我們編輯修改或補充。

Copyright © 2002-2018 seo-820.com 版權所有 粵ICP備15020538號-3    技術支持:優選網絡

電腦版 | 移動版

3d福彩一等奖多少钱