三个高频请求
授权体系上线后,客服收到的请求集中在三类:
| 请求 | 原因 |
|---|---|
| "系统提示未激活" | 换了服务器 / 重装了系统 |
| "我升级了套餐,为什么功能没开" | 授权码没换 |
| "我要迁到云上" | 实例要重新绑定 |
早期这些都要厂商手工改数据库,一次十分钟,但积累起来就是交付成本的漏洞——而且容易改错。
授权码真源从配置文件搬进数据库
最初授权码存在客户服务器的 .env 里。问题很明显:
- 换码要改文件并重启,客户运维必须会 Linux;
- 同一个文件里还放着数据库密码,改授权码有误伤风险;
- 厂商无法确认客户当前到底用的哪个码。
改法是:授权码存数据库,客户在后台自助激活。.env 只保留基础设施配置,不再承载授权。
自助激活的流程是:后台「授权」页输入授权码 → 服务端校验签名与有效期 → 写入数据库 → 向厂商上报实例登记 → 返回激活结果。
这套流程还有一个副作用是好的:它把"当前授权状态"变成了客户后台可见的页面,客户自己就能看到版本、到期日、模块清单,减少一半咨询。
实例绑定:一定要有解绑
绑定本身不难,难的是解绑的产品设计。真实场景里绑定关系会变:
- 客户换机器:旧实例失效,新实例需要绑定;
- 客户重装系统:实例标识可能变化,但机器没变;
- 客户重签(换套餐):授权码变了,绑定关系要跟着迁移。
所以「重新签发(换码)」和「实例改绑」必须成对提供:
- 厂商侧重签生成新授权码,同时保留与新码的绑定关系;
- 客户侧用新码激活时,如果检测到"码与实例不匹配",给出明确提示:"该授权码已绑定其它实例,请联系服务商改绑";
- 厂商侧一键改绑到新实例,客户重试即成功。
第 2 步的提示非常关键:如果只提示"激活失败",客户会以为是码错了,反复输入。
一个踩过的坑
重签之后,客户在同一台机器上激活失败。原因是旧码绑定的是"码 + 实例",新码没有继承实例关系,又被判定为"首次激活需要空闲配额",而配额已满。
修复思路是把绑定关系挂在实例上,而不是挂在码上:一个实例同一时刻只能有一个有效授权码,换码时更新该实例的当前码,而不是新建一条绑定。这样"换码"就退化成一次更新操作,不会与配额校验冲突。
为什么值得做成功能
把这三个动作做成产品功能,收益不在技术,而在交付模型:
- 客户自己能在十分钟内完成迁移,不必等厂商上班;
- 厂商侧只保留"重签/改绑"这类必须审慎的动作;
- 所有动作都有记录,出现争议可查。
一套要卖给几十上百家客户的产品,任何需要厂商手工介入的环节,都是规模化交付的天花板。