开源的 WHMCS 替代方案
PNLCS 有意与 WHMCS 保持一致:客户、产品、订单、账单、服务、工单和模块的含义都相同。区别在于许可证:PNLCS 采用 MIT 许可证,不按安装收费。
add_hook('InvoicePaid', 1, function (array $vars) { $invoice = $vars['invoice']; // ... });
GET /api/v1/getclients GET /api/v1/getinvoices POST /api/v1/addorder
逐项对比
| 对比项 | PNLCS | 常见商业计费系统 |
|---|---|---|
| 授权费用 | 免费(MIT) | 每个安装按月收费 |
| 源代码 | 完全开放,可审计 | 加密或闭源 |
| 自行部署 | 任意环境:Docker、VPS、主机面板中 | 可以,但需授权验证 |
| 扩展 | 自己写模块、自己发布、归自己所有 | 受应用市场和厂商条款约束 |
从 WHMCS 沿用的部分
- 概念
- 产品组、产品、可配置选项、服务、订单、账单、余额、工单和部门的行为,都与 WHMCS 使用者的预期一致。
- API 操作名称
- HTTP API 使用 WHMCS 的操作名称,因此大多数集成只需要更换地址和凭据。
- 钩子
add_hook('InvoicePaid', 1, fn)的用法完全相同;钩子出错时会记录日志并跳过,不会中断计费。- 模块
- 与 WHMCS 一样,服务器、支付网关、域名注册商和 SSL 提供商都是独立的模块。
不停机迁移
让 PNLCS 与 WHMCS 并行运行,在客户续费时逐个迁移。整个过程中,账户始终留在原来的服务器上。
目前还没有一键导入工具
PNLCS 没有自带自动导入 WHMCS 数据库的工具。这里给出的步骤是一种实用、低风险的迁移方式。欢迎贡献导入工具。
- 重建产品目录按相同的名称和价格重新创建产品组和产品。
- 接入原有服务器账户已经在服务器上,之后由 PNLCS 接管。
- 重新配置设置支付网关(使用相同账户)、税务规则、邮件模板、员工和角色。
- 迁移客户添加每个客户及其现有服务,并设置正确的下次到期日。如果使用 Panelica,直接关联服务器上已有的账户即可。
- 正式切换可以在续费时逐个客户切换,也可以在维护窗口内一次性全部切换。