开发文档

产品使用文档与部署教程,持续更新中

首页>文档>API 文档

云枢官网授权系统 · API 文档

云枢官网授权系统 · API 文档(第三方程序接入指南)

本文档面向第三方程序开发者:你的 PHP 网站 / 软件接入云枢官网授权系统主站后,即可获得授权验证、远程广告、插件市场三项能力。主站为星聚部署的授权中心站(下文以 https://www.xjukeji.cn 为例,实际以你的主站域名为准)。

一、接入总览

三项能力全部走 HTTP 协议,主站域名在程序打包时已注入(无需在你的代码里写死域名):

能力接口说明
授权验证GET /check.php验证授权码 + 域名绑定,返回授权状态与广告
远程广告GET /check.php(随响应返回)主控投放广告,程序声明广告位即可展示
插件市场GET /auth/api/market主控发布的插件列表,程序侧展示并安装

接入三步:

  1. 注册程序:联系主站在「授权中心 → 程序管理」添加你的程序,获得 app_uid(程序 UID)与 auth_key(授权密钥);
  2. 集成 SDK:将 install/sdk/authcode.php 引入你的程序(或按本文档自行实现协议),在需要的位置调用 xj_ads_render();
  3. 上传分发:上传程序源码包到主站,主站自动注入授权码、可加密核心文件,买家下载即用。

二、授权验证协议(check.php)

请求

GET https://www.xjukeji.cn/check.php?url={域名}&authcode={授权码}&app_uid={程序UID}&t={时间戳}&sign={签名}
参数必填说明
url是当前站点域名(一级域名授权时主站自动取主域,如 a.x.com → x.com)
authcode是授权码(主站打包时注入,或买家填写)
app_uid是程序 UID(主站程序管理分配)
t推荐秒级时间戳,±10 分钟内有效(防重放)
sign推荐md5(authcode + t + app_uid + auth_key)(防伪造)
ver可选本地版本号,用于在线更新检测(见下)

响应

{"data": base64_encode(authcode(json_encode($result), 'ENCODE', auth_key))}

解密(authcode 为 Discuz 风格加解密,实现见第五节):

$plain = authcode(base64_decode($json['data']), 'DECODE', $auth_key);
$result = json_decode($plain, true);

解密后字段:

字段说明
code"1" 授权有效;"-1" 无效(msg 说明原因);"0" 最新版本
name程序名称
tokenmd5(authcode + 日期Ymd + auth_key),可用作当日令牌
ads远程广告数组(见第三节),无广告返回空数组

带 ver 参数时的更新检测响应(code=1 表示有新版本):ver / version / uplog(更新日志)/ file(更新包下载链接)/ sql(更新 SQL 数组,可空)。file 链接 10 分钟内有效,需带 down 参数访问下载。

三、远程广告

3.1 广告数据(随 check.php 响应返回)

[
  {"id": 1, "name": "演示广告", "position": "home_top", "type": "text",
   "content": "广告文字", "ad_url": "https://xxx.com", "target": "_blank"},
  {"id": 2, "position": "home_top", "type": "image", "content": "https://img/1.png"}
]
字段说明
position广告位标识(你的程序声明的)
typetext 文本 / html HTML 代码 / image 图片
content广告内容(text 为纯文本;html 已经主控 XSS 过滤;image 为 http(s) 图片地址)
ad_url跳转链接(仅 http/https,空则不可点击)
target_blank 新窗口 / _self 当前页

主控只下发「全部产品 + 你的程序」且启用、在生效时间区间内的广告,同一广告位多条按排序依次输出。

3.2 广告位声明

广告位由主控后台维护(授权中心 → 程序管理 → 编辑程序 → 广告位声明,JSON 键值对:标识与名称)。上传程序包时主控会自动扫描你源码中的 xj_ads_render('标识') 调用识别广告位,你无需手写声明。广告位价格(客户自助申请费用,0=免费)由主控在「远程广告 → 广告位管理」设置。

3.3 程序侧用法(SDK)

// 拉取全部广告(自动缓存 1-2 小时,主控修改后自动同步;请求失败读旧缓存,绝不抛错)
$ads = xj_ads_fetch();

// 渲染指定广告位(无广告返回空字符串)
echo xj_ads_render('home_top');
echo xj_ads_render('user_sidebar');

SDK 渲染安全规则:text 转义输出、html 直出(主控已过滤 script/iframe/事件属性/js 伪协议)、image 校验 http(s)、链接仅 http(s) 并带 rel="nofollow noopener"。

自实现协议(不用 SDK 时):请求 check.php(带签名)→ 解密取 ads → 按 position 分组渲染 → 本地缓存 1-2 小时。建议同 SDK 一样做缓存与降级,主站不可达时沿用本地缓存。

3.4 广告位自助申请(可选)

买家可在授权中心用户中心付费申请你的程序广告位(金额=主控设置的价格),提交广告内容,主控审核通过后自动上架并随 check.php 下发。程序侧无需任何额外开发。

四、插件市场 API

4.1 拉取插件列表

GET https://www.xjukeji.cn/auth/api/market
{"code": 0, "msg": "ok", "data": [
  {"id": 1, "name": "聚合支付系统", "icon": "", "desc": "聚合收款/代付 API…",
   "version": "", "price": "0", "download_url": "/page/2", "buy_url": "", "status": 1, "sort": 100}
]}
字段说明
id插件 ID(market_id,安装后本地记录用)
name / icon / desc名称 / 图标 / 介绍(列表展示)
version版本号(可空)
price价格(0 = 免费)
download_url安装包直链(zip)或详情页地址;空则不可直接安装
buy_url购买页地址(付费插件引导买家前往)
status1 = 上架(接口只返回上架插件)
sort排序(大在前)

4.2 程序侧安装流程

  1. 拉取列表展示插件;
  2. 买家点安装:免费插件且 download_url 为 zip 直链 → 下载解压到你的插件目录;付费插件 → 跳 buy_url 引导购买;
  3. 本地记录已安装插件(保存 market_id,避免重复安装);
  4. 可选:再次请求列表与本地记录比对,提示「有更新」。

五、SDK 函数参考(install/sdk/authcode.php)

函数说明
xj_license_authcode($s, $op, $key, $expiry)Discuz 风格加解密(ENCODE/DECODE),协议响应加解密基础
xj_license_domain($host)解析域名(一级域名授权时取主域)
xj_license_request($server, $authcode, $app_uid, $key, $extra)签名请求 check.php 并解密返回结果数组(失败返回 null)
xj_license_verify($local_url)授权验证:每天首次远程验证 + 当天本地缓存;返回 ok/code/msg/name/token
xj_license_heart()心跳验证(建议每 2-6 小时调用),封禁/到期返回 false
xj_license_data($k)取远程关键数据(core_key 等,用于核心文件解密)
xj_ads_fetch()拉取广告数组(本地缓存 1-2 小时,失败降级旧缓存/空数组)
xj_ads_render($position)渲染指定广告位 HTML(安全转义/协议校验,无广告返回空串)

SDK 顶部 4 个全局变量(打包注入):$authcode 授权码、$app_uid 程序 UID、$auth_key 授权密钥、$xj_siteurl 主站地址。自实现协议时同样需要这四项。

六、常见问题

  1. 验证频率:SDK 每天远程验证一次(当天走本地缓存);主站停机时沿用当天已通过的缓存,不误杀客户。
  2. 广告同步:主控修改广告后,客户站 1-2 小时缓存到期自动同步,无需客户操作。
  3. 签名校验:建议始终携带 t + sign;老客户端不带签名仍兼容(但无防重放)。
  4. 核心文件加密:主控可加密你程序的指定核心文件(AES-256-CBC,密钥 core_key),密文+加载器方式分发,买家删除后程序无法使用。
  5. 广告位数量:程序声明几个就同步几个,主控不会凭空多建;主控删除的声明不影响已创建的广告位(仅不再自动新增)。

2026-09 更新:加密打包、密钥接口与演示中心

1. 加密包与密钥接口(xjkey)

接入程序在授权中心「在线加密」或程序管理第四步「打加密包」生成加密成品后,买家下载直接获得加密包(自动写入本人授权码)。档 B(混淆+加密壳)与核心加密文件的运行时代码需要向授权中心换取解密密钥:

POST /auth/xjkey 参数:url(绑定域名)、authcode(授权码)、app_uid(程序 UID)、t(时间戳)、sign=md5(authcode + t + app_uid + auth_key)。成功返回 key=RSA 私钥加密后的 sha256(auth_key|core_key),用随包内置的公钥解密即可。

注意:check.php 对开启一级域名授权(domain=1)的程序会把子域名映射为主域名校验;xjkey 的授权校验用原始域名。自有演示站接入时两条授权记录都要注册。

2. 在线加密

后台「授权中心 → 在线加密」:档 A 仅混淆(轻量防修改),档 B 混淆+加密壳(防破解,运行时联网校验)。程序管理向导第四步可直接对发布包目录打包,成品存云端并自动用于买家下载,也可点「下载加密包」直接分发。

3. 演示中心(24 小时独立演示账号)

后台「演示中心」为程序配置演示站地址与演示库连接后,前台 /demo 页即可供访客申请演示:手机验证码+邮箱校验,每次申请自动生成独立演示账号(24 小时有效,到期自动清理),双写进演示站数据库。

接入程序要求:登录逻辑校验账号的 demo_expire 字段(0=非演示账号放行;大于 0 且小于当前时间拒绝登录)。申请记录在后台演示中心可查。

4. 程序管理四步向导

添加/编辑程序分四步:上传源码 → 授权代码 → 程序信息 → 打加密包。保存后自动进入第四步,可查看最新加密包状态、选择档位重新打包、直接下载加密包分发。

2026-09-26 更新:在线客服(实时聊天)

官网系统新增「在线客服」模块:前台右下角浮窗实时对话(游客与登录会员都能聊),后台「客服中心 → 在线接待」统一接待,含快捷短语、图片/文件发送、关键词自动回复、访客备注/标签/拉黑、离线引导、未读角标与声音提醒。该模块属于站点自身功能,不对外提供第三方接口,接入程序无需任何改动。

1. 前台接口(站点自身使用)

接口说明
POST /chat/open打开会话(返回访客身份、历史消息、是否需要填资料)
POST /chat/send发送消息(type=text/image/file,带 client_msg_id 幂等去重)
POST /chat/pull拉取增量消息(last_id 游标,自适应轮询调用)
POST /chat/upload上传图片/文件(图片走 upload_image 真图校验;文件白名单 pdf/zip/rar/7z/doc(x)/xls(x)/ppt(x)/txt ≤10MB)
POST /chat/profile填写称呼 / 电话 / 邮箱
POST /chat/close访客主动结束会话

以上均为同源请求,靠站点 cookie(xj_chat_id)识别访客,带蜜罐字段 website 与按 IP 的频率限制(发送 1 条/秒、20 条/分、300 条/天)。

2. 计划任务接口

GET /chat/cron?key=<chat_cron_key>:结束超时会话、清理过期消息(默认无消息 30 分钟结束、消息保留 90 天,后台可改)。密钥存 cms_setting.chat_cron_key,在 后台 → 客服中心 → 在线接待 → 设置 里可见并一键复制,宝塔计划任务每 5 分钟调用一次。不配置也能用:会话超时会在下次请求时惰性结束,只是过期数据清理没那么及时。

3. 数据表

cms_chat_user(访客档案)、cms_chat_session(会话,含未读与已读水位)、cms_chat_message(消息,(session_id, client_msg_id) 唯一键做幂等)、cms_chat_quick(快捷短语)。新装随安装向导创建;老站随在线更新执行 install/update/chat_20260926.sql 创建;运行时也会自愈补建(app/service/CmsSchema.php)。若数据库账号无 CREATE 权限导致建表失败,前台浮窗自动退回「在线留言」表单,不影响站点运行。

4. 后台接口(系统自身页面使用)

/admin/chat(接待页)、/admin/chat/feed(会话与消息增量 + 未读汇总)、/admin/chat/badge(全局未读角标,15 秒轮询)、/admin/chat/send、/admin/chat/upload、/admin/chat/close、/admin/chat/visitor(备注/标签/拉黑)、/admin/chat/setting,以及 /admin/chat_quick/*(短语增删改)。均需后台登录态。