30a2efce3f
Align redeem/validate UX with per-code tokens from the auth server. Co-authored-by: Cursor <cursoragent@cursor.com>
55 lines
2.3 KiB
Markdown
55 lines
2.3 KiB
Markdown
# 软件授权说明(用户版)
|
||
|
||
授权服务:[https://sq.bz121.com/](https://sq.bz121.com/)
|
||
|
||
## 激活流程
|
||
|
||
1. 部署并启动本系统(三所或中控任一页面)。
|
||
2. 浏览器打开 **`/license`**(未授权时会自动跳转)。
|
||
3. 复制页面上的 **设备 ID**。
|
||
4. 联系微信 **dekun03** 购买(备注设备 ID),按约定支付 **USDT** 后获得 **激活码 + 客户密钥**(每张码一把密钥)。
|
||
5. 在 `/license` 填写 **客户密钥** 与激活码并兑换(密钥写入本地 `data/license_state.json`;续费一般可留空)。
|
||
|
||
## 定价(整机授权)
|
||
|
||
| 项目 | 说明 | 金额 |
|
||
|------|------|------|
|
||
| 年卡 | 365 天;**整机授权**(单所安装也按整机) | **1000 USDT** |
|
||
| 部署费 | 一次性代部署/装机(自装是否收取以约定为准) | **100 USDT** |
|
||
|
||
- 仅售年卡,无月卡/季卡。
|
||
- 续费:年卡 **1000 USDT**(一般不再收部署费);续费码沿用原客户密钥。
|
||
- 换机:旧设备立即失效,需换机码(向卖家申请);密钥不变。
|
||
- USDT 收款地址由卖家提供(链与地址以当时通知为准)。
|
||
|
||
## 客户密钥(Client Token)
|
||
|
||
卖家在授权站后台 **新激活码** Tab 可复制「激活码 + 客户密钥」。
|
||
每张新购码绑定独立密钥;兑换后归该订阅长期使用。
|
||
**不要**再使用后台「系统设置」里的全局 `CLIENT_API_KEY` 发给新用户(那仅兼容旧数据)。
|
||
|
||
本地优先级:环境变量 `LICENSE_CLIENT_KEY` > 授权页保存的密钥。
|
||
|
||
## 环境变量(可选)
|
||
|
||
在**仓库根目录**创建 **`license.env`**(勿提交 Git):
|
||
|
||
```bash
|
||
cd /opt/crypto_monitor_user # 或你的安装目录
|
||
cp license.env.example license.env
|
||
```
|
||
|
||
```env
|
||
LICENSE_API_URL=https://sq.bz121.com
|
||
# 可选:也可只在 /license 页填写卖家发的客户密钥
|
||
# LICENSE_CLIENT_KEY=
|
||
# LICENSE_OFFLINE_GRACE_HOURS=72
|
||
# LICENSE_DISABLED=false
|
||
```
|
||
|
||
改完环境变量后**重启** Flask / 中控进程。也可在各实例 `.env` 里写同样的 `LICENSE_*`(不要留空键)。
|
||
|
||
许可状态保存在仓库根目录 **`data/license_state.json`**(三所 + 中控共用,含本地保存的客户密钥)。
|
||
|
||
系统约每 **3 天** 向授权站校验一次;明确过期或换机后旧设备将无法使用。
|