index.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. const express = require("express");
  2. const {
  3. getJsapiTicket,
  4. createSignature,
  5. verifyWechatToken,
  6. } = require("./wechat");
  7. const app = express();
  8. // 公众号后台配置的 Token(需与后台一致)
  9. const WECHAT_TOKEN = 'Kyunghak132'; // 替换为你的实际 Token
  10. // 允许跨域(如需)
  11. app.use((req, res, next) => {
  12. res.header("Access-Control-Allow-Origin", "*");
  13. res.header("Access-Control-Allow-Headers", "Content-Type");
  14. next();
  15. });
  16. // 微信服务器验证接口(需处理 GET 请求)
  17. app.get('/api/wechat', (req, res) => {
  18. console.log("微信验证请求:", req.query); // 添加这行
  19. const { signature, timestamp, nonce, echostr } = req.query;
  20. if (verifyWechatToken(WECHAT_TOKEN, signature, timestamp, nonce)) {
  21. res.send(echostr); // 验证成功,返回 echostr
  22. } else {
  23. res.status(403).send("Token 验证失败");
  24. }
  25. });
  26. // GET /api/wechat-signature?url=https://xxx.com/page
  27. app.get("/api/wechat-signature", async (req, res) => {
  28. try {
  29. const url = decodeURIComponent(req.query.url);
  30. if (!url) return res.status(400).json({ error: "缺少 url 参数" });
  31. const ticket = await getJsapiTicket();
  32. const sign = createSignature(ticket, url.split("#")[0]);
  33. res.json(sign);
  34. } catch (e) {
  35. res.status(500).json({ error: e.message });
  36. }
  37. });
  38. app.listen(3000, () => console.log("服务已启动 http://localhost:3000"));