跳到正文

软件授权 API:激活、验证与心跳

选择你的语言和操作,直接调用 SDK。激活、设备识别、验签、缓存、心跳,以及计次的预留、确认和取消都由 SDK 处理。

启动或激活窗口使用付费功能前应用退出时

常见场景片段

SDK 调用

业务示例中的 client 来自启动授权,path 是你的导出路径,exportReport / export_report 是你自己的业务函数。计次的 jobID 是由应用保存的稳定任务编号。

查看完整代码 → · 快速开始 · 查看计次接入和重试 →

业务代码放进回调。

权限允许时 SDK 才执行业务。普通 RunFeature 不扣次数;RunMeteredFeature 自动预留、成功后确认、失败时取消。确认失败后重试原任务,只补确认,不重复已完成的业务。

SDK 完整方法参考

上方是常见场景的调用片段。下面按当前语言列出公开方法、属性和辅助工具,包含完整签名、参数、返回值、错误处理、配置与数据字段。切换语言时目录同步更新;不同语言没有的能力会明确说明。

展开 HTTP 请求与响应(自定义客户端或排错时使用)

下面是 SDK 使用的协议,不需要在使用这九种 SDK 的应用中再次实现。

首次激活运行时心跳业务前检查权限换机时解绑

这八个接口用许可证密钥和设备身份认证。请求不需要登录 Cookie、CSRF 或厂商管理 Key。浮动授权退出时还要释放会话;绑定设备授权日常退出保留绑定。

激活、验证或心跳成功后,怎么判断能用?

  1. 确认 HTTP 200,读取 data.activation_id。后续验证、心跳、计次和解绑都要带上这个 ID。
  2. 用预先信任的产品公钥验证 data.lease 的签名,再核对产品、设备、有效时间和功能。只把 payload 解码成 JSON,不代表授权有效。
  3. 使用 SDK 时前两步由 SDK 完成。RunFeature 检查权限后执行业务;计次功能由 RunMeteredFeature 管理预留、确认和取消。

SDK 会保存签名缓存并按策略发送心跳。调用失败时,不要仅因网络超时就抹掉有效缓存;如果收到吊销、释放、到期等明确拒绝,则按 SDK 的结果阻止受保护功能。

签名 payload 解码后,每个字段是什么意思?

下面只是为了读懂数据。自行实现验签时,使用收到的 payload 原始字节,不能把 JSON 重新排序或序列化后验签。

payload 内容示例

重试、心跳与计费

激活、解绑和功能计次必须填写 Idempotency-Key,最长 80 字符,不含空白。新操作生成新值;同一次网络重试保留原值和原正文。验证与心跳可不填,SDK 仍会自动处理自己的请求编号。

授权仍有效时,验证和心跳的相同幂等请求可在一小时内重试且不重复计费;超过窗口后请使用新的请求编号,旧编号可能被视为新请求。激活、解绑和功能扣次仍保留持久幂等记录。

成功的激活、验证、心跳和解绑请求,每次消耗 1 次平台 API 调用额度。失败和相同幂等请求的重放不重复计数,本地 CheckFeature 不请求服务器。当前 Consume 只扣客户软件的功能次数,不增加这四类平台 API 计费统计;quantity 表示本次功能消耗次数。

心跳间隔、离线时长和永久离线分别按 授权策略控制。payload.expires_at 是当前签名缓存的截止时间;许可证的最终到期时间在许可证详情中查看,两者不能混用。