站点图标 高效码农

Cloudflare Workers搭建微信推送服务:零成本高效消息通知方案

如何用 Cloudflare Workers 搭建微信消息推送服务:从零到部署的完整指南

你好,我是你的朋友,一个在 Serverless 架构和微信生态里摸爬滚打了好些年的开发者。今天想和你聊聊一个特别实用的工具——如何用一个轻量级的服务,把你的业务消息精准推送到微信用户手上。

你是不是也遇到过这些场景:服务器半夜挂了,却只能等早上才发现;用户下了订单,系统无法及时通知;或者你想给自己发个每日报告,却发现没有简单不花钱的方案?传统做法要么买服务器,要么用第三方推送平台,既麻烦又贵。

这篇文章要介绍的方案,可能正是你需要的。它不需要租服务器,不用管运维,部署只要几分钟,而且免费额度足够个人或小团队使用。更重要的是,整个过程你都能掌控。

这个方案到底是什么?

简单来说,我们要在 Cloudflare Workers 上搭建一个中间层服务,它接收你的 HTTP 请求,然后调用微信公众号的模板消息接口,把内容推送到用户微信里。这个服务有个名字,叫 WXPush。

Cloudflare Workers 是什么?你可以把它理解成跑在全球 CDN 边缘节点上的轻量代码。你的代码会被复制到全球 300 多个城市,用户请求自动路由到最近的节点,延迟极低。最关键的是,它按请求次数收费,每天有 10 万次免费调用额度,对个人项目来说几乎等于白用。

微信公众号模板消息又是怎么回事?这是微信官方提供的一种能力,允许公众号向用户发送固定格式的通知卡片,比如”订单支付成功”、”服务异常提醒”这类重要通知。用户收到后,消息会静静地躺在微信消息列表里,不会像客服消息那样造成骚扰。

为什么值得花时间了解这个方案?

动手之前,你可能想问:市面上不是有很多现成的推送服务吗?为什么要自己搭?好问题。这个方案有几个实打实的好处:

首先,成本真的低。Cloudflare 的免费套餐包含 10 万次请求/天,1000 万次 KV 操作/天。除非你的业务已经大到每天要给几万人发消息,否则根本不用花钱。对比一下,买台最便宜的云服务器一年也要几百块,更别说还要配置环境、维护安全。

其次,安全可控。你的<-WEIXIN-> 的 Secrets 加密存储,不在代码里硬编码。即使代码仓库不小心公开了,敏感信息也不会泄露。而且所有数据传输都走 HTTPS,Cloudflare 还自带 DDoS 防护。

再者,高度灵活。你可以为不同场景设置不同的推送模板,甚至可以在 URL 里临时覆盖默认配置。比如平时推送给运维团队,紧急情况下改个参数就能推给全员,不用改代码。

最后,维护成本几乎为零。部署完成后,你不用再操心服务器会不会宕机、要不要升级系统。Cloudflare 的工程师会搞定一切,你只管调用接口就行。

当然,它也有前提条件:你需要有一个已经认证的微信公众号(订阅号或服务号都行),并且用户必须关注了这个公众号。这是微信的安全机制,防止垃圾信息。

开始之前,你需要准备什么?

动手之前,咱们把需要的材料准备齐全,免得中途卡壳。

  • 一个微信公众号:必须是已经认证的,个人订阅号暂不支持模板消息。登录公众号后台,在”开发”->”基本配置”里找到你的 AppID 和 AppSecret。
  • 一个 Cloudflare 账号:没有的话去 cloudflare.com 注册一个,过程很简单。
  • 一个模板消息 ID:在公众号后台的”广告与服务”->”模板消息”里选个模板,或者申请新的。库里填好关键词,系统会生成一个模板 ID,长得像 6n_CMcMWtwWMG7pyt1uFg9K27pX-qHQxO2h6sZdJfh0
  • 用户的 OpenID:这是用户在你们公众号下的唯一身份标识。如果不知道,可以问你们开发要,或者看下文提到的获取方式。

