Zaloguj się
Rozpocznij

Dokumentacja Easy Digital Downloads

Dokumentacja, materiały referencyjne i samouczki dla Easy Digital Downloads 

API do licencjonowania oprogramowania

API dołączona do rozszerzenia Software Licensing pozwala na zdalne aktywowanie kluczy licencyjnych, sprawdzanie ważności kluczy (i czy nie wygasły), a także pobieranie informacji o najnowszych wersjach oprogramowania. Ta API może być zaimplementowana z większością oprogramowania, nie tylko z wtyczkami i motywami WordPress.

W tym artykule

Dostępne żądania API i parametry
Integracja wtyczek i motywów WordPress
Aktywuj klucz licencyjny
Sprawdź, czy licencja jest ważna / aktywna
Pobieranie informacji o wersji
Pobieranie wersji dla wielu produktów jednocześnie
Przykłady API w innych językach
FAQ / Rozwiązywanie problemów


Dostępne są cztery typy żądań API:

  • activate_license – Używane do zdalnej aktywacji klucza licencyjnego
  • deactivate_license – Używane do zdalnej dezaktywacji klucza licencyjnego
  • check_license – Używane do zdalnego sprawdzania, czy klucz licencyjny jest aktywowany, ważny i nie wygasł
  • get_version – Używane do zdalnego pobierania informacji o najnowszej wersji produktu

Każda z poniższych metod działa w ten sam sposób. Adres URL witryny, na której masz zainstalowany Easy Digital Download + Software Licensing, będzie działać jako punkt końcowy API. Wszystkie żądania do API są wykonywane jako żądania GET lub POST i mają następującą formę:

https://YOURSITE.com/?edd_action={request type}&item_id={download ID here}&license=cc22c1ec86304b36883440e2e84cddff&url={url of the site being licensed}

Żądanie wymaga trzech parametrów i ma jeden opcjonalny parametr:

  • edd_action – Jest to typ żądania (patrz poniżej)
  • item_id – Użyj identyfikatora pobierania swojego produktu. Jest to dokładniejsze niż używanie item_name.
    • Zamiast item_id można również użyć item_name, czyli nazwy pobierania zamiast identyfikatora. Przekazywanie item_id jest preferowane, ponieważ jest mniej prawdopodobne, że się zmieni. Jeśli item_name ulegnie zmianie, oprogramowanie będzie musiało zostać zaktualizowane, a stare odniesienia do nazwy przestaną działać.
  • license – Jest to klucz licencyjny, dla którego wykonujesz akcję
  • url – (opcjonalnie) Jest to adres URL witryny, z której pochodzi żądanie API

Wskazówka dotycząca adresu URL dla oprogramowania stacjonarnego:
Parametr url nie ogranicza się do adresów URL. Na przykład oprogramowanie stacjonarne może używać parametru url dla identyfikatora systemu lub dowolnego unikalnego tekstu.

Klucze licencyjne:

  • API kluczy licencyjnych obsługuje tylko następujące znaki [a-z, A-Z, 0-9, -, _].
  • Klucze licencyjne mogą mieć maksymalną długość 256 znaków.

Integracja wtyczek i motywów WordPress:
Zapoznaj się z poniższymi dokumentami dotyczącymi integracji API Software Licensing z wtyczkami i motywami WordPress:
Zobacz naszą dokumentację, jak zintegrować automatyczne aktualizacje dla wtyczek WordPress.
Zobacz naszą dokumentację, jak zintegrować automatyczne aktualizacje dla motywów WordPress

Aktywuj klucz licencyjny

Aby aktywować licencję zdalnie, użyjesz następującego adresu URL:

https://YOURSITE.com/?edd_action=activate_license&item_id=8&license=cc22c1ec86304b36883440e2e84cddff&url=https://licensedsite.com

Parametr item_id (item_id=8) zostanie zastąpiony rzeczywistym identyfikatorem Twojego produktu. Możesz go znaleźć w swoim panelu obok produktu:

Parametr license jest ustawiony na klucz licencyjny, który chcesz aktywować.

Odpowiedź na to żądanie będzie obiektem JSON. Jeśli licencja została pomyślnie aktywowana, odpowiedź będzie wyglądać następująco:

