feat(client): App 内在线购买/续费授权(管理员支付宝下单+到账轮询)

- 新增套餐目录 license_plans.dart(标准/高级 × 月付/年付,与官网 checkout 一致)
- license 模型/仓库新增 PurchaseOrder/PurchaseStatusInfo 与下单、查单接口
- 系统设置授权面板:管理员显示「在线购买 / 续费」按钮,弹窗选套餐→
  外部浏览器打开支付宝收银台→3s 轮询到账→自动刷新授权并展示新到期日
- 用户手册(docs.md + user-manual.html)同步补充在线购买入口说明

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
This commit is contained in:
wangjia
2026-07-03 21:57:03 +08:00
parent e0f721117f
commit 24123eb93c
7 changed files with 460 additions and 12 deletions
+2 -2
View File
@@ -413,7 +413,7 @@
<tr><td><b>门店信息</b></td><td>店名、地址、电话、负责人,管理员可编辑;门店编号不可改。这些信息会印在标签和单据上。</td></tr>
<tr><td><b>用户管理</b></td><td>新增用户(账号+初始密码+角色)、编辑、重置密码、启用/停用。四级角色见第 2 章。仅管理员可操作。</td></tr>
<tr><td><b>编号规则</b></td><td>入库单、出库单等单号的前缀与序号。<b>不要把序号调小</b>到已用过的范围,会撞号。</td></tr>
<tr><td><b>授权兑换券</b></td><td>本系统按「时长兑换券」授权:输入形如 <code>JIUKU-XXXX-XXXX</code> 的短码点「兑换续期」,时长直接<b>叠加</b>到现有到期日上,无需订阅。新门店自带 30 天试用。</td></tr>
<tr><td><b>授权兑换券</b></td><td>本系统按「时长兑换券」授权:输入形如 <code>JIUKU-XXXX-XXXX</code> 的短码点「兑换续期」,时长直接<b>叠加</b>到现有到期日上,无需订阅。新门店自带 30 天试用。管理员也可点「在线购买 / 续费」选套餐后支付宝支付,到账自动续期。</td></tr>
<tr><td><b>偏好设置</b></td><td>三套主题切换 + <b>默认仓库</b>(新建单据时自动选中的仓库)。</td></tr>
</tbody>
</table>
@@ -447,7 +447,7 @@
<p class="faq-a">早期版本的扫码报错(502 / 页面不存在)已修复。请确认手机有网络;很旧的标签可以在库存页重打一张新标签。</p>
<p class="faq-q">Q7:系统提示授权过期、变成只读了,怎么续?</p>
<p class="faq-a">「系统设置 → 授权兑换券」输入 <code>JIUKU-</code> 开头的兑换码点「兑换续期」,立即恢复。没有兑换码请联系客服购买。过期 15 天内数据都还在,别慌。</p>
<p class="faq-a">「系统设置 → 授权兑换券」输入 <code>JIUKU-</code> 开头的兑换码点「兑换续期」,或管理员点「在线购买 / 续费」支付宝支付,到账立即恢复。过期 15 天内数据都还在,别慌。</p>
<p class="faq-q">Q8:进货时价格还没谈好,能先入库吗?</p>
<p class="faq-a">能。进价留空提交即可(显示「待定价」),价格定了以后在入库单详情点「确认进价」补上,成本和应付自动补齐。出库同理,售价留空、事后「确认售价」。</p>