这些东西准备好了,我们就可以开始部署。整个过程有两种方式,你可以根据自己的技术背景选择。

部署方式一:直接粘贴代码(最适合新手)

如果你不熟悉 Git 操作,也不想装开发环境,这个方法最适合。全程在浏览器里点几下、粘贴代码就能完成。

第一步:登录 Cloudflare 并创建 Worker

打开浏览器,进入 Cloudflare 仪表板。左侧菜单找到”Workers 和 Pages”,点击后选择”创建应用程序”,然后点”创建 Worker”。

这里需要给你的服务起个名字。这个名称会成为你服务地址的一部分,比如 my-wxpush-service.your-subdomain.workers.dev。名字只能包含字母、数字、连字符,而且全局唯一。建议用 wxpush- 开头加上你的项目名,比如 wxpush-order-notify

输入名称后,直接点击”部署”。Cloudflare 会先生成一个默认的 Hello World 示例代码。

第二步:替换为 WXPush 的代码

部署成功后,你会看到页面提示”恭喜!你的 Worker 已成功部署”。别激动,这只是示例代码。点击”编辑代码”按钮,进入在线编辑器。

你会看到类似这样的默认代码:

export default {
  async fetch(request, env, ctx) {
    return new Response('Hello World!');
  },
};

把它全部删掉。然后打开项目里的 src/index.js 文件(如果你下载了整个项目),或者直接从项目的 GitHub 页面复制代码。把所有内容原封不动地粘贴到 Cloudflare 编辑器里。

粘贴完成后,你的编辑器里应该包含了处理微信 token、调用模板消息接口、验证参数等完整逻辑。别担心看不懂,这些代码已经封装好了,你暂时不用深究。

点击右上角的”保存并部署”按钮。Cloudflare 会重新编译并把你的代码推送到全球节点。这个过程通常只要十几秒。

第三步:配置环境变量(最关键的一步)

代码部署好了,但它还不知道你的微信公众号信息。这时候需要配置环境变量。

返回 Worker 的主管理页面,点击”设置”选项卡,然后选择”变量”。在这里,你会看到”环境变量”部分。

需要添加以下变量,每添加一个都要记得勾选”加密”选项,这是保护你凭证安全的关键:

变量名 说明 示例值 是否加密
API_TOKEN 你自己设定的接口访问密码,调用时必须带上。建议用 32 位以上的随机字符串,包含大小写字母、数字和符号 WxPush_2024_Secure_Key_XyZ9LmPqRsTu 必须加密
WX_APPID 微信公众号的 AppID,一串 18 位字母数字组合 wx1234567890abcdef 必须加密
WX_SECRET 微信公众号的 AppSecret,32 位字符串 a1b2c3d4e5f678901234567890123456 必须加密
WX_USERID 接收消息的默认用户 OpenID,多个用 ` ` 分隔 `o7Xy_1a2B3c4D5e6F7g8H9i0J1k2L3m
WX_TEMPLATE_ID 模板消息 ID,从公众号后台获取 6n_CMcMWtwWMG7pyt1uFg9K27pX-qHQ... 可不加密
WX_BASE_URL 可选,点击消息后跳转的页面地址 `<-URL-> 可不加密

填完这些,点击”保存”。你的服务现在有了身份标识和通信密码。

第四步:测试服务是否正常工作

打开浏览器,构造一个测试 URL(记得把地址和 token 换成你的):

https://<你的Worker地址>/wxsend?title=测试消息&content=服务部署成功!&token=your_secret_token

如果一切正常,你会看到类似”Successfully sent messages to 1 user(s). First response: ok”的提示。同时,你配置的微信用户应该能收到一条模板消息卡片。

如果没看到,别慌,检查一下:

  • token 是否写错
  • OpenID 是否正确
  • 模板 ID 有没有空格
  • 公众号是否有模板消息权限

部署方式二:通过 GitHub 仓库自动部署(适合团队协作)

如果你习惯用 Git 管理代码,或者希望实现持续集成,推荐这种方式。每次代码更新推送到 GitHub,Cloudflare 会自动重新部署。

