使用文档

时光授权系统文档

从快速开始到 API 对接,全面了解授权系统的使用与集成

常见问题

用户常见问题

购买后没收到授权码?

原因:支付回调没收到,或订单超时。

解决:

  1. 登录授权站,进入"我的订单"
  2. 查看订单状态:pending(未支付)/ paid(已支付未完成)/ completed(已完成)
  3. 如果状态是 paid 但没生成授权码,联系客服

授权码激活时显示"域名不匹配"?

原因:购买时填写的域名与当前网站域名不一致。

解决:

  1. 登录授权站 → 我的授权
  2. 找到对应授权码,点击"修改域名"
  3. 输入当前网站域名(www.example.com,不带 http://)

一个授权码可以用在多个网站吗?

默认不可以。一个授权码绑定一个域名。如果需要多站点,请购买多站点授权。

授权码能退款吗?

购买后 7 天内、未激活、未发生技术问题,可以联系客服申请退款。已激活的授权码不支持退款。

开发者常见问题

Q: 客户端 API 请求超时?

检查清单:

  • 授权服务器域名是否可访问(ping license.example.com)
  • 是否启用了 HTTPS(部分环境需要 SSL 配置)
  • PHP allow_url_fopen 是否启用
  • cURL 扩展是否安装(php -m | grep curl)

Q: 签名总是验证失败?

常见原因:

  1. 空格问题:拼接字符串时多了空格
  2. API_SECRET 不一致:客户端和服务器端不同
  3. 编码问题:域名包含中文(应先转 Punycode)

调试方法:

<?php
$domain = 'www.example.com';
$license_key = 'LIC-XXXXX';
$product = 'my-plugin';
$serial = 1;
$secret = 'your-secret';

$sign_data = $domain . '|' . $license_key . '|' . $product . '|' . $serial;
$signature = hash_hmac('sha256', $sign_data, $secret);

// 把 $sign_data 和 $signature 一起传给服务器端对比
// 服务器端:hash_hmac('sha256', $sign_data, $api_secret)
// 必须完全一致

Q: 数据库表不存在错误?

通常是 install.php 没运行过,或部分表创建失败。

解决:

  1. 访问 /install.php 重跑
  2. 如果报错,对比错误日志,定位失败的 SQL

Q: 怎么修改 API_SECRET?

两种方式,推荐第二种:

  1. 推荐:后台 UI — 系统设置 → API 设置 → API Secret 卡片
    • 点「重新生成」按钮:服务端随机生成 32 位 hex
    • 点「替换为自定义值」:自行填入密钥(≥ 16 字符,仅允许字母数字下划线连字符点号)
    • 修改后立即生效(无需重启 Web 服务)
  2. 命令行 / 配置文件 — 修改 config.php(仅首次安装时生效,不推荐用于生产)
    <?php
    define('API_SECRET', 'new-secret-here');

    ⚠️ 仅供首次安装回填。生产环境推荐用后台 UI 修改(写到 DB settings 表),修改后通知所有插件用户在「授权管理 → API 设置」中同步更新密钥。

Q: 怎么升级到新版本?

  1. 备份数据库
  2. 上传新文件(覆盖)
  3. 访问 /upgrade.php(如有)
  4. 检查新功能是否生效

Q: 怎么清空测试数据?

开发环境使用:

TRUNCATE lic_licenses;
TRUNCATE lic_orders;
TRUNCATE lic_user_logs;
DELETE FROM lic_users WHERE id > 1;
千万不要在生产环境执行!

管理员常见问题

Q: 怎么批量导入授权?

进入「授权管理」→「批量添加」,支持 CSV:

license_key,user_email,domain,product_slug,expires_at
LIC-AAA-BBB-CCC-DDD,user1@example.com,site1.com,my-plugin,
LIC-EEE-FFF-GGG-HHH,user2@example.com,site2.com,my-plugin,2027-01-01

Q: 怎么给用户退款?

  1. 进入「订单管理」
  2. 找到对应订单,点击「退款」
  3. 选择退款方式(原路退回)
  4. 系统会自动调用易支付退款接口

Q: 怎么备份数据?

每日自动备份(已在部署时配置)。手动备份:

mysqldump -u license_user -p license_server | gzip > backup_$(date +%Y%m%d).sql.gz

Q: 易支付回调收不到?

检查步骤:

  1. 易支付商户后台 → 通知地址:https://license.example.com/api/epay_notify.php
  2. 授权服务器防火墙是否允许易支付 IP(问易支付客服)
  3. 检查 epay_notify.php 错误日志
  4. 手动访问 api/epay_notify.php 看是否 404

Q: 怎么禁用某个用户的授权?

  1. 进入「用户管理」
  2. 找到该用户,点击「禁用」
  3. 该用户所有授权会自动 suspend

技术支持