Ważna uwaga
Ta dokumentacja nie jest potrzebna, jeśli używasz aktualizatora API licencjonowania oprogramowania. Zapoznaj się z tym dokumentem tylko wtedy, gdy nie używasz aktualizatora lub jeśli służy on jako odniesienie:
Zobacz naszą dokumentację dotyczącą integracji automatycznych aktualizacji dla wtyczek WordPress.
Zobacz naszą dokumentację dotyczącą integracji automatycznych aktualizacji dla motywów WordPress.
Spis treści
Aktywacja
Dzięki Licencjonowaniu oprogramowania, aby klucz licencyjny mógł zostać w pełni wykorzystany, musi zostać aktywowany. Może się to odbyć na jeden z dwóch sposobów:
- Administrator witryny może ręcznie kliknąć link „Aktywuj” dla licencji na stronie Pobrane → Licencje
- Kupujący może zdalnie aktywować licencję za pomocą systemu w Twojej wtyczce/motywie/oprogramowaniu, który wykorzystuje API do wywołania aktywacji
Uwaga: przykładowa wtyczka i implementacja pokazana w tym dokumencie są wyłącznie przykładami. Najlepsze implementacje licencjonowania oprogramowania wykorzystują te przykłady i integrują je płynnie z istniejącą stroną ustawień Twojej wtyczki.
W tej dokumentacji pokażemy, jak zdalnie aktywować licencję za pomocą systemu dodanego do Twojej wtyczki WordPress. Przykładowy kod, który pokazujemy w tym przykładzie, jest dokładnie tym samym kodem, który jest zawarty w przykładowej wtyczce i motywach, dostępnych do pobrania po zakupie rozszerzenia.
Istnieją dwa główne komponenty zdalnej aktywacji licencji:
- Zapisanie klucza licencyjnego w danych (opcja motywu lub wtyczki)
- Wysłanie zapisanego klucza licencyjnego przez API do strony sklepu w celu weryfikacji i aktywacji
Gdy licencja zostanie zdalnie aktywowana, status licencji w panelu administracyjnym Twojej witryny zostanie zaktualizowany z „nieaktywny” (stan domyślny) na „aktywny”.
Przyjrzyjmy się najpierw tworzeniu prostej strony opcji do przechowywania naszej licencji.
Ten kod ustawia element podmenu w menu Wtyczki o nazwie „Licencja wtyczki”. W tym przykładzie używamy strony wtyczek, ale kod jest identyczny dla motywów.
Na górze kodu znajdują się dwie linie:
Pierwsza to sama licencja, a druga to status licencji. Po aktywowaniu licencji zmienimy jej status (w naszej lokalnej witrynie) na „aktywny”. Pozwoli to nam wyświetlić przycisk „Aktywuj licencję”, jeśli licencja nie została jeszcze aktywowana, i ukryć przycisk, jeśli została. Zobacz poniższy zrzut ekranu:

Chodzi o to, że najpierw wprowadzamy klucz licencyjny i klikamy „Zapisz zmiany”, co powoduje zapisanie klucza licencyjnego w opcjach naszej wtyczki/motywu. Po zapisaniu opcji klikamy przycisk „Aktywuj licencję”, aby wywołać żądanie API.
Przycisk aktywacji to po prostu pole wejściowe typu „submit” z atrybutem name, który różni się od naszego przycisku zapisywania. Nazwy *muszą* być różne, abyśmy mogli wiedzieć, kiedy kliknięto przycisk aktywacji licencji.
Aby aktywować licencję, musimy po prostu „obserwować” kliknięcie przycisku aktywacji. Robimy to, konfigurując funkcję podpiętą pod hak „admin_init”, w następujący sposób:
Jeśli wszystko przebiegnie pomyślnie po kliknięciu przycisku „Aktywuj licencję”, przycisk aktywacji zostanie zastąpiony słowem „aktywny”, a status licencji odzwierciedli nowo aktywowany stan na pulpicie Twojego sklepu EDD. Jeśli wystąpi błąd podczas aktywacji klucza licencyjnego, strona zostanie przeładowana, a do adresu URL zostaną dodane parametry błędu i komunikatu. Możemy wtedy użyć haka admin_notices (lub innej odpowiedniej metody), aby wyświetlić klientowi błąd:
Na przykład, jeśli klient wprowadzi nieprawidłowy klucz licencyjny, zostanie wyświetlony komunikat o błędzie:

