實現雖易,寫好不易——小玩意也能體現編碼功力,微信消息處理框架發布


最近在接手同事之前寫的代碼,關於微信接口開發的,花了點時間把它整理成了一個類庫,但是為了顯得高大上,冠了一個框架之名。然后寫下這么一篇文章:

代碼重構之 —— 一堆if、esle 邏輯的處理

有朋友說我寫這個,牛刀殺雞,但是如果我連雞都殺不了,怎么能夠讓別人相信我能殺牛呢。盡管它是個小類庫,但是並一定能把它寫好,如果你有更好的方案,歡迎討論,但不要人身攻擊。謝謝。

也有人說,把功能實現不就得了,管它代碼的好壞呢。如果你是老板,你可以不關心它,如果你是客戶,你更不需要擔心它。但是,如果作為技術人員,尤其是技術部門的管理人員,你不關心它,最后代碼亂到沒法維護,錯誤頻頻發生,這個板子肯定是要打到你的屁股上的。題外說完,下面說一下這個類庫。

 

一、為什么要使用它

使用這個框架來開發,是不是就不需要了解微信的接口呢?不!你仍然需要了解微信消息的通信機制和它的接口,只有你清楚了解了這些,才能用好這個類庫。使用這個類庫的好處是,可以規范你所寫的代碼,使得你所寫的代碼更易於維護。 

 

二、它封裝了哪些接口

現在只是封裝了消息處理的部份的接口。

即:接叫消息和發送消息的大部份接口。

 

三、使用指南  

1、在使用這個類庫之前,你得首先注冊一個微信的公眾帳號,你可以到 mp.weixin.qq.com 注冊。如果你已經注冊完成了,請忽略。

2、點擊 微信消處理框架 下載,然后解壓縮。打開項目進行編譯。另外:項目托管在CodePlex上了,可以到 http://wx.codeplex.com/ 下載最新的。 

3、創建一個 Web 項目,然后引用 WeiXin.dll。


現在已經轉移動GitHub了,https://github.com/ansiboy/YuChang

4、創建一個 Generic Handler 文件,例如:MessageReceiver.ashx。

5、在該文件的代碼如下所示,其中的 Token 值,你可以自行設定,在這里是 5201314 。

<%@ WebHandler Language="C#" Class="WeiXin.MessageReceiver" %>
#define TRACE

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Diagnostics;
using System.IO;
using System.Xml;
using WeiXin;
using WeiXin.Models;

namespace WeiXin
{
    public class MessageReceiver : IHttpHandler
    {
        public MessageReceiver()
        {

        }

        public void ProcessRequest(HttpContext context)
        {
            const string TOKEN = "5201314";
            var handler = new WeiXin.HttpHandler(TOKEN, new MessageProcesser());
            handler.Process(context.Request, context.Response);
        }

        public virtual bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

6、把該文件上傳到空間上,假設路徑是 “http://wx.alinq.org/Test/MessageReceiver.ashx” 。

7、登錄微信公眾平台,先申請一個測試的賬號,然后在服務配置上填上下面的信息。

9、現在我們打開微信,掃一下公眾賬號,看有什么響應。

掃完后,在微信的界面上將會顯示下面的信息:

10、重寫 MessageProcesser 類,來實現回復自定義的消息。創建 MessageProcesser 繼承類命名為 MyMessageProcesser ,例如 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using WeiXin.Models;

public class MyMessageProcesser : WeiXin.MessageProcesser
{
    public MyMessageProcesser()
    {
    }

    protected override ReplyMessage ProcessSubscribeEvent(SubscribeEvent msg)
    {
        var reply = new TextReply(msg);
        reply.Content = "你好,歡迎關注";
        return reply;
    }

    protected override ReplyMessage ProcessUnsubscribeEvent(UnsubscribeEvent msg)
    {
        var reply = new TextReply(msg);
        reply.Content = "取消關注";
        return reply;
    }
}

然后修改 MessageReceiver.ashx 文件的代碼,把

var handler = new WeiXin.HttpHandler(TOKEN, new MessageProcesser());

改為:

var handler = new WeiXin.HttpHandler(TOKEN, new MyMessageProcesser());

11、現在我們再來掃一掃,看看有什么效果,當然,在掃之前請先取消關注,你會發現,回復變成了“你好,歡迎關注”。

 

大家如果對我做的東西感興趣,可以和我聯系:

QQ: 81932759

Q群: 71418067

上海的朋友,可以掃一掃下這面這個公眾號。

 


免責聲明!

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



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