Bir WordPress Eklentisi Lisanslama Sistemi Nasıl Oluşturulur
Ticari bir WordPress eklentisi satmak, bir lisanslama sistemi gerektirir.
Müşteri sitelerinde anahtarları (key) etkinleştirmeniz gerekir. Anahtarları belirli alan adlarına (domain) kilitlemeniz gerekir. Kullanıcıların tek bir anahtarı birçok sitede paylaşmasını engellemelisiniz.
Çoğu kişi Freemius veya EDD kullanır. Bu araçlar iyi çalışır. Ancak, gelir payı alırlar. Bunlar üçüncü taraf bağımlılıklardır. Sürecin sahibi siz olmazsınız.
RideCab WP için kendi sistemimizi oluşturduk. İşte sıfırdan özel bir sistemin nasıl kurulacağı.
Sistem iki bölümden oluşur.
Lisans Sunucusu Bu, kendi altyapınızda çalışır. Pazarlama sitenizde bir WordPress must-use eklentisi kullanın. Anahtarları bir veritabanında saklar. Etkinleştirme ve doğrulama için bir REST API kullanır. Anahtarları yönetmek için bir panel sağlar.
İstemci (Client) Bu, ticari eklentinizin içindeki bir PHP sınıfıdır (class). Bir ayarlar sayfası ekler. Etkinleştirmek için sunucunuzu çağırır. Doğrulama sonuçlarını önbelleğe alır. Arka planda yeniden doğrulama yapar.
Temel Gereksinimler:
- Satın alma sırasında benzersiz anahtarlar oluşturun.
- Müşterilerin anahtarları etkinleştirmesine izin verin.
- Anahtarları belirli alan adlarına bağlayın.
- Anahtarları periyodik olarak doğrulayın.
- Müşteriler site taşıdığında devre dışı bırakma işlemlerini yönetin.
- Sunucunuz çökerse hata durumunu sorunsuz bir şekilde (gracefully) yönetin.
En önemli kural "fail open" (açık hata verme) yöntemidir.
Eğer lisans sunucunuz çökerse, müşterinin erişimini engellemeyin. Eğer "fail closed" (kapalı hata verme) yaparsanız, müşteri bozuk bir siteyle karşılaşır. Bu, itibarınızı zedeler. Eğer "fail open" yaparsanız, eklenti çalışmaya devam eder. Birkaç korsan eklentiyi ücretsiz kullanabilir ancak ödeme yapan müşterileriniz memnun kalır.
En İyi Uygulamalar:
- Tüm API çağrıları için HTTPS kullanın.
- Performans tasarrufu için doğrulama sonuçlarını önbelleğe alın.
- Güvenli anahtarlar için
random_bytes()kullanın.rand()kullanmayın. - Müşterilere anahtarları kendilerinin devre dışı bırakabileceği bir yol sunun.
- Staging veya geliştirme (dev) alan adlarına izin verin.
Bu kurulum lisanslamanın temellerini halleder. Güncelleme dağıtımını içermez. Bunu gelecekteki bir yazıda ele alacağım.