# powersoftware-license-sdk **Repository Path**: powersoftware-app/powersoftware-license-sdk ## Basic Information - **Project Name**: powersoftware-license-sdk - **Description**: PowerSoftware(幂栈网)授权码开放能力的官方 SDK,覆盖 Node.js / Python / Java 三种语言,提供一致的机器码算法、HMAC 签名、接口封装与本地校验缓存。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: https://www.powersoftware.app - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-23 - **Last Updated**: 2026-09-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PowerSoftware License SDK PowerSoftware(幂栈网)授权码开放能力的官方 SDK,覆盖 **Node.js / Python / Java** 三种语言,提供一致的机器码算法、HMAC 签名、接口封装与本地校验缓存。 Official SDKs for the PowerSoftware license system, covering **Node.js / Python / Java** with a consistent machine-code algorithm, HMAC signing, endpoint wrappers, and a local verification cache.

🌐 语言 / Language  ·  中文  |  English
下方接入文档均为中英双份,点击对应语言切换 / Every doc below is bilingual — click a language to switch. Docs ↓

--- ## 目录结构 / Repository layout ```text node/ Node.js SDK (ESM, zero-dep, single file) python/ Python SDK (py3, zero-dep, 3 files) java/ Java SDK (Java 8+, zero-dep, 3 files) docs/ Specs & integration guides (中文 + English, one .md / .en.md pair per topic) ``` ## 安装 / Installation 三语言均为零依赖、**直接拷贝源码**到你的项目中,无需任何包管理器。 ### Node.js 将以下文件拷贝到项目中: ``` node/src/ └── index.js 全部功能(machineCode / sign / LicenseClient) ``` ### Python 将以下文件拷贝到项目中(建议放在 `ps_license_sdk/` 目录下): ``` python/ps_license_sdk/ ├── __init__.py 导出入口 ├── client.py 核心客户端(activate / verify / claim_trial / generate_for_software / purchase_url 等) └── machine.py 机器码生成(三级降级策略) ``` ### Java 将以下文件拷贝到项目中(建议放在 `app/powersoftware/sdk/` 包路径下): ``` java/src/main/java/app/powersoftware/sdk/ ├── LicenseClient.java 核心客户端(activate / verify / claimTrial / generateForSoftware / purchaseUrl 等) ├── MachineCode.java 机器码生成(三级降级策略) └── Json.java 极简 JSON 工具(内部使用) ``` 拷贝后把 `package` 声明改为你的包名即可(默认 `app.powersoftware.sdk`)。 ## 三语言用法 / Quickstart ### Node.js ```js import { LicenseClient, machineCode } from './index.js'; const client = new LicenseClient({ productUniqueCode: 'PRO-2026-001', apiSecret: process.env.LICENSE_API_SECRET }); const mc = machineCode(); const trial = await client.claimTrial(mc); // 试用领取 const ok = await client.verifyCached(trial.licenseCode, mc, trial.activationToken); // 60s 缓存校验 const url = client.purchaseUrl(mc); // 未授权 → 购买页 const lic = await client.generateForSoftware({ machineCode: mc, edition: 'PRO', clientOrderId: 'ord-123' }); ``` ### Python ```python from ps_license_sdk import LicenseClient, machine_code client = LicenseClient(product_unique_code="PRO-2026-001", api_secret="你的软件发码密钥") mc = machine_code() trial = client.claim_trial(mc) ok = client.verify_cached(trial["licenseCode"], mc, trial["activationToken"]) url = client.purchase_url(mc) lic = client.generate_for_software(mc, edition="PRO", client_order_id="ord-123") ``` ### Java ```java import app.powersoftware.sdk.LicenseClient; LicenseClient client = new LicenseClient("PRO-2026-001", "你的软件发码密钥"); String mc = LicenseClient.machineCode(); Map trial = client.claimTrial(mc); Map ok = client.verifyCached((String) trial.get("licenseCode"), mc, (String) trial.get("activationToken")); String url = client.purchaseUrl(mc); Map lic = client.generateForSoftware(mc, "PRO", 0, "ord-123"); ``` ## 能力 / Features - 机器码:同一台机器三语言生成一致(三级降级:硬件序列号 → 系统机器 ID → hostname|os|arch) - 签名:`software/generate`、`software/upgrade` 自动 HMAC-SHA256 签名 + 时间戳防重放 - 接口:`activate` / `verify` / `deactivate` / `claimTrial` / `generateForSoftware` / `upgradeForSoftware` - 本地凭证:只存 `licenseCode + activationToken + 最近校验结果`,60s 缓存,不存可解密的完整授权信息 - 购买页跳转:`/product/license/purchase?productUniqueCode=&machineCode=` English: - **Machine code** — identical across the three languages on the same machine (3-level fallback: hardware serial → system machine ID → `hostname|os|arch`). - **Signing** — `software/generate` and `software/upgrade` are auto-signed with HMAC-SHA256 + timestamp to prevent replay. - **Endpoints** — `activate` / `verify` / `deactivate` / `claimTrial` / `generateForSoftware` / `upgradeForSoftware`. - **Local credential** — only `licenseCode + activationToken + last verify result` are persisted, with a 60s verify cache; no decryptable full license payload is stored. - **Purchase page redirect** — `/product/license/purchase?productUniqueCode=&machineCode=`. ## Docs / 文档 > 每篇文档均提供中文与 English 两个版本,点击对应语言切换。 > Every document is available in both Chinese and English — click a language to switch. | Document / 文档 | 🇨🇳 中文 | 🇬🇧 English | |---|---|---| | License SDK spec / 授权 SDK 规范 | [授权SDK规范_v3.md](docs/授权SDK规范_v3.md) | [授权SDK规范_v3.en.md](docs/授权SDK规范_v3.en.md) | | Client software guide / 客户端软件授权接入指南 | [客户端软件授权接入指南_v3.md](docs/客户端软件授权接入指南_v3.md) | [客户端软件授权接入指南_v3.en.md](docs/客户端软件授权接入指南_v3.en.md) | | Browser extension guide / 浏览器插件授权接入指南 | [浏览器插件授权接入指南_v3.md](docs/浏览器插件授权接入指南_v3.md) | [浏览器插件授权接入指南_v3.en.md](docs/浏览器插件授权接入指南_v3.en.md) | | Open-API reference / 授权开放接口文档 | [授权接口文档_v3.md](docs/授权接口文档_v3.md) | [授权接口文档_v3.en.md](docs/授权接口文档_v3.en.md) | Platform-side help center / 帮助中心(平台端接口说明)LICENSE_API_DOC:https://www.powersoftware.app/doc/detail/LICENSE_API_DOC ## License MIT