koa weixin jssdk middleware
import koa from 'koa';
import weixinJSSDK from '../src';
const port = process.env.PORT || 3000;
const app = koa();
app.use(weixinJSSDK({
appId: '<YOUR_APP_ID>', // [required] weixin-jssdk app id
secret: '<YOUR_SECRET>', // weixin-jssdk secret
pathName: '/jssdk', // [optional] eg: http://imyourfather.com/jssdk
onError: (err, ctx, next) => {
console.error(err);
ctx.body = 'error';
},
}));
app.listen(port);
By default, it would cache access_token
and ticket
in runtime memory, but you can store them in somewhere else.
app.use(weixinJSSDK({
appId: '<YOUR_APP_ID>',
secret: '<YOUR_SECRET>',
async onGetToken(url) {
return redis.getAsync('ACCESS_TOKEN'); // this is an example
},
async onSetToken(token, expiresIn) {
return redis.setSync('ACCESS_TOKEN', token, { expiresIn });
},
async onGetTicket(url) {
return redis.getAsync('TICKET');
},
async onSetTicket(ticket, expiresIn) {
return redis.setSync('TICKET', ticket, { expiresIn });
},
// other configs...
}));
Maybe you already have a Third-party weixin service and have a access token, you could use custom fetchTicket
or fetchToken
function instead of secret
.
app.use(weixinJSSDK({
appId: '<YOUR_APP_ID>', // [required]
async fetchToken() {
// await fetch(...)
return { access_token: '<MY_ACCESS_TOKEN>', expires_in: 7200 };
},
// other configs...
}));
Or fetchTicket
app.use(weixinJSSDK({
appId: '<YOUR_APP_ID>', // [required]
async fetchTicket() {
// await fetch(...)
return { ticket: 'TICKET', expires_in: 7200 };
},
// other configs...
}));
Using npm:
$ npm install koa-weixin-jssdk --save
MIT