{
    "success": true,
    "license": "valid",
    "item_id": false (or Item ID if passed)
    "item_name": "EDD Product Name",
    "license_limit": 0,
    "site_count": 2,
    "expires": "2020-06-30 23:59:59",
    "activations_left": "unlimited",
    "checksum": "<md5 checksum>",
    "payment_id": 12345,
    "customer_name": "John Doe",
    "customer_email": "[email protected]",
    "price_id": "2"
}

Jeśli licencja jest nieprawidłowa i nie udało się jej aktywować, odpowiedź będzie wyglądać następująco:

{
    "success": false,
    "license": "invalid",
    "item_id": false (or Item ID if passed)
    "item_name": "EDD Product Name",
    "error": "expired",
    "expires": "2020-04-28 23:59:59",
    "license_limit": 0,
    "site_count": 1,
    "activations_left": "unlimited",
    "checksum": "<md5 checksum>",
    "payment_id": 12345,
    "customer_name": "John Doe",
    "customer_email": "[email protected]",
    "price_id": "2" 
  } 
  

Możliwe błędy:

"missing" - License doesn't exist
"missing_url" - URL not provided
"license_not_activable" - Attempting to activate a bundle's parent license
"disabled" - License key revoked
"no_activations_left" - No activations left
"expired" - License has expired
"key_mismatch" - License is not valid for this product
"invalid_item_id" - Invalid Item ID
"item_name_mismatch" - License is not valid for this product
"site_inactive" - Site is not active for this license
"invalid" - License key does not match
"valid" - License is valid

Sprawdzanie, czy licencja jest prawidłowa / aktywna

Sprawdzanie, czy licencja jest prawidłowa i nie wygasła, jest bardzo podobne do aktywacji. To żądanie jest zazwyczaj wykonywane, jeśli chcesz potwierdzić, że licencja jest nadal ważna po jej aktywacji. Licencje wygasają po roku (domyślnie), więc tego właśnie będziesz używać do sprawdzania, czy licencja wygasła.

Aby sprawdzić licencję zdalnie, użyjesz następującego adresu URL:

https://YOURSITE.com/?edd_action=check_license&item_id=8&license=cc22c1ec86304b36883440e2e84cddff&url=https://licensedsite.com

Parametr item_id (item_id=8) zostanie zastąpiony rzeczywistym identyfikatorem Twojego produktu. Możesz go znaleźć w swoim panelu obok produktu:

Parametr license jest ustawiony na klucz licencyjny, który chcesz sprawdzić.

Odpowiedź na to żądanie będzie obiektem JSON. Jeśli licencja jest aktywna i nadal ważna, odpowiedź będzie wyglądać następująco:

{
    "success": true,
    "license": "valid",
    "item_id": false, (or Item ID if passed)
    "item_name": "EDD Product Name",
    "checksum": "",
    "expires": "2020-06-30 23:59:59",
    "payment_id": 12345,
    "customer_name": "John Doe",
    "customer_email": "[email protected]",
    "license_limit": 0,
    "site_count": 2,
    "activations_left": "unlimited",
    "price_id": "2"
}

Jeśli licencja jest nieprawidłowa, odpowiedź będzie wyglądać następująco:

{
    "success": false,
    "license": "invalid",
    "item_id": false, (or Item ID if passed)
    "item_name": "EDD Product Name",
    "expires": "2014-10-23 00:00:00",
    "license_limit": 0,
    "site_count": 1,
    "activations_left": "unlimited",
    "checksum": "checksum",
    "payment_id": 54224,
    "customer_name": "John Doe",
    "customer_email": "[email protected]",
    "price_id": "2"
}

Możliwe statusy licencji:

"disabled" - License key revoked
"expired" - License has expired
"key_mismatch" - License is not valid for this product
"invalid_item_id" - Invalid Item ID
"item_name_mismatch" - License is not valid for this product

Pobieranie informacji o wersji

Pobieranie informacji o wersji pozwala zdalnie pobrać dane o najnowszym numerze wersji, w tym dzienniki zmian i linki do pobrania plików aktualizacji.

Aby uzyskać informacje o wersji dla klucza licencyjnego:

