Pārlūkot izejas kodu

:tada: wechat server verification part completed

Song 5 gadi atpakaļ
revīzija
57294ac131
5 mainītis faili ar 76 papildinājumiem un 0 dzēšanām
  1. 4 0
      .gitignore
  2. 5 0
      README.md
  3. 26 0
      app.js
  4. 18 0
      package.json
  5. 23 0
      routes.js

+ 4 - 0
.gitignore

@@ -0,0 +1,4 @@
+.idea
+node_modules
+package-lock.json
+.env

+ 5 - 0
README.md

@@ -0,0 +1,5 @@
+# 微信消息推送
+## 描述
+利用测试号来给自己的微信推送消息。
+
+https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

+ 26 - 0
app.js

@@ -0,0 +1,26 @@
+const express = require("express");
+const path = require("path");
+const cookieParser = require("cookie-parser");
+const logger = require("morgan");
+const http = require("http");
+require("dotenv").config();
+
+const indexRouter = require("./routes");
+
+const app = express();
+
+app.use(logger("dev"));
+app.use(express.json());
+app.use(express.urlencoded({ extended: false }));
+app.use(cookieParser());
+app.use(express.static(path.join(__dirname, "public")));
+
+app.use("/", indexRouter);
+
+const port = parseInt(process.env.PORT || "3000");
+app.set("port", port);
+const server = http.createServer(app);
+
+server.listen(port);
+
+module.exports = app;

+ 18 - 0
package.json

@@ -0,0 +1,18 @@
+{
+  "name": "wechat-message-push",
+  "version": "0.0.0",
+  "private": true,
+  "scripts": {
+    "start": "node ./bin/www"
+  },
+  "dependencies": {
+    "cookie-parser": "~1.4.4",
+    "debug": "~2.6.9",
+    "dotenv": "^8.2.0",
+    "express": "~4.16.1",
+    "morgan": "~1.9.1"
+  },
+  "devDependencies": {
+    "prettier": "^2.1.1"
+  }
+}

+ 23 - 0
routes.js

@@ -0,0 +1,23 @@
+const express = require("express");
+const router = express.Router();
+const crypto = require("crypto");
+
+router.get("/", (req, res, next) => {
+  res.send("OK");
+});
+
+router.get("/verify", (req, res, next) => {
+  // 验证消息来自微信服务器:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
+  const { signature, timestamp, nonce, echostr } = req.body;
+  const token = process.env.TOKEN;
+  let tmp_array = [token, timestamp, nonce].sort();
+  let tmp_string = tmp_array.join("");
+  tmp_string = crypto.createHash("sha1").update(tmp_string).digest("hex");
+  if (tmp_string === signature) {
+    res.send(echostr);
+  } else {
+    res.send("verification failed");
+  }
+});
+
+module.exports = router;