Pazar Yeri Ürününü Lisanslama
Ücretli ürününüzü yalnız satın alanların indirebilmesi için, Pazar Yeri'nin lisans sorusunu kendi sunucunuza nasıl soracağını tanımlayın.
Genel Bakış
WISECP size hazır bir lisans sistemi vermez. Bir alan adının lisanslı olup olmadığına kendi sunucunuz karar verir. Siz yalnızca üç şeyi tanımlarsınız: sorunun hangi adrese gideceği, istekle birlikte ne gönderileceği ve hangi cevabın "lisanslı" anlamına geldiği.
Pazar Yeri her indirme isteğinde sunucunuza tek bir soru sorar: indirmeyi yapan sistemin alan adı sizde lisanslı mı?
Lisans kontrolü tanımlamak zorunlu değildir. Tanımlamazsanız ücretli ürününüz yine yayına girer, ancak indirmesi ücretsiz bir ürünle aynı şekilde herkese açık kalır.
Ön Koşullar
Yapı
Önce Lisans kontrolü tanımla seçeneğini açın, sonra türünü seçin. Bu ikisi aynı ayarın seçenekleri değil, iki farklı bağlantı yöntemidir; her birinde farklı alanlar doldurursunuz.
| Tür | Kime uygun | Ne verirsiniz |
|---|---|---|
| WISECP | Kendi WISECP sisteminiz var ve ürünü lisans anahtarlı yazılım olarak satıyorsunuz | Kendi paketinizde zaten hazır olan kontrol adresi |
| Özel | Diğer her şey: kendi API'niz, bir lisans servisi ya da sabit bir izin listesi | İsteğin biçimi ve olumlu cevabın nasıl tanınacağı |
Kontrol yalnız iki anda çalışır: bir alıcı indirmeye başladığında ve bir müşteri değerlendirme yazmaya başladığında. Sayfa açılışlarında sorulmaz. Olumlu cevap on dakika saklanır ve bu süre içinde tekrar sorulmaz.
Adım Adım
WISECP türünü bağlayın
- Kendi panelinizde yazılım ürününüzü açıp Lisanslama sekmesine gidin. Kontrol adresi orada kopyalanmaya hazır durur:
https://siteniz.example/license/checking/{token}/{urun-id}. - Adresi Kontrol adresi alanına yapıştırın. Başka alan doldurmanız gerekmez; bu türde hem isteğin hem cevabın biçimi sabittir.
- Pazar Yeri bu adresi alıcının alan adıyla çağırır. Sisteminiz ister düz
OKcevabını, ister yeni imzalı cevap biçimini döndürsün, ikisi de lisanslı sayılır.
Bu adres, ziyaretçilere gösterilen çevrilmiş sayfa adresi değil, sabit sistem adresidir. Sayfa adresleri dile göre değişir; bu adres her dilde aynı kalır.
Özel bir uç bağlayın
- Sunucunuzun adresini yazın ve isteğin POST mu GET mi gönderileceğini seçin.
- Alan adının hangi parametre adıyla gönderileceğini yazın. Boş bırakırsanız
domainkullanılır. - Sunucunuzun beklediği sabit değerler varsa satır başına bir
ad: değerolacak şekilde ekleyin. İstek başlıklarını da aynı biçimde girin. - Hangi cevabın "lisanslı" sayılacağını tanımlayın: beklediğiniz HTTP durum kodu, cevabın JSON mu düz metin mi olduğu, JSON içindeki alanın yolu ve o alanın lisanslı anlamına gelen değeri.
Test edin
- Sunucunuzda gerçekten lisanslı olan bir alan adı girin.
- Bağlantıyı Sına butonuna tıklayın. İstek tarayıcıdan değil Pazar Yeri sunucusundan gönderilir, böylece girdiğiniz kimlik bilgileri sayfaya hiç inmez.
- Test geçerse tanım onaylanır ve bölüm tamamlanmış sayılır. Tanımda yaptığınız her değişiklik bu onayı düşürür; değişiklikten sonra testi tekrarlayın.
Ürünün içinde lisansı kontrol edin
Yukarıdaki tanım yalnızca indirmeyi denetler. Kurulmuş bir kopyayı denetlemez; onun lisansını ürününüzün kendisi kontrol etmelidir.
- Kendi sunucunuza ürününüzün kodu içinden sorun.
License::remote_check()isteği gönderir ve cevabı bir gün saklar; böylece ürün her sayfa açılışında sunucunuza gitmez. - Kararı kodunuz verir. Bu fonksiyon cevabı yorumlamaz ve imza doğrulamaz.
nulldönmesi sunucunuza ulaşılamadığı anlamına gelir; kopyanın lisanssız olduğu anlamına gelmez. - Bu kontrolü, şifrelenmek üzere işaretlediğiniz bir dosyaya yazın; böylece ilgili satır ürününüzden silinemez. İşaretleme ve paketleme: Modül Lisanslama.
Referans
Özel türde doldurulan alanlar.
domain.ad: değer.data.valid. JSON seçilip yol boş bırakılırsa cevap reddedilir.0, false, null, no ve boş değer reddedilir.Test başarısız olduğunda size gösterilen gerekçeler.
| Gerekçe | Anlamı |
|---|---|
| Erişilemedi | Sunucunuzdan cevap gelmedi. Tanımlanmış ama erişilemeyen bir kontrol indirmeyi reddeder. |
| Durum kodu | Sunucunuz cevap verdi, ama beklediğinizden farklı bir durum koduyla. |
| Reddedildi | Sunucunuz cevap verdi, ama cevap sizin tanımladığınızla uyuşmadı. |
| Hatalı adres | WISECP türü. Adresteki belirteç başka bir ürüne ait ya da adres belirteç taşımıyor. |
| Eksik istek | WISECP türü. Sunucunuz, beklediği alanların isteğe ulaşmadığını bildiriyor. |
Örnek
200 dönen ve kararı iç içe bir alanda veren bir JSON ucu.
{"data": {"valid": true, "expires_at": "2027-06-01"}}
Adres = https://vendor.example/api/licence
Yöntem = POST
Alan adı anahtarı = domain
Ek alanlar = product: sample-pro
Başlıklar = Authorization: Bearer <belirteciniz>
Beklenen durum kodu = 200
Gövde türü = JSON
Yol = data.valid
Beklenen değer = true
Aynı sunucu düz metinle de cevap verebilir. O zaman gövde türü metin olur, yol boş bırakılır ve beklenen değer kelimenin kendisidir, örneğin OK.
Ürünün içinde aynı soru şu şekilde sorulur. Dönen değer sunucunuzun ham cevabıdır; anlamını kodunuz belirler.
$answer = \License::remote_check('https://vendor.example/api/licence', [
'product' => 'sample-pro',
'domain' => \Utility::getDomain(),
]);
// Sunucuya ulaşılamaması bir ret değildir: kendi kesintiniz yüzünden müşteriyi kilitlemeyin.
if ($answer === null) return true;
$body = \Utility::jdecode((string) ($answer['body'] ?? ''), true);
return (int) ($answer['status'] ?? 0) === 200 && ($body['data']['valid'] ?? false) === true;
Tuzaklar
Bir kontrol tanımladıktan sonra sunucunuza ulaşılamazsa indirme reddedilir. Kontrolü tanımlayarak "her indirmede bana sor" demiş olursunuz; cevap gelmemesi olumlu sayılmaz.
Bu istek müşterinin tarayıcısından değil, Pazar Yeri sunucusundan doğrudan sizin sunucunuza yapılır. Araya girip sahte bir olumlu cevap üretebilecek bir taraf olmadığı için cevabın imzası ayrıca doğrulanmaz.
Onay, "şu anda kayıtlı olan tanım cevap veriyor" demektir. Adresi, bir başlığı ya da yolu değiştirdiğinizde bölüm yeniden eksik duruma döner ve testi tekrarlamanız gerekir.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.