Sprawdzanie
Dzięki Software Licensing możesz w dowolnym momencie łatwo sprawdzić, czy klucz licencyjny jest prawidłowy. Może chcesz to zrobić, aby ograniczyć pewne funkcje motywu lub wtyczki tylko dla użytkowników z ważnym kluczem licencyjnym.
Sprawdzenie ważności klucza licencyjnego jest dość proste; wymaga jedynie wykonania zdalnego żądania do naszej strony sklepu z kilkoma określonymi parametrami. Zobacz poniższą funkcję:
function edd_sample_theme_check_license() {
$store_url = 'https://yoursite.com';
$item_name = 'Your Item Name';
$license = '834bbb2d27c02eb1ac11f4ce6ffa20bb';
$api_params = array(
'edd_action' => 'check_license',
'license' => $license,
'item_name' => urlencode( $item_name ),
'url' => home_url(),
'environment' => function_exists( 'wp_get_environment_type' ) ? wp_get_environment_type() : 'production',
);
$response = wp_remote_post( $store_url, array( 'body' => $api_params, 'timeout' => 15, 'sslverify' => true ) );
if ( is_wp_error( $response ) ) {
return false;
}
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
if( $license_data->license == 'valid' ) {
echo 'valid';
exit;
// this license is still valid
} else {
echo 'invalid';
exit;
// this license is no longer valid
}
}
Uwaga: jeśli konsekwentnie sprawdzasz ważność klucza licencyjnego, być może w celu zablokowania użycia wtyczki lub motywu po wygaśnięciu licencji, MUSISZ buforować wyniki sprawdzenia, aby żądanie nie było wykonywane przy każdym ładowaniu strony. Transients API to świetny sposób na buforowanie odpowiedzi API.
Dezaktywacja
Dzięki Software Licensing, po aktywacji licencji, można ją również dezaktywować zdalnie (od wersji 1.3). Zazwyczaj powodem dezaktywacji licencji jest umożliwienie aktywacji licencji na dodatkowej stronie po osiągnięciu limitu aktywacji.
Proces dezaktywacji jest prawie identyczny jak proces aktywacji. Wykonujemy zdalne żądanie i wysyłamy szczegóły klucza licencyjnego, który dezaktywujemy. Zdalne żądanie jest wykonywane w następujący sposób:
// data to send in our API request
$api_params = array(
'edd_action' => 'deactivate_license',
'license' => '2ec66bae356be570236531ccba06a45b',
'item_name' => 'Sample Plugin', // the name of our product in EDD
'url' => home_url(),
'environment' => function_exists( 'wp_get_environment_type' ) ? wp_get_environment_type() : 'production',
);
// Send the remote request
$response = wp_remote_post( 'https://yoursite.com', array( 'body' => $api_params, 'timeout' => 15, 'sslverify' => true ) );
Zmienna $response będzie obiektem json, który informuje nas, czy żądanie dezaktywacji zakończyło się sukcesem, czy nie. Jeśli się powiedzie, odpowiedź będzie wyglądać następująco:
Uwaga: Data/czas to znacznik czasu, w przeciwieństwie do innych odpowiedzi json, które będą datą i czasem.
{
"success": true,
"license": "deactivated",
"item_name": "Sample Plugin",
"expires": 1556150399,
"payment_id": 2444,
"customer_name": "John Doe",
"customer_email": "[email protected]"
}
Jeśli licencja nie zostanie pomyślnie zdezaktywowana, odpowiedź będzie wyglądać następująco:
{
"success": false,
"license": "failed",
"item_name": "Sample Plugin",
"expires": 1556150399,
"payment_id": 2444,
"customer_name": "John Doe",
"customer_email": "[email protected]"
}
Po pomyślnym zdezaktywowaniu licencji, kolumna Liczba witryn w Pobrane pliki → Licencje zostanie zredukowana, a wpis zostanie zapisany w logu, aby administratorzy mogli zobaczyć, skąd licencja została zdezaktywowana.
