思博文档中心 | SibHosting Docs - 插件开发手册
type: channel
link: https://doc.0330.top/category/plugin-dev/
description: 插件架构设计、钩子机制、数据库扩展及功能模块开发指南
items: 新版服务器插件快速开发指南（注册式钩子）
items: 支付插件开发文档
items: 服务器插件开发手册
items: 支付插件开发手册

新版服务器插件快速开发指南（注册式钩子）
type: item
date: 2026-05-26T20:30:01+08:00
description: 面向插件开发者，帮你快速上手新版注册式钩子插件开发。参考脚手架：public/plugins/host/example/（完整示例，可直接复制使用）快速开始（5 分钟完成）1. 复制脚手架cd public/plugins/host/ cp -r example myplugin # 复制示例目录 mv myplugin/example.php myplugin/myplugin.php # 重命名入口文件2. 改 3 个地方文件修改内容myplugin.php第 109 行 'example' → 'myplugin'myplugin.phpnew ExamplePlugin() → new MyPlugin()src/ExamplePlugin.php类名改为 MyPlugin，修改 DisplayName3. 实现业务逻辑在 src/MyPlugin.php 中填写你的 API 调用代码。4. 后台绑定系统后台「服务器」→「添加服务器」→ 选择你的插件即可使用。目录结构public/plugins/host/myplugin/ ├── myplugin.php # 入口文件：只做钩子注册 ├── src/ │ └── MyPlugin.php # 业务类：实现所有钩子方法 ├── templates/ # 前台模板 │ ├── overview.html │ └── manage.html └── assets/ # 静态资源 ├── css/style.css └── js/main.js命名约束：插件标识（文件夹名 + 入口文件名）只允许小写字母、数字、下划线，以字母开头，最长 32 字符。入口文件（只注册，不写业务）myplugin.php 只做三件事：<?php // 1. 加载业务类 require_once __DIR__ . '/src/MyPlugin.php'; // 2. 注册能力钩子 use app\common\hook\Registry; $plugin = new MyPlugin(); Registry::onMany('host', 'myplugin', [ 'metaData' => [$plugin, 'onMetaData'], 'testLink' => [$plugin, 'onTestLink'], 'create' => [$plugin, 'onCreate'], 'terminate' => [$plugin, 'onTerminate'], // ... 其他钩子 ]); // 3. 注册事件监听（可选） use think\Hook; use app\common\hook\EventRegistry; Hook::add(EventRegistry::HOST_AFTER_CREATE, function($params) { // 开通后做点啥 });⚠️ 入口文件被加载时立即执行，不要放业务逻辑（不要连 DB、调 API、echo 内容）。必须实现的钩子插件元数据public function onMetaData(): array { return [ 'DisplayName' => '我的插件', 'APIVersion' => '1.0.0', 'HelpDoc' => 'https://...', ]; }连接测试public function onTestLink(array $params): array { $server = $params['server']; return ['code' => 1, 'msg' => '连接成功']; }核心生命周期钩子方法说明createonCreate开通账号（支付后自动调用）terminateonTerminate删除/终止suspendonSuspend暂停unsuspendonUnsuspend恢复renewonRenew续费所有方法接收 array $params，返回 ['code' => 1/0, 'msg' => '...']。$params 包含：$params = [ 'host' => [...], // 主机信息（id, domain, username, password, status...） 'product' => [...], // 商品信息（id, product_name, server_id...） 'server' => [...], // 服务器信息（host, ip, port, user, password...） 'server_meta' => [...], // 服务器自定义配置 'configoptions' => [...], // 商品选配字段…

