zion/wordpress-license-sdk

Licensing and private update SDK for WordPress plugins.

Maintainers

Package info

github.com/matrixn/wordpress-license-sdk

pkg:composer/zion/wordpress-license-sdk

Transparency log

Statistics

Installs: 346

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.4.4 2026-08-03 00:54 UTC

This package is auto-updated.

Last update: 2026-08-03 00:56:17 UTC


README

SDK PHP pentru integrarea pluginurilor WordPress cu Zion License Server.

Documentația completă de integrare se află în docs/wordpress-integration.md.

Instalare

composer require zion/wordpress-license-sdk:^0.3

În arhiva finală a pluginului trebuie inclus și directorul vendor/. SDK-ul folosește productSlug și productKey ca identificatori publici ai produsului; cheia de licență, tokenul de activare și URL-urile temporare de update sunt gestionate de serverul Zion.

Versiunea curentă: 0.4.2.

La activare, administratorul poate alege explicit dacă permite telemetria avansată. Când este activată, SDK-ul trimite doar date tehnice de compatibilitate (versiuni, limbă, fus orar, multisite și temă); nu trimite conținut, parole sau chei de licență. Serverul poate dezactiva oricând colectarea din setarea telemetry_enabled, iar SDK-ul afișează starea în modalul licenței.

Activare și dezactivare explicită

SDK-ul 0.3 folosește un token opac per instalare după activarea inițială. Cheia de licență este trimisă la activare, iar heartbeat-urile ulterioare pot folosi tokenul fără să retransmită cheia.

$licenseManager->activate($licenseKey);
$status = $licenseManager->validateLicense();
$licenseManager->deactivate();

Dezactivarea este explicită și eliberează activarea de pe server. Dezactivarea pluginului nu dezactivează automat licența.

Răspunsurile API folosesc protocolul Zion 1.0, iar erorile au coduri stabile în Zion\\WordPressLicense\\Exceptions\\ApiException.

Ce oferă SDK-ul

  • activare și heartbeat pentru licență;
  • callback REST securizat pentru comenzi de la server;
  • ecran de activare și pagină de status în WordPress;
  • link Status licență lângă acțiunile pluginului din pagina Plugins;
  • linkuri pentru Activează auto-update, Dezactivează auto-update și Actualizează acum, afișate numai când serverul permite acțiunea;
  • verificarea conexiunii și reîmprospătarea datelor licenței, inclusiv golirea cache-ului WordPress pentru update-uri;
  • integrare cu actualizările native WordPress;
  • verificare strictă a versiunii serverului și executarea update-ului privat prin LicenseManager::updateIfAvailable();
  • verificarea entitlements prin FeatureGate;
  • stări explicite de licență și politică offline Lenient implicită;
  • heartbeat cu jitter și lock pentru a evita ping-urile concurente;
  • planuri Free, Pro, Business și Agency transmise de server;
  • verificarea funcțiilor premium prin LicenseManager::allows();
  • suport pentru pluginuri multilingve prin text domain.

Pentru fluxul complet, inclusiv GitHub Actions și includerea SDK-ului în ZIP, consultă ghidul de integrare.

Politica offline implicită (OfflinePolicy::Lenient) păstrează funcțiile premium până la grace_until primit de la server. OfflinePolicy::Strict poate fi folosită pentru integrări care trebuie să ceară o verificare online mai strictă.

Verificare și executare update

SDK-ul compară versiunea din headerul pluginului cu versiunea publicată de Zion. Un update este disponibil numai când versiunea serverului este strict mai mare și serverul a furnizat un URL ZIP temporar semnat.

Pentru verificarea criptografică a release-urilor, configurează cheia publică Ed25519 livrată de server. Cheia este publică și poate fi inclusă în plugin; cheia privată rămâne exclusiv pe server.

$config = new Config(
    apiUrl: 'https://license.zion3d.ro/api/v1',
    productSlug: 'demo-plugin',
    pluginFile: __FILE__,
    productKey: 'zion_public_product_key',
    updatePublicKey: 'BASE64_ED25519_PUBLIC_KEY',
    updateKeyId: 'default',
    requireSignedUpdates: true,
);

Manifestul semnat conține versiunea, canalul, numele ZIP-ului și checksum-ul SHA-256. SDK-ul verifică semnătura înainte de a afișa update-ul și verifică checksum-ul fișierului după download, înainte ca WordPress să îl instaleze. Dacă mediul nu este compatibil sau manifestul nu poate fi verificat, update-ul este blocat și statusul expune motivul în update_blocked_reason.

$status = $licenseManager->updateStatus();

if ($status['available']) {
    echo esc_html($status['latest_version']);
}

if (current_user_can('update_plugins')) {
    $result = $licenseManager->updateIfAvailable();
}

updateIfAvailable() folosește Plugin_Upgrader și nu descarcă nimic când nu există o versiune mai nouă sau utilizatorul nu are capabilitatea necesară.

În modalul Status licență, butonul Reîmprospătează datele face un ping imediat, actualizează last_ping_at și reconstruiește metadatele de update.

Planuri și entitlements

Serverul transmite planul activ și capabilitățile permise la fiecare ping. Aceste valori sunt un control de interfață în plugin; serverul rămâne sursa de adevăr pentru licență și nu trebuie tratate ca un secret.

if ($licenseManager->allows('analytics')) {
    $this->registerAnalytics();
}

$status = $licenseManager->status();
// $status['plan'] === 'pro'
// $status['entitlements']['multiple_templates'] === true

Pentru cod mai complex poți folosi direct:

$gate = $licenseManager->featureGate();

if ($gate->allows('white_label')) {
    $this->enableWhiteLabel();
}

Cheile disponibile și planurile implicite sunt definite de License Server. Un plugin trebuie să păstreze un fallback sigur când o capabilitate nu este prezentă sau serverul nu poate fi contactat.