Rozszerzenie Licencjonowanie oprogramowania dla Easy Digital Downloads wymaga pewnej konfiguracji i integracji – i możliwe jest, że napotkasz pewne problemy. Kilka z nich zostało tu przedstawionych wraz z potencjalnymi rozwiązaniami.
Często zadawane pytania
Jak skontaktować się z klientami, gdy dostępna jest aktualizacja?
Zaleca się korzystanie z usługi marketingu e-mail, takiej jak Mailchimp lub ConvertKit. WordPress nie jest zalecany do wysyłania masowych wiadomości e-mail, więc kontakt z użytkownikami musi odbywać się poza EDD/WordPress.
Czy możliwe jest sprzedawanie niestandardowych / korporacyjnych licencji?
Chociaż nie ma wbudowanego wsparcia dla sprzedaży niestandardowych lub korporacyjnych licencji, które można aktywować na większej liczbie witryn, istnieją obejścia, aby to umożliwić. Najprostszym rozwiązaniem jest wystawienie klientowi faktury za pośrednictwem Stripe lub PayPal. Po zapłaceniu ręcznie utwórz zamówienie i zaktualizuj limit aktywacji licencji do liczby aktywacji, które chcesz udostępnić klientowi.
Czy licencjonowanie oprogramowania działa z Amazon S3?
Tak, jest w pełni kompatybilne bez problemów i specjalnych ustawień.
Czy lokalne / deweloperskie środowiska wpływają na liczbę aktywacji?
Jeśli zdecydujesz się ograniczyć liczbę aktywacji licencji, które może mieć klient, nadal możesz pozwolić mu aktywować licencję w swoim lokalnym środowisku deweloperskim, nie wpływając na liczbę aktywacji.
Pozwala to użytkownikom na łatwe aktualizowanie w ich środowiskach testowych i deweloperskich, bez uzyskiwania darmowych aktywacji licencji.
Aby to zadziałało, muszą zostać spełnione dwa warunki:
1) Ignoruj adresy URL lokalnego hosta
W panelu administracyjnym WordPress, w sekcji
Pobrane → Ustawienia → Rozszerzenia → Licencjonowanie oprogramowania poszukaj pola wyboru z napisem Ignoruj adresy URL lokalnego hosta. Upewnij się, że jest zaznaczone.