第一步:Fork 项目仓库

打开项目 GitHub 页面,点击右上角的”Fork”按钮,把它复制到你自己的账户下。当然,你也可以克隆到本地,然后推送到你新建的私有仓库。

第二步:在 Cloudflare 中连接 GitHub

同样在 Cloudflare 仪表板,进入”Workers 和 Pages”,但这次点击”连接到 Git”。系统会引导你授权 Cloudflare 访问你的 GitHub 账户。

授权完成后,选择你刚才 Fork 的仓库。

第三步:配置构建设置

这一步很关键。因为 WXPush 是纯 JavaScript,不需要构建过程,所以构建设置要特别配置:

  • 项目名称:随意,比如 wxpush-production
  • 生产分支:通常是 mainmaster
  • 框架预设:必须选 None
  • 构建命令:留空
  • 输出目录:留空
  • 根目录:保持 / 即可

第四步:添加环境变量

和方式一一样,在配置页面的”环境变量”部分,把 API_TOKEN, WX_APPID, WX_SECRET 等变量全部加上。切记勾选”加密”。

第五步:保存并部署

点击”保存并部署”。Cloudflare 会自动从 GitHub 拉取代码,完成部署。以后只要你向 main 分支推送新代码,Cloudflare 都会在几分钟内自动更新服务。

你可以看到每次部署的记录,包括谁在什么时候推送了什么代码,出了问题也方便回滚。

如何调用这个推送服务?

服务跑起来后,怎么用?WXPush 支持两种调用方式:GET 请求和 POST 请求,满足不同场景。

方式一:简单的 GET 请求

这是最直接的用法,适合在浏览器里测试,或者在脚本里用 curl 快速调用。

基础格式

https://<你的Worker地址>/wxsend?token=你的密钥&title=消息标题&content=消息内容

参数说明

参数名 是否必填 作用 示例
token 验证调用者身份 WxPush_2024_Secure_Key_XyZ9LmPqRsTu
title 消息标题,会显示在卡片首行 系统告警
content 详细内容 磁盘使用率超过 90%
userid 临时指定接收人,覆盖默认值 o7Xy_1a2B3c4D5e6F7g8H9i0J1k2L3m
template_id 临时更换模板 6n_CMcMWtwWMG7pyt1uFg9K27pX-qHQ...
appid 临时更换公众号 wx1234567890abcdef
secret 临时更换密钥 a1b2c3d4e5f678901234567890123456
base_url 临时更换跳转链接 https://example.com/alerts

一个完整的例子
假设你的 Worker 地址是 wxpush-api.yourname.workers.dev,想发一条服务器重启通知:

<-URL-> 22:00 重启&token=WxPush_2024_Secure_Key_XyZ9LmPqRsTu

注意,URL 里的空格和特殊字符要编码成 %20 这类格式,否则可能出错。

方式二:更专业的 POST 请求

GET 请求虽然简单,但参数暴露在 URL 里,不适合传递敏感信息。POST 请求把数据放在请求体里,更安全,也更符合 RESTful 规范。

请求地址

https://<你的Worker地址>/wxsend

请求头

Authorization: 你的token
Content-Type: application/json

请求体(JSON 格式):

{
  "title": "Webhook 通知",
  "content": "自动化任务已完成,处理 1234 条记录",
  "userid": "o7Xy_1a2B3c4D5e6F7g8H9i0J1k2L3m",
  "template_id": "6n_CMcMWtwWMG7pyt1uFg9K27pX-qHQ..."
}

实际调用示例(cURL)

curl -X POST <-URL-> \
  -H 'Authorization: WxPush_2024_Secure_Key_XyZ9LmPqRsTu' \
  -H 'Content-Type: application/json' \
  -d '{
    "title": "订单支付成功",
    "content": "订单号:<-PHONE->,金额:¥299.00"
  }'

这种方式特别适合集成到各种系统里:

  • GitLab/GitHub Webhook:代码提交后自动通知团队
  • 监控系统:Prometheus、Zabbix 告警直接推送到微信
  • 业务系统:用户下单、发货、退款等关键节点实时通知
  • 定时任务:每天下班前把数据报表推给自己

常见问题与解答(FAQ)

在部署和使用过程中,你可能会遇到这些疑惑。我根据大家的反馈,整理了最集中的几个问题。

问:Cloudflare Workers 的免费额度真的够用吗?
答:对于个人项目或小型团队,完全够用。免费套餐每天 10 万次请求,假设你每分钟调用一次,一天也才 1440 次。即使给 50 个人发通知,每人每天 10 条,也才 500 次。除非你的业务已经达到日活数万级别,否则很难用完。真的接近上限时,Cloudflare 会发邮件提醒,你可以考虑升级到付费套餐,每月 5 美元起步。

问:微信公众号必须是企业认证的吗?个人号行不行?
答:很遗憾,个人订阅号不支持模板消息能力。你需要注册并认证一个企业主体公众号,或者服务号。认证费用是 300 元/年,由腾讯收取。这是微信官方的门槛,目的是防止滥用。如果你没有企业资质,可以找有资质的朋友合作,或者用测试号先玩一下(但测试号的模板消息有限制)。

问:如何获取用户的 OpenID?
答:OpenID 是用户在特定公众号下的唯一标识。获取方式有几种:1)如果你的公众号有网页授权功能,用户访问你的网页时,可以通过 OAuth2.0 接口获取;2)用户向公众号发送消息时,微信服务器推送事件里会包含 OpenID;3)如果你们有小程序,可以从小程序端获取后传给服务端。最简单的方式是,让用户关注公众号后,在后台”用户管理”里导出关注者列表,就能看到 OpenID。

问:配置环境变量时,哪些必须加密?
答:API_TOKENWX_APPIDWX_SECRET 这三项强烈建议加密。特别是 WX_SECRET,这是调用微信接口的密钥,一旦泄露,别人可以冒充你的公众号发消息。WX_USERID 虽然敏感性稍低,但加密更好。WX_TEMPLATE_IDWX_BASE_URL 是公开的,可以不加密。但为统一安全标准,全部加密也没问题,Cloudflare 的加密存储不会影响使用性能。

问:URL 参数可以覆盖环境变量,那是不是意味着我的 token 可以明文写在 URL 里?
答:技术上可以,但强烈不建议。URL 会记录在浏览器历史、服务器日志等很多地方。推荐使用 POST 方式,把 token 放在 Authorization 请求头里。如果必须用 GET,至少确保你的请求是在服务端发起,而不是在前端 JavaScript 里,否则等于把钥匙交给了所有人。

问:为什么调用成功了,但微信没收到消息?
答:这个问题排查起来有几个方向:1)检查 OpenID 是否正确,这个用户是否真的关注了公众号;2)检查模板 ID 是否与公众号匹配;3)确认微信接口没有返回错误,但消息进入发送队列后失败(这种情况较少);4)最可能的是,微信对模板消息有频率限制,同一用户同一模板 24 小时内只能收一条。超过限制会静默失败。解决办法是多用几个模板,或者优化发送逻辑,避免重复。

问:我可以同时推送给多个用户吗?
答:完全可以。在配置 WX_USERID 时,用 | 符号分隔多个 OpenID,比如 openid1|openid2|openid3。调用时如果 URL 里再传 userid 参数,会完全覆盖这个列表。如果你想动态控制接收人群,建议在调用方维护一个用户列表,循环调用接口,而不是把所有 OpenID 都写在环境变量里,那样太僵化了。

问:点击模板消息后能跳转到指定页面吗?
答:可以。这就是 WX_BASE_URL 参数的作用。点击消息后,微信会打开这个链接。你可以在 URL 里带上参数,比如 `<-URL-> 可以动态生成跳转链接,方便接收者直接查看详情。注意,跳转域名必须在公众号后台的”网页授权域名”列表里,否则会被拦截。

问:如何集成到 Prometheus 告警系统?
答:Prometheus 的 Alertmanager 支持 webhook 配置。在 alertmanager.yml 里添加一个接收器:

receivers:
- name: 'wechat-push'
  webhook_configs:
  - url: 'https://<你的Worker地址>/wxsend'
    http_config:
      headers:
        Authorization: '你的token'
    send_resolved: true

然后在告警规则里,把 titlecontent 组织成 JSON 格式。Alertmanager 触发时会自动 POST 过来。你可能还需要写一个中间转换脚本,把 Prometheus 的告警格式转成 WXPush 需要的格式。

安全与最佳实践

虽然方案本身很安全,但使用中还是要注意一些细节,避免给自己挖坑。

Token 管理API_TOKEN 就是调用接口的密码。不要在 Git 仓库、日志、前端代码里出现。建议定期更换,更换时先在 Cloudflare 后台更新环境变量,然后逐步把调用方改成新 token,避免服务中断。

权限最小化:如果团队有多人,不要在所有场景都用同一个 token。可以为不同业务创建不同的 Worker 实例,每个实例用不同的 token 和接收人列表。比如监控告警用一个,业务通知用另一个,这样即使某个 token 泄露,影响范围也有限。

日志与监控:Cloudflare Workers 自带日志功能。在仪表板里可以看到每次请求的详情,包括响应时间、状态码、错误信息。建议定期查看日志,特别是刚开始使用时,确保调用都正常。如果收到错误邮件,及时处理。

频率控制:微信对模板消息有严格限制。除了单用户 24 小时一条的限制,还有整体发送频率的限制。虽然官方没公布具体数字,但建议不要短时间内大量发送,否则可能被微信限制接口权限。如果你的业务量很大,考虑接入微信的客服消息或企业微信。

错误处理:调用接口时,做好错误处理。WXPush 返回 200 不代表消息一定送达,它只表示成功调用了微信接口。微信接口本身可能返回错误,比如用户未关注、模板不匹配等。这些错误信息会放在响应文本里,建议解析出来记录到日志。

实际应用场景举例

理论说得再多,不如看看别人怎么用。这里举几个真实场景,帮你打开思路。

场景一:服务器监控告警

小 A 运维着几台云服务器,装了 Prometheus 监控。以前告警发邮件,但他不常看。现在他把 Alertmanager 配置成 webhook,告警直接推到自己微信。标题写”服务器告警”,内容写”主机 db-01 CPU > 90%,当前值 95.3%”。点击消息跳转到 Grafana 看详细图表。半夜手机一震,就知道出事了,马上处理。

场景二:电商订单通知

小 B 的 Shopify 独立站每天有几单生意。以前订单通知靠邮件,经常被归类到垃圾信箱。现在他用 Shopify 的 webhook 功能,新订单产生时自动调用 WXPush。标题写”新订单提醒”,内容写”订单号 #12345,金额 ¥599,商品 T恤 x2″。客服微信收到后,马上安排发货,效率提升不少。

场景三:个人习惯养成

小 C 想培养每天喝水的习惯。他写了个简单的 Python 脚本,每天上午 10 点、下午 3 点通过系统的 cron 定时执行,调用 WXPush 给自己发消息”该喝水了”。成本为零,但效果奇好,因为微信是他肯定会看的应用。

场景四:Git 提交通知

小 D 带的开发团队用 GitLab 管理代码。每次有人往主分支合并代码,GitLab 的 webhook 就触发 WXPush,通知技术负责人。标题写”代码合并提醒”,内容写”张三 合并了 MR #42,涉及 5 个文件”。负责人快速查看代码改动,确保质量。

这些场景的共同点是:信息重要但不紧急,需要确保送达,但不需要实时聊天互动。模板消息正好满足这类需求。

视频教程与进阶学习

如果你看完文字还是觉得没把握,项目作者准备了一个详细的视频教程,手把手演示每一步操作。视频在 YouTube 上,时长约 20 分钟,涵盖了从注册账号到成功发送第一条消息的全过程。

视频教程会演示每个点击步骤,适合喜欢跟着操作的学习者

视频地址是 `<-URL-> 有中文解说,配合画面操作,零基础也能跟上。建议边看边暂停,在自己的浏览器里同步操作。

如果你已经熟悉 Cloudflare Workers,想深入定制代码,可以直接研究 src/index.js 里的实现。它包含了微信 access_token 的缓存逻辑(避免频繁调用微信接口)、参数验证、错误处理等。你可以根据自己的需求修改,比如增加日志记录、支持更多消息类型、或者对接企业微信。

成本分析与升级建议

再聊聊钱的事。免费套餐的 10 万次请求/天,是怎么算的?每次你调用 /wxsend 算一次请求,Cloudflare 内部请求(比如获取环境变量)不计入。如果你的消息要发给 10 个人,WXPush 会循环调用微信接口,但这仍然只算 1 次 Worker 请求。

什么情况下会用完?举个例子:你的服务被攻击了,有人恶意刷接口;或者你把它用作了公开 API,被大量调用。正常业务场景下,日活几千的用户量都很难用完。

如果真用完了,Cloudflare 会返回 HTTP 429 错误,服务暂时不可用。此时你有几个选择:

  1. 升级到 Workers Paid 套餐,5 美元/月,请求额度提升到 1000 万次/天
  2. 优化调用逻辑,减少不必要的请求。比如合并多条消息,批量发送
  3. 在代码里加简单限流,防止某个调用方过度使用

付费套餐还带来了其他好处:更长的时间限制(免费版每次请求最多 10 毫秒 CPU 时间,付费版 50 毫秒)、更大的 KV 存储、更详细的分析数据。但这些对推送服务来说,免费版已经足够。

关于微信公众号的成本,除了 300 元/年的认证费,模板消息本身是免费的。但注意,如果用户取消关注,或者投诉你滥用消息,微信可能会限制你的接口权限。所以一定确保消息对用户有价值,不要乱发广告。

故障排查自查清单

服务中断时,别急着找人问,先按这个清单自查,能解决 90% 的问题。

  1. 检查 Cloudflare 状态:进去 Worker 后台,看最近几次请求的状态码。如果是 4xx,看是不是 token 错了;如果是 5xx,看日志里的错误信息。
  2. 验证微信凭证:在公众号后台重置 AppSecret,然后在 Cloudflare 环境变量里更新。注意,重置后要等 5 分钟左右生效。
  3. 测试最小化:用最简单的 GET 请求测试,只带 tokentitlecontent 三个参数,排除其他因素干扰。
  4. 查看微信返回码:WXPush 的返回文本里包含了微信接口的原始响应。如果看到 errcode: 40003,表示 OpenID 无效;errcode: 43004 表示用户未关注;errcode: 45047 表示发布次数超限。
  5. 检查模板是否可用:登录公众号后台,确认模板还在有效期内,且没有被删除。
  6. 确认网络连通性:虽然 Cloudflare 全球节点都很稳定,但偶尔也会有波动。可以用 curl -I 命令检查你的 Worker 地址是否通。
  7. 查看代码版本:如果你用 GitHub 部署,确认生产分支的代码确实包含了最新的修改。有时候推送了但没触发部署,需要手动在 Cloudflare 里点击”重新部署”。

如果自查后还是没解决,可以去 GitHub 项目页面提 Issue,附上你的错误日志(记得隐去敏感信息),作者和社区会帮忙分析。

贡献与开源协议

WXPush 是一个开源项目,采用 MIT 许可证。这意味着你可以自由使用、修改、分发代码,甚至用于商业项目。唯一的要求是在代码里保留原作者的版权声明。

如果你在使用过程中发现了 Bug,或者有好的改进想法,欢迎提交 Pull Request。比如:

  • 增加更多消息类型的支持
  • 优化错误提示信息
  • 添加多语言支持
  • 写更详细的部署文档

项目地址在 GitHub,搜索 “WXPush” 就能找到。参与开源不仅能让工具变得更好,也是提升自己代码能力的好机会。即使你不懂代码,帮忙翻译文档、录制教程视频,也是宝贵的贡献。

总结与下一步行动

写到这里,相信你对如何用 Cloudflare Workers 搭建微信推送服务已经有了完整认识。我们来回顾一下核心步骤:

  1. 准备微信公众号和 Cloudflare 账号
  2. 选择部署方式(代码粘贴或 GitHub 集成)
  3. 配置敏感的环境变量并加密
  4. 用 GET 或 POST 方式调用接口
  5. 根据业务需求灵活使用 URL 参数覆盖默认配置

这个方案的价值在于,它把复杂的微信接口调用封装成了简单的 HTTP 请求,把服务器运维的工作交给了 Cloudflare。你不需要关心服务器配置、SSL 证书、负载均衡这些琐事,专注于业务本身。

下一步你可以做什么?

  • 立刻动手部署一个测试实例,发第一条消息给自己
  • 把现有系统的邮件通知改成微信推送,提升触达率
  • 研究一下 Cloudflare Workers 的其他能力,比如 KV 存储、Durable Objects,看看能否做出更有意思的应用
  • 在团队内推广,让监控、业务告警都能推到微信

技术的世界很大,但好的工具能让复杂的事情变简单。希望 WXPush 能成为你工具箱里的得力助手。如果你在部署中遇到问题,或者有独特的使用场景,欢迎分享出来,让更多人受益。


附录:结构化数据标记

为了让搜索引擎和 AI 助手更好地理解这篇文章,我们提供了以下结构化数据。

FAQ Schema

{
  "@context": "<-URL->",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Cloudflare Workers 的免费额度真的够用吗?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "对于个人项目或小型团队,完全够用。免费套餐每天 10 万次请求,正常业务场景下日活几千的用户量都很难用完。接近上限时,Cloudflare 会发邮件提醒,可考虑升级付费套餐或优化调用逻辑。"
      }
    },
    {
      "@type": "Question",
      "name": "微信公众号必须是企业认证的吗?个人号行不行?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "个人订阅号不支持模板消息能力。需要注册并认证企业主体公众号或服务号,认证费用 300 元/年。这是微信官方防止滥用的安全机制。"
      }
    },
    {
      "@type": "Question",
      "name": "如何获取用户的 OpenID?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "OpenID 可通过三种方式获取:1)公众号网页授权 OAuth2.0 接口;2)用户发送消息时微信推送的事件;3)在公众号后台'用户管理'导出关注者列表。"
      }
    }
  ]
}

HowTo Schema

{
  "@context": "<-URL->",
  "@type": "HowTo",
  "name": "如何通过 Cloudflare Workers 部署微信推送服务",
  "description": "使用 WXPush 项目在 Cloudflare Workers 上搭建微信公众号模板消息推送服务",
  "step": [
    {
      "@type": "HowToStep",
      "name": "准备账号与凭证",
      "text": "注册微信公众号并完成认证,获取 AppID 和 AppSecret。注册 Cloudflare 账号。"
    },
    {
      "@type": "HowToStep",
      "name": "创建 Cloudflare Worker",
      "text": "登录 Cloudflare 仪表板,进入 Workers 和 Pages,创建新的 Worker 服务。"
    },
    {
      "@type": "HowToStep",
      "name": "部署 WXPush 代码",
      "text": "删除 Worker 默认代码,将 WXPush 项目的 src/index.js 内容完整粘贴到在线编辑器,保存并部署。"
    },
    {
      "@type": "HowToStep",
      "name": "配置加密环境变量",
      "text": "在 Worker 设置中添加 API_TOKEN, WX_APPID, WX_SECRET, WX_USERID 等变量,并勾选加密选项。"
    },
    {
      "@type": "HowToStep",
      "name": "测试服务",
      "text": "使用浏览器或 curl 构造 GET 请求调用 /wxsend 接口,验证消息能否成功推送到微信。"
    }
  ]
}

参考文献

  • Cloudflare Workers 官方文档: <-URL->
  • 维基百科 – Serverless 计算: <-URL->

退出移动版