https://YOURSITE.com/?edd_action=get_version&item_id=8&license=cc22c1ec86304b36883440e2e84cddff&url=https://licensedsite.com

Parametr item_id (item_id=8) zostanie zastąpiony rzeczywistym identyfikatorem Twojego produktu. Możesz go znaleźć w swoim panelu obok produktu:

Uwagi dotyczące żądania:

  • Jeśli używasz item_name zamiast item_id, wpisz tytuł produktu w Easy Digital Downloads dokładnie. Użycie item_id jest dokładniejsze.
  • Parametry license i url są opcjonalne. Jeśli zostaną pominięte, zostaną pobrane najnowsze informacje o wersji, ale nie zostanie uwzględniony żaden link do pobrania.
  • Od wersji Software Licensing 3.8 można uwzględniać wersje platform w żądaniu. Jeśli wersja platformy nie spełnia minimalnych wymagań ustawionych dla produktu w Easy Digital Downloads, new_version w odpowiedzi będzie miało wartość false zamiast numeru nowej wersji. Domyślnie obsługiwane są php_version i wp_version.

Odpowiedź będzie obiektem JSON, który będzie wyglądał mniej więcej tak:

{
  "new_version": "2.0",
  "stable_version": "2.0",
  "name": "Restrict Content Pro",
  "slug": "restrict-content-pro",
  "url": "https://edd.com/downloads/restrict-content-pro/?changelog=1",
  "last_updated": "2017-01-03 11:59:46",
  "homepage": "https://edd.com/downloads/restrict-content-pro/",
  "package": "",
  "download_link": "",
  "sections": "a:2:{s:11:"description";s:793:"<p>Placerat porta in enim, urna cras, adipiscing augue dis lorem, pulvinar, natoque phasellus eu tincidunt, dictumst nunc ut dignissim turpis ac, pulvinar! Massa! Sed, enim, eu ac augue placerat scelerisque! Eu cursus, ridiculus cum nec lorem, natoque lorem dictumst amet! Nunc placerat dapibus enim dignissim, nunc mattis vel? Dolor nascetur placerat ridiculus augue massa porttitor turpis auctor, etiam et nisi pid ridiculus nisi duis ac. Turpis et non, dapibus diam! Placerat vel? Et, velit turpis mus sociis arcu, vel magna. Habitasse elementum elit cum nec est, eu, montes egestas est mattis lacus, turpis urna parturient, egestas, integer augue, penatibus natoque elit, rhoncus mid elementum, integer vut turpis. Et? Nisi pid. Nec, placerat ut tristique lorem a nunc velit nunc est.</p>n";s:9:"changelog";s:0:"";}",
  "banners": "a:2:{s:4:"high";s:0:"";s:3:"low";s:0:"";}"
}

Uwagi dotyczące odpowiedzi:

  • Jeśli w żądaniu get_version nie podano klucza licencyjnego, informacje o wersji są nadal zwracane; jednak wartości package i download będą puste. I odwrotnie, jeśli podano klucz licencyjny, ale nie należy on do item_id lub item_name w żądaniu, zostanie zwrócona odpowiedź z błędem z powodem jako wartością msg.
  • Link do pobrania zostanie uwzględniony, jeśli plik istnieje, niezależnie od stanu licencji. Jednak pobieranie nie zadziała, chyba że licencja jest aktywna. Pozwala to witrynom z wygasłą licencją na jej odnowienie, ale nie muszą czekać na wyczyszczenie pamięci podręcznej aktualizacji przed uzyskaniem aktualizacji.
  • Właściwość sekcje jest serializowaną tablicą zawierającą pełny opis produktu i listę zmian. Jeśli używasz parsowania ReadMe.txt dla wtyczek WordPress, będzie ona również zawierać dodatkowe informacje dostarczone przez plik readme.

Jeśli chcesz pobrać informacje o wersji beta, dodaj &beta=1 do adresu URL żądania API, w następujący sposób:

https://YOURSITE.com/?edd_action=get_version&item_id=8&license=cc22c1ec86304b36883440e2e84cddff&url=https://licensedsite.com&beta=1

Pobieranie wersji dla wielu produktów jednocześnie

Pobierz wersje wielu produktów w jednym żądaniu, używając argumentu produkty. Ten argument akceptuje tablicę elementów. Każdy element powinien zawierać te same argumenty, co w pojedynczym żądaniu.

