简介
PAPI SDK 是一个用于插件授权管理的客户端开发工具包。它提供了简单而强大的 API,帮助开发者快速实现插件的授权验证、积分管理、设备管理等功能。
主要功能:
- 插件授权验证
- 积分管理
- 设备信息上报
- 自动生成并管理机器码
快速开始
以下是一个基本的使用示例:
// 创建 SDK 实例
const papi = new PAPI({
apiUrl: 'https://your-api-url',
pluginId: 'your-plugin-id',
pluginToken: 'your-plugin-token'
});
// 设置授权码
papi.setLicenseCode('YOUR-LICENSE-CODE');
// 初始化并验证授权
try {
await papi.initialize();
const result = await papi.verify();
if (result.status === 'active') {
console.log('授权有效');
console.log('剩余积分:', result.data.points);
}
} catch (error) {
console.error('验证失败:', error.message);
}
安装
PAPI SDK 采用单文件分发形式,您需要将提供的 `papi-sdk.js` 文件集成到您的插件中:
1. 复制 SDK 文件
重要提示: 每个插件都应该使用独立的 SDK 实例,因为每个插件都有自己的 pluginId 和 pluginToken。请不要多个插件共用同一个 SDK 实例。
// 1. 将 papi-sdk.js 复制到您的插件项目目录中 // 2. 在您的插件代码中引入 SDK: <script src="./papi-sdk.js"></script> // 或者如果使用模块化开发: import PAPI from './papi-sdk.js';
2. 目录结构示例
your-plugin/ ├── src/ │ ├── papi-sdk.js # SDK 文件 │ ├── index.js # 插件主文件 │ └── ... ├── index.html └── ...
安全提示:
- 确保 SDK 文件的完整性,不要修改 SDK 的源代码
- 每个插件使用独立的 SDK 实例,不要共享实例
- 妥善保管您的 pluginId 和 pluginToken
3. 验证安装
// 验证 SDK 是否正确引入
if (typeof PAPI !== 'undefined') {
console.log('PAPI SDK 已成功加载');
} else {
console.error('PAPI SDK 加载失败');
}
初始化
创建 PAPI 实例时需要提供以下配置选项:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| apiUrl | string | 是 | API 服务器地址 |
| pluginId | string | 是 | 插件 ID |
| pluginToken | string | 是 | 插件令牌 |
| licenseCode | string | 否 | 授权码(可选) |
| machineCode | string | 否 | 机器码(可选,不提供将自动生成) |
API 方法
initialize()
初始化 SDK,包括上报设备信息和验证授权(如果设置了授权码)。
await papi.initialize();
setLicenseCode(code)
设置授权码。
papi.setLicenseCode('YOUR-LICENSE-CODE');
verify()
验证授权状态。
const result = await papi.verify();
if (result.status === 'active') {
console.log('授权有效');
console.log('剩余积分:', result.data.points);
console.log('过期时间:', result.data.expires_at);
console.log('最大设备数:', result.data.max_devices);
console.log('已用设备数:', result.data.used_devices);
}
usePoints(points)
使用积分。
const result = await papi.usePoints(10);
console.log('剩余积分:', result.data.remaining_points);
reportDevice()
上报设备信息。
const result = await papi.reportDevice();
getPluginInfo()
获取插件信息。
const info = await papi.getPluginInfo();
getLastVerifyResult()
获取最后一次验证结果。
const lastResult = papi.getLastVerifyResult();
使用示例
完整使用流程
// 创建实例
const papi = new PAPI({
apiUrl: 'https://your-api-url',
pluginId: 'your-plugin-id',
pluginToken: 'your-plugin-token'
});
// 设置授权码
papi.setLicenseCode('YOUR-LICENSE-CODE');
// 初始化
try {
await papi.initialize();
// 验证授权
const result = await papi.verify();
if (result.status === 'active') {
console.log('授权有效');
console.log('剩余积分:', result.data.points);
// 使用积分
const useResult = await papi.usePoints(10);
console.log('使用积分后剩余:', useResult.data.remaining_points);
} else {
console.log('授权无效:', result.message);
}
} catch (error) {
console.error('操作失败:', error.message);
}
错误处理
try {
const result = await papi.verify();
// 处理成功情况
} catch (error) {
switch (error.message) {
case 'License code is required':
console.error('未设置授权码');
break;
case 'Invalid license':
console.error('无效的授权码');
break;
case 'License expired':
console.error('授权已过期');
break;
default:
console.error('验证失败:', error.message);
}
}
注意事项:
- 请妥善保管您的插件 Token
- 建议在应用启动时进行初始化
- 定期验证授权状态
- 合理使用积分,避免频繁请求