Лицензирование модулей интеграции
Ядро PlatParts не проверяет лицензии через WHMCS или свой HTTP. Оно только вызывает ваш класс из пакета.
Manifest
"license": {
"required": true,
"validator": "Modules\\Integrations\\MyCrm\\MyCrmLicenseValidator",
"label": "Лицензионный ключ",
"recheck_hours": 24
}
required: false — всегда valid, используется NullModuleLicenseValidator.
Интерфейс валидатора
App\Integrations\Licensing\ModuleLicenseValidatorInterface:
public function verify(ModuleLicenseContext $context): ModuleLicenseResult;
Контекст (ModuleLicenseContext):
licenseKey,domain,serverIp,installPathpackageCode,packageVersion
Результат:
return ModuleLicenseResult::valid('опциональное сообщение');
return ModuleLicenseResult::invalid('Причина отказа');
Вся логика (HTTP к API вендора, офлайн‑файл, подпись) — только в вашем классе.
Шаблон: modules/Integrations/_Template/TemplateLicenseValidator.php.
Где вводить ключ
Модули интеграций → Лицензирование модулей — поле с подписью из license.label, кнопка Проверить в строке модуля.
Пока license_status не valid и required: true — модуль не operational: хуки и inbound не доставляются.
Cron и обновления платформы
| Действие | Когда |
|---|---|
integrations:licenses:verify |
Cron раз в сутки; пропускает недавно проверенные (recheck_hours) |
| Проверить в админке | После ввода/смены ключа |
integrations:licenses:verify --force |
Отладка, принудительно все модули |
После обновления zapex ключи в БД не сбрасываются — cron догонит по расписанию.
Не нужно запускать verify после каждого деплоя.
Проверка из CLI
php artisan integrations:licenses:verify --force
php artisan integrations:package:inspect MyCrm -v
Строка Operational: нет при invalid лицензии.