微信 API For Node.js

Node.js

介绍

weixin-api是对微信公众平台消息接口的Node.js实现。

安装

$ npm install weixin-api

功能

消息监听

根据微信公众平台的API规范,对四种消息进行监听,通过传递callback来对消息进行处理,其中callback只有一个参数msg,不同消息其msg内容不同,各属性代表的含义请对照微信公众平台的API规范。

消息回复

消息的回复统一使用sendMsg(msg)方法,其中msg可以为以下内容:

示例

我们使用express来创建一个简单的微信应用

##安装express

$ npm install express -g

##创建应用

$ express myweixin

cd myweixin修改package.json,添加对weixin-api的依赖:

{
  "name": "application-name",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "3.1.1",
    "jade": "*",
    "xml2js" : "0.2.6",
    "weixin-api" : "*"
  }
}

然后执行npm install

##app.js

var express = require('express'),
	weixin = require('weixin-api'),
	app = express();

// 解析器
app.use(express.bodyParser());

// 接入验证
app.get('/', function(req, res) {
	
	// 签名成功
	if (weixin.checkSignature(req)) {
		res.send(200, req.query.echostr);
	} else {
		res.send(200, 'fail');
	}
});

// config
weixin.token = '你的token';

// 监听文本消息
weixin.textMsg(function(msg) {
	console.log("textMsg received");
	console.log(JSON.stringify(msg));

	var resMsg = {};

	switch (msg.content) {
		case "文本" :
			resMsg = {
				fromUserName : msg.toUserName,
				toUserName : msg.fromUserName,
				msgType : "text",
				content : "(╯°□°)╯︵ ┻━┻",
				funcFlag : 0
			};
			break;

		case "音乐" :
			resMsg = {
				fromUserName : msg.toUserName,
				toUserName : msg.fromUserName,
				msgType : "music",
				title : "向往",
				description : "李健《向往》",
				musicUrl : "",
				HQMusicUrl : "",
				funcFlag : 0
			};
			break;
	
		case "图文" :
	
			var articles = [];
			articles[0] = {
				title : "PHP依赖管理工具Composer入门",
				description : "PHP依赖管理工具Composer入门",
				picUrl : "http://weizhifeng.net/images/tech/composer.png",
				url : "http://weizhifeng.net/manage-php-dependency-with-composer.html"
			};

			articles[1] = {
				title : "八月西湖",
				description : "八月西湖",
				picUrl : "http://weizhifeng.net/images/poem/bayuexihu.jpg",
				url : "http://weizhifeng.net/bayuexihu.html"
			};

			articles[2] = {
				title : "「翻译」Redis协议",
				description : "「翻译」Redis协议",
				picUrl : "http://weizhifeng.net/images/tech/redis.png",
				url : "http://weizhifeng.net/redis-protocol.html"
			};

			// 返回图文消息
			resMsg = {
				fromUserName : msg.toUserName,
				toUserName : msg.fromUserName,
				msgType : "news",
				articles : articles,
				funcFlag : 0
			}
	}

	weixin.sendMsg(resMsg);
});

// 监听图片消息
weixin.imageMsg(function(msg) {
	//
	console.log("imageMsg received");
	console.log(JSON.stringify(msg));
});

// 监听位置消息
weixin.locationMsg(function(msg) {
	//
	console.log("locationMsg received");
	console.log(JSON.stringify(msg));
});

// 监听链接消息
weixin.urlMsg(function(msg) {
	//
	console.log("urlMsg received");
	console.log(JSON.stringify(msg));
});

// Start
app.post('/', function(req, res) {

	// loop
	weixin.loop(req, res);

});

app.listen(3000);

##启动

$ cd myweixin 
$ node app.js

#结尾 这个package还有很多不完善的地方,欢迎fork,:)

(完)
comments powered by Disqus
Powered by GitHub  &&  Jekyll | CC BY-NC-SA