支付插件开发文档
type: item
date: 2026-03-21T19:21:07+08:00
description: 本文档指导开发者如何为本系统开发支付插件。目录结构所有支付插件必须存放在 public/plugins/pay/ 目录下，每个插件一个独立文件夹：public/plugins/pay/ ├── epay/ # 插件目录名（小写英文） │ ├── description.php # 插件基本信息（必需） │ ├── set.php # 后台配置定义（必需） │ ├── go.php # 发起支付（必需） │ ├── notify.php # 异步通知处理（必需） │ └── return.php # 同步回调处理（可选） ├── alipay/ │ └── ... └── wxpay/ └── ...核心流程用户下单 → 系统调用 go.php → 返回支付参数 → 用户完成支付 ↓ 支付平台 → 异步通知 notify.php → 验签成功 → 系统更新订单 ↓ 用户返回 → 同步回调 return.php → 显示支付结果文件详解1. description.php - 插件信息定义插件在后台显示的基本信息。<?php return [ "DisplayName" => "易支付", // 后台显示名称 "APIVersion" => "1.0.0", // 版本号 "HelpDoc" => "https://..." // 帮助文档链接（可选） ];返回字段说明：字段类型必填说明DisplayNamestring是插件显示名称APIVersionstring是版本号HelpDocstring否帮助文档URL2. set.php - 后台配置定义后台配置页面需要填写的字段。<?php return [ [ "name" => "商户ID", // 配置项标识（英文） "title" => "商户号", // 显示标题 "type" => "input", // 类型：input/select/textarea/switch "prompt" => "请输入商户号", // 提示文字 "value" => "" // 默认值 ], [ "name" => "密钥", "title" => "API密钥", "type" => "input", "prompt" => "请输入API密钥", "value" => "" ], [ "name" => "支付方式", "title" => "支付方式", "type" => "select", "prompt" => "选择支付方式", "value" => "alipay", "option" => [ // select类型专用 "支付宝" => "alipay", "微信" => "wxpay", "QQ" => "qqpay" ] ], [ "name" => "调试模式", "title" => "调试模式", "type" => "switch", "prompt" => "是否开启调试", "value" => "0" // 0=关，1=开 ] ];字段类型说明：类型说明input单行文本输入password密码输入（内容隐藏）textarea多行文本输入select下拉选择，需配合 optionswitch开关，value为 "0" 或 "1"number数字输入配置数据使用方式：系统在调用 go.php、notify.php、return.php 时，会将用户在后台填写的配置值通过 $params['data'] 传入。3. go.php - 发起支付函数名： go($params)作用： 接收订单信息，向支付平台发起请求，返回支付参数。入参 $params：字段类型说明order_nostring系统订单号subjectstring订单标题amountfloat订单金额（元）notify_urlstring异步通知URL（系统生成）return_urlstring同步回调URL（系统生成）client_ipstring用户IP地址dataarray/string插件配置数据返回值：// 页面跳转支付 return [ 'code' => 1, // 1=成功，0=失败 'type' => 'jump', // 固定值：jump 'data' => 'https://...' // 支付平台跳转URL ]; // API二维码支付 return [ 'code' => 1, 'type' => 'qrcode', // 固定值：qrcode 'data' => 'https://...' // 二维码图片URL或支付链接 ]; // 失败 return [ 'code' => 0, 'msg' => '错误信息' ];示例代码：<?php function go(…

服务器插件开发手册
type: item
date: 2026-03-21T19:20:00+08:00
description: 目录概述目录结构插件基础结构核心函数详解配置字段类型参数说明模板开发开发示例最佳实践目录结构所有服务器插件统一存放在 public\plugins\host 目录下。完整目录结构public/ └── plugins/ └── host/ # 服务器插件根目录 ├── aliyun/ # 阿里云插件 │ ├── aliyun.php # 插件主文件 │ └── templates/ # 模板目录 │ ├── overview.html │ ├── manage.html │ └── console.html │ ├── tencentcloud/ # 腾讯云插件 │ ├── tencentcloud.php │ └── templates/ │ └── ... │ ├── huaweicloud/ # 华为云插件 │ ├── huaweicloud.php │ └── templates/ │ └── ... │ ├── aws/ # AWS插件 │ ├── aws.php │ └── templates/ │ └── ... │ └── default/ # 默认示例插件 ├── default.php └── templates/ ├── 1.html └── 2.html插件目录命名规范项目规范示例目录名小写字母+数字，与插件标识一致aliyun, tencentcloud主文件名与目录名一致aliyun.php模板目录必须命名为 templatestemplates/模板文件.html 后缀overview.html最小插件结构public\plugins\host\{插件标识}/ ├── {插件标识}.php # 必填，插件主程序 └── templates/ # 可选，模板目录 └── ... # 模板文件概述本系统采用 PHP + ThinkPHP 框架开发，服务器插件用于对接第三方服务器/云服务商 API，实现虚拟主机、云服务器等产品的自动化管理。插件命名规范插件文件名格式：{插件标识}.php插件标识只能包含英文字母、数字和下划线所有函数必须以 插件标识_ 为前缀插件基础结构在 public\plugins\host\{插件标识}\{插件标识}.php 文件中编写：<?php use think\Db; // ========== 1. 插件信息 ========== function 插件标识_MetaData() { return [ "DisplayName" => "插件显示名称", "APIVersion" => "1.0.0", "HelpDoc" => "https://文档链接" ]; } // ========== 2. 连接测试 ========== function 插件标识_TestLink($params) { return ["code" => "1", "msg" => "连接成功"]; } // ========== 3. 配置字段定义 ========== function 插件标识_AdminConfigOptions() { /* 服务器配置 */ } function 插件标识_ConfigOptions() { /* 产品配置 */ } function 插件标识_HostConfigOptions() { /* 业务配置 */ } // ========== 4. 控制面板 ========== function 插件标识_ClientArea($params) { /* 定义菜单 */ } function 插件标识_ClientAreaOutput($params, $key) { /* 页面输出 */ } // ========== 5. 生命周期函数 ========== function 插件标识_CreateAccount($params) { /* 开通 */ } function 插件标识_SuspendAccount($params) { /* 暂停 */ } function 插件标识_UnsuspendAccount($params) { /* 解除暂停 */ } function 插件标识_TerminateAccount($params) { /* 终止/删除 */ } function 插件标识_Renew($params) { /* 续费 */ } function 插件标识_ChangePackage($params) { /* 升降级 */ } // ========== 6. 自定义按钮 ========== function 插件标识_AdminButton() { /* 后台按钮 */ } function 插件标识_Clie…