2) Edukuj klientów
Zobacz ten przewodnik, jak ignorować aktywacje dla witryn deweloperskich.
Jak tworzyć niestandardowe formaty kluczy licencyjnych?
Klucze licencyjne EDD domyślnie są sumą md5, taką jak ta:
e0c7ccc47b2613c82d1073a4214deecc
Jeśli chcesz mieć coś innego, z Licencjonowaniem oprogramowania jest to tak proste, jak stworzenie funkcji do generowania spójnych, unikalnych kluczy i podłączenie jej do filtra o nazwie edd_sl_generate_license_key.
Formaty kluczy licencyjnych mogą być naprawdę czymkolwiek chcesz, o ile są unikalne i spójne. Jeśli chcesz klucze w tym formacie:
username_timestamp_licensekey sdavis2702_20151015120022_e0c7ccc47b2613c82d1073a4214deecc
Możesz użyć tej funkcji:
// Example shown how to base the MD5 off of the user's email and purchase date
function pw_edd_license_md5_user_and_date( $key, $license_id, $download_id, $payment_id, $cart_index ) {
$name = get_user_by( 'email', edd_get_payment_user_email( $payment_id ) );
$date = get_post_field( 'post_date', $payment_id );
$timestamp = strtotime($date);
$nice_date = date( 'Yndhis', $timestamp );
$license = md5( $license_id );
$key = $name->user_nicename . '_' . $nice_date . '_' . $license;
return $key;
}
add_filter( 'edd_sl_generate_license_key', 'pw_edd_license_md5_user_and_date', 10, 5 );
Prostsza funkcja używa tylko nazwy użytkownika i klucza licencyjnego:
// prepend user's username to license key
function sd_edd_license_username_md5( $key, $license_id, $download_id, $payment_id, $cart_index ) {
$name = get_user_by( 'email', edd_get_payment_user_email( $payment_id ) );
$license = md5( $license_id );
$key = $name->user_nicename . '_' . $license;
return $key;
}
add_filter( 'edd_sl_generate_license_key', 'sd_edd_license_username_md5', 10, 5 );
Najważniejszą rzeczą, którą należy wynieść z tego dokumentu, jest to, że możesz użyć dowolnego kodu, który generuje spójne, unikalne ciągi znaków i używać tych ciągów jako kluczy licencyjnych.
Wyświetlanie listy kluczy licencyjnych klienta
Poniższy kod pozwoli Ci pobrać i wyświetlić listę kluczy licencyjnych dla konkretnego klienta.
Uwaga: „$customer->id” należy zastąpić rzeczywistym identyfikatorem klienta.
$licenses = edd_software_licensing()->licenses_db->get_licenses( array( 'number' => -1, 'customer_id' => $customer->id, 'orderby' => 'id', 'order' => 'ASC', ) );
Co się stanie, jeśli domena mojego sklepu przestanie działać?
Zachęcamy do korzystania z EDD Software Licensing SDK do zarządzania licencjonowaniem wtyczki lub motywu WordPress. SDK nie będzie wysyłać powtarzających się żądań API do Twojej witryny, jeśli nie otrzyma prawidłowej odpowiedzi.
Jeśli zamierzasz zmienić domeny lub zamknąć nazwę domeny, najlepiej będzie wydać aktualizację, która używa nowej domeny lub całkowicie usuwa wywołania API.
Typowe problemy
Dostosuj przykładowy kod
Przykładowy kod, który jest dostarczany z Software Licensing, może używać prefiksów funkcji, takich jak edd_ i edd_sl_. Należy je zmienić, aby pasowały do Twojej własnej wtyczki, a wyszukiwanie i zamiana jest doskonałym sposobem na to, ale musisz uważać na ciąg wyszukiwania.
Istnieją funkcje z prefiksami, takimi jak edd_action_ , których nie należy zmieniać. Upewnij się, że zmieniasz tylko prefiksy nazw własnych funkcji, a nie prefiksy rdzenia EDD.
Rozwiązywanie problemów z aktualizacjami
Jeśli widzisz błędy podczas próby aktualizacji wtyczek i motywów z Twojego sklepu Software Licensing, oto kilka rzeczy, które możesz sprawdzić, w zależności od zgłaszanego błędu.
Dostosuj swój Updater
Jeśli korzystasz z klasy aktualizatora wtyczek starszej generacji dostarczanej w poprzednich wersjach Software Licensing, prawdopodobnie używasz klasy EDD_SL_Plugin_Updater do zarządzania licencjonowaniem i sprawdzania aktualizacji. Istnieje ryzyko „konfliktu”, jeśli inna wtyczka zawiera inną wersję klasy EDD_SL_Plugin_Updater niż ta, którą pakujesz ze swoją wtyczką. Możesz zmienić nazwę tej klasy na coś unikalnego dla swojej wtyczki, aby uniknąć konfliktów. Na przykład, jeśli nazwa mojej wtyczki to „My Custom Ads”, mogę zmienić nazwę EDD_SL_Plugin_Updater na MCA_Plugin_Updater i zmienić wszelkie odniesienia do niej. Alternatywnie, użycie EDD Software Licensing SDK znacznie uprości sposób zarządzania aktualizacjami wtyczek/motywów.
Błędy SSL
Istnieje wiele błędów, które mogą być spowodowane problemami z łącznością SSL; poniższe są powszechnie widoczne w Software Licensing.
SSL: nazwa podmiotu certyfikatu nie pasuje
Ten błąd oznacza, że certyfikat SSL zainstalowany na Twojej stronie nie pasuje do nazwy Twojej domeny głównej. Zazwyczaj może się to zdarzyć w środowiskach hostingu współdzielonego, a najczęstszym rozwiązaniem jest zażądanie dedykowanego adresu IP od Twojego dostawcy hostingu. Jeśli Twój dostawca hostingu nie obsługuje dedykowanych adresów IP, będziesz musiał współpracować ze swoim dostawcą hostingu, aby skonfigurować prawidłowy łańcuch SSL, który pasuje do Twojej domeny głównej, zamiast współdzielonego certyfikatu SSL typu wildcard.
SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Ten błąd uzgadniania SSL występuje, gdy wersja OpenSSL na serwerze witryny żądającej aktualizacji jest nieaktualna i nie obsługuje protokołów SSL wymaganych przez sklep dostarczający aktualizację. Istnieją dwa sposoby rozwiązania tego problemu. Idealnym rozwiązaniem jest zweryfikowanie przez witrynę żądającą aktualizacji, czy jej oprogramowanie OpenSSL jest aktualne dla danej platformy. OpenSSL to oprogramowanie serwerowe ułatwiające komunikację przez protokół HTTPS. Jeśli nie jest to możliwe, możesz współpracować z dostawcą hostingu lub administratorem serwera, aby skonfigurować serwer WWW tak, aby akceptował te nieaktualne wersje SSL, ale nie jest to idealne rozwiązanie, ponieważ pozwala na mniej bezpieczne połączenia z serwerem.
Błąd cURL 35: Błąd połączenia SSL
Ten konkretny błąd związany z dostarczaniem aktualizacji przez licencjonowanie oprogramowania jest zazwyczaj widoczny podczas korzystania z opcji Flexible SSL firmy Cloudflare. Ta opcja powoduje problem z łańcuchem w niektórych wersjach cURL na serwerze klienta żądającego aktualizacji. Istnieje kilka sposobów naprawienia tego po stronie serwera (bez konieczności proszenia klienta o aktualizację jego wersji cURL). Pierwszym jest uaktualnienie do płatnego SSL firmy Cloudflare. Płatne certyfikaty SSL firmy Cloudflare zazwyczaj nie powodują tego problemu. Innym rozwiązaniem jest zakup certyfikatu SSL od strony trzeciej i zainstalowanie go bezpośrednio na serwerze.
Pobieranie nie powiodło się. SSL: nazwa podmiotu alternatywnego certyfikatu nie pasuje do nazwy hosta docelowego
An error occurred while updating Resurrect: Download failed. SSL: certificate subject name '*.example.com' does not match target host name 'anotherexample.com'
Występuje, gdy witryna klienta ma starą wersję OpenSSL lub cURL. Te dwie witryny nie mogą się bezpiecznie komunikować, a aktualizacja kończy się niepowodzeniem.
Jedynym rozwiązaniem jest aktualizacja witryny ze starszą wersją oprogramowania na serwerze do najnowszych wersji.
Pobieranie nie powiodło się. Certyfikat SSL serwera lub klucz zdalny SSH nie był OK
Jeśli Twoi klienci widzą ten błąd podczas aktualizacji swoich produktów, musisz skontaktować się ze swoim hostingodawcą, aby poinformować go o nieprawidłowej konfiguracji Twojego certyfikatu SSL:
Pobieranie nie powiodło się. Usługa niedostępna
Ten błąd zobaczysz, gdy będziesz próbować zaktualizować wtyczkę lub motyw na stronie, która również je sprzedaje. Ze względu na sposób, w jaki licencjonowanie oprogramowania integruje się z interfejsem API aktualizacji WordPress, obecnie nie jest możliwe aktualizowanie własnych motywów lub wtyczek ze strony, która je sprzedaje. Kiedy WordPress instaluje aktualizację, tymczasowo przełącza Twoją witrynę w tryb konserwacji, a podczas tego procesu Twoja witryna nie może zainstalować własnej aktualizacji. Aby zaktualizować wtyczkę lub motyw ze strony, która je sprzedaje, musisz zainstalować aktualizację ręcznie.
Pobieranie nie powiodło się. Nieautoryzowane / Zbyt wiele przekierowań
Ten błąd występuje podczas aktualizacji wtyczki lub motywu do nowej wersji. Podczas przesyłania nowej wersji, jeśli dodasz nowy plik z nową wersją, a następnie usuniesz wiersz z poprzednim plikiem, zamiast zastąpić bieżącą wersję, możliwe jest wystąpienie tego błędu. Obecnie jesteśmy świadomi tego błędu i pracujemy nad jego rozwiązaniem, jednak prostym rozwiązaniem w międzyczasie jest kliknięcie przycisku „Aktualizuj” po raz drugi, aby nadpisać klucze plików, lub zawsze zastępować bieżący plik zamiast dodawać nowe pliki w drugim wierszu plików.
Pakiet aktualizacji niedostępny
Gdy pojawi się ten błąd, zazwyczaj oznacza to:
- Istnieje problem z aktywacją licencji na stronie klienta. Jest kilka rzeczy do sprawdzenia, jeśli klient zgłasza ten błąd. Pierwszą z nich jest to, że domena, którą próbuje zaktualizować, została aktywowana dla licencji. Możesz to ustalić, przechodząc do Downloads → Licenses. Następnie możesz wyszukać klucz licencyjny, który użytkownik próbuje zaktualizować, i kliknąć „Manage Sites”, aby upewnić się, że domena, na której się znajduje, znajduje się na liście. Jeśli jej tam nie ma, możesz ją dodać samodzielnie z poziomu administratora lub poprosić klienta o odwiedzenie strony zarządzania licencjami i samodzielną aktywację.
- Innym wynikiem jest to, że licencja jest wygasła lub wyłączona. W takim przypadku klient musi odnowić swoją licencję lub administrator strony wyłączył ją ręcznie.
Dziwna, długa nazwa folderu po aktualizacji
Dzieje się tak, gdy plik .zip został utworzony nieprawidłowo. Podczas tworzenia ostatecznego archiwum .zip ważne jest, aby spakować folder *i* jego zawartość, a nie tylko zawartość folderu.
Struktura pliku zip powinna wyglądać mniej więcej tak:
nazwa_pliku.zip
– nazwa_produktu/
— plik tutaj
— inny plik tutaj
Innymi słowy, pliki muszą znajdować się w folderze, a nie na samej górze pliku zip. Przepakuj swój plik, aby uwzględnić nazwę folderu w środku, a to go naprawi.
Integracja z CloudFlare
Jeśli używasz CloudFlare jako CDN, warstwy buforowania lub dostawcy SSL, zalecamy skonfigurowanie CloudFlare tak, aby omijał buforowanie dla wszystkich adresów URL zawierających następujący ciąg znaków:
/edd-sl
Jest to punkt końcowy API do sprawdzania stanu licencji i dostarczania pakietów aktualizacji. Jeśli te adresy URL punktów końcowych są buforowane, może to powodować problemy z prawidłowym dostarczaniem aktualizacji do Twoich klientów.
PCLZIP_ERR_BAD_FORMAT
Ten błąd nie jest unikalny dla platformy EDD Software Licensing, ale ma kilka rozwiązań, które możesz sprawdzić. Pierwszym jest to, że jest wystarczająca ilość miejsca na dysku do pobrania i rozpakowania pliku (zakładając, że potrzebujesz 2x rozmiaru pliku .zip, aby przetworzyć aktualizację). Jeśli Twój plik .zip ma 1 MB, będziesz potrzebować nieco ponad 2 MB wolnego miejsca, aby prawidłowo przetworzyć aktualizację. Te liczby nie są dokładnie 2x, ale to dobry punkt wyjścia.
Inną rzeczą do sprawdzenia jest to, czy plik .zip nie jest uszkodzony. Możesz to przetestować, przenosząc plik .zip na inny komputer (załączony w wiadomości e-mail lub przez USB) i próbując go tam rozpakować. Jeśli nie rozpakowuje się na innym komputerze, prawdopodobnie wystąpił problem z utworzeniem pliku .zip na oryginalnym komputerze.
Ten błąd może być również spowodowany przez wtyczkę lub skrypt, który generuje błąd. Kiedy interfejs API licencjonowania oprogramowania próbuje utworzyć pakiet zip, błąd jest dodawany do pliku zip, niszcząc jego strukturę. Zazwyczaj oznacza to, że Twoja witryna ma ustawioną wartość WP_DEBUG na TRUE w pliku wp-config.php. Chociaż jest to dobry sposób na sprawdzanie błędów, najlepiej ustawić ją na FALSE na aktywnej witrynie. Alternatywnie możesz ją pozostawić włączoną, ale logować błędy do pliku na serwerze, w pliku wp-contents/debug.log. Zrób to, dodając następujące wiersze do pliku wp-config.php:
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_display', false );
