国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

.net微信公眾號開發(fā)——快速入門

2019-11-17 02:33:24
字體:
供稿:網(wǎng)友

.net微信公眾號開發(fā)——快速入門

作者:王先榮

最近在學(xué)習(xí)微信公眾號開發(fā),將學(xué)習(xí)的成果做成了一個類庫,方便重復(fù)使用。

現(xiàn)在微信公眾號多如牛毛,開發(fā)微信的高手可以直接無視這個系列的文章了。

使用該類庫的流程及寥寥數(shù)行代碼得到的結(jié)果如下。

本文的源代碼主要在:http://git.oschina.net/xrwang2/xrwang.weixin.PublicAccount/blob/master/xrwang.net/WeixinInterface.ashx以及http://git.oschina.net/xrwang2/xrwang.weixin.PublicAccount/blob/master/xrwang.net/Global.asax

1 引用微信公眾號類庫

引用xrwang.weixin.PublicAccount。

2 添加公眾號信息

添加提供服務(wù)的公眾號的信息,包括:原始id、AppId、AppSecret、EncodingAESKey。代碼如下:

AccountInfoCollection.SetAccountInfo(new AccountInfo("YourOriginalId", "AppId", "AppSecret", "Token", "EncodingAESKey"));

如果需要同時給多個公眾號提供服務(wù),重復(fù)上面這行代碼就可以了。

注:由于微信服務(wù)器的原因,如果在一個站點中要同時給多個公眾號提供服務(wù),有兩種方法:如果用同一頁面處理多個公眾號,那么Token必須一致(1)可以在接口配置信息的URL中加入?yún)^(qū)分公眾號的參數(shù)(例如:http://www.xrwang.net/WeixinInterface.ashx?username=gh_5dbae931ec49);(2)針對每個公眾號單獨建立一個頁面來處理。我目前采用了第一種方式,這樣更簡便。

我喜歡將添加公眾號信息的工作放到Gobal.asax的application_Start方法中。

3 與微信服務(wù)器通信

我添加了名為“WeixinInterface.ashx”的一般處理頁,并在其中與微信服務(wù)器進(jìn)行通信,包括:校驗請求、處理請求、回復(fù)適當(dāng)?shù)捻憫?yīng)。代碼如下:

    public void PRocessRequest(HttpContext context)    {        string result = string.Empty;        if (Validate(context))        {            if (context.Request.HttpMethod == WebRequestMethods.Http.Get)                result = HandleGet(context);            else if (context.Request.HttpMethod == WebRequestMethods.Http.Post)                result = HandlePost(context);        }        else            Message.Insert(new Message(MessageType.Exception, "校驗消息失敗。/r/n地址:" + context.Request.RawUrl));        context.Response.Write(result);    }
與微信服務(wù)器通信

3.1 校驗請求

首先,我們需要校驗接收到的請求是否來自微信服務(wù)器,方法如下:

    /// <summary>    /// 驗證消息的有效性    /// </summary>    /// <param name="context"></param>    /// <returns>如果消息有效,返回true;否則返回false。</returns>    private bool Validate(HttpContext context)    {        string token = AccountInfoCollection.First.Token;   //由于在校驗微信簽名時,微信未傳入公眾號,因此這里用第一個公眾號的TOKEN        string signature = RequestEx.TryGetQueryString("signature");        string timestamp = RequestEx.TryGetQueryString("timestamp");        string nonce = RequestEx.TryGetQueryString("nonce");        if (string.IsNullOrWhiteSpace(signature) || string.IsNullOrWhiteSpace(timestamp) || string.IsNullOrWhiteSpace(nonce))            return false;        return xrwang.weixin.PublicAccount.Utility.CheckSignature(signature, token, timestamp, nonce);    }
校驗請求

當(dāng)然,如果你對世界充滿愛,相信沒有欺騙;如果你厲行節(jié)約,急需提高性能;不校驗也是可以的。

3.2 處理請求

校驗完請求之后,我們分兩種情況處理請求:

(1)微信服務(wù)器的GET請求,用來驗證我們的服務(wù)器是否正在工作,我們直接返回echostr就可以了;

    /// <summary>    /// 處理微信的GET請求,校驗簽名    /// </summary>    /// <param name="context"></param>    /// <returns>返回echostr</returns>    private string HandleGet(HttpContext context)    {        return RequestEx.TryGetQueryString("echostr");    }
處理GET請求

(2)微信服務(wù)器的POST請求,這是服務(wù)器分發(fā)給我們的消息,我們需要解析消息。

RequestMessageHelper helper = new RequestMessageHelper(context.Request);

3.3 回復(fù)響應(yīng)

解析完微信服務(wù)器分發(fā)給我們的消息之后,我們要做出回應(yīng)。我這里把收到的消息直接發(fā)回去,偷懶~/(≧▽≦)/~啦啦啦

    /// <summary>    /// 處理微信的POST請求    /// </summary>    /// <param name="context"></param>    /// <returns>返回xml響應(yīng)</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>    /// 處理請求消息,返回響應(yīng)消息    /// </summary>    /// <returns>返回響應(yīng)消息</returns>    private ResponseBaseMessage HandleRequestMessage(RequestBaseMessage requestMessage)    {        ResponseTextMessage response = new ResponseTextMessage(requestMessage.FromUserName, requestMessage.ToUserName,            DateTime.Now, string.Format("自動回復(fù),請求內(nèi)容如下:/r/n{0}", requestMessage));        response.Content += "/r/n<a href=/"http://www.survivalescaperooms.com/">博客園</a>";        return response;    }
回復(fù)響應(yīng)

當(dāng)然了,正常情況下,我們需要兵來將擋水來土掩,根據(jù)不同的請求,回復(fù)對應(yīng)的響應(yīng)。如果需要對請求排隊,再一一回復(fù)客服消息,可以先直接回復(fù)空字符串。回復(fù)客服消息的方法請看后面的文章。

4 微信公眾號類庫簡介

xrwang.weixin.PublicAccount是一套簡化微信公眾號開發(fā)的類庫,由王先榮開發(fā),并且正在添磚加瓦中。采用MIT開源協(xié)議,大家可以隨便用,別刪掉我的名字就可以啦。

源代碼的地址是:http://git.oschina.net/xrwang2/xrwang.weixin.PublicAccount

如果發(fā)現(xiàn)BUG,請在博客中留言,或者給我發(fā)電子郵件:xrwang(a)126.com。

千萬不要用QQ或者阿里旺旺聊天,打擾我玩游戲,我會罵人的 >.<

5 體驗測試號

下面分別是我的測試號和公眾號,您可以對照文章來體驗哦。

測試號

測試號權(quán)限多,幾乎可以測試公眾平臺的所有功能。

我的公眾號

xrwang

個人訂閱號,功能較少,不過我會特別優(yōu)化。

好了,感謝您看完本文,希望對您有所幫助。本文來自xrwang的博客http://xrwang/VEVb.com,歡迎在不篡改作者的前提下轉(zhuǎn)載以傳播知識。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 房产| 天峻县| 涞水县| 泗水县| 金门县| 彭泽县| 右玉县| 台中市| 巢湖市| 南川市| 闸北区| 阳山县| 南宫市| 云阳县| 佛冈县| 汕尾市| 南川市| 安义县| 乌拉特后旗| 甘洛县| 天门市| 崇明县| 新化县| 庆元县| 泸州市| 榆中县| 甘南县| 连南| 长岛县| 三穗县| 布尔津县| 盐城市| 上饶市| 庆云县| 龙南县| 陕西省| 抚松县| 云南省| 洪江市| 玛多县| 新泰市|