Görünüşe göre aradığınız, kullanıcının hesabında premium özellikleri etkinleştirip etkinleştirmediğini kontrol etmenin bir yolu, bu yüzden başlayacağım yer burası;
Veritabanınızda, kullanıcının premium özelliklere sahip olup olmadığını gösteren bir bayrak olduğundan emin olun ve hesap bilgisi isterken bunu API yanıt yüküne dahil edin. Bu bayrak, "premium özellikler" için birincil yetkiniz olacaktır.
Bir kullanıcı bir uygulama içi satın alma yaptığında, ayrıntıları (jeton, sipariş kimliği ve ürün kimliği) istemcide (yani uygulama) yerel olarak önbelleğe alın ve ardından API'nize gönderin.
API sonra göndermelidir purchaseToken
için Google Play Geliştirici API'si doğrulama için.
Buradan birkaç şey olabilir:
- Makbuz geçerlidir, API'niz müşteriye 200 Ok durum koduyla yanıt verir
- Makbuz geçersiz, API'niz istemciye 400 Hatalı İstek durum kodu ile yanıt veriyor
- Google Play API çalışmıyor, API'niz 502 Hatalı Ağ Geçidi durum koduyla yanıt veriyor
1. veya 2. (2xx veya 4xx durum kodları) durumunda, istemciniz satın alma ayrıntılarının önbelleğini temizler çünkü API, alındığını belirttiğinden artık buna ihtiyaç duymaz.
Başarılı bir doğrulama (durum 1.) üzerine, premium
kullanıcı için bayrağı true olarak ayarlamalısınız .
3. (5xx durum kodu) veya bir ağ zaman aşımı durumunda, istemci API'nizden bir 2xx veya 4xx durum kodu alana kadar denemeye devam etmelidir.
Gereksinimlerinize bağlı olarak, tekrar göndermeden önce birkaç saniye bekletebilir veya uygulama yeniden başlatıldığında veya satın alma ayrıntıları uygulama önbelleğinde mevcutsa arka plandan çıktığında yalnızca ayrıntıları API'nize gönderebilirsiniz.
Bu yaklaşım, ağ zaman aşımlarına, sunucuların kullanılamaz olmasına vb. Dikkat etmelidir.
Şimdi göz önünde bulundurmanız gereken birkaç soru var:
Bir satın alma işleminden hemen sonra ne olmalı? Uygulama, premium içerik sağlamadan önce doğrulama başarılı olana kadar beklemeli mi yoksa geçici olarak erişim vermeli ve doğrulama başarısız olursa onu kaldırmalı mı?
Premium özelliklere geçici erişim izni vermek, kullanıcılarınızın çoğunluğu için süreci kolaylaştırır, ancak API'niz purchaseToken
.
Başka bir şekilde ifade etmek gerekirse: Satın alma, sahtekarlık olduğu kanıtlanana kadar geçerlidir veya; geçerliliği kanıtlanana kadar hileli mi?
Yenileme için abonelik dönemi geldiğinde kullanıcının hala geçerli bir aboneliğe sahip olup olmadığını belirlemek için , sonuçta döndürülen bir purchaseToken
çalıştırma için yeniden doğrulama planlamanız gerekecektir .expiryTimeMillis
Eğer expiryTimeMillis
geçmişte, sen ayarlayabilirsiniz premium
YANLıŞ olarak bayrak. Gelecekteyse, yeni için yeniden planlayın expiryTimeMillis
.
Son olarak, kullanıcının premium erişime sahip olduğundan (veya olmadığından) emin olmak için uygulamanız, uygulamanın başlatılmasıyla ilgili kullanıcı ayrıntıları veya arka plandan çıktığında API'nizi sorgulamalıdır.