Afdian Plus — 为 Halo 博客打造的爱发电数据集成插件
让赞助数据不再散落在爱发电后台,在你的博客里优雅地展示每一位支持者。
前话
用爱发电做创作者赞助的博主应该不少,但 Halo 商城原有的爱发电插件早已停更,接口失效、API 不兼容,升级 Halo 版本后直接报错。
与其等别人修,不如自己造一个。
Afdian Plus 从零开始编写,把赞助者、订单、方案、电铺商品、作品集全部拉到 Halo 里管理。后台有仪表盘看数据,前台有 Finder API 给主题用,Webhook 回调自动刷新数据并推送通知。配合 Serenity 主题,在关于页面一键展示赞助者墙和方案卡片。
一键拉取全部数据
在插件后台填入爱发电的 user_id 和 API Token,点击「一键拉取」即可获取全部数据:
赞助者列表(通过签名接口
query-sponsor,自动翻页,每页 100 条)订单列表(通过签名接口
query-order,自动翻页)方案数据(从赞助者的
sponsor_plans和current_plan中智能收集去重,再额外查询后台配置的方案 ID 补全)电铺商品(通过公开 API
get-products,无需签名,自动翻页)作品集(通过公开 API
get-album-list,无需签名,自动翻页)
拉取完成后,全部数据持久化到 ConfigMapplugin-afdian-plus-data),重启 Halo 不丢失。内存缓存可配置时长(默认 30 分钟,最大 24 小时),避免频繁请求爱发电 API。
双域名容灾
爱发电有两个域名afdian.com 和 ifdian.net。插件内置双域名自动回退机制——无论是签名接口(POST)还是公开接口(GET),都会依次尝试两个域名,第一个成功即返回。主域名超时或返回错误时自动切换到备用域名,确保数据拉取不中断。
每个请求有 15 秒超时限制,HTTP 客户端支持自动重定向。
后台仪表盘
插件提供可视化仪表盘,打开即可看到:
仪表盘数据来自缓存,加载速度快,不会每次都请求爱发电。
数据面板
除了仪表盘概览,还有独立的数据面板页面,分为六个 Tab:
赞助者
展示所有赞助者的头像、昵称、累计金额、最后支付时间和当前方案。
订单
展示所有订单的订单号、标题、金额、状态标签(已支付/未支付)、类型和创建时间。
方案
每个方案有「可见性」开关,控制该方案是否在主题前端展示。可见性通过后台一键切换。
方案卡片显示名称、价格、类型标签(订阅/商品/捆绑包/自选包/售票)和描述,点击可弹窗下单。
电铺商品
展示电铺商品的图片、名称、价格和在售状态。无需签名,点击可弹窗下单。
作品集
展示作品集的封面、标题、状态和篇数。
Webhook 日志
展示收到的 Webhook 回调记录,包含摘要信息和原始 JSON。最多保留 50 条,按时间倒序排列。
Webhook 回调
在爱发电后台设置 Webhook 地址:
https://你的域名/apis/console.api.afdian.halo.run/v1alpha1/afdian/-/webhook收到支付回调后,插件会:
解析订单数据,提取订单号、方案 ID、金额、状态、备注
清除内存缓存,重新拉取全部五类数据并持久化
通过 Halo 通知系统向管理员发送新订单通知(站内通知 + 邮件)
通知模板已内置,自动为管理员用户订阅通知,开箱即用。
弹窗支付
方案卡片和电铺商品支持点击弹窗下单。插件提供 520×700 的居中小窗口打开爱发电支付页面,体验流畅。同时在后台创建一条赞助记录(状态为「未支付」),记录方案 ID、方案名称、金额、验证码和月数。
支付验证
用户完成支付后,插件会通过 query-order 接口查询最近订单(最多翻 5 页),查找同时满足以下条件的订单:
plan_id匹配status为 2(已支付)remark包含验证码
匹配成功后,更新赞助记录状态为「已支付」,并向管理员发送通知。
赞助记录管理
后台提供独立的赞助记录面板,展示所有前台和后台创建的赞助订单记录。支持按状态筛选(全部/已支付/未支付),可删除单条记录。最多保留 200 条。
主题集成(Finder API)
插件注册 afdianPlusFinder 到 Thymeleaf 上下文,主题模板可直接调用:
返回结构统一为 { "data": { "total_count": N, "list": [...] } }。
Serenity 主题集成
Serenity 主题已内置完整集成,在主题设置 > 关于页面中开启爱发电即可,无需手动写模板。主题中的爱发电区域包含:
赞助者墙:直接展示所有赞助者的头像、昵称、金额和时间
发电方案:折叠面板,展开后显示方案卡片网格,点击弹窗下单
电铺商品:折叠面板,展开后显示商品卡片网格,带图片预览
底部按钮:链接到爱发电主页
弹窗支付:选择订阅时长、填写备注、前往支付、验证支付
赞助者墙示例
<!-- 赞助者墙 -->
<th:block th:with="sponsorData = ${afdianPlusFinder.listAllSponsor()}">
<div th:if="${sponsorData != null && sponsorData.data != null}"
th:each="sponsor : ${sponsorData.data.list}">
<img th:src="${sponsor.user.avatar}" />
<span th:text="${sponsor.user.name}">用户名</span>
<span th:text="|¥${sponsor.all_sum_amount}|">¥0</span>
</div>
</th:block>
<!-- 方案卡片(仅展示可见方案) -->
<th:block th:with="planData = ${afdianPlusFinder.listAllPlan()}">
<div th:if="${planData != null && planData.data != null}"
th:each="plan : ${planData.data.list}">
<span th:text="${plan.name}">方案名</span>
<span th:text="|¥${plan.price ?: plan.show_price}|">¥0</span>
</div>
</th:block>配置说明
在插件后台「API 配置」页面设置:
方案的可见性在数据面板的「方案」Tab 中通过开关控制,不在设置页面配置。
免费功能
插件提供基础的免费功能(已适配Serenity主题):赞助者列表的拉取和展示不需要授权,安装配置基础数据即可使用。主题端通过 afdianPlusFinder.listAllSponsor() 获取赞助者数据不受授权限制,关于页面的赞助者墙开箱即用。

环境要求
Halo >= 2.20.0
写在最后
Afdian Plus 把爱发电商城搬进 Halo,后台有仪表盘一目了然,前台有 Finder API 灵活展示,Webhook 回调让数据实时同步,自动下发商品。双域名容灾保证稳定性,通知系统让你不错过每一笔赞助,搭建一个属于你自己的支付方案。
如果你在用爱发电做创作者赞助,又想在博客里展示赞助者墙或方案卡片,这个插件应该能帮到你。
下载地址:https://serenity.aobp.cn/store
爱发电Afdian Plus插件
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
赞赏支持
如果觉得文章对你有帮助,可以请作者喝杯咖啡 ☕
评论交流
欢迎留下你的想法