Yayınlanma tarihi: 2 Aralık 2020
Google Play Faturalandırma, uygulamanızın Play Store'da dijital ürün ve abonelik satmasına izin vermenin yanı sıra kataloğunuzu, fiyatlarınızı ve aboneliklerinizi yönetmenize yönelik araçlar, faydalı raporlar ve kullanıcılarınızın aşina olduğu, Play Store tarafından desteklenen bir ödeme akışı sunar. Play Store'da yayınlanan ve dijital ürün satan uygulamalar için zorunludur.
Google Play Billing API'nin kendi terminolojisi vardır ve istemci ile arka uç bileşenlerini içerir. Bu bölümde, API'nin yalnızca Dijital Ürünler API'si ve Güvenilir Web Etkinliği'nin kullanımına özel olan küçük bir kısmı ele alınmaktadır. Bir üretim uygulamasına entegre etmeden önce Google Play Faturalandırma belgelerini okuduğunuzdan ve kavramlarını anladığınızdan emin olun.
Temel akış
Play Store'da dijital ürünler sunmak için Play Store'da kataloğunuzu yapılandırın ve Play Store'u PWA'nızdan ödeme yöntemi olarak bağlayın.
Bunu Play Store arayüzünde aşağıdaki gibi yapabilirsiniz:
- Play Console menüsünde Ürünler'i tıklayın. Mevcut uygulama içi ürünlerinizi ve aboneliklerinizi görüntüleyin.
- Yeni bir ürün eklemek için Ürün oluştur'u tıklayın.
- Ürün kimliği, ad, açıklama ve fiyat ekleyin. Daha sonra ihtiyacınız olacağından anlamlı ve akılda kalıcı ürün kimlikleri oluşturun. Kimlikler oluşturulduktan sonra değiştirilemez.
- Abonelik oluşturuyorsanız faturalandırma dönemi de belirtmeniz gerekir. Abonelik avantajlarınızı listeleyebilir ve ücretsiz deneme, tanıtım fiyatı, ek süre ve yeniden abone olma seçeneği gibi özellikler ekleyebilirsiniz.
- Ürünü kullanıma sunmak için Etkinleştir'i tıklayın.
Dilerseniz ürünlerinizi Play Developers API ile de ekleyebilirsiniz.
Kataloğunuz yapılandırıldıktan sonraki adım, ödeme akışını PWA'dan yapılandırmaktır. Digital Goods API ve Payment Request API'yi birlikte kullanın.
Digital Goods API ile ürün fiyatı getirme
Google Play Faturalandırma'yı kullanırken kullanıcılara gösterilen fiyatın, mağaza girişindeki fiyatla eşleştiğinden emin olun. Bu fiyatları manuel olarak senkronize etmek imkansız olduğundan Digital Goods API, web uygulamasının fiyatlar için temel ödeme sağlayıcıyı sorgulamasına olanak tanır:
// The SKU for the product, as defined in the Play Store interface
async function populatePrice(sku) {
try {
// Check if the Digital Goods API is supported by the browser.
if (window.getDigitalGoodsService) {
// The Digital Goods API can be supported by other Payments provider.
// In this case, we're retrieving the Google Play Billing provider.
const service =
await window.getDigitalGoodsService("https://play.google.com/billing");
// Fetch product details using the `getDetails()` method.
const details = await service.getDetails([sku]);
if (details.length === 0) {
console.log(`Could not get SKU: "${sku}".`);
return false;
}
// The details contain both the price and the currenncy.
item = details[0];
const value = item.price.value;
const currency = item.price.currency;
const formattedPrice = new Intl.NumberFormat(navigator.language, {
style: 'currency', currency: currency }).format(value);
// Display the price to the user.
document.getElementById("price").innerHTML = formattedPrice;
} else {
console.error("Could not get price for SKU \"" + sku + "\".");
}
} catch (error) {
console.log(error);
}
return false;
}
getDigitalGoodsService()
öğesinin window
nesnesinde olup olmadığını kontrol ederek Digital Goods API desteğini tespit edebilirsiniz.
Ardından, Google Play Faturalandırma kimliğini parametre olarak kullanarak window.getDigitalGoodsService()
işlevini çağırın.
Bu işlem, Google Play Faturalandırma için bir hizmet örneği döndürür. Diğer tedarikçiler, Dijital Ürünler API'si için destek uygulayabilir ve farklı tanımlayıcılara sahip olabilir.
Son olarak, Google Play Faturalandırma nesnesine referans vererek getDetails()
'ü çağırın ve öğenin SKU'sunu parametre olarak iletin. Yöntem, kullanıcıya gösterilebilecek öğenin hem fiyatını hem de para birimini içeren bir ayrıntı nesnesi döndürür.
Satın alma akışını başlatma
Payment Request API, web'de satın alma işlemlerini sağlar ve Google Play Faturalandırma entegrasyonu için de kullanılır. PaymentRequest API'de yeniyseniz daha fazla bilgi edinmek için PaymentRequest API'nin İşleyiş Şekli başlıklı makaleyi inceleyin.
API'yi Google Play Faturalandırma ile kullanmak için https://play.google.com/billing
adlı desteklenen bir yönteme sahip bir ödeme aracı eklemeniz gerekir.
SKU'yu cihaza ait verilerin bir parçası olarak ekleyin:
const supportedInstruments = [{
supportedMethods: "https://play.google.com/billing",
data: {
sku: sku
}
}];
Ardından, her zamanki gibi bir PaymentRequest
nesnesi oluşturun ve API'yi her zamanki gibi kullanın.
const request = new PaymentRequest(supportedInstruments, details);
Satın alma işlemini onaylama
İşlem tamamlandığında ödemeyi onaylamak için Digital Goods API'yi kullanın. PaymentRequest
kaynağından gelen yanıt nesnesi, işlemi onaylamak için kullanabileceğiniz bir jeton içerir:
const response = await request.show();
const token = response.details.token;
const service = await window.getDigitalGoodsService("https://play.google.com/billing");
await service.acknowledge(token, 'onetime');
Dijital Ürünler API'si ve Ödeme İsteği API'si, kullanıcının kimliği hakkında bilgi sahibi değildir. Sonuç olarak, satın almayı arka ucunuzda kullanıcıyla ilişkilendirmek ve satın alınan öğelere erişebildiğinden emin olmak size kalmıştır. Satın alma işlemini bir kullanıcıyla ilişkilendirirken satın alma jetonunu kaydetmeyi unutmayın. Satın alma işleminin iptal edilip edilmediğini veya geri ödeme yapılıp yapılmadığını ya da aboneliğin hâlâ etkin olup olmadığını doğrulamak için bu jetona ihtiyacınız olabilir. Bu destek kayıtlarını arka uçta işlemek için uç noktalar sağlayan Real Time Developer Notifications API ve Google Play Developer API'ye göz atın.
Mevcut haklarınızı kontrol etme
Kullanıcı, promosyon kodu kullanmış veya ürününüze abone olmuş olabilir. Kullanıcının uygun izinlere sahip olduğunu doğrulamak için dijital ürün hizmetinde listPurchases()
komutunu çağırabilirsiniz. Bu, müşterinizin uygulamanızda yaptığı tüm satın alma işlemlerini döndürür. Ayrıca, kullanıcının haklarından doğru şekilde yararlanmasını sağlamak için onaylanmamış satın alma işlemlerini onaylamak için de bu yöntemi kullanabilirsiniz.
const purchases = await itemService.listPurchases();
for (p of purchases) {
if (!p.acknowledged) {
await itemService.acknowledge(p.purchaseToken, 'onetime');
}
}