| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | const axios = require("axios");module.exports = {  requestToken: function (app) {    let token = "";    axios      .get(        `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${process.env.APP_ID}&secret=${process.env.APP_SECRET}`      )      .then((res) => {        if (res.data && res.data.access_token) {          console.log("Token requested.");          token = res.data.access_token;          app.locals.access_token = token;        } else {          console.error(res.data);        }      });    return token;  },  pushMessage: function (req, res, content) {    // Reference: https://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=tmplmsg/faq_tmpl    let access_token = req.app.locals.access_token;    let request_data = {      touser: process.env.OPEN_ID,      template_id: process.env.TEMPLATE_ID,    };    request_data.data = { text: { value: content } };    axios      .post(        `https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=${access_token}`,        request_data      )      .then((response) => {        if (response.data && response.data.errcode === "40001") {          requestToken(req.app);        }        res.json(response.data);      })      .catch((error) => {        res.json(error);      });  },};
 |