# 开发者会员与应用管理

个人工作台的「会员与权益」展示当前套餐、到期时间、后续套餐、应用名额、登录余额、存储占用和自带 S3 权益。软件用户授权仍在「软件授权」，开发者平台套餐在「开发者 → 套餐与扩容」。

## 体验与套餐

体验是否开放、名称、有效天数、应用数、登录次数、存储额度和自带 S3 权限均由管理员配置。管理员关闭体验后不再接受领取，已领取的权益保留领取时快照。每个账户只能领取一次；已购买基础套餐的账户不能补领。体验应用支持其他用户正常登录，所有用户共享套餐登录额度；仍受有效期、应用名额和单应用登录上限约束，刷新令牌不重复扣次数。

正式套餐价格、期限、额度、单次登录价格和到期宽限也由管理员配置，价格可以为 0，但不能为负数。购买前以页面展示为准。免费套餐仍按正式套餐管理，需要由管理员明确上架；用户确认后订单立即完成并发放权益，不进入支付渠道，也不扣积分。同类免费资源包在已有权益有效期内不能重复叠加，到期后可再次领取；免费订阅可持续续费。管理员直接编辑同一个套餐，历史配置自动保存在变更记录中，套餐名称无需因调价而更换。旧的独立套餐可选择归属套餐并入历史记录。已创建订单与已领取权益保留原快照，价格或权益在下单前发生变化时需要刷新后重新确认。按天与按月期限二选一；基础订阅的登录池按购买账期的月度锚点更新，次数包不按月重置。普通购买接续已有付费或免费套餐；相同按月周期、价格更高且各项资源不减少时可立即升级，先查看差价报价再下单。

套餐与次数包耗尽后，仅在主动开启按量消费、套餐支持按量、预付余额充足且账户/应用预算未超限时扣费。自然月预算按 UTC 统计。预算和预付金额使用人民币，内部细分计价支持小于一分钱的单次费用。余额自动续费默认关闭，只消费预付余额；付费套餐达到单次金额上限、归属套餐下架或余额不足时不会自动向支付渠道扣款。价格为 0 的订阅套餐也可开启自动续费，续期会写入余额流水但扣款金额为 0，不要求预付余额。已确认的自动续费保留原有价格与权益，套餐编辑或归并不会改写它；更换续费套餐，或勾选「改用当前套餐价格与权益续费」并保存，才采用新配置。仅修改消费预算不会改变已确认的续费条款。

## 创建应用

开发者侧栏进入「我的应用」，创建后及时保存仅展示一次的凭据。应用可启停、归档恢复、配置单应用登录上限与预算。归档撤销凭据并释放应用名额；恢复后需重新生成凭据再启用。

「创建应用／编辑配置」支持与管理员应用接入一致的图标、客户端类型、回调地址、权限范围、默认绑定数量和解绑冷却。图标可上传，管理员允许时也可填写外部链接。机密客户端还可开启「兼容不发送 nonce 的 OIDC 应用」或「传统 OIDC 客户端兼容（不发送 PKCE / nonce）」；默认关闭，保存后立即生效。公开客户端必须使用 PKCE，不能启用这两项兼容设置。仅缺少 nonce 时使用第一项，接入方连 PKCE 也不支持时才使用第二项。

应用只提供软件更新时，关闭「启用 OAuth / OIDC 登录」，无需填写回调。需要登录时填写精确回调和 scope，推荐授权码 + PKCE S256、随机 state 和 nonce。桌面/移动端使用公开客户端，服务端机密客户端在后端保存密钥。平台自身的第三方登录方式由运营后台「第三方登录」配置，开发者应用不需要单独收集平台用户密码。

## 发布更新

1. 进入「版本更新」，选择自己的应用，创建版本。平台、架构和通道共同确定更新目标；递增版本序号用于比较更新。
2. 填写更新说明及强制更新要求。草稿可以编辑，平台/架构/通道不可修改，目标改变时新建版本。
3. 网页上传安装包，单文件最大 128 MiB。上传支持分片、暂停、同文件续传和取消；服务端校验完整文件 SHA-256。也可使用该应用的工具凭据从构建流水线上传。
4. 上传完成后手动发布或选择本地时间定时发布。已发布/定时版本先取消再编辑；已公开过的安装包和版本标识不可替换，修复软件应创建新版本。
5. 在「接入指南」选择平台、架构、通道和当前版本序号执行在线检测。该操作实际调用更新 API。公开客户端只需 Client ID，不需要 Secret。
6. 客户端展示返回的说明与 mandatory 要求，下载安装包后验证 size 与 SHA-256，通过校验后再安装。下载链接短时有效；取消发布后更新接口不再返回该版本。

示例：

```text
GET /api/v1/updates/check?client_id=应用ClientID&platform=windows&arch=x64&channel=stable&version_code=0
```

响应 `data.update_available=true` 时，`data.release` 包含版本、说明、强制更新、文件大小、摘要及 `download_url`。下载路径返回短时 S3 重定向。完整协议可查看「软件版本与安装包」「机器版本接口参考」。

工具凭据可设名称、有效期、权限，签发时只显示一次；支持轮换、吊销和调用审计。机器不能发布 stable 正式通道，正式发布在 Web 或小程序中确认。

## 自带 S3

套餐包含自带 S3 时，进入「自带 S3」新增公网 HTTPS Endpoint、Region、Bucket 和密钥。目标限 HTTPS 443，禁止内网、回环地址和重定向。密钥加密保存，编辑时留空保留旧值。

先测试上传、读取和删除，再到「我的应用」绑定配置。若诊断提示待清理对象，使用存储服务商控制台清理指定测试对象。浏览器分片直传还需要 Bucket CORS：允许本站 Origin、PUT/GET/HEAD、签名请求头，并暴露 ETag；后端连接诊断不能替代浏览器 CORS 检查。

已有目标的 Endpoint、Region 和 Bucket 不可原地改变；迁移目标时新增配置再绑定，旧文件继续使用原存储。套餐到期后可修复已有密钥并清理文件。存储文件列表包含上传中、可用及清理中的占用，进入所属版本取消发布并删除，后台成功清理后释放额度。自带 S3 的服务商费用另行支付，仍遵守平台配置的存储额度。

## 历史版本停止续费

管理员在「开发者运营 → 套餐与资源包 → 变更记录」展开历史订阅配置，可单独「停止此版本续费」或恢复，并在确认前查看绑定该版本自动续费的账户数。当前配置仍通过套餐上下架控制；关闭旧版本续费不会影响新版本售卖。归并进来的旧套餐使用原版本的统一续费状态。

停止后，已有权益与已创建订单保留，原版本不再自动扣款续费。受影响用户收到站内通知，并在「消费设置」看到原因和当前套餐的价格、权益。用户须选择并保存确认新配置，平台不会自动改价或代替用户接受新条款。恢复后，仍保留原版本续费设置的账户可继续按原价格、原权益续费。

## 小程序同步

「我的」显示会员与权益并提供开发者入口。小程序与 Web 共用套餐、订单、应用、版本和 S3 配置，支持体验领取、购买/续费、更新检测、版本说明/强制更新、定时发布/取消/清理、工具凭据及审计。安装包通过 Web 或机器接口上传，小程序可随后审核发布。小程序源码和构建版本同步为 0.3.0，提交微信审核属于独立发布流程。
