GitHub地址,欢迎你们starjavascript
koa-easywechat是一个微信公众号开发中间件.java
因为使用的是koa2,异步开发使用async/await的写法,因此请保证你的node版本>=7.6node
$ npm install koa-easywechat -S
复制代码
注意:koa-easywechat中间件要写在最前面,也就是要第一个use,由于我在ctx上挂载了一个wechat对象,这个对象实现了大部分的微信接口,这样才能保证开发者在本身的写路由里,获取到ctx.wechat进行本身的业务开发git
var Koa=require("koa");
var WeChat=require("koa-easywechat");
var app=new Koa();
app.use(WeChat({
appID:"",
appsecret:"",
token:"",
isSafeModel:false,
encodingAESKey:""
},async function (next){
this.reply={
type:"text",
content:"回复一段文字吧"
}
}
}));
app.listen(3000,()=>{
console.log("server is running")
});
复制代码
上面这段代码用于回复一段文字github
async replyHandler(next){
var message=this.message;
var wechat=this.wechat;
this.reply={
type:"text",
content:"回复一段文字吧"
}
}
复制代码
若是没有回复的业务逻辑,能够调用next()将控制权交给以后的中间件处理shell
async replyHandler(next){
await next();
}
复制代码
在这个函数里,this就是koa框架中的上下文(ctx)的引用,我在ctx对象上挂载了两个对象wechat和messagenpm
功能:获取accessToken。由于调用accessToken的接口天天的调用频率是有上限的,不能频繁调用,因此这里实现了accessToken的自管理,开发者没必要关心accessToken是否过时,过时以后会自动去微信服务器请求并更新最新的accessToken。json
var wechat=ctx.wechat;
var token=await ctx.getAccessToken();
复制代码
功能:获取jsapi_ticketj,sapi_ticket是公众号用于调用微信JS接口的临时票据。jsapi_ticket与token相似,在微信网页开发中须要用到,也须要全局缓存。api
var wechat=ctx.wechat;
var jsApiTicket=await ctx.getJsApiTicket();
复制代码
功能:上传临时素材缓存
参数
属性 | 类型 | 说明 |
---|---|---|
type | String | 支持的值有image, voice, video, thumb |
filePath | String | 多媒体文件的路径 |
返回值(json)
属性 | 说明 |
---|---|
type | 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb,主要用于视频与音乐格式的缩略图) |
media_id | 媒体文件上传后,获取标识 |
created_at | 媒体文件上传时间戳 |
var wechat=ctx.wechat;
var media=await ctx.uploadTemporaryMaterial("image","文件的路径");
复制代码
功能:建立自定义菜单
参数:
属性 | 类型 | 说明 |
---|---|---|
menuObj | Object | 菜单对象,格式要符合规定的格式 |
var menu = {
button: [
{
type: "click",
name: "今日歌曲",
key: "V1001_TODAY_MUSIC"
},
{
name: "菜单",
sub_button: [
{
type: "view",
name: "搜索",
url: "http://www.soso.com/"
},
{
type: "click",
name: "赞一下咱们",
key: "V1001_GOOD"
}]
}]
};
var wechat=ctx.wechat;
await wechat.createMenu(menu);
复制代码
功能:获取json格式的自定义菜单
var wechat=ctx.wechat;
var menu=await wechat.getMenu();
复制代码
功能:删除自定义菜单
var wechat=ctx.wechat;
var menu=await wechat.deleteMenu();
复制代码
先到这里。。。。。。
将来还会实现更多的功能