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

Tek seferlik satın alma ürünleri, abonelik ürünlerine kıyasla daha basit bir yaşam döngüsüne sahiptir. Ancak arka uç sunucunuzun düzgün bir şekilde işleyebilmesi için birkaç durum ve geçiş etkinliği vardır.

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

Yeni tek seferlik ürün satın alma işlemleri

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şlemini aldıktan sonra, getPurchaseState yöntemini veya purchases.products.get in Play Developer API yöntemini kullanarak yeni satın alma işleminin ödeme durumunu belirleyin.

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 bir OneTimeProductNotification mesajı gönderir. Arka uç satın alma durumunuzu güncellemek için purchases.products.get yöntemini çağırmak üzere OneTimeProductNotification nesnesinde sağlanan satın alma jetonunu kullanın. Bu yöntem, bir satın alma jetonu verildiğinde en son satın alma ve tüketim durumunu sağlar.

Bir ön sipariş karşılandığında ve satın alma durumu SATIN ALINDI olarak değiştiğinde müşterinize bir RTDN gönderilir. RTDN'yi aldıktan sonra, ön sipariş satın alma işlemini Arka uçta tek seferlik ürün satın alma işlemlerini işleme bölümünde açıklandığı şekilde gerçekleştirin.

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

Tamamlanan işlemleri işleme

Kullanıcı tek seferlik bir ürün satın alma işlemini tamamladığında Google Play, ONE_TIME_PRODUCT_PURCHASED türünü içeren bir OneTimeProductNotification 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 bölümünde açıklandığı şekilde işleyin.

İptal edilen işlemleri işleme

Tek seferlik ürün satın alma işlemi iptal edildiğinde, anlık geliştirici bildirimleri almayı yapılandırdıysanız Google Play, ONE_TIME_PRODUCT_CANCELED türünü içeren bir OneTimeProductNotification mesajı gönderir. Örneğin, kullanıcı ödemeyi gerekli zaman aralığı içinde tamamlamazsa veya satın alma işlemi geliştirici tarafından ya da müşterinin isteği üzerine iptal edilirse bu durumla karşılaşılabilir. Arka uç sunucunuz bu bildirimi aldığında, en son satın alma durumunu almak için purchases.products.get yöntemini çağırın, ardından kullanıcı hakları da dahil olmak üzere arka uç sunucunuzu buna göre güncelleyin.

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

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

ONE_TIME_PRODUCT_PURCHASED RTDN aracılığıyla yeni bir satın alma işlemi algıladıysanız veya uygulama içi PurchasesUpdatedListener aracılığıyla bilgilendirildiyseniz ya da uygulamanızın onResume() yönteminde satın alma işlemlerini manuel olarak getirdiyseniz yeni satın alma işlemini işlemeniz gerekir. Daha iyi güvenlik için satın alma işlemlerini arka uçta gerçekleştirmenizi öneririz.

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

  1. Tek seferlik ürün satın alma işleminin son durumunu almak için purchases.products.get uç noktasını sorgulayın. Bir satın alma işlemi için bu yöntemi çağırmak üzere uygulamanızdan veya ONE_TIME_PRODUCT_PURCHASED RTDN'den ilgili purchaseToken'ye ihtiyacınız vardır.
  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 sırasında setObfuscatedAccountId() kullanılarak ayarlanmışsa purchases.products.get'taki obfuscatedExternalAccountId alanıyla 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üketim amaçlıysa kullanıcının ürünü tükettikten sonra tekrar satın alabilmesi için purchases.products.consume yöntemini çağırarak öğeyi tüketilen olarak işaretleyin. Bu yöntem, satın alma işlemini de onaylar.

Play Faturalandırma Kitaplığı'nda, uygulamanızdan satın alma işlemlerini işlemenize olanak tanıyan satın alma onayı ve tüketim yöntemleri de vardır. Ancak daha güvenli bir uygulama için işleme işlemini arka uçta (varsa) gerçekleştirmenizi öneririz.