Tek seferlik satın alma yaşam döngüsü

Tek seferlik satın alınan ürünlerin yaşam döngüsü, abonelik ürünlerine göre daha basittir. Ancak yine de arka uçunuzun düzgün şekilde işleyebilmesi için çeşitli durumlar ve geçiş etkinlikleri vardır.

Şekil 1 Tek seferlik satın alma işlemlerinde yaşam döngüsü durumları ve geçiş etkinlikleri.

Yeni tek seferlik ürün satın alımları

Kullanıcı faturalandırma akışını tamamladıktan sonra uygulamanız, yeni satın alma işlemiyle ilgili bilgileri aşağıdaki yöntemlerden biriyle görebilir:

Yeni satın alma işlemi alındıktan sonra getPurchaseState yöntemini veya purchases.productsv2.getproductpurchasev2 in Play Developer API yöntemini kullanın.

yeni satın alma işleminin ödeme durumunu belirlemek için

Gerçek zamanlı geliştirici bildirimleri

Kullanıcı tek seferlik bir ürün satın aldığında veya satın alma işlemini iptal ettiğinde Google Play, OneTimeProductNotification mesajı gönderir. Arka uçtaki satın alma durumunuzu güncellemek için OneTimeProductNotification nesnesinde sağlanan satın alma jetonunu kullanarak purchases.productsv2.getproductpurchasev2 yöntemini çağırın. Bu yöntem, satın alma jetonu verildiğinde en son satın alma ve tüketim durumunu sağlar.

Ön sipariş karşılandığında ve satın alma durumu SATIN ALINDI olarak değiştiğinde istemcinize bir RTDN gönderilir. RTDN'yi aldıktan sonra, ön sipariş satın alma işlemini Tek seferlik ürün satın alma işlemlerini arka uçta işleme başlıklı makalede açıklandığı şekilde işleyin.

İşlemle ilgili RTDN'leri güvenli arka uçta işlemelisiniz.

Tamamlanan işlemleri yönetme

Kullanıcı tek seferlik bir ürün satın alma işlemini tamamladığında Google Play, OneTimeProductNotification türünde bir ONE_TIME_PRODUCT_PURCHASED mesajı gönderir. Bu RTDN'yi aldığınızda, satın alma işlemini Arka uçta tek seferlik ürün satın alma işlemlerini işleme başlıklı makalede açıklandığı şekilde yapın.

İptal edilen işlemleri ele alma

Tek seferlik ürün satın alma işlemi iptal edildiğinde, anlık geliştirici bildirimleri alacak şekilde yapılandırdıysanız Google Play, OneTimeProductNotification türünde bir ONE_TIME_PRODUCT_CANCELED mesaj gönderir. Örneğin, kullanıcının ödemeyi gerekli süre içinde tamamlamaması veya satın alma işleminin geliştirici ya da müşteri isteği üzerine iptal edilmesi bu duruma neden olabilir. Arka uç sunucunuz bu bildirimi aldığında en son satın alma durumunu almak için purchases.productsv2.getproductpurchasev2 yöntemini çağırın, ardından kullanıcı hakları da dahil olmak üzere arka ucunuzu buna göre güncelleyin.

Purchased durumundaki tek seferlik ürün satın alma işlemi için geri ödeme yapılırsa Voided Purchases API kullanılarak da bilgilendirilirsiniz.

Arka uçta tek seferlik ürün satın alma işlemlerini işleme

ONE_TIME_PRODUCT_PURCHASED RTDN kullanarak yeni bir satın alma işlemi tespit ettiyseniz veya uygulamanızın onResume() yönteminde PurchasesUpdatedListener ya da satın alma işlemlerini manuel olarak getirerek uygulama içinde bilgilendirildiyseniz yeni satın alma işlemini gerçekleştirmeniz gerekir. Daha iyi güvenlik için satın alma işlemlerini arka uçta yapmanızı öneririz.

Yeni bir tek seferlik satın alma işlemini işlemek için aşağıdaki adımları uygulayın:

  1. En son tek seferlik ürün satın alma durumunu almak için purchases.productsv2.getproductpurchasev2 uç noktasını sorgulayın. Bu yöntemi bir satın alma işlemi için çağırmak üzere uygulamanızdan veya ONE_TIME_PRODUCT_PURCHASED RTDN'den ilgili purchaseToken değerini almanız gerekir.
  2. getPurchaseState() numaralı telefonu arayın ve satın alma durumunun PURCHASED olduğundan emin olun.
  3. Satın alma işlemini doğrulayın.
  4. Kullanıcıya içeriğe erişim izni verin. Satın alma işlemiyle ilişkili kullanıcı hesabı, satın alma işlemi yapılırken setObfuscatedAccountId() kullanılarak ayarlanmışsa purchases.productsv2.getproductpurchasev2 içindeki obfuscatedExternalAccountId alanı ile tanımlanabilir.
    1. Tüketilebilir olmayan ürün satın alma işlemlerinde, purchases.products.acknowledge yöntemini çağırarak içeriğin teslim edildiğini onaylayın. acknowledgementState alanını kontrol ederek satın alma işleminin daha önce kabul edilmediğinden emin olun.
    2. Ürün tüketilebilir bir ürünse purchases.products.consume yöntemini çağırarak öğeyi tüketilmiş olarak işaretleyin. Böylece kullanıcı, ürünü tükettikten sonra tekrar satın alabilir. Bu yöntem, satın alma işlemini de onaylar.

Play Faturalandırma Kitaplığı'nda, uygulamanızdaki satın alma işlemlerini işlemenize olanak tanıyan satın alma onayı ve tüketme yöntemleri de mevcuttur. Ancak daha güvenli bir uygulama için, arka uç sisteminiz varsa işlemleri orada yapmanızı öneririz.