Cloudflaer Workers+微信公众号测试接口部署私有消息推送

本项目是基于以下两个项目做的优化,原项目拆封成了两部分,消息推送和消息浏览需要分别部署,我嫌麻烦,将其优化后合并到了一起,代码也做了优化,缩减到了573行,这样只需要一次部署,绑定一个域名,不用多次部署绑定。各有利弊吧,分开有分开的好。

项目来源:
https://github.com/frankiejun/wxpush
https://github.com/frankiejun/wxpushSkin

一、申请微信测试号
打开:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
用你的微信扫码登录
向下滚动,找到以下信息并记下来:
appID
appsecret
用需要接收消息的微信扫「测试号二维码」关注,刷新页面,在「测试号用户列表」中会看到你的 微信号,一会儿要用。
模板消息接口,新增测试模板,标题填入:消息推送, 内容填入:内容:{{content.DATA}} ,这里的模板ID(用于接口调用),一会儿要用。

二、部署主推送服务(Cloudflare Workers)
登录 Cloudflare → Workers & Pages ,从 Hello World 开始部署,取个名字(如 wx)→ Create worker
点击 Edit code → 把默认代码全删,粘贴项目源码
保存 → Deploy
然后点 Settings → Variables,添加以下环境变量
全部填好后点最下方的 Deploy,主服务就部署完成!

访问格式:
https://你的worker域名.workers.dev/你的API_TOKEN
例如:
https://wx.xxx.workers.dev/k9xP2mZqkjkdsahfjdsfs2FDeJ4hF6gD9cA0sB2vG3
打开就是自带测试页,填内容点发送就能收到微信消息啦!

三、实际使用示例
支持 Webhook 的项目(哪吒、UptimeKuma、青龙面板、HealthChecks 等)都能轻松接入:

请求方式: POST 或 GET 均可
URL: https://你的worker域名.workers.dev/wxsend
请求头: {“Authorization”: “你的token”, “Content-Type”: “application/json”}
body: { “content”: “你的内容”, “title”:”你的标题” }

基础推送:
https://wx.yourdomain.com/wxsend?title=服务器通知&content=服务已于北京时间2026-09-22 14:00重启&token=k9xP2mZqkjkdsahfjdsfs2FDeJ4hF6gD9cA0sB2vG3

Linux 下直接测试的命令:

curl -X POST \
  "https://<您的Worker地址>/wxsend" \
  -H "Authorization: 你的token" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "测试消息",
    "content": "自动化任务已完成。"
  }'

为了好记,强烈建议绑定自定义域名,例如:https://wx.yourdomain.com

变量名示例值说明
API_TOKENk9xP2mZqkjkdsahfjdsfs2FDeJ4hF6gD9cA0sB2vG3调用接口的访问令牌,务必设置复杂随机字符串,由你自己自定义
WX_APPIDwx1234567890abcdef测试号首页的 AppID
WX_SECRET0123456789abcdef0123456789abcdef0123456789ab测试号首页的 AppSecret
WX_USERIDo_abcd1234efgh5678|o_ijkl9012mnop3456接收者 微信号,多个用户用竖线 | 分隔
WX_TEMPLATE_IDAbC123dEFGhIJKlmnOPQRStuvwxYZ第一步添加模板后得到的 template_id
WX_BASE_URLhttps://wx.yourdomain.com微信中点击消息后跳转的详情页地址,填写你Workers的默认域名或者你指定的域名

以下是Worker用到的部署代码:

Language
中文(简体) 中文(繁體) 日本語 한국어 русский English français Deutsch español italiano বাংলা (ভারত) العربية ไทย Tiếng Việt Bahasa Melayu Filipino ελληνικά magyar dansk norsk íslenska Gaeilge