Google, Google Play Geliştirici API'si aracılığıyla makbuz doğrulaması sağlar; API dahilinde en çok ilginizi çekecek iki uç nokta vardır: Purchases.products: get ve Purchases.subscriptions: get .
Purchases.products: get
Otomatik yenilenmeyen bir ürün satın alımını doğrulamak için kullanılabilir, burada Purchases.subscriptions: get
otomatik yenilenen ürün aboneliklerini doğrulamak ve yeniden doğrulamak içindir.
Bilmeniz gereken her iki bitiş noktası kullanmak için packageName
, productId
, purchaseToken
bunların hepsi sizi satın alınan yük bulunabilir. Ayrıca access_token
bir Google API hizmet hesabı oluşturarak alabileceğiniz bir şeye de ihtiyacınız var .
Bir hizmet hesabını kullanmaya başlamak için önce Google Play Geliştirici konsolu API erişim ayarları sayfasına gidin ve Yeni proje oluştur düğmesini tıklayın:
Şimdi yeni bir Bağlı Proje ve birkaç yeni bölüm görmelisiniz, Hizmet Hesabı bölümünde Hizmet hesabı oluştur düğmesine tıklayın.
Hizmet hesabınızı oluşturma talimatlarını içeren bir bilgi kutusu ile karşılaşacaksınız. Google Developers Console bağlantısını tıkladığınızda yeni bir sekme açılır.
Şimdi Yeni İstemci Kimliği Oluştur'u tıklayın, seçeneklerden Hizmet hesabı'nı seçin ve İstemci Kimliği Oluştur'u tıklayın.
Bir JSON dosyası indirilecek, bu sizin JSON Web Jetonunuzdur, bu access_token
yüzden onu güvende tutun
Daha sonra sekmeleri Google Play Geliştirici konsoluna geri getirin ve bilgi kutusunda Bitti'yi tıklayın. Listede yeni hizmet hesabınızı görmelisiniz. Hizmet hesabı e-postasının yanındaki Erişim izni ver seçeneğine tıklayın.
Bu kullanıcı için bir rol seçin'in altında Finans'ı seçin ve Kullanıcı ekle'yi tıklayın.
Artık hizmet hesabınızı kurdunuz ve makbuz doğrulamalarını gerçekleştirmek için gerekli tüm erişime sahip. Sırada, JWT'nizi bir access_token ile değiştirmek.
access_token
Değişim bir saat kadar bazı sunucu kodu bu işlemek için ve Google (geniş kapsamlı değil liste) Bu işlemek için birçok dilde birkaç kütüphaneleri sağladık gerek sonra sona erer:
Bu kütüphaneleri kullanma konusunda belgelerin bol çünkü detaylı girmeyeceğim, ama kullanmak istediğiniz bahsedilecek https://www.googleapis.com/auth/androidpublisher
, OAuth2 kapsamı gibi client_email
JWT'de itibaren issuer
ve genel anahtar adreslerden alabilirsiniz private_key
ve için parola notasecret
kullanılacaktır signing_key
.
Bir kez access_token
size (Yukarıdaki paragrafta aynı işlem aşağıdaki yenisini talep etmek istiyorum noktadaki sonraki saat için en az) gitmek olman iyi.
Bir sarf malzemesi (otomatik yenilenmeyen) satın alma işleminin durumunu kontrol etmek için aşağıdakilere bir http get
talebinde bulunun :https://www.googleapis.com/androidpublisher/v2/applications/com.example.app/purchases/products/exampleSku/tokens/rojeslcdyyiapnqcynkjyyjh?access_token=your_access_token
200 http yanıt kodu alırsanız, her şey planlandığı gibi gitti ve satın alma işleminiz geçerli oldu. 404, jetonunuzun geçersiz olduğu anlamına gelir, bu nedenle satın alma işlemi büyük olasılıkla bir sahtekarlık girişimidir. 401, erişim jetonunuzun geçersiz olduğu anlamına gelir ve 403, hizmet hesabınızın yetersiz erişime sahip olduğu anlamına gelir ; Google Play Geliştirici konsolunda erişim hesabı için Finans'ı etkinleştirip etkinleştirmediğinizi kontrol edin .
200'den gelen yanıt şuna benzer görünecektir:
{
"kind": "androidpublisher#productPurchase",
"purchaseTimeMillis": long,
"purchaseState": integer,
"consumptionState": integer,
"developerPayload": string
}
Her bir özelliğin açıklaması için https://developers.google.com/android-publisher/api-ref/purchases/products adresine bakın .
Abonelikler benzerdir ancak uç nokta şuna benzer:
https://www.googleapis.com/androidpublisher/v2/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token?access_token=you_access_token
Ve yanıt şu özellikleri içermelidir:
{
"kind": "androidpublisher#subscriptionPurchase",
"startTimeMillis": long,
"expiryTimeMillis": long,
"autoRenewing": boolean
}
Bkz https://developers.google.com/android-publisher/api-ref/purchases/subscriptions mülkiyet açıklamaları ve not için startTimeMillis
ve expiryTimeMillis
söz konusu abonelik süresine bağlı olarak değiştirmek olacaktır.
Mutlu onaylar!