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();
複製代碼
先到這裏。。。。。。
將來還會實現更多的功能