digital-nature/licence-verifier

PHP client for the Digital Nature licence verification API

Maintainers

Package info

github.com/Digital-Nature-LTD/software.digital-nature.co.uk-licence-verifier-php

pkg:composer/digital-nature/licence-verifier

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.1.0 2026-05-22 14:10 UTC

This package is auto-updated.

Last update: 2026-05-23 13:26:08 UTC


README

PHP client for the Digital Nature licence verification API. Requires PHP 7.4+.

Installation

composer require digital-nature/licence-verifier

You also need a PSR-18 HTTP client and PSR-17 factories. With Guzzle:

composer require guzzlehttp/guzzle nyholm/psr7

Usage

use DigitalNature\LicenceVerifier\LicenceVerifier;
use GuzzleHttp\Client;
use Nyholm\Psr7\Factory\Psr17Factory;

$factory  = new Psr17Factory();
$verifier = new LicenceVerifier(
    'https://verify.software.digital-nature.co.uk',
    new Client(),   // PSR-18 client
    $factory,       // PSR-17 request factory
    $factory,       // PSR-17 stream factory
);

// Check a licence is valid
$result = $verifier->verify('XXXX-XXXX-XXXX-XXXX');
// $result->valid, ->licenceKey, ->productSlug, ->status, ->expiresAt

// Activate a domain
$activation = $verifier->activate('XXXX-XXXX-XXXX-XXXX', 'example.com');
// $activation->activated, ->domain, ->domainType, ->activationsUsed, ->activationLimit

// Deactivate a domain
$verifier->deactivate('XXXX-XXXX-XXXX-XXXX', 'example.com');

// Get full licence info
$info = $verifier->info('XXXX-XXXX-XXXX-XXXX');
// $info->licenceKey, ->productSlug, ->status, ->activationsUsed, ->activationLimit, ->domains[]

Options

The fifth constructor argument is $cacheTtl in milliseconds (default 30000). Responses from verify() and info() are cached in-process for the duration of the request. Set to 0 to disable.

Note: PHP-FPM processes are request-scoped, so the cache only persists within a single HTTP request. It avoids redundant calls when verify() is called multiple times in one execution.

Error handling

All methods throw typed exceptions that extend LicenceVerifierException:

use DigitalNature\LicenceVerifier\Exception\ActivationLimitReachedException;
use DigitalNature\LicenceVerifier\Exception\DomainAlreadyActiveException;
use DigitalNature\LicenceVerifier\Exception\LicenceExpiredException;
use DigitalNature\LicenceVerifier\Exception\LicenceInactiveException;
use DigitalNature\LicenceVerifier\Exception\LicenceNotFoundException;
use DigitalNature\LicenceVerifier\Exception\LicenceVerifierException;

try {
    $verifier->activate($key, $domain);
} catch (ActivationLimitReachedException $e) {
    // limit reached
} catch (LicenceNotFoundException $e) {
    // key doesn't exist
} catch (LicenceVerifierException $e) {
    // catch-all
}

Requirements

  • PHP 7.4 or later
  • PSR-18 HTTP client
  • PSR-17 request and stream factories