wechat-next v0.4.3
Wechat Next 微信开放平台api (Node.js)
Wechat Next 主要实现实现对 微信、企业微信 api 的基础访问功能,包括接口访问、错误处理、accessToken 管理、微信消息接收。没有做过多的封装,所有数据参数请参考微信文档。
npm install wechat-next
使用
const { Wechat } = require('wechat-next')
const params = { appid, secret };
let token;
const api = new Wechat(params, {
saveAccessToken(accessTokenData, params){
token = accessTokenData;
},
getAccessToken(params){
return token;
}
});
await api.post('cgi-bin/menu/create', menus)
const menus = await api.get('cgi-bin/menu/get_current_selfmenu_info')
accssToken 管理
根据 acessToken
的不同处理方式,该api支持多种调用方法
如果想自行管理 accssToken
,可以将该库当作 request
使用。
const { Wechat } = require('wechat-next')
const api = new Wechat();
const accessToken = await api.getAccessToken({ appid, secret });
await api.post('cgi-bin/menu/create', {
access_token: accessToken.accessToken
}, menus)
const menus = await api.get('cgi-bin/menu/get_current_selfmenu_info', {
access_token: accessToken.accessToken
})
如果是单进程,可以直接由类自动处理 accessToken
获取、过期重试
const { Wechat } = require('wechat-next')
const params = { appid, secret };
const api = new Wechat(params);
await api.post('cgi-bin/menu/create', menus)
如果是多进程,或者分布式部署,初始化类时提供了 getAccessToken
, saveAccessToken
配置以供
accessToken 的存储。
const { Wechat } = require('wechat-next')
const params = { appid, secret };
const api = new Wechat(params, {
saveAccessToken(accessTokenData, params){
return saveAsync(accessTokenData);
},
getAccessToken(params){
return getAsync(params); //params 为初始化时的 params
}
});
基础功能
微信api、企业微信api、oauth认证都继承自BaseApi
都拥有一样的基础功能
初始化api
const { Wechat, WxWork } = require('wechat-next')
const wechatApi = new Wechat(params, { saveAccessToken, getAccessToken, request })
const wxWorkApi = new WxWork(params, { saveAccessToken, getAccessToken, request })
各自的 params 略有不同,主要提供默认的认证参数,比如 Wechat 是 { appid, secret }
,
WxWork 是 { corpid, corpsecret, agentid }
根据微信api文档定义未做更改。
如果未配置 params 则需要在访问方法(需授权)的参数中提供。
request
配置 axios 的默认值。
api.request(path, config)
请求无需提前授权的 api,path
, config
为 axios 的参数
处理接口错误信息,抛出错误。
api.getAccessToken(params)
获取授权 accessToken
。
params
参考微信授权api,会合并初始化时的默认 params
api.authorizeRequest(path, config)
自动处理授权后请求 api.request
如果提供了授权令牌参数 access_token
,则直接访问。
未提供则调用 api.getAccessToken
获得授权后访问。
自动处理过期重试。
api.get(path, params, config)
get
方式访问 api.authorizeRequest
params
为 url query 参数
api.post(path, params, data, config)
post
方式访问 api.authorizeRequest
params
为 url query 参数
data
为提交数据
Oauth 认证(微信,小程序,开放平台)
const { WechatOauth } = require('wechat-next')
const oauth = new WechatOauth({ appid, secret })
oauth.getAuthorizeURL(params)
微信内嵌网页获取认证 url
参数会合并初始化中的 params
参数参考
oauth.getQRAuthorizeURL(params)
网页扫码认证 url 参数参考
oauth.code2Session(js_code)
小程序 jsCode 获取 openid、session_key
oauth.decryptData(data, session_key, iv, appid)
解密数据(小程序)
oauth.getUserInfo(openid, lang)
获取用户数据
接收消息 Receiver
接收微信,企业微信消息
const { Receiver } = require('wechat-next')
Receiver.handleRequest({ appid, token, aes_key }, method, query, xml, handler)
自定义处理微信 request 请求。 handler 支持返回 Promise
const { Receiver } = require('wechat-next')
const config = { appid: 'demo', token: 'demo', aes_key: 'demo' };
const http = require('http');
const server = http.createServer((req, res) => {
Receiver.handleRequest(
config,
req.method,
paseQuery(req),
parseBody(req),
function(messsage) => {
return 'ok';
}
).then(ret => {
res.statusCode = ret.status;
if(ret.type) res.setHeader('Content-Type', ret.type);
res.end(ret.body);
}).catch(err => {
res.statusCode = 500;
res.end('');
});
});
server.listen(3000);
Receiver.koa(config, handler)
koa 中间件
最终传入 Receiver.handleRequest
的 config 会合并 ctx.wechatConfig
如果有自定义 appid
的需求可以提前设置 ctx.wechatConfig
const { Receiver } = require('wechat-next')
app.use( Receiver.koa(config, async (message, ctx) => {
return 'ok';
})
Receiver.express(config, handler)
express 中间件
最终传入 Receiver.handleRequest
的 config 会合并 req.wechatConfig
如果有自定义 appid
的需求可以提前设置 req.wechatConfig
const { Receiver } = require('wechat-next')
app.use( Receiver.express(config, (message, req, done) => {
done('ok');
})
微信,小程序 api
const { Wechat } = require('wechat-next')
const wechatApi = new Wechat({ appid, secret })
企业微信内部开发 api
const { WxWork } = require('wechat-next')
const wxWorkApi = new WxWork({ corpid, corpsecret, agentid })
wxWorkApi.getAuthorizeURL(params)
微信内嵌网页获取认证 url
参数会合并初始化中的 params
参数参考
wxWorkApi.getQRAuthorizeURL(params)
网页扫码认证 url 参数参考
wxWorkApi.getUserInfo(code)
获取用户数据
企业微信服务商认证 api
const { WxWorkProvider } = require('wechat-next')
const wxWorkProviderApi = new WxWorkProvider({ corpid, provider_secret })
wxWorkProviderApi.getAuthorizeURL(params)
wxWorkProviderApi.getUserInfo(auth_code)
获取用户数据
企业微信服务商 api
const { WxWorkSuite } = require('wechat-next')
const wxWorkSuiteApi = new WxWorkSuite({ suite_id, suite_secret, suite_ticket })
wxWorkSuiteApi.getAuthorizeURL(params)
wxWorkProviderApi.getInstallURL(params)
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago