博客博客搭建Blog付费订阅的设置和开通Blog付费订阅的设置和开通 随着文章越写越多,说实话,有些花了不少心思的深度内容,光免费分享感觉有点亏。倒不是想靠这个发财,就是希望能有个小机制,让真正觉得有用的朋友可以支持一下,同时也给自己一点持续输出的动力。其实过程中纠结过是继续免费,然后通过广告变现,还是直接做订阅,最终还是打算做订阅方式,今天就把整个设计思路和折腾过程摊开来聊聊。1.需求 需求其实比较简单,因为我本身是通过Hugo+Cloudflare Pages实现的Blog网站,那么付费订阅就计划让 Worker 动态识别每一篇文章的属性,只要文章开启了 premium 开关,就根据 KV 里的订阅有效期来决定是否放行。所以这个方案的核心思路是:Hugo 负责生成内容,Cloudflare Workers 负责在"边缘"守门。由于 Hugo Pages 是静态的,如果不加控制,所有人都能看到全文。通过 Cloudflare Pages Functions 的 HTMLRewriter 接口,我们可以在页面传给用户之前的几毫秒内,动态地把正文"挖掉"并替换为摘要 + PayPal 订阅按钮。完整的自动化链路如下:用户访问溢价文章 → 看到摘要 + PayPal "Subscribe" 黑色按钮 → 点击 → PayPal 弹窗 → 确认订阅(绑卡 / 登录) → SDK onApprove 回调 → 前端 fetch /api/grant-access → 后端 grant-access.ts 向 PayPal REST API 验证订阅状态 → 写入 KV(30 天有效期)+ 签发 user_id / sub_id Cookie → 页面自动刷新 → 全文解锁 ✅ 下个月 PayPal 自动扣款 → PayPal Webhook 通知 → /api/paypal-webhook → 验证签名 → 自动延长 KV 有效期 → 全程无感知 ✅ 用户清理了 Cookie,订阅状态丢失 → 再次访问 → Cookie 丢失但 sub_id 还在 → 中间件通过 KV 反向索引自动恢复 ✅ → Cookie 全部丢失 → 点击"通过 PayPal 恢复" → PayPal 登录 → 回调验证 payer_id → 恢复 ✅ 用户取消订阅 → KV 自然过期 → 付费墙重新出现2.实现概览 整个付费系统由 Cloudflare Pages Functions 驱动,核心思路是边缘守门——在页面返回给用户前,判断是否有权阅读,决定放行还是替换为付费墙。 🔒 本文为付费深度内容 开通会员后即可阅读所有付费内容。付费会员 $1.90/月,自动续费,可随时取消。 丢失了访问权限?通过 PayPal 恢复 → 本文为本站原创内容,除非另有声明,均采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。转载时请务必注明作者及原始链接,且不得用于商业目的。 分享Blog集成评论功能Obsidian集成AI