Jak zbudować system licencjonowania wtyczki WordPress
Sprzedaż komercyjnej wtyczki WordPress wymaga systemu licencjonowania.
Musisz aktywować klucze na stronach klientów. Musisz przypisać klucze do konkretnych domen. Musisz uniemożliwić użytkownikom udostępnianie jednego klucza na wielu stronach.
Większość osób korzysta z Freemius lub EDD. Te narzędzia działają dobrze, ale pobierają udział w przychodach. Są to zależności zewnętrzne. Nie masz pełnej kontroli nad tym procesem.
Zbudowaliśmy własny system dla RideCab WP. Oto jak zbudować własny system od zera.
System składa się z dwóch części.
Serwer licencji Działa on na Twojej własnej infrastrukturze. Użyj wtyczki typu WordPress must-use na swojej stronie marketingowej. Przechowuje on klucze w bazie danych. Wykorzystuje REST API do aktywacji i walidacji. Zapewnia panel administracyjny do zarządzania kluczami.
Klient Jest to klasa PHP wewnątrz Twojej komercyjnej wtyczki. Dodaje ona stronę ustawień. Wywołuje ona Twój serwer w celu aktywacji. Przechowuje wyniki walidacji w pamięci podręcznej. Ponownie przeprowadza walidację w tle.
Podstawowe wymagania:
- Generowanie unikalnych kluczy podczas zakupu.
- Umożliwienie klientom aktywacji kluczy.
- Przypisywanie kluczy do konkretnych domen.
- Okresowa walidacja kluczy.
- Obsługa dezaktywacji, gdy klienci przenoszą strony.
- Łagodne radzenie sobie z błędami w przypadku awarii serwera.
Najważniejszą zasadą jest "fail open".
Jeśli Twój serwer licencji nie działa, nie blokuj dostępu klientowi. Jeśli zastosujesz "fail closed", klient zobaczy niedziałającą stronę. To niszczy Twoją reputację. Jeśli zastosujesz "fail open", wtyczka będzie nadal działać. Kilku piratów może korzystać z niej za darmo, ale Twoi płacący klienci pozostaną zadowoleni.
Dobre praktyki:
- Używaj HTTPS dla wszystkich wywołań API.
- Buforuj wyniki walidacji, aby oszczędzać wydajność.
- Używaj
random_bytes()do tworzenia bezpiecznych kluczy. Nie używajrand(). - Daj klientom możliwość samodzielnej dezaktywacji kluczy.
- Uwzględnij domeny stagingowe lub deweloperskie.
Ta konfiguracja obsługuje podstawy licencjonowania. Nie obejmuje ona dostarczania aktualizacji. Omówię to w przyszłym wpisie.