支付插件开发手册
type: item
date: 2026-03-21T19:20:00+08:00
description: 本文档指导开发者如何为本系统开发支付插件。目录结构所有支付插件必须存放在 public/plugins/pay/ 目录下，每个插件一个独立文件夹：public/plugins/pay/ ├── epay/ # 插件目录名（小写英文） │ ├── description.php # 插件基本信息（必需） │ ├── set.php # 后台配置定义（必需） │ ├── go.php # 发起支付（必需） │ ├── notify.php # 异步通知处理（必需） │ └── return.php # 同步回调处理（可选） ├── alipay/ │ └── ... └── wxpay/ └── ...核心流程用户下单 → 系统调用 go.php → 返回支付参数 → 用户完成支付 ↓ 支付平台 → 异步通知 notify.php → 验签成功 → 系统更新订单 ↓ 用户返回 → 同步回调 return.php → 显示支付结果文件详解1. description.php - 插件信息定义插件在后台显示的基本信息。<?php return [ "DisplayName" => "易支付", // 后台显示名称 "APIVersion" => "1.0.0", // 版本号 "HelpDoc" => "https://..." // 帮助文档链接（可选） ];返回字段说明：字段类型必填说明DisplayNamestring是插件显示名称APIVersionstring是版本号HelpDocstring否帮助文档URL2. set.php - 后台配置定义后台配置页面需要填写的字段。<?php return [ [ "name" => "商户ID", // 配置项标识（英文） "title" => "商户号", // 显示标题 "type" => "input", // 类型：input/select/textarea/switch "prompt" => "请输入商户号", // 提示文字 "value" => "" // 默认值 ], [ "name" => "密钥", "title" => "API密钥", "type" => "input", "prompt" => "请输入API密钥", "value" => "" ], [ "name" => "支付方式", "title" => "支付方式", "type" => "select", "prompt" => "选择支付方式", "value" => "alipay", "option" => [ // select类型专用 "支付宝" => "alipay", "微信" => "wxpay", "QQ" => "qqpay" ] ], [ "name" => "调试模式", "title" => "调试模式", "type" => "switch", "prompt" => "是否开启调试", "value" => "0" // 0=关，1=开 ] ];字段类型说明：类型说明input单行文本输入password密码输入（内容隐藏）textarea多行文本输入select下拉选择，需配合 optionswitch开关，value为 "0" 或 "1"number数字输入配置数据使用方式：系统在调用 go.php、notify.php、return.php 时，会将用户在后台填写的配置值通过 $params['data'] 传入。3. go.php - 发起支付函数名： go($params)作用： 接收订单信息，向支付平台发起请求，返回支付参数。入参 $params：字段类型说明order_nostring系统订单号subjectstring订单标题amountfloat订单金额（元）notify_urlstring异步通知URL（系统生成）return_urlstring同步回调URL（系统生成）client_ipstring用户IP地址dataarray/string插件配置数据返回值：// 页面跳转支付 return [ 'code' => 1, // 1=成功，0=失败 'type' => 'jump', // 固定值：jump 'data' => 'https://...' // 支付平台跳转URL ]; // API二维码支付 return [ 'code' => 1, 'type' => 'qrcode', // 固定值：qrcode 'data' => 'https://...' // 二维码图片URL或支付链接 ]; // 失败 return [ 'code' => 0, 'msg' => '错误信息' ];示例代码：<?php function go(…