Appearance
插件开发
凌悦易游内置了一套基于 Hook 的插件系统,支持通过 ZIP 包安装、启用 / 禁用、卸载插件,实现支付渠道、登录方式、前端脚本等扩展。
插件包结构
每个插件以独立目录形式存放,打包为 ZIP 后上传安装:
myplugin/
├── info.json # 插件元信息 (必须)
├── Plugin.php # 插件主类 (必须)
├── config.php # 插件配置项 (可选)
├── install.sql # 安装时执行的 SQL (可选)
├── uninstall.sql # 卸载时执行的 SQL (可选)
└── Handler.php # 业务处理类 (自定义)info.json
插件元信息文件,系统依据此文件识别插件:
json
{
"name": "myplugin",
"title": "我的插件",
"description": "插件功能描述",
"author": "作者名",
"version": "1.0.0",
"icon": ""
}| 字段 | 必须 | 说明 |
|---|---|---|
name | ✅ | 插件标识名,与目录名一致 |
title | ✅ | 插件显示名称 |
description | 插件描述 | |
author | 作者 | |
version | ✅ | 版本号 |
Plugin.php 主类
插件主类需继承系统提供的基类,并通过 hooks() 方法注册监听的钩子:
php
<?php
namespace addons\myplugin;
use app\common\service\addon\BaseAddon;
class Plugin extends BaseAddon
{
public function hooks(): array
{
return [
'钩子名称' => 'Handler@方法名',
];
}
}生命周期
| 方法 | 触发时机 |
|---|---|
install() | 安装插件时 |
uninstall() | 卸载插件时 |
enable() | 启用时 |
disable() | 禁用时 |
upgrade($fromVersion) | 升级时 |
hooks() | 注册钩子映射 |
config.php 配置项
插件可定义可视化配置项,安装后在后台「插件管理 → 配置」中修改:
php
<?php
return [
['key' => 'merchant_id', 'title' => '商户号', 'value' => ''],
['key' => 'api_key', 'title' => 'API密钥', 'value' => ''],
];系统钩子
插件通过注册钩子来扩展系统功能。以下是可用的钩子列表:
支付相关
| 钩子名 | 触发时机 | 参数 | 期望返回 |
|---|---|---|---|
pay_channels | 获取可用支付方式 | terminal, from | ['pay_way'=>int, 'name'=>string, 'icon'=>string] |
pay_create | 发起支付 | pay_way, from, order, terminal | ['config'=>mixed, 'pay_way'=>int] |
pay_notify | 支付回调通知 | channel, params, raw | ['out_trade_no'=>string, 'from'=>string] |
登录相关
| 钩子名 | 触发时机 | 参数 | 期望返回 |
|---|---|---|---|
login_methods | 获取可用登录方式 | terminal | ['login_way'=>string, 'name'=>string, ...] |
login_auth_url | 获取三方授权跳转 URL | login_way, terminal, redirect_uri | 授权 URL 字符串 |
前端脚本
| 钩子名 | 触发时机 | 参数 | 期望返回 |
|---|---|---|---|
frontend_script | 前端加载插件脚本 | terminal | ['css'=>string, 'js'=>string] |
渠道 (终端) 过滤
部分钩子支持按终端渠道过滤,只在指定终端上生效:
| 终端值 | 说明 |
|---|---|
| 1 | H5 |
| 2 | 微信公众号 |
| 3 | 微信小程序 |
| 4 | APP |
| 5 | PC |
可在后台「插件管理」的渠道配置中,勾选插件在哪些终端上启用。
支付插件开发
系统提供了支付插件基类,开发第三方支付只需实现以下方法:
| 方法 | 说明 |
|---|---|
getChannel() | 返回支付渠道信息(编号、名称、图标) |
pay($from, $order, $terminal) | 发起支付,返回支付凭证 |
notify($params) | 处理支付回调,返回订单号 |
refund($refundData) | 退款(可选) |
queryRefund($refundSn) | 查询退款(可选) |
TIP
pay_way 编号建议从 100 开始,避免与系统内置支付方式冲突。
支付回调地址格式:https://你的api域名/api/pay/pluginNotify?channel=插件名
安装方式
后台上传安装
- 进入 后台 → 插件管理
- 点击 上传插件,选择 ZIP 包
- 系统自动解压、执行安装 SQL、注册钩子
- 配置插件参数并启用
插件商店
在「插件商店」中可浏览和安装官方及第三方插件,一键下载安装。
缓存说明
插件钩子信息会被缓存以提升性能。安装、卸载、启用、禁用操作会自动清除缓存,无需手动处理。