utils.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. const axios = require("axios");
  2. module.exports = {
  3. requestToken: function (app) {
  4. let token = "";
  5. axios
  6. .get(
  7. `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${process.env.APP_ID}&secret=${process.env.APP_SECRET}`
  8. )
  9. .then((res) => {
  10. if (res.data && res.data.access_token) {
  11. console.log("Token requested.");
  12. token = res.data.access_token;
  13. app.locals.access_token = token;
  14. } else {
  15. console.error(res.data);
  16. }
  17. });
  18. return token;
  19. },
  20. pushMessage: function (req, res, content) {
  21. // Reference: https://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=tmplmsg/faq_tmpl
  22. let access_token = req.app.locals.access_token;
  23. let request_data = {
  24. touser: process.env.OPEN_ID,
  25. template_id: process.env.TEMPLATE_ID,
  26. };
  27. request_data.data = { text: { value: content } };
  28. axios
  29. .post(
  30. `https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=${access_token}`,
  31. request_data
  32. )
  33. .then((response) => {
  34. if (response.data && response.data.errcode === "40001") {
  35. requestToken(req.app);
  36. }
  37. res.json(response.data);
  38. })
  39. .catch((error) => {
  40. res.json(error);
  41. });
  42. },
  43. };