火星BOT授权系统插件对接开发文档
适用站点:`https://bot.booboy.cn`
核心插件接口:`/api/Communication.php`
推荐模式:`c=api` 明文 JSON + 签名校验。旧加密模式也存在,但插件开发建议统一用 `c=api`。
1. 插件对接总流程
插件/客户端通常按下面顺序接入授权:
1. 初始化 Initialization
↓ 获取 token、公告、更新地址
2. 登录授权 Login
↓ 校验账号/卡密/绑定信息
3. 上线确认 GoOnline,可选
↓ 用于处理单开/挤下线逻辑
4. 心跳 OnlineHeart,必须循环调用
↓ 维持在线状态、扣余额/刷新 htime
5. 读取信息,可选
├ GetAppInfo
├ GetUserInfo
└ GetCustumData
6. 退出 OffLine
重要:后台“在线人数”已经按 sq_user.htime 判断:
60秒内插件调用过 OnlineHeart 的授权用户 = 在线
所以插件必须定时调用 OnlineHeart,建议每 60 秒一次,建议每 30-60 秒调用一次。
2. 通信地址
推荐 API 模式
POST https://bot.booboy.cn/api/Communication.php?appid=应用ID&c=api&sign=签名
Content-Type: application/x-www-form-urlencoded
data=JSON字符串
示例:
POST /api/Communication.php?appid=1&c=api&sign=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
data={"mod":"Initialization","ddition":1}
旧加密模式
POST /api/Communication.php?appid=应用ID&sign=签名
data=加密后的字符串
旧模式依赖 /function/Encryption.class.php 的自定义动态加密,第三方插件不建议用,除非要兼容旧客户端。
3. 应用密钥
每个应用在后台都有两组密钥:
ConnectKey:通信密钥
DecryptKey:解密/签名密钥
后台可在应用管理里查看/重置密钥。
插件里必须保存:
appid
connectkey
decryptkey
4. 签名算法,c=api 模式
请求签名
请求里的 data 是 JSON 字符串,签名算法:
sign = md5(connectkey . md5(md5(data . connectkey) . decryptkey) . decryptkey)
PHP 示例
function hx_sign($data, $connectKey, $decryptKey) {
return md5($connectKey . md5(md5($data . $connectKey) . $decryptKey) . $decryptKey);
}
$payload = json_encode([
'mod' => 'Initialization',
'ddition' => 1,
], JSON_UNESCAPED_UNICODE);
$sign = hx_sign($payload, $connectKey, $decryptKey);
JS/Node 示例
const crypto = require('crypto');
function md5(s) {
return crypto.createHash('md5').update(s, 'utf8').digest('hex');
}
function hxSign(data, connectKey, decryptKey) {
return md5(connectKey + md5(md5(data + connectKey) + decryptKey) + decryptKey);
}
5. 返回格式,c=api 模式
服务端返回外层 JSON:
{
"code": 1,
"msg": "ok",
"data": {
"sign": "返回数据签名",
"data": "内层JSON字符串"
}
}
内层 data 也是 JSON 字符串,例如:
{
"code": 1,
"msg": "ok",
"data": {
"token": "xxxx",
"notice": "公告内容"
}
}
插件收到后建议:
1. 解析外层 JSON
2. 取 outer.data.data 作为 innerRaw
3. 用同样签名算法计算 hxSign(innerRaw)
4. 比对 outer.data.sign
5. 解析 innerRaw
6. 核心授权接口
路径统一:
/api/Communication.php?appid=应用ID&c=api&sign=签名
POST 参数统一:
data=JSON字符串
6.1 初始化 Initialization
用于获取 token、公告、更新信息。
请求 data:
{
"mod": "Initialization",
"ddition": 1
}
字段说明:
| 字段 | 必填 | 说明 |
|---|---:|---|
| mod | 是 | 固定 `Initialization` |
| ddition | 是 | 客户端版本号,必须是数字,用于强制更新判断 |
成功返回:
{
"code": 1,
"msg": "ok",
"data": {
"updateurl": "更新地址",
"updatelog": "更新日志",
"notice": "应用公告",
"token": "初始化token"
}
}
可能错误:
| code | 含义 |
|---:|---|
| -1 | appid 不能为空 |
| -2 | sign 不能为空/长度不对 |
| -3 | 签名校验失败 |
| -4 | 应用信息获取失败 |
| -101 | 当前客户端版本过低,需要更新 |
| -102 | 应用已停用 |
6.2 登录授权 Login
登录时根据应用后台的 logintype 不同,字段不同。
通用请求:
{
"mod": "Login",
"token": "初始化返回的token",
"user": "用户名或卡密",
"pass": "密码,可选",
"mac": "设备码,可选",
"robot": "机器人QQ/绑定QQ,可选",
"ip": "客户端IP,可选"
}
登录类型 zhmm:账号密码
{
"mod": "Login",
"token": "xxx",
"user": "账号",
"pass": "密码",
"mac": "设备码",
"robot": "机器人QQ"
}
登录类型 kmsq:卡密授权
{
"mod": "Login",
"token": "xxx",
"user": "卡密",
"mac": "设备码",
"robot": "机器人QQ"
}
登录类型 jcbd:检查绑定
{
"mod": "Login",
"token": "xxx",
"mac": "设备码",
"robot": "机器人QQ",
"ip": "客户端IP"
}
成功返回:
{
"code": 1,
"msg": "ok"
}
常见错误:
| code | 含义 |
|---:|---|
| -201 | 初始化超时或 token 不存在 |
| -202 | 用户名不能为空 |
| -203 | 密码不能为空 |
| -204 | 用户名错误 |
| -205 | 密码错误 |
| -211 | 卡密不能为空 |
| -212 | 卡密不存在 |
| -221 | 未查询到绑定授权 |
| -231 | 授权被冻结 |
| -232 | 授权到期 |
| -233 | 余额不足 |
| -234 | IP 绑定不一致 |
| -235 | 设备码绑定不一致 |
| -236 | QQ 绑定不一致 |
| -301 | 已在别处登录,触发单开限制 |
6.3 上线确认 GoOnline
用于处理在线检查/单开逻辑。不是每个插件都必须用,但如果应用开启了 onlinecheck,建议 Login 成功后调用一次。
请求:
{
"mod": "GoOnline",
"token": "登录token"
}
成功:
{
"code": 1,
"msg": "ok"
}
6.4 在线心跳 OnlineHeart
插件必须定时调用,用于:
1. 刷新 token.lastest
2. 更新 sq_user.htime
3. 余额型授权扣余额
4. 后台/代理后台在线人数统计
请求:
{
"mod": "OnlineHeart",
"token": "登录token"
}
成功返回:
{
"code": 1,
"msg": "ok",
"data": {
"time": 1720000000,
"o": "余额扣除成功或空"
}
}
建议频率:
每 60 秒一次
在线人数判定:
当前时间 - sq_user.htime <= 60 秒,即 3 小时内有心跳 = 在线
6.5 获取应用信息 GetAppInfo
请求:
{
"mod": "GetAppInfo",
"token": "登录token"
}
返回当前应用配置,包含版本、公告、更新、登录类型、绑定设置等字段。
6.6 获取用户信息 GetUserInfo
请求:
{
"mod": "GetUserInfo",
"token": "登录token"
}
成功返回授权用户完整信息,常见字段:
| 字段 | 说明 |
|---|---|
| username | 授权账号/卡密 |
| mac | 绑定设备码 |
| lip | 绑定 IP |
| rqq | 绑定机器人 QQ |
| balance | 到期时间戳或余额 |
| htime | 最近心跳时间 |
| status | 1 正常,0 冻结 |
| appid | 应用 ID |
| aid | 所属代理 ID |
6.7 获取自定义数据 GetCustumData
请求:
{
"mod": "GetCustumData",
"token": "登录token"
}
返回后台应用里配置的自定义数据:
{
"code": 1,
"data": {
"data": "后台应用自定义数据"
}
}
注意:系统里拼写就是 GetCustumData,不是 GetCustomData。
6.8 退出 OffLine
请求:
{
"mod": "OffLine",
"token": "登录token"
}
作用:删除当前 token。
成功:
{
"code": 1,
"msg": "ok"
}
7. c=api 请求完整示例,PHP
<?php
$base = 'https://bot.booboy.cn/api/Communication.php';
$appid = 1;
$connectKey = '你的ConnectKey';
$decryptKey = '你的DecryptKey';
function hx_sign($data, $connectKey, $decryptKey) {
return md5($connectKey . md5(md5($data . $connectKey) . $decryptKey) . $decryptKey);
}
function hx_request($mod, $payload = []) {
global $base, $appid, $connectKey, $decryptKey;
$payload['mod'] = $mod;
$data = json_encode($payload, JSON_UNESCAPED_UNICODE);
$sign = hx_sign($data, $connectKey, $decryptKey);
$url = $base . '?appid=' . urlencode($appid) . '&c=api&sign=' . $sign;
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query(['data' => $data]),
CURLOPT_TIMEOUT => 10,
]);
$raw = curl_exec($ch);
curl_close($ch);
$outer = json_decode($raw, true);
if (!$outer || $outer['code'] != 1) {
throw new Exception('接口外层返回异常:' . $raw);
}
$innerRaw = $outer['data']['data'];
$innerSign = $outer['data']['sign'];
if (hx_sign($innerRaw, $connectKey, $decryptKey) !== $innerSign) {
throw new Exception('返回签名校验失败');
}
return json_decode($innerRaw, true);
}
// 1. 初始化
$init = hx_request('Initialization', ['ddition' => 1]);
$token = $init['data']['token'];
// 2. 登录
$login = hx_request('Login', [
'token' => $token,
'user' => '授权账号或卡密',
'pass' => '密码',
'mac' => '设备码',
'robot' => '机器人QQ',
]);
// 3. 心跳,建议循环定时执行
$heart = hx_request('OnlineHeart', ['token' => $token]);
8. c=api 请求完整示例,Node.js
const crypto = require('crypto');
const base = 'https://bot.booboy.cn/api/Communication.php';
const appid = 1;
const connectKey = '你的ConnectKey';
const decryptKey = '你的DecryptKey';
function md5(s) {
return crypto.createHash('md5').update(s, 'utf8').digest('hex');
}
function hxSign(data) {
return md5(connectKey + md5(md5(data + connectKey) + decryptKey) + decryptKey);
}
async function hxRequest(mod, payload = {}) {
payload.mod = mod;
const data = JSON.stringify(payload);
const sign = hxSign(data);
const url = `${base}?appid=${appid}&c=api&sign=${sign}`;
const res = await fetch(url, {
method: 'POST',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
body: new URLSearchParams({data}),
});
const outer = await res.json();
if (outer.code !== 1) throw new Error(JSON.stringify(outer));
const innerRaw = outer.data.data;
if (hxSign(innerRaw) !== outer.data.sign) throw new Error('返回签名校验失败');
return JSON.parse(innerRaw);
}
9. 前台公共 AJAX 接口
这些接口主要给网站前台页面用,也可以被插件/外部系统调用,但通常需要人机验证 token 或页面流程配合。
路径:
/ajax.php?mod=接口名
| mod | 用途 | 主要参数 |
|---|---|---|
| queryauth | 查询授权 | `qq`, `token` |
| macauth | 查询设备码 | `mac`, `token` |
| kmauth | 查询卡密 | `km`, `token` |
| FieldKamiOpen_First | 套餐卡密自助授权第一步 | `kami`, `token` |
| buy_applist | 获取可购买应用列表 | 无 |
| loadbuylist | 获取套餐购买列表 | `loadbuylist=appid` |
| buy_first | 购买第一步/表单 | 依页面流程 |
| buy_submit | 提交购买授权 | 依页面流程 |
| buy_agent | 自助开通代理 | `lid`, `username`, `password`, `qq`, `zffs`, `zxzffs`, `kt_key`, `token` |
| levellist | 获取可购买代理级别 | 无 |
| changegetform | 换绑表单 | `appid` |
| ChangeGetVerCode | 换绑获取验证码 | 动态字段 + `token` |
| postchange | 提交换绑 | 动态字段 |
| introduce | 应用介绍 | `appid` |
前台页面:
| 页面 | 说明 |
|---|---|
| `/query.php` | 查询授权 |
| `/mac.php` | 查询设备码 |
| `/km.php` | 查询卡密 |
| `/auth.php` | 自助授权 |
| `/change.php` | 更换授权 |
| `/openuser.php` | 开通代理 |
| `/代理QQ` | 代理专属官网首页 |
10. 总后台接口索引
路径:
/Adminx/ajax.php?mod=接口名
需要总后台登录态。
主要接口:
登录态
| mod | 说明 |
|---|---|
| login | 总后台登录 |
| checklogin | 检查登录态 |
| changepassword | 修改密码 |
| gettoken | 获取后台 accesstoken |
| resettoken / retoken | 重置 token |
仪表盘/日志
| mod | 说明 |
|---|---|
| getsysinfo | 总后台统计,包含访问量、今日访问、在线数量 |
| getnotice | 系统公告 |
| getuplog | 更新日志 |
| getvisitlogs | 首页访问日志,含 IP、归属地、时间、路径 |
| sitelog | 系统日志相关 |
应用管理
| mod | 说明 |
|---|---|
| getapplist | 应用列表 |
| addapp | 添加应用 |
| delapp | 删除应用 |
| savechange | 保存应用字段 |
| appkey | 查看/重置应用通信密钥 |
| resetkey | 重置应用密钥 |
| saveintroduce | 保存应用介绍 |
| introduce | 获取应用介绍 |
| getgrideinfo | 获取授权表单字段配置 |
授权用户
| mod | 说明 |
|---|---|
| getuserlist | 授权用户列表 |
| changeuser | 修改授权用户 |
| deluser | 删除授权用户 |
| user_applist | 用户筛选应用列表 |
| loadbuybody | 加载开通授权表单 |
| buy_submit | 后台开通授权 |
代理/等级
| mod | 说明 |
|---|---|
| getagentlist | 代理列表 |
| addagent | 添加代理 |
| changeagent | 修改代理 |
| coldagent | 冻结代理 |
| uncoldagent | 解冻代理 |
| delagent | 删除代理 |
| getagentinfo | 获取代理信息 |
| agentlog | 代理日志 |
| getlevallist | 代理等级列表 |
| addgrade | 添加等级 |
| changegrade | 修改等级 |
| delgrade | 删除等级 |
| gradelist | 等级列表/选择项 |
| getsetlevel / setlevel | 等级配置 |
余额卡密
| mod | 说明 |
|---|---|
| creatkey | 生成余额卡密 |
| getkeylist | 余额卡密列表 |
| keystatus | 卡密状态 |
| coldkey | 冻结卡密 |
| uncoldkey | 解冻卡密 |
| delkey | 删除卡密 |
| download | 下载导出的卡密 |
| keylog | 卡密日志 |
| KeyOperation | 批量导出/删除余额卡密 |
套餐卡密
| mod | 说明 |
|---|---|
| fidlist_show | 套餐列表 |
| addfid | 添加套餐 |
| changefid | 修改套餐 |
| delfid | 删除套餐 |
| creatfidkey | 生成套餐卡密 |
| gettckeylist | 套餐卡密列表 |
| tckeystatus | 套餐卡密状态 |
| deltckey | 删除套餐卡密 |
| FidKeyOperation | 批量导出/删除套餐卡密 |
订单/支付/系统
| mod | 说明 |
|---|---|
| gettradelist | 订单列表 |
| deltrade | 删除订单 |
| suppletrade | 补单 |
| clearalltradeid | 清空订单 |
| clearbeenpay | 清空已支付订单 |
| clearnopay | 清空未支付订单 |
| getsysset | 获取系统设置 |
| savesysset | 保存系统设置 |
| savesiteinfo | 保存站点信息 |
| savenotice | 保存公告 |
| savemailset | 保存邮件配置 |
| sendtestmail | 发送测试邮件 |
| saveepayset | 保存易支付配置 |
| vaptcha | 保存人机验证配置 |
| addadmin | 添加管理员 |
| checkupdate / downloadupdatepacks / unzippacks | 更新相关 |
11. 二级后台接口索引
路径:
/admin/ajax.php?mod=接口名
需要二级后台登录态。二级后台能力比总后台少,主要是用户、代理、卡密、购买和日志:
login, checklogin, getsysinfo,
getuserlist, changeuser, deluser,
dl_applist, getgrideinfo,
getlevallist, addagent, getagentlist, coldagent, uncoldagent, getagentinfo, changeagent, delagent,
creatkey, getkeylist, keystatus, coldkey, uncoldkey, delkey, KeyOperation,
fidlist_show, creatfidkey, gettckeylist, tckeystatus, deltckey, FidKeyOperation,
loadbuybody, buy_submit,
keylog, agentlog,
getnotice, getuplog,
gettoken, resettoken,
savesignset, saveintroduce,
checkupdate, downloadupdatepacks, unzippacks, upload
12. 代理后台接口索引
路径:
/user/ajax.php?mod=接口名
需要代理登录态。
登录态/仪表盘
| mod | 说明 |
|---|---|
| login | 代理登录 |
| checklogin | 检查代理登录态,返回 username/qq |
| getsysinfo | 代理统计:余额、等级、授权数、下级数、自己的访问量、自己的在线人数 |
| getnotice | 代理公告 |
| getvisitlogs | 当前代理自己的首页访问日志 |
| changepassword | 修改代理密码 |
授权用户
| mod | 说明 |
|---|---|
| getuserlist | 当前代理授权用户列表 |
| changeuser | 修改授权用户 |
| deluser | 删除授权用户 |
| buy_applist | 当前代理可开通应用列表 |
| buy_first | 购买/开通第一步 |
| buy_submit | 代理开通授权 |
充值/订单/升级
| mod | 说明 |
|---|---|
| recharge | 在线充值 |
| gettradelist | 订单列表 |
| deltrade | 删除订单 |
| clearalltradeid | 清空订单 |
| clearbeenpay | 清空已支付 |
| clearnopay | 清空未支付 |
| getbuylist | 获取可购买/升级列表 |
| updatelevel | 提升代理等级 |
| leveltips | 等级提示 |
下级代理
| mod | 说明 |
|---|---|
| getlevallist | 可开通级别 |
| addagenttips | 开通下级提示 |
| buyagent | 开通下级代理 |
| getagentlist | 下级代理列表 |
| changeagent | 修改下级代理 |
| delagent | 删除下级代理 |
卡密
| mod | 说明 |
|---|---|
| creatkey | 生成余额卡密 |
| getkeylist | 余额卡密列表 |
| delkey | 删除余额卡密 |
| KeyOperation | 余额卡密批量导出/删除 |
| buy_fidlist | 可购买套餐列表 |
| fidlist_show | 套餐列表 |
| creatfidkey | 生成套餐卡密 |
| gettckeylist | 套餐卡密列表 |
| tckeystatus | 套餐卡密状态 |
| deltckey | 删除套餐卡密 |
| FidKeyOperation | 套餐卡密批量导出/删除 |
| download | 下载导出卡密 |
| keylog | 卡密日志 |
13. 支付与订单回调
| 路径 | 说明 |
|---|---|
| `/payment.php?tradeno=订单号` | 打开支付页或使用余额/卡密支付 |
| `/payresult.php?tradeno=订单号` | 查询支付结果 |
| `/pay/epay/notify_url.php` | 易支付异步通知 |
| `/pay/epay/return_url.php` | 易支付同步返回 |
| `/api/monitor.php` | 订单补单/清理 token 监控脚本 |
14. 数据库字段和在线判定
授权用户表 sq_user 关键字段
| 字段 | 说明 |
|---|---|
| ID | 授权用户 ID |
| username | 授权账号/卡密 |
| password | 授权密码 |
| mac | 设备码 |
| lip | 最近/绑定 IP |
| rqq | 机器人 QQ |
| appid | 应用 ID |
| aid | 所属代理 ID |
| balance | 到期时间戳或余额 |
| htime | 最近心跳时间 |
| ltime | 最近登录时间 |
| status | 状态,1 正常 |
token 表 sq_token
| 字段 | 说明 |
|---|---|
| token | 初始化/登录 token |
| uid | 授权用户 ID |
| appid | 应用 ID |
| ip | 初始化 IP |
| addtime | 初始化时间 |
| start | 登录开始时间 |
| lastest | 最近心跳时间 |
在线人数规则
总后台在线数量:sq_user.htime >= time() - 60
代理后台在线人数:sq_user.aid = 当前代理ID AND sq_user.htime >= time() - 60
15. 插件开发注意事项
1. Initialization 必须先调用,拿到 token 后才能 Login。
2. Login 成功不代表在线人数会增加;必须持续调用 OnlineHeart。
3. OnlineHeart 建议每 60 秒调用一次。
4. 退出插件时调用 OffLine 删除 token。
5. 插件必须校验服务端返回签名,避免伪造授权返回。
6. c=api 模式不加密,只签名;如果传输敏感字段,必须走 HTTPS。
7. 绑定逻辑由后台应用设置决定:IP、设备码、QQ 是否绑定。
8. 余额授权类型 kcye 会在心跳时扣余额。
9. 到期授权类型 dqsj 的 balance 是到期时间戳,-1 表示不限期。
10. 系统里 GetCustumData 拼写就是这样,插件不要写成 GetCustomData。
16. 最小插件伪代码
init = request(Initialization, {ddition: 本地版本})
if init.code != 1: 停止并提示
token = init.data.token
login = request(Login, {
token,
user: 授权账号或卡密,
pass: 密码,
mac: 本机设备码,
robot: 机器人QQ
})
if login.code != 1: 停止并提示 login.msg
每 60 秒:
heart = request(OnlineHeart, {token})
if heart.code != 1:
停止插件并提示 heart.msg
退出时:
request(OffLine, {token})
17. 当前系统已发现的全部 mod 名称
`/api/Communication.php`
Initialization, Login, GoOnline, OnlineHeart, GetCustumData, GetAppInfo, GetUserInfo, OffLine
`/ajax.php`
queryauth, macauth, kmauth, FieldKamiOpen_First, buy_applist, loadbuylist,
buy_first, buy_submit, FieldKeyBuy_submit, buy_agent, levellist,
changegetform, ChangeGetVerCode, postchange, introduce, zfb, wx, qq
`/Adminx/ajax.php`
login, checklogin, getsysinfo, getvisitlogs, getapplist, addapp, delapp, savechange,
appkey, resetkey, getuserlist, changeuser, deluser, user_applist, loadbuybody, buy_submit,
getagentlist, addagent, changeagent, coldagent, uncoldagent, delagent, getagentinfo, agentlog,
getlevallist, addgrade, changegrade, delgrade, gradelist, getsetlevel, setlevel,
creatkey, getkeylist, keystatus, coldkey, uncoldkey, delkey, download, keylog, KeyOperation,
fidlist_show, addfid, changefid, delfid, creatfidkey, gettckeylist, tckeystatus, deltckey, FidKeyOperation,
gettradelist, deltrade, suppletrade, clearalltradeid, clearbeenpay, clearnopay,
getsysset, savesysset, savesiteinfo, savenotice, savemailset, sendtestmail, saveepayset, vaptcha,
addadmin, getnotice, getuplog, gettoken, resettoken, retoken, checkupdate, downloadupdatepacks, unzippacks, upload
`/admin/ajax.php`
login, checklogin, getsysinfo, getuserlist, changeuser, deluser,
dl_applist, getgrideinfo, getlevallist, addagent, getagentlist, coldagent, uncoldagent,
getagentinfo, changeagent, delagent, savesignset, creatkey, getkeylist, keystatus,
coldkey, uncoldkey, delkey, download, KeyOperation, fidlist_show, creatfidkey,
gettckeylist, tckeystatus, deltckey, FidKeyOperation, loadbuybody, buy_submit,
agentlog, keylog, saveintroduce, upload, getnotice, getuplog, gettoken, resettoken,
checkupdate, downloadupdatepacks, unzippacks
`/user/ajax.php`
login, checklogin, getsysinfo, getvisitlogs, getnotice, buy_applist, buy_first, buy_submit,
getuserlist, changeuser, deluser, recharge, gettradelist, deltrade, clearalltradeid,
clearbeenpay, clearnopay, getbuylist, updatelevel, leveltips, getlevallist,
addagenttips, buyagent, getagentlist, changeagent, delagent, creatkey, getkeylist,
delkey, KeyOperation, buy_fidlist, fidlist_show, creatfidkey, gettckeylist,
tckeystatus, deltckey, FidKeyOperation, download, keylog, changepassword, zfb, wx, qq
18. 二次严格扫描补充:全量路由/子操作附录
说明:本节是按源码重新扫描 `$_GET['mod']`、`$data['mod']`、`switch case`、UEditor `action` 得出的补充清单。
其中 `/function/PHPMailer.php` 内部的 `alt/html/plain/smtp/sendmail` 等 case 是第三方邮件库内部 MIME/发送模式,不是本系统 HTTP 接口,已排除。
18.1 插件真正必须对接的核心接口
插件授权只需要对接:
/api/Communication.php
核心 mod 全量如下:
Initialization
Login
GoOnline
OnlineHeart
GetCustumData
GetAppInfo
GetUserInfo
OffLine
这些已经在正文第 6 节逐项写了请求、参数、返回和错误码。
18.2 根目录前台 `/ajax.php` 全量 mod
queryauth
macauth
kmauth
FieldKamiOpen_First
buy_applist
loadbuylist
buy_first
buy_submit
FieldKeyBuy_submit
buy_agent
levellist
changegetform
ChangeGetVerCode
postchange
introduce
zfb
wx
qq
用途:前台查询、自助授权、购买、换绑、开通代理、支付方式选择。
18.3 总后台 `/Adminx/ajax.php` 全量 mod / 子操作
登录/状态
login
checklogin
changepassword
gettoken
resettoken
retoken
仪表盘/公告/日志
getsysinfo
getvisitlogs
getnotice
getuplog
sitelog
应用管理
getapplist
addapp
delapp
savechange
appkey
resetkey
saveintroduce
introduce
getgrideinfo
应用字段/配置子字段 case,包括:
app_name
yybb
yxjb
yxhb
bdip
bdjq
bdqq
gbyy
qzgx
gxdz
gxrz
yygg
zxjc
zxms
mfms
zqkc
jbkc
zdysj
czmz
imgsrc
这些多为 savechange 或应用配置里的字段名/类型分支,不是单独给插件调用的公共接口。
授权用户
getuserlist
changeuser
deluser
user_applist
loadbuybody
buy_submit
代理/等级
getagentlist
addagent
changeagent
coldagent
uncoldagent
delagent
getagentinfo
agentlog
getlevallist
addgrade
changegrade
delgrade
gradelist
getgradelist
getsetlevel
setlevel
余额卡密
creatkey
getkeylist
keystatus
coldkey
uncoldkey
delkey
download
keylog
KeyOperation
KeyOperation 的批量子操作:
ExportNoUse
ExportNoMoney
ExportAll
DelNoMoney
DelNoUse
DelUse
DelAll
套餐/套餐卡密
fidlist_show
addfid
changefid
delfid
getfidlist
creatfidkey
gettckeylist
tckeystatus
deltckey
FidKeyOperation
FidKeyOperation 的批量子操作:
ExportNoUse
ExportNoMoney
ExportAll
DelNoMoney
DelNoUse
DelUse
DelAll
订单/支付/清理
gettradelist
deltrade
suppletrade
clearalltradeid
clearbeenpay
clearnopay
saveepayset
savesignset
支付类型/方式子操作:
zfb
wx
qq
系统设置/邮件/验证/管理员/更新
getsysset
savesysset
savesiteinfo
savenotice
savemailset
sendtestmail
vaptcha
addadmin
checkupdate
downloadupdatepacks
unzippacks
upload
黑词/补充配置
getbclist
addbc
delbc
返回/日志类型标记,不建议当接口调用
success
warning
danger
info
这些通常是日志类型或提示类型分支,不属于插件公共接口。
18.4 二级后台 `/admin/ajax.php` 全量 mod / 子操作
login
checklogin
getsysinfo
getuserlist
changeuser
deluser
dl_applist
getgrideinfo
getlevallist
addagent
getagentlist
coldagent
uncoldagent
getagentinfo
changeagent
delagent
savesignset
creatkey
getkeylist
keystatus
coldkey
uncoldkey
delkey
download
KeyOperation
fidlist_show
creatfidkey
gettckeylist
tckeystatus
deltckey
FidKeyOperation
loadbuybody
buy_submit
agentlog
keylog
saveintroduce
upload
getnotice
getuplog
gettoken
resettoken
checkupdate
downloadupdatepacks
unzippacks
user_applist
getbclist
addbc
delbc
changepassword
批量子操作同总后台:
ExportNoUse
ExportNoMoney
ExportAll
DelNoMoney
DelNoUse
DelUse
DelAll
18.5 代理后台 `/user/ajax.php` 全量 mod / 子操作
login
checklogin
getsysinfo
getvisitlogs
getnotice
buy_applist
buy_first
buy_submit
getuserlist
changeuser
deluser
recharge
gettradelist
deltrade
clearalltradeid
clearbeenpay
clearnopay
getbuylist
updatelevel
leveltips
getlevallist
addagenttips
buyagent
getagentlist
changeagent
delagent
creatkey
getkeylist
delkey
KeyOperation
buy_fidlist
fidlist_show
creatfidkey
gettckeylist
tckeystatus
deltckey
FidKeyOperation
download
keylog
changepassword
zfb
wx
qq
批量子操作:
ExportNoUse
ExportNoMoney
ExportAll
DelNoMoney
DelNoUse
DelUse
DelAll
18.6 登录退出入口
这些不是 ajax.php?mod=,但属于页面入口:
/Adminx/index.php?mod=loginout
/admin/index.php?mod=loginout
/user/index.php?mod=loginout
当前新版页面中也有:
/Adminx/logout.php
/admin/logout.php
/user/logout.php
18.7 UEditor/上传控制器 action
总后台:
/Adminx/php/controller.php?action=config
/Adminx/php/controller.php?action=uploadimage
/Adminx/php/controller.php?action=uploadscrawl
/Adminx/php/controller.php?action=uploadvideo
/Adminx/php/controller.php?action=uploadfile
/Adminx/php/controller.php?action=listimage
/Adminx/php/controller.php?action=listfile
/Adminx/php/controller.php?action=catchimage
二级后台:
/admin/php/controller.php?action=config
/admin/php/controller.php?action=uploadimage
/admin/php/controller.php?action=uploadscrawl
/admin/php/controller.php?action=uploadvideo
/admin/php/controller.php?action=uploadfile
/admin/php/controller.php?action=listimage
/admin/php/controller.php?action=listfile
/admin/php/controller.php?action=catchimage
这些是后台富文本/文件上传控件用的 action,不是插件授权通信接口。
18.8 独立页面/回调入口
/index.php 官方首页;/代理QQ 也会路由到这里
/query.php 查询授权页
/mac.php 查询设备码页
/km.php 查询卡密页
/auth.php 自助授权页
/change.php 更换授权页
/openuser.php 开通代理页
/payment.php?tradeno=订单号
/payresult.php?tradeno=订单号
/pay/epay/notify_url.php 易支付异步回调
/pay/epay/return_url.php 易支付同步返回
/api/monitor.php 订单补单/Token 清理监控脚本
19. 完整性说明
本文件现在分两层:
正文第 1-16 节:插件开发者真正需要对接的核心接口和示例
第 17-18 节:源码扫描得到的全量接口/后台内部接口索引
如果只是写授权插件,优先看:
/api/Communication.php
Initialization / Login / OnlineHeart / OffLine
如果要写自动化后台管理工具,再看:
/Adminx/ajax.php
/admin/ajax.php
/user/ajax.php
注意:后台/代理后台接口需要登录 Session,不建议直接暴露给第三方插件。