微信公众平台开发NodeJs SDK

2016年8月9日 · 294 字 · 2 分钟

本SDK要求NodeJs >= 4.x,欢迎大家在issues提问。

项目地址

wechat-nodejs

安装

npm install wechat-nodejs ---save

说明

使用所有sdk功能前需要初始化wechat句柄,初始化代码如下:

const Wechat = require('wechat-nodejs').Wechat;
const wechat = new Wechat(appId,appSecret);

SDK扩展了JS原始错误类,包含message,code属性,SDK中Promise抛出的错误code为微信返回的errcode,抛出一个自定义错误代码如下:

const AppError = require('wechat-nodejs').AppError;
throw new AppError('参数错误',1);

功能列表

分组

  • 初始化Group
const Group = require('wechat-nodejs').Group;
const group = new Group(wechat.getInstance());
  • 创建分组
group.create('测试分组').then((data)=>{
  console.log(data);
}).catch((e)=>{
  console.error(e.message,e.code);
});
  • 获取所有分组
group.getAll().then((data)=>{
  console.log(data);
}).catch((e)=>{
  console.error(e.message,e.code);
});
  • 获取用户所在分组
group.getIdByOpenid(openid).then((groupId)=>{
  console.log(groupId);
}).catch((e)=>{
  console.error(e.message,e.code);
});
  • 修改分组名称
group.update(100,'测试分组01').then((data)=>{
  console.log(data);
}).catch((e)=>{
  console.error(e.message,e.code);
});
  • 移动用户分组
group.moveUserToGroup('oA-yljrYgywqN3SCXS_3jZnIP6Yw',100).then((data)=>{
  console.log(data);
}).catch((e)=>{
  console.error(e.message,e.code);
});
  • 批量移动用户分组
group.moveUsersToGroup(['oA-yljrYgywqN3SCXS_3jZnIP6Yw'],100).then((data)=>{
  console.log(data);
}).catch((e)=>{
  console.error(e.message,e.code);
});
  • 删除分组
group.remove(100).then((data)=>{
  console.log(data);
}).catch((e)=>{
  console.error(e.message,e.code);
});

JSSDK

  • 初始化JSSDK
const JSSDK = require('wechat-nodejs').JSSDK;
const jssdk = new JSSDK(wechat.getInstance());
  • 获取jsticket
jssdk.getTicket().then((ticket)=>{
  console.log(ticket);
}).catch((e)=>{
  console.error(e.message,e.code);
});
  • 获取jssdk配置参数
jssdk.getConfig('http://www.baidu.com',['onMenuShareTimeline'],false).then((config)=>{
  console.log(config);
}).catch((e)=>{
  console.error(e.message,e.code);
});

自定义菜单

  • 初始化Menu
const Menu = require('wechat-nodejs').Menu;
const menu = new Menu(wechat.getInstance());
  • 创建自定义菜单
const button = [
{
  "type": "click",
  "name": "今日歌曲",
  "key": "V1001_TODAY_MUSIC"
},
{
  "name": "菜单",
  "sub_button": 
  [
    {
    "type": "view",
    "name": "搜索",
    "url": "http://www.soso.com/"
    },
    {
    "type": "view",
    "name": "视频",
    "url": "http://v.qq.com/"
    },
    {
    "type": "click",
    "name": "赞一下我们",
    "key": "V1001_GOOD"
    }
  ]
}];
menu.create(button).then((data)=>{
  console.log(data);
}).catch((e)=>{
  console.error(e.message,e.code);
});
  • 查询自定义菜单
menu.get().then((data)=>{
  console.log(data);
}).catch((e)=>{
  console.error(e.message,e.code);
});
  • 删除自定义菜单
menu.remove().then((data)=>{
  console.log(data);
}).catch((e)=>{
  console.error(e.message,e.code);
});
  • 获取公众平台后台设置的自定义菜单
menu.getByWeb().then((data)=>{
  console.log(data);
}).catch((e)=>{
  console.error(e.message,e.code);
});

消息

  • 初始化Message
const Message = require('wechat-nodejs').Message;
const message = new Message(wechat.getInstance());
  • 发送模板消息
const data = {
  orderId: {
    value: '20160101'
  },
  status: {
    value: '已发货'
  }
};
const openid = 'oA-yljj5cBGSvnwFodHT1iqis7X8';
const templateId = 'G4C9rNCejbhyYzh7xsOh46pieLelrmj_bLQtRhdOqkY';
const url = 'https://github.com';
message.sendTemplate(openid,templateId,url,data).then((data)=> {
  data.should.have.property('errcode', 0);
}).catch((e)=>{
  console.error(e.message,e.code);
});

用户

  • 初始化User
const User = require('wechat-nodejs').User;
const user = new User(wechat.getInstance());
  • 设置用户备注名
user.setRemark('oA-yljj5cBGSvnwFodHT1iqis7X8','重要客户').then((data)=>{
  console.log(data);
}).catch((e)=>{
  console.error(e.message,e.code);
});
  • 获取用户信息
user.getInfo('oA-yljj5cBGSvnwFodHT1iqis7X8').then((data)=>{
  console.log(data);
}).catch((e)=>{
  console.error(e.message,e.code);
});
  • 批量获取用户信息
user.batchGetInfo(['oA-yljj5cBGSvnwFodHT1iqis7X8']).then((data)=>{
  console.log(data);
}).catch((e)=>{
  console.error(e.message,e.code);
});
  • 检测关注
user.isSubscribe('oA-yljj5cBGSvnwFodHT1iqis7X8').then((isSubscribe)=>{
  console.log(isSubscribe);
}).catch((e)=>{
  console.error(e.message,e.code);
});
  • 获取关注用户openid列表
user.getList('oA-yljj5cBGSvnwFodHT1iqis7X8').then((data)=>{
  console.log(data);
}).catch((e)=>{
  console.error(e.message,e.code);
});

单元测试

终端执行:

npm install mocha --save-dev

在本sdk根目录新建config.json,内容如下:

{
  "wechat": {
    "appId": "微信公众号appId",
    "appSecret": "微信公众号appSecret"
  }
}

终端执行:

npm run test

授权协议

MIT License