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

依赖安装

安装 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 文件

  1. 清理 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:主键ID
  • user_id:用户ID
  • direction:消息方向 (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:微信模板ID
  • template_vars:模板变量(JSON格式)

🔧 二次开发

扩展自定义消息类型

WechatMiniAppService.php 中扩展消息发送方法:

public function sendCustomMessage($openid, $templateId, $data)
{
    // 自定义消息处理逻辑
    return $this->sendSubscribeMessage($openid, $templateId, $data);
}

添加新的通知渠道

  1. 创建新的服务类(如 SmsService
  2. MemberController 中添加发送方法
  3. 扩展 win_interactions 表的 channel 字段支持

📝 开发规范

  1. 命名规范:采用 PSR-4 命名空间,类名使用大驼峰命名
  2. 代码风格:遵循 PSR-12 代码规范
  3. 错误处理:统一使用异常处理机制,记录详细日志
  4. 安全防护:所有外部输入必须经过严格验证
  5. 性能优化:使用缓存减少 API 请求次数,批量处理数据

📞 技术支持

📈 版本更新

v1.0.0 (2025-12-22)

  • ✅ 初始版本发布
  • ✅ 微信小程序订阅消息管理
  • ✅ 会员管理与统计功能
  • ✅ 稳定版 Access Token 支持
  • ✅ 完整的 API 接口

WinNotify - 让微信消息触达更简单高效!

版本历史记录
1.0.0
2025-12-25
首发版本
评分及评论
0 满分5分
🔝