发卡商城主程序通过统一的客户端库与授权中心交互,开发者无需自己拼装 HTTP 请求和签名。本章覆盖系统授权、应用商店、付费插件守护和应用更新的集成原则。
| 模块 | 职责 | 典型场景 |
|---|---|---|
| 系统授权客户端库 | 系统授权激活、授权状态缓存与降级 | 后台「正版授权」、授权状态展示 |
| 付费应用授权库 | 付费插件 / 模板授权守护 | 付费应用主文件顶部接入 |
| 应用商店模型 | 应用列表、详情、购买、续期、下载、更新检测 | 后台应用商店页、应用升级 |
系统授权、域名绑定和授权状态刷新均应通过官方客户端库完成。第三方插件或模板只需要读取授权状态、展示必要提示,不应自行拼接激活、探测或刷新接口。
Store_Model 是发卡端对应用商店的统一入口,已封装鉴权、错误码、余额变动钩子和分佣写入,业务代码不要直接 curl 应用商店内部接口。
| 方法 | 说明 | 典型调用方 |
|---|---|---|
getList($type, $page, $pageNum, $keyword, $sortId, $templateType) | 分页拉取应用列表,返回会员价 | admin/store.php |
getDetail($appId) | 读取单个应用详情(含定价 / 月付 / 试用配置) | 应用详情弹窗 |
buyApp($appId, $buyType, $months) | 购买 / 续期 / 试用,自动走授权中心余额 | 后台「立即购买」按钮 |
付费插件必须自己在主文件顶部调用 PluginLicense::verify()。完整示例见「授权守护与加密交付」章节。核心要点:
return,不要 die / exit。| 项 | 要求 |
|---|---|
| 授权中心地址 | 从系统配置读取,不硬编码 |
| 系统授权激活 | 统一走官方客户端库,不直接拼 URL |
| 系统授权校验 | 统一走官方客户端库,依赖其缓存与降级 |
| 付费插件守护 | 主文件顶部 PluginLicense::verify($slug),未通过 return |
| 应用市场调用 | 统一走 Store_Model,不直接 curl 底层接口 |
| 更新检测 | 模板类必须传 type,避免 slug 冲突 |
| 错误降级 | 授权中心不可达时使用旧缓存,不要让站点整站打不开 |
| 日志 | 授权失败 / 余额不足 / 守护异常建议写到运维日志而非用户日志 |