WinNotify 微信小程序订阅消息和发送消息插件
168¥
类型
应用插件
版本
1.0.0
版本更新时间
2025-12-26
大小
32.6 KB
开发商
赢生科技
评分
WinNotify 微信小程序订阅消息和发送消息插件
WinNotify 是基于 Webman 框架开发的微信小程序订阅消息管理插件,提供完整的通知发送、订阅管理、用户互动及数据分析功能,适用于各类需要微信消息触达的应用场景。
📋 项目概述
WinNotify 集成了微信小程序订阅消息的全生命周期管理,从用户订阅、消息发送到数据统计,为开发者提供一站式解决方案。该插件深度集成 Webman Admin 和 Webman User 生态,支持权限管理、菜单配置及前后台分离架构,满足企业级应用的安全与扩展性需求。
✨ 核心功能
1. 微信小程序消息管理
- 🔔 订阅消息管理:完整的订阅流程管理,支持用户订阅状态记录与更新
- 📤 消息发送:支持模板消息的批量发送与单条推送
- 📊 发送统计:消息发送成功率、到达率等关键指标统计
- 📝 模板管理:微信小程序模板ID的统一管理与配置
2. 会员管理与互动(基于Webman User数据)
- 👥 会员列表:完整的会员信息管理,支持多条件筛选
- 📱 微信绑定:用户与微信小程序 OpenID 的关联管理
- 📋 互动记录:系统与用户之间的消息互动全记录
- 📈 活动统计:用户登录、消息接收等行为数据统计
3. 技术特性
- ⚡ 稳定版 Access Token:基于微信稳定版接口的 Token 管理,带自动刷新和缓存机制
- 🛡️ 重试机制:API 请求失败自动重试,提升系统稳定性
- 📦 模块化设计:核心功能模块化,便于扩展与定制
- 📊 数据持久化:完整的消息历史记录,支持查询与分析
🛠️ 技术架构
核心依赖
- Webman Framework:高性能 PHP 异步框架
- EasyWeChat:微信开发工具包(^6.17+)
- ThinkORM:数据库 ORM 框架
- Webman Cache:缓存组件
目录结构
winnotify/
├── api/ # API 接口层
│ └── Install.php # 插件安装接口
├── app/ # 应用核心层
│ ├── controller/ # 控制器
│ ├── service/ # 业务服务
│ ├── model/ # 数据模型
│ └── view/ # 视图模板
├── config/ # 配置文件
│ ├── app.php # 应用配置
│ ├── route.php # 路由配置
│ ├── menu.php # 菜单配置
│ └── ... # 其他配置文件
├── install.sql # 数据库安装脚本
└── readme.md # 项目说明文档
核心服务
- WechatMiniAppService:微信小程序核心服务,提供稳定版 Token 管理与消息发送功能
- MemberController:会员管理与统计功能
- IndexController:小程序接口与通知接收功能
📦 安装说明
环境要求
- PHP >= 8.0
- Webman Framework >= 1.5.0
- Webman Admin 插件
- Webman User 插件
- MySQL >= 5.7
依赖安装
- 必需已安装 Webman Admin 和 Webman User 插件。
- Webman Admin https://www.workerman.net/app/view/admin
- Webman User https://www.workerman.net/app/view/user 请在 webman-admin 插件市场安装
# 安装 Webman Admin composer require -W webman/admin
安装 EasyWeChat 库(支持微信稳定版接口)^6.17
composer require w7corp/easywechat
安装 Webman 缓存组件
composer require -W webman/cache
### 插件安装
#### 方式一:插件中心安装(推荐)
1. 登录 Webman Admin 后台
2. 进入「插件中心」
3. 搜索「WinNotify」并点击安装
#### 方式二:手动安装
1. 将插件源码解压至 `plugin/winnotify/` 目录
2. 执行数据库安装脚本:
```bash
php webman app-plugin:install winnotify
或手动执行 plugin/winnotify/install.sql 文件
- 清理 Webman 缓存:
rm -rf runtime/
🛠️ 配置指南
微信小程序配置
在 config/easywechat.php 中配置微信小程序参数:
return [
'services' => [
'miniapp' => [
'app_id' => 'your-app-id',
'secret' => 'your-app-secret',
// 其他配置...
],
],
];
如何获得appid和secret 请参考
https://developers.weixin.qq.com/doc/oplatform/developers/dev/appid.html#_1-%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%92%8C%E5%B0%8F%E6%B8%B8%E6%88%8F
配套小程序示例代码
https://gitee.com/www16wincn/winnotify-miniapp
路由配置
插件已默认配置以下路由:
- 后台管理:
/app/winnotify/ - 小程序 API:
/api/winnotify/
权限配置
通过 Webman Admin 后台的「权限管理」功能,为角色分配 WinNotify 相关菜单权限。
🚀 使用方法
1. 接收小程序订阅结果
小程序端调用微信订阅接口后,将结果发送至以下接口:
POST /api/winnotify/subscribe
Content-Type: application/json
{
"tmplId": "template-id",
"status": "accept",
"openid": "user-openid"
}
2. 发送订阅消息
POST /app/winnotify/member/sendWeappNotice
Content-Type: application/json
{
"openid": "user-openid",
"template_id": "template-id",
"page": "pages/index/index",
"data": {
"thing1": {"value": "测试消息"},
"time2": {"value": "2023-12-01 10:00"}
}
}
3. 查询会员列表
GET /app/winnotify/member/list?page=1&limit=10&username=test
📊 API 文档
后台管理接口
| 接口地址 | 方法 | 功能描述 |
|---|---|---|
/app/winnotify/member/index |
GET | 会员中心首页 |
/app/winnotify/member/list |
GET | 获取会员列表 |
/app/winnotify/member/getActivityLog |
GET | 获取用户活动日志 |
/app/winnotify/member/getStatsOverview |
GET | 获取统计概览 |
/app/winnotify/member/getWeappTemplates |
GET | 获取小程序模板 |
/app/winnotify/member/sendWeappNotice |
POST | 发送小程序通知 |
小程序 API 接口
| 接口地址 | 方法 | 功能描述 |
|---|---|---|
/api/winnotify/subscribe |
POST | 接收订阅结果 |
/api/winnotify/registerOrUpdateOpenid |
POST | 注册/更新 OpenID |
🗄️ 数据库结构
核心数据表
win_interactions (互动记录表)
id:主键IDuser_id:用户IDdirection:消息方向 (out/in)channel:发送渠道 (miniprogram/sms/web)type:消息类型 (work_notify/service/system)title:消息标题content:消息内容status:发送状态 (1成功/2失败/3待发送)is_read:阅读状态 (0未读/1已读)read_time:阅读时间template_id:微信模板IDtemplate_vars:模板变量(JSON格式)
🔧 二次开发
扩展自定义消息类型
在 WechatMiniAppService.php 中扩展消息发送方法:
public function sendCustomMessage($openid, $templateId, $data)
{
// 自定义消息处理逻辑
return $this->sendSubscribeMessage($openid, $templateId, $data);
}
添加新的通知渠道
- 创建新的服务类(如
SmsService) - 在
MemberController中添加发送方法 - 扩展
win_interactions表的channel字段支持
📝 开发规范
- 命名规范:采用 PSR-4 命名空间,类名使用大驼峰命名
- 代码风格:遵循 PSR-12 代码规范
- 错误处理:统一使用异常处理机制,记录详细日志
- 安全防护:所有外部输入必须经过严格验证
- 性能优化:使用缓存减少 API 请求次数,批量处理数据
📞 技术支持
- 官方网站:https://16win.cn
📈 版本更新
v1.0.0 (2025-12-22)
- ✅ 初始版本发布
- ✅ 微信小程序订阅消息管理
- ✅ 会员管理与统计功能
- ✅ 稳定版 Access Token 支持
- ✅ 完整的 API 接口
WinNotify - 让微信消息触达更简单高效!
版本历史记录
1.0.0
2025-12-25
首发版本
评分及评论
0
满分5分