代码改变世界

实现虽易,写好不易——小玩意也能体现编码功力,微信消息处理框架发布

2014-05-22 14:45  麦舒  阅读(6296)  评论(8编辑  收藏  举报

最近在接手同事之前写的代码,关于微信接口开发的,花了点时间把它整理成了一个类库,但是为了显得高大上,冠了一个框架之名。然后写下这么一篇文章:

代码重构之 —— 一堆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

上海的朋友,可以扫一扫下这面这个公众号。