Pazar Yeri Ürününü Lisanslama

699 görüntülenme Markdown

Ü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

Ticari bir ürün kaydı Lisans kontrolü ayarı yalnız fiyatı olan ürünlerde görünür. Ücretsiz üründe lisanslanacak bir şey yoktur.
İnternete açık bir https adresi Adres dışarıdan erişilebilir olmalı ve isteğe doğrudan cevap vermelidir. Yerel ağ adresleri kabul edilmez, yönlendirmeler izlenmez.
Alan adına göre verilen bir cevap Sunucunuz kararı yalnızca alan adına bakarak verebilmelidir. Karar için başka bilgi isteyen bir sistem bu kontrole bağlanamaz.
Lisanslı olduğunu bildiğiniz bir alan adı Testin geçmesi için gerçek bir olumlu cevap gerekir. Her alan adına "lisanssız" diyen bir adres de erişilebilir sayılır, ama testi geçmez.

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ürKime uygunNe verirsiniz
WISECPKendi WISECP sisteminiz var ve ürünü lisans anahtarlı yazılım olarak satıyorsunuzKendi paketinizde zaten hazır olan kontrol adresi
ÖzelDiğ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

  1. 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}.
  2. 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.
  3. Pazar Yeri bu adresi alıcının alan adıyla çağırır. Sisteminiz ister düz OK cevabını, ister yeni imzalı cevap biçimini döndürsün, ikisi de lisanslı sayılır.
Adresi elle yazmayın, kopyalayın

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

  1. Sunucunuzun adresini yazın ve isteğin POST mu GET mi gönderileceğini seçin.
  2. Alan adının hangi parametre adıyla gönderileceğini yazın. Boş bırakırsanız domain kullanılır.
  3. Sunucunuzun beklediği sabit değerler varsa satır başına bir ad: değer olacak şekilde ekleyin. İstek başlıklarını da aynı biçimde girin.
  4. 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

  1. Sunucunuzda gerçekten lisanslı olan bir alan adı girin.
  2. 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.
  3. 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.

  1. 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.
  2. Kararı kodunuz verir. Bu fonksiyon cevabı yorumlamaz ve imza doğrulamaz. null dönmesi sunucunuza ulaşılamadığı anlamına gelir; kopyanın lisanssız olduğu anlamına gelmez.
  3. 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.

AdresZorunlu. Yönlendirmeler izlenmediği için son adresi yazın.
YöntemPOST ya da GET. GET seçilirse alanlar sorgu dizesiyle gönderilir.
Alan adı anahtarıAlan adının hangi parametre adıyla gönderileceği. Varsayılan domain.
Ek alanlarİsteğe bağlı. Her istekte gönderilen sabit değerler, satır başına bir ad: değer.
Başlıklarİsteğe bağlı istek başlıkları, aynı biçimde. Buraya yazdığınız erişim belirtecinin yetkisini dar tutun.
Beklenen durum koduGelen kod bundan farklıysa cevap reddedilir. Sunucunuz her durumda 200 dönüyorsa buraya 0 yazın.
Gövde türüJSON ya da düz metin. Düz metin seçilirse cevabın tamamı değerlendirilir ve yol alanı sorulmaz.
YolJSON içindeki alanın noktayla ayrılmış yolu, örneğin data.valid. JSON seçilip yol boş bırakılırsa cevap reddedilir.
Beklenen değerBüyük küçük harf gözetmeden karşılaştırılır. Boş bırakırsanız dolu olan her değer kabul edilir; 0, false, null, no ve boş değer reddedilir.

Test başarısız olduğunda size gösterilen gerekçeler.

GerekçeAnlamı
ErişilemediSunucunuzdan cevap gelmedi. Tanımlanmış ama erişilemeyen bir kontrol indirmeyi reddeder.
Durum koduSunucunuz cevap verdi, ama beklediğinizden farklı bir durum koduyla.
ReddedildiSunucunuz cevap verdi, ama cevap sizin tanımladığınızla uyuşmadı.
Hatalı adresWISECP türü. Adresteki belirteç başka bir ürüne ait ya da adres belirteç taşımıyor.
Eksik istekWISECP 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.

sunucunuzun verdiği cevap
{"data": {"valid": true, "expires_at": "2027-06-01"}}
buna karşılık gelen tanım
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.

şifrelenmek üzere işaretlediğiniz dosyadaki kontrol
$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

Cevapsızlık izin sayılmaz

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.

Cevap olduğu gibi kabul edilir

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.

Tanımı düzenlemek onayı düşürür

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.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.