Oto przykład użycia cURL:

curl -d edd_action=get_version -d products[0][item_id]=356 -d products[0][license]=59cc77ea94a2d867069a9d96142a35b8 -d products[0][url]="https://licensedsite.com" -d products[1][item_id]=46 -d products[1][license]=5cdd12a966c498fc6e423e261fe05303 -d products[1][url]="https://licensedsite.com" https://YOURSITE.com

A oto przykład użycia funkcji WordPress
wp_remote_post():

$response = wp_remote_post( 'https://YOURSITE.com', array(
	'body' => array(
		'edd_action' => 'get_version',
		'products'   => array(
			'my-first-plugin' => array(
				'item_id' => 356,
				'license' => '59cc77ea94a2d867069a9d96142a35b8',
				'url'     => 'https://licensedsite.com'
			),
			'my-second-plugin' => array(
				'item_id' => 46,
				'license' => '5cdd12a966c498fc6e423e261fe05303',
				'url'     => 'https://licensedsite.com'
			)
		)
	)
) );

Odpowiedź będzie obiektem JSON zawierającym wyniki dla każdego z podanych produktów. Klucze produktów, które podałeś w żądaniu, zostaną zachowane w odpowiedzi. Oto przykład:

{
  "my-first-plugin": {
    "new_version": "2.0",
    "stable_version": "2.0",
    "name": "My First Plugin",
    "slug": "my-first-plugin",
    "url": "https://edd.com/downloads/my-first-plugin/?changelog=1",
    "last_updated": "2021-01-03 11:59:46",
    "homepage": "https://edd.com/downloads/my-first-plugin/",
    "package": "",
    "download_link": "",
    "sections": "a:2:{s:11:"description";s:793:"<p>Placerat porta in enim, urna cras, adipiscing augue dis lorem, pulvinar, natoque phasellus eu tincidunt, dictumst nunc ut dignissim turpis ac, pulvinar! Massa! Sed, enim, eu ac augue placerat scelerisque! Eu cursus, ridiculus cum nec lorem, natoque lorem dictumst amet! Nunc placerat dapibus enim dignissim, nunc mattis vel? Dolor nascetur placerat ridiculus augue massa porttitor turpis auctor, etiam et nisi pid ridiculus nisi duis ac. Turpis et non, dapibus diam! Placerat vel? Et, velit turpis mus sociis arcu, vel magna. Habitasse elementum elit cum nec est, eu, montes egestas est mattis lacus, turpis urna parturient, egestas, integer augue, penatibus natoque elit, rhoncus mid elementum, integer vut turpis. Et? Nisi pid. Nec, placerat ut tristique lorem a nunc velit nunc est.</p>n";s:9:"changelog";s:0:"";}",
    "banners": "a:2:{s:4:"high";s:0:"";s:3:"low";s:0:"";}"
  },
  "my-second-plugin": {
    "new_version": "1.3",
    "stable_version": "1.3",
    "name": "My Second Plugin",
    "slug": "my-second-plugin",
    "url": "https://edd.com/downloads/my-second-plugin/?changelog=1",
    "last_updated": "2021-03-08 11:59:46",
    "homepage": "https://edd.com/downloads/my-second-plugin/",
    "package": "",
    "download_link": "",
    "sections": "a:2:{s:11:"description";s:793:"<p>Placerat porta in enim, urna cras, adipiscing augue dis lorem, pulvinar, natoque phasellus eu tincidunt, dictumst nunc ut dignissim turpis ac, pulvinar! Massa! Sed, enim, eu ac augue placerat scelerisque! Eu cursus, ridiculus cum nec lorem, natoque lorem dictumst amet! Nunc placerat dapibus enim dignissim, nunc mattis vel? Dolor nascetur placerat ridiculus augue massa porttitor turpis auctor, etiam et nisi pid ridiculus nisi duis ac. Turpis et non, dapibus diam! Placerat vel? Et, velit turpis mus sociis arcu, vel magna. Habitasse elementum elit cum nec est, eu, montes egestas est mattis lacus, turpis urna parturient, egestas, integer augue, penatibus natoque elit, rhoncus mid elementum, integer vut turpis. Et? Nisi pid. Nec, placerat ut tristique lorem a nunc velit nunc est.</p>n";s:9:"changelog";s:0:"";}",
    "banners": "a:2:{s:4:"high";s:0:"";s:3:"low";s:0:"";}"
  }
}

