简介

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
  • 建议在应用启动时进行初始化
  • 定期验证授权状态
  • 合理使用积分,避免频繁请求