Dostęp do API w innych językach

Ponieważ API używa prostych żądań HTTP POST, można uzyskać do niego dostęp w praktycznie każdym języku. Oto kilka przykładów.

FAQ / Rozwiązywanie problemów

Czy mogę tworzyć niestandardowe formaty kluczy?

Domyślny format klucza to prosty sumaryczny skrót md5.
Możesz zmienić ten format na praktycznie dowolny.

Jak mogę uniemożliwić dostęp do mojego oprogramowania, wtyczki lub motywu, jeśli licencja wygasła lub została wyłączona?

Status tej licencji nie wpływa na oprogramowanie, jedynie wskazuje status klucza. Od dewelopera zależy, czy odczyta ten status i podejmie odpowiednie działania. Na przykład, jeśli klucz wygasł, oprogramowanie może przestać działać lub wyświetlić ostrzeżenie.

Jedynym wyjątkiem jest sytuacja, gdy EDD wykryje wygasły lub wyłączony klucz powiązany z pobranym plikiem, linki do pobrania, w tym link get_version, nie będą działać. W związku z tym aktualizacje nie będą już działać za pośrednictwem odpowiedzi get_version.

Jeśli masz problemy z aktywacją kluczy licencyjnych w swojej implementacji
Software Licensing, oto kilka wskazówek, które pomogą rozwiązać typowe problemy.

Żądania blokowane przez wtyczkę bezpieczeństwa

Wtyczki bezpieczeństwa dla WordPress często posiadają funkcje, które zakłócają żądania API kluczy licencyjnych. Funkcje te zazwyczaj powodują, że aktywacja (i inne żądania API) zwraca nieoczekiwaną odpowiedź, co prowadzi do niepowodzenia rutyny aktywacji.

Na przykład, możesz otrzymać od serwera odpowiedź podobną do tej, jeśli masz wtyczkę bezpieczeństwa, która zakłóca działanie:

[response] => Array
	(
		[code] => 403
		[message] => Forbidden
)

Wtyczka iThemes Security jest znana z posiadania ustawienia, które może powodować ten problem. Ustawienie to nazywa się
Filter Suspicious Query Strings in the URL

Aby rozwiązać problem, po prostu wyłącz ustawienie
Filter Suspicious Query Strings in the URL. Jeśli nie używasz iThemes Security, będzie ono nazywać się inaczej, choć podobnie.

Żądania zablokowane przez specjalne reguły .htaccess

Niektóre witryny dodają specjalne reguły do pliku .htaccess, aby zablokować określone adresy IP lub dodać dodatkową ochronę witryny.

Jeśli masz jakieś specjalne reguły .htaccess i klucze licencyjne nie są aktywowane, spróbuj usunąć reguły, a następnie aktywować klucze licencyjne. Jeśli klucze licencyjne aktywują się teraz poprawnie, będziesz musiał dostosować reguły, aby umożliwić działanie procedur API licencjonowania.

Żądania zablokowane przez wtyczkę „wkrótce” lub „konserwacja”

Jeśli używasz wtyczki „wkrótce” lub „tryb konserwacji”, jest prawdopodobne, że klucze licencyjne nie będą mogły zostać aktywowane, ponieważ wtyczka „wkrótce” / „tryb konserwacji” zablokuje żądania. Aby rozwiązać problem, po prostu dezaktywuj tryb konserwacji lub wtyczkę „wkrótce”. Jeśli musisz pozostawić ją aktywną, dezaktywuj ją tymczasowo, aby przetestować proces aktywacji klucza licencyjnego, a następnie ponownie aktywuj wtyczkę.

Czy ten artykuł był pomocny?

Zacznij sprzedawać już dziś!

Dołącz do ponad 50 000 sprytnych właścicieli sklepów i zacznij korzystać z najłatwiejszego sposobu sprzedaży produktów cyfrowych za pomocą WordPress.

Copyright © 2025 Sandhills Development, LLC

[universally_switcher]