Abonelik yaşam döngüsü

Abonelik satın alma işlemleri, süreleri boyunca birkaç farklı durumda gerçekleşebilir. otomatik yenileme davranışı, ödeme ve ödeme gibi birçok faktöre bağlı olarak durumları ve geliştirici yönetimi işlemlerini reddediyor.

Otomatik yenilenen aboneliklerin yaşam döngüsünü yönetme

Bir kullanıcının abonelik durumu değiştiğinde arka uç sunucunuz bir SubscriptionNotification mesaj

Şekil 1. Şu kampanya için yaşam döngüsü durumları ve geçiş etkinlikleri: otomatik yenilenen abonelik satın alma işlemleri.

Arka ucunuzdaki durumu güncellemek için purchases.subscriptionsv2.get Bildirimde satın alma jetonu bulunan API. Bu uç nokta, satın alma jetonu verilen en son abonelik durumudur ve veri kaynağı olarak kullanılır.

Satın alma jetonu, abonelik kaydından itibaren 60 gün sonrasına kadar geçerlidir. sona erecektir. Bu tarihten sonra satın alma jetonu şu amaçlarla kullanılamayacaktır: Google Play Geliştirici API'sine çağrıda bulunun.

Otomatik yenilenen yeni abonelik satın alma işlemleri

Kullanıcı bir abonelik satın aldığında, SubscriptionNotification RTDN istemcinize SUBSCRIPTION_PURCHASED türü gönderildi. Android'den veya üzerinden yeni bir uygulama içi satın alma işlemi kaydederseniz PurchasesUpdatedListener veya satın alma işlemlerini manuel olarak getirmek onResume() yöntemini kullanıyorsanız yeni satın alma işlemini güvenli arka uçta olması gerekir. Bunu yapmak için şu adımları uygulayın:

  1. Sorgu purchases.subscriptionsv2.get abonelik almak için uç nokta kaynak ifadesini görürsünüz.
  2. subscriptionState alanı SUBSCRIPTION_STATE_ACTIVE olarak belirlenmiştir.
  3. Satın alma işlemini doğrulayın.
  4. Kullanıcıya içeriğe erişim izni verin. satın alma işlemi, ExternalAccountIdentifiers satın alma sırasında tanımlayıcılar ayarlanmışsa abonelik kaynağından gelen nesne kullanma süresi setObfuscatedAccountId ve setObfuscatedProfileId.
ziyaret edin.

Play Faturalandırma Kitaplığı'nda abonelikleri onaylama yöntemi de vardır. acknowledgePurchase() onay durumunu kontrol etmek için bir yöntem olan isAcknowledged(). Bununla birlikte, satın alma işlemlerini aşağıdakiler için arka ucunuzda gerçekleştirmenizi öneririz: daha iyi güvenlik

Yeni satın alma işlemleri için abonelik kaynağı aşağıdakine benzer: örnek:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  "startTime": "2022-04-22T18:39:58.270Z",
  "regionCode": "US",
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "latestOrderId": "GPA.3333-4137-0319-36762",
  "acknowledgementState": "ACKNOWLEDGEMENT_STATE_PENDING", // need to acknowledge new purchases
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ],
}

Abonelik yenilemeleri

Taksitsiz, otomatik yenilenen aboneliklerde SUBSCRIPTION_RENEWED bildirim, abonelik yenilendiğinde gönderilir. Taksitli abonelik satın aldığınızda bir SUBSCRIPTION_RENEWED bildirimi her abonelik, fatura tarihinde alınır. Kullanıcının hâlâ almaya hak kazanacak, daha sonra da abonelik durumunu yeni abonelikte expiryTime sağlandı Google Play'den döndürülen kaynak Geliştirici API'sı. Abonelik kaynağı aşağıdaki örneğe benzer:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  "startTime": "2022-04-22T18:39:58.270Z",
  "regionCode": "US",
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "latestOrderId": "GPA.3333-4137-0319-36762",
  "acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ]
}

Abonelik yenilemelerini onaylamanız gerekmez.

Ek süre

Abonelik yenilemeyle ilgili ödeme sorunları olursa Google, başlar ve abonelik yenileme işlemini denemeden önce belirli bir süre boyunca aboneliğin süresi dolar. Kurtarma süresi ek süreden oluşabilir ardından hesabı askıya alma süresi gelir. Ek süre boyunca kullanıcı abonelikten yararlanma hakkına erişmeye devam edebilir.

İlgili içeriği oluşturmak için kullanılan queryPurchasesAsync() yöntemi, ek süre içindeki satın alma işlemlerini iade etmeye devam eder. Uygulamanız bir kullanıcının hak kazanıp kazanmadığını kontrol etmek için yalnızca queryPurchasesAsync aboneliğiniz varsa uygulamanız ek süreleri otomatik olarak işler. bu abonelikler Play Faturalandırma Kitaplığı'nda etkin olarak gösterilir.

Abonelik durumunu arka ucunuzla senkronize ederek daha bilinçli istemeyerek yapılan ödemeleri azaltmaya çalışırken size daha fazla bilgi müşteri kaybetmez. Şunu dinle: SubscriptionNotification ileti Kullanıcı bir anahtar kelime girişi yaptığında bildirim almak için SUBSCRIPTION_IN_GRACE_PERIOD türünde ek süre verin. Kullanıcı ek süredayken abonelik kaynak autoRenewEnabled = true değerini içerir. Google Play, Yararlanma hakkı nedeniyle ek süre sona erene kadar expiryTime değeri kullanıcı iptal edene veya abonelik için verilen ek süre sona erene kadar sürmelidir uzunluk olmalıdır. Bu dönemde subscriptionState alanının değeri: SUBSCRIPTION_STATE_IN_GRACE_PERIOD. Abonelik kaynağı şuna benzer: aşağıdaki örneği inceleyin:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_IN_GRACE_PERIOD",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_future,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ],
}

Play, ek süre içinde olan kullanıcılara ödemelerinin reddedildiğini bildirir ve Play Store'daki ödeme yöntemi sorunlarını düzeltmelerini istiyor. Bir bir ek süre verirse kullanıcıyı, güvenlik açığını düzeltme ödeme yöntemini kullanmasını isteyin. Çevik yaklaşımın Uygulama İçi Mesajlaşma API. Bu API'yi çağırırsanız Kullanıcı uygulamanızı açtığında geçici bir süre içinde bir Play mesajı kullanıcıya ödemesinin reddedildiğini bildiren atıştırmalık çubuğu. Bu mesaj ayrıca kullanıcının Google'daki ödeme yöntemini düzeltmesi için bir derin bağlantı da içerir Oyna.

Kullanıcı ödeme yöntemini düzelttikten hemen sonra abonelik, yenileme işlemini gerçekleştirebilir ve yenileme işlemini şurada açıklandığı şekilde gerçekleştirebilirsiniz: Yenilemeler.

Kullanıcı, ek süre içinde ödeme yöntemini düzeltmezse Abonelik hesabı askıya alır ve yararlanma hakkını kaybeder.

Ek süre erişimi ve kurtarma

Şekil 2'de ek süreye giren bir aboneliğin zaman çizelgesi gösterilmektedir. Ardından kullanıcı, ödeme yöntemini düzelttiğinde düzeltilir. Ek sürenin ardından kullanıcının abonelik avantajlarını kaybetmesi ve hesabı askıya alma işlemi uygulanması gerekir.

Şekil 2. Ek süreye geçen aboneliğin zaman çizelgesi sona erecektir.

Aşağıdaki noktaları göz önünde bulundurmak önemlidir:

  • Kullanıcı, ek süre boyunca abonelik avantajlarına erişmeye devam etmelidir.
  • Bir abonelik, ek süre içinde kurtarılırsa yenileme tarihi sıfırlanmaz.
  • Ek süreyi, örneğin, 7 günden 14 güne çıkarırsanız, ek süre verilen kullanıcılar abonelik avantajlarına daha uzun süre erişebilir.
  • Ek süreyi kısaltırsanız eski ek süreye yeterince açık olan kullanıcılar aboneliğin avantajlarından yararlanabilmeniz için yeni ek süreyi aşmanız gerekecektir. derhal iptal edilir. Örneğin, 14 ila 7 gün arasında, eski ek sürenin 8-14. günlerindeki kullanıcılar abonelik avantajları hemen iptal edilir.
  • Abonelik etkin durumda kalır ve ek süre almazsınız. sessiz ek süre sona erene kadar süre RTDN

Sessiz ek yayınlanma süresi

0 günlük ek süre belirleyebilirsiniz ancak Play'in bu süreyi tamamlamak için en az 1 gün beklemesi gerekir Ödemenin yeniden denenmesi için yeterli süre tanıyın. Bu sessiz ek süre, ödeme işlemi için güvenli netlik. Bu 24 saatlik süre içinde abonelik ACTIVE durumu.

Abonelik durumu değişikliklerine uyum sağlamanın en iyi yolu, gerçek zamanlı geliştirici bildirimlerini (RTDN) dinleyip bunlara tepki verebilirsiniz. Şunu çağırın: purchases.subscriptionsv2.get() daha doğru sonuçlar elde etmek için son kullanma zamanı yerine RTDN abonelik durumu.

24 saatlik sessiz ek sürenin ardından abonelik durumuna bağlı olarak aşağıdaki bildirimlerden birini alırsınız:

  • SUBSCRIPTION_ON_HOLD (etkinse)
  • SUBSCRIPTION_CANCELED (iptal edildiyse)
  • SUBSCRIPTION_EXPIRED (süresi dolduysa)
  • SUBSCRIPTION_RENEWED (başarıyla yenilendiyse)

Ayrıca, subscriptionV2.get() yöntemini çağırabilirsiniz. Aboneliğin son durumunu öğrenmek için 24 saatlik sessiz ek süre.

Hesabı askıya alma

Abonelik yenilemesiyle ilgili ödeme sorunu olursa herhangi bir ek süre dolduktan sonra süre sona erdiğinde, hesap askıya alma dönemi başlar. Bir abonelik hesabı beklemeye alınırsa, aboneliğe erişimi engellemeniz gerekir hak.

Hesabı askıya alma sırasında tüm iptalleri işlemeye devam etmeniz gerekir. yenilemeler veya aboneliklerinizi yeniden satın almanız, Çünkü kullanıcı abonelik sırasında bu değişiklikleri yapabilir. beklemede.

RTDN'ler, kullanıcı hesabı askıya alma süresine girdiğinde sizi bilgilendirir. Böylece, Abonelik erişimlerinin neden askıya alındığını mümkün olan en kısa sürede bildirmeyi unutmayın. Bunu yapmanın en kolay yolu Uygulama İçi Mesajlaşma API. Bu API şu durumlarda çağrılır: Kullanıcı uygulamayı açtığında, geçici bir atıştırmalık çubuğunda kullanıcıya bir mesaj gösterilir. kendilerine ödemesinin reddedildiğini bildirir. Bu mesajda ayrıca şunlar da bulunur: kullanıcının Google Play'de ödeme yöntemini düzeltmesi için bir derin bağlantı.

Kullanıcılarınız uygulamanızın dışından abonelik içeriğine erişebiliyorsa farklı platformlara erişimi kaybettiklerini fark edebilirler. Birlikte çalıştığınız kullanıcıya push bildirimi veya e-posta göndererek Ödeme reddedildiği için abonelik artık etkin değil.

Abonelik, queryPurchasesAsync() (ör. uygulamanız, hesabınızı askıya alma işlemi sırasında bu yöntemden yararlanıyorsa) mevcut satın alma işlemleri için varsayılan olarak hesabı askıya alma özelliğini desteklemeniz gerekir.

Gerçek zamanlı geliştirici ile bildirim aldığınızda SubscriptionNotification mesaj bir abonelik hesabı askıya aldığında SUBSCRIPTION_ON_HOLD türünde. Telefonla arama "the" purchases.subscriptionsv2.get yöntemini kullanarak yeni aboneliği almak için güvenli arka uç sunucunuzdan ekleyebilirsiniz. Hesap sırasında aboneliğin expiryTime alanını bekleyin kaynak geçmiş bir zaman damgasına, subscriptionState alanı SUBSCRIPTION_STATE_ON_HOLD:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ON_HOLD",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_past,
      ...
    }
  ],
}

Tekrar erişim vermek için kullanıcıların ödeme yöntemlerini düzeltmesi gerekir. Play, kullanıcıları reddedilen ödemeye ilişkin bir sorun olduğunu unutmayın. Ayrıca, hesap genelinde ödeme yöntemi.

Kullanıcı ödeme yöntemini düzelttikten sonra abonelik etkin durumuna geri döner. sonra da abone olduğunuz içeriğe yeniden erişim sağlamanız gerekir. Böyle durumlarda satın alma jetonu, hesabı askıya alma işlemi başlatılmadan öncekiyle aynıdır çünkü kurtarılıyorsa ve şu türde bir RTDN alırsınız: SUBSCRIPTION_RECOVERED

Taksitli aboneliklerde, ödemelerin reddedilmesi ve geri kazanılması tek tek ödeme girişimleri.

Kurtarma işleminden sonra Play Faturalandırma Kitaplığı, aboneliği queryPurchasesAsync() yöntemi. Bu yöntemi, bir testin bir kullanıcının abonelik hakkı varsa uygulamanız bunu otomatik olarak hesabı askıya alma durumundan kurtarılan abonelik.

Şu sesi dinleyin: SubscriptionNotification mesaj bir abonelik olduğunda bilgilendirilmek için SUBSCRIPTION_RECOVERED türünde kullanıcı kurtarılır ve kullanıcı yeniden erişim kazanır. Abonelik sorguları Bu bildirimi aldıktan sonra expiryTime alanı bir zaman damgasına ayarlanır gelecekte ve subscriptionState alanı SUBSCRIPTION_STATE_ACTIVE tekrar:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      ...
    }
  ],
}

Kullanıcı, hesap askıya alma süresi sona ermeden önce ödeme yöntemini düzeltmezse yerine SUBSCRIPTION_CANCELED türünde bir RTDN alırsınız. Örneğin, İptal işlemiyle ilgili talimatlar için İptaller bölümüne bakın. Google Takvim widget'ını bu şekilde iptal edilen bir abonelik için aynı işlemi uyguladıysanız, expiryTime alanı geçmiş bir zaman damgasına ayarlanmış:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_past,
      ...
    }
  ],
}

Hesabı askıya alma işlemi sırasında iptal işlemiyle ilgili bilgilendirilmenizin hemen ardından, kullanıcı da SUBSCRIPTION_EXPIRED türünde bir RTDN alır İptal işlemiyle birlikte abonelik iptal edildi. Bu geçerlilik bitiş tarihini her zamanki gibi kullanabilirsiniz.

Kullanıcı aynı abonelik planını veya herhangi bir abonelik planını yeniden satın alarak hesabının askıya alındığı süre boyunca uygulama üzerinden sunduğunuz diğer plan satın alma işlemi gerçekleştirmeleridir. Bu durumda yeni bir satın alma jetonu verilir ve yeni değer, şunu içeren bir SUBSCRIPTION_PURCHASED etkinliğinin parçası olarak döndürülür: bu yeni örneği temsil eder.

Hesabı askıya alma erişimi ve kurtarma

Şekil 3'te, hesap askıya alma kapsamına giren bir aboneliğin zaman çizelgesi gösterilmektedir. Ardından kullanıcı, ödeme yöntemini düzelttiğinde düzeltilir.

Şekil 3. . askıya alınır ve sona ermeden önce kurtarılır.

Önceki örneğe benzer şekilde, Şekil 4'te bir abonelik için zaman çizelgesi gösterilmektedir hesabı askıya alma işlemine başlamadan önce ek süre tanınan, beklemeye alındığında kurtarır.

Şekil 4. Ek süreye geçen aboneliğin zaman çizelgesi dönem, ardından hesabı askıya alma moduna girer ve son olarak hesabın geri kalanından önce muhafaza sona eriyor.

Aşağıdaki noktaları göz önünde bulundurmak önemlidir:

  • Bir abonelik hesabı askıya alınmadan önce Google Play, Ödeme yönteminden 48 saate kadar ödeme almaya çalışır. Kullanıcı yararlanabileceği anlamına gelir. Bu yeniden deneme süresi geçtikten sonra Abonelik, hesabı askıya alınır. Kullanıcı, hesabı askıya alır. abonelik avantajlarına erişebilirsiniz.
  • Abonelik, abonelik esnasında doğrudan askıya alınır. hatalı bir ödeme şekliyle duraklatılmış durumdan devam eder.
  • Askıya alınmış hesap durumu sona erdiğinde abonelik yenileme tarihi sıfırlanır.

Süre sonları

Bir abonelik süresi dolduğunda kullanıcının aboneliğe erişimini kaybetmesi gerekir. CEVAP SUBSCRIPTION_EXPIRED türünde SubscriptionNotification mesaj gönderildi gerekir. Bu bildirimi aldığınızda Google Play Geliştirici En son aboneliği alma API'si öğrenin. subscriptionState için SUBSCRIPTION_STATE_EXPIRED olduğunu onayladıktan sonra, ve satın alma durumunu; arka uçta olması gerekir. Abonelik kaynağı aşağıdaki örneğe benzer:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": expiration_time_in_past,
      ...
    }
  ],
}

İptal sayısı

Kullanıcılar bir aboneliği Play abonelik merkezinden gönüllü olarak iptal edebilir veya abonelikten daha sonra kurtarılmazsa aboneliklerinin otomatik olarak iptal edilmesini Hesabı askıya alma durumunda. Ayrıca geliştiriciler, şununla iptal: purchases.subscriptions.cancel Bir abonelik iptal edildiğinde kullanıcı, Geçerli faturalandırma döneminin sonundan itibaren Faturalandırma dönemi sona erdiğinde, iptal edilir.

Taksitsiz, otomatik yenilenen bir aboneliğin iptal edilmesi şu işlemi tetikler: SUBSCRIPTION_CANCELED bildirim. Zaman bu bildirimi alırsanız abonelik kaynak Google Play Geliştirici API'sinden döndürülen veriler subscriptionState alanına sahiptir SUBSCRIPTION_STATE_CANCELED olarak ayarlanır ve expiryTime alanı, Kullanıcının aboneliğe erişimini kaybetmesi gereken tarih. Bu tarih Kullanıcı, yararlanma hakkını hemen kaybeder. Tüm bu riskler, Örneğin, bir kullanıcı hesaptayken aboneliğini iptal ederse Ödemenin reddedilmesi nedeniyle beklemeye alınır.

İptal edilen bir satın alma işleminin abonelik kaynağı aşağıdakine benzer örnek:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": expiration_time,
      ...
    }
  ],
}

Taksitli aboneliklerde SUBSCRIPTION_CANCELLATION_SCHEDULED Kullanıcı tarafından başlatılan iptal durumunda, ödemeler ödeme yapmaya devam ettiğinde bildirim gönderilir taahhüt süresi boyunca devam eder. İptal işlemi beklemededir ve şu tarihte geçerli olacaktır: mevcut taahhüt süresinin sonunda Bu bildirimi aldığınızda Google Play Developer API'den döndürülen abonelik kaynağında, subscriptionState alanı SUBSCRIPTION_STATE_ACTIVE olarak ayarlanır, çünkü Taksitli abonelik, taahhüt süresinin sonuna kadar etkin olmaya devam eder. Ancak bekleyen boş bir İptal nesnesi var. Bir SUBSCRIPTION_CANCELED bildirimi ve ardından bir Taahhüt döneminin sonunda SUBSCRIPTION_EXPIRED.

Şu taksitli abonelik satın alma işlemi için abonelik kaynağı: bekleyen iptal işlemi aşağıdaki örneğe benzer:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_plan01",
      "expiryTime": expiration_time,
      "autoRenewingPlan": {
        "autoRenewEnabled": true,
        "recurringPrice": {
          "currencyCode": "USD",
          "units": "1",
          "nanos": 990000000
        },
        "installmentDetails": {
          "initialCommittedPaymentsCount": 6,
          "remainingCommittedPaymentsCount": 5,
          "pendingCancellation": {}
      ...
        }
      }
    }
  ],
}

Aşağıdaki işlemleri yapmak için abonelik kaynağındaki canceledStateContext alanına bakabilirsiniz: aboneliğin neden iptal edildiğini (örneğin, aboneliğin kullanıcı, sistem veya sizin tarafınızdan iptal edilmiştir). Abonelik kullanıcı tarafından iptal edildiyse userInitiatedCancellation alanına bakarak Kullanıcının aboneliği neden iptal ettiğini öğrenme. Bu sayede ekip arkadaşlarınız stratejileri.

Bir abonelik iptal edilmiş ancak henüz süresi dolmamışsa, abonelik iptal edilir. hâlâ şuradan iade edildi: queryPurchasesAsync(). Uygulamanızda, kullanıcıya, açılış sayfanızı veya oyununuzu ve son kullanma tarihi verildi.

İptal sayısı

Abonelik, arka ucunuz da dahil olmak üzere çeşitli nedenlerle iptal edilebilir. aboneliği iptal etmek için purchases.subscriptionsv2.revoke geri ödeme alınır. Bu durumda, gerektiğini lütfen unutmayın. Türü olarak bir SubscriptionNotification mesajı Bu durumda SUBSCRIPTION_REVOKED gönderilir. Bunu aldığınızda bildirimi, abonelik kaynak Google Play Geliştirici API'sinden döndürülen veriler subscriptionState alanına sahiptir SUBSCRIPTION_STATE_EXPIRED olarak ayarlandı.

İptal edilen bir satın alma işlemine ilişkin abonelik kaynağı aşağıdakine benzer: örnek:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": expiration_time,
      ...
    }
  ]
}

Ertelenen abonelikler

Bir kullanıcının arama süresini uzatmak istemenizin çeşitli hak. Örneğin, kullanıcılara özel bir değer olarak ücretsiz erişim promosyon (ör. film satın alma karşılığında bir hafta ücretsiz yararlanma iyi niyetinizi göstermek için müşterilere erişmektir. URL parametrelerinin Google tarafından nasıl ele alınmasını istediğinizi belirtmek için purchases.subscriptions.defer ödeme yöntemini kullanarak bir sonraki faturalandırma tarihini otomatik yenilenen abonelik. Bunu yaptığınızda bir SubscriptionNotification SUBSCRIPTION_DEFERRED türünde mesaj gönderildi. Erteleme döneminde, Kullanıcı, içeriğinize tam erişimle abone olur ancak sizden ödeme alınmaz. İlgili içeriği oluşturmak için kullanılan Abonelik yenileme tarihi, yeni tarihi yansıtacak şekilde güncellenir.

Ön ödemeli planlarda son kullanma tarihini ertelemek için erteleme API'sini kullanabilirsiniz gerekir.

Ertelenen bir aboneliğin abonelik kaynağı şuna benzer: şu örneği inceleyin:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_future,
      ...
    }
  ],
}

Duraklatılmış abonelikler

Kullanıcıların aboneliklerini duraklatmalarına izin vererek isteğe bağlı kullanıcı kaybını azaltabilirsiniz. Duraklatma özelliğini etkinleştirdiğinizde kullanıcılar aboneliklerini duraklatmayı seçebilir bir hafta ila üç ay arasında bir süre boyunca, yinelenen dönem.

Abonelik yinelenme Haftalık Aylık Üç Ay Altı Ay Yıllık
Kullanılabilir duraklatma uzunlukları* 1 hafta
2 hafta
3 hafta
4 hafta
1 ay
2 ay
3 ay
1 ay
2 ay
3 ay
1 ay
2 ay
3 ay
Yok
*Dilediğiniz zaman değiştirilebilir.

Abonelik duraklatma işleminin geçerli olması için mevcut fatura döneminin bitmesi gerekir. Abonelik duraklatılmış durumdayken kullanıcı, ve yenileme ücretini ödemezler. Duraklamanın sonunda döneminde abonelik devam eder ve Google, aboneliği yenilemeye çalışır. Başarıyla devam ettirilen abonelikler yeniden etkinleşir. Öğe ödeme sorunu nedeniyle devam etmezse kullanıcı hesabı askıya alma durumuna girerse aşağıdaki resimler 5 ve 6'da verilmiştir:

Şekil 5. Kullanıcı durup ardından devam ettirdiğinde abonelik.
ziyaret edin.
Şekil 6. Kullanıcı, aboneliğini duraklatıp ardından giriş yapıyor. askıya alma.

Kullanıcılar, süreç boyunca istedikleri zaman aboneliklerini duraklatma süresini devre dışı bırakın. Kullanıcı manuel olarak devam ettirildiğinde faturalandırma, manuel devam ettirme tarihinin değişmesine neden olabilir.

Bir kullanıcının aboneliği duraklatıldığında Play Faturalandırma Kitaplığı geri dönmez aracılığıyla abonelik queryPurchasesAsync() yöntemidir. Abonelik devam ettirilirse queryPurchasesAsync() yöntemi tekrar döndürür.

Kullanıcılar aboneliğini duraklattığında haberdar olmak için RTDN'leri dinleyin. Bu Bildirimler ayrıca, uygulamanızda kullanıcılarınıza, e-posta ve sohbet kullanıcının aboneliğini duraklattı ve buna erişimi yok. Ayrıca, kullanıcının dilediği zaman Google Play'e derin bağlantı oluşturun.

SubscriptionNotification mesajı kullanıcı işlemi başlattığında SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED türünde gönderilir askıya alabilir. Şu anda, kullanıcı bir sonraki yenileme tarihine kadar aboneliğini ve aboneliğini kaynak autoRenewEnabled = true değerini içerir. subscriptionState alanının değeri şu anda SUBSCRIPTION_STATE_ACTIVE.

SubscriptionNotification SUBSCRIPTION_PAUSED türünde bir ileti devreye girer. Böyle bir durumda, kullanıcı abonelik ve abonelik kaynağı autoRenewEnabled = true içeriyorsa ve subscriptionState alanı SUBSCRIPTION_STATE_PAUSED olarak ayarlandı. Şunları yapabilirsiniz: aboneliğin tekrar ne zaman yenilenmesi gerektiğini öğrenmek için PausedStateContext nesnesini tanımlayın.

Şu durumda SUBSCRIPTION_RENEWED türünde bir SubscriptionNotification mesajı gönderilir: Abonelik, duraklatma süresinin sonunda otomatik olarak devam ettirilir veya kullanıcı aboneliği manuel olarak devam ettirmeyi seçerse seçilebilir. Bu ele alınmalı belirtildiği gibi Yenilemeler'de kullanılabilir.

Şu durumda SUBSCRIPTION_ON_HOLD türünde bir SubscriptionNotification mesajı gönderilir: Duraklatma sonrasında abonelik devam ettirilmeye çalışılırken bir ödeme hatası oluştu. Bu durum, Hesabı askıya alma bölümünde açıklandığı şekilde gerçekleştirilmelidir.

Yeniden abone olun

Otomatik yenilenen abonelik temel planları için Google Play Store'da Yeniden abone ol düğmesi. Bu düğme, kullanıcıların yeniden erişim elde etmesine olanak tanır bir aboneliğe dönüşür. İçerik çeşitli nedenlerle gösterilmiyor olabilir. Örneğin, uzun süre önce sona erdiğinde.

Şekil 7. Hesap > Abonelik bölümündeki Google Play Store uygulamasında bir aboneliğin iptal edildiği Yeniden abone ol düğmesi.

Düğme her zaman Yeniden abone ol olarak etiketlenmiş olsa da işlevine göre değişir. üzerine gelin.

Bir abonelik iptal edilmiş ancak süresi henüz dolmamış olsa bile kullanıcı abonelikten ve abonelik avantajlarından faydalanırlar. Kullanıcı Yeniden abone ol'a dokunursa İptal işlemi etkili bir şekilde geri alınır ve abonelik yenilenmeye devam eder. Bu işlem, Play geliştirici dokümanlarında ve API'lerinde geri yükleme olarak bilinir.

Otomatik yenilenen abonelik süresi dolduktan sonra kullanıcıların satın alma işlemi yapmasına izin verebilirsiniz. aynı abonelik temel planına sahiptir. Bu işlem, şurada yeniden abone ol olarak biliniyor: Play geliştirici belgeleri ve API'ler. Bu seçeneği yapılandırabilirsiniz. Play Console'da her temel plan için veya API'yı kullanabilirsiniz.

Süresi dolmadan önce yenile

Uygulamanız yalnızca queryPurchasesAsync() abonelik hakkı kazanıp kazanmadığını belirleyen yöntemi, ardından da kullanıcılarınızı queryPurchasesAsync() yöntemi, iptal edilen satın alma işlemlerini geçerlilik bitiş tarihlerinden önce iade etmeye devam eder. CEVAP geri yüklenen abonelik iptal edilmemiş gibi yenilenmeye devam eder.

Uygulamanız abonelik durumunu arka uçla senkronize ediyorsa SubscriptionNotification için SUBSCRIPTION_RESTARTED türünde mesaj. Bu RTDN'yi aldıktan sonra uygulamanız bildirime yanıt verebilir, aboneliğin artık olduğunu kaydedebilir yenilenecek şekilde ayarlandı ve uygulamanızda geri yükleme mesajlarını görüntülemeyi durduracak. İlgili içeriği oluşturmak için kullanılan abonelik kaynağı aşağıdaki örneğe benzer:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date
      ...
    }
  ],
}

Süre dolduktan sonra yeniden abone olma

Google Play Console veya API kullanılarak otomatik yenilenen temel plan yapılandırıldıysa Yeniden Abone Olma işlemine izin vermek için, kullanıcılar süresi dolmuş bir aboneliği Google Play Store'a gidin.

Bunlar yeni satın alma işlemleridir. Google Play yepyeni bir satın alma jetonu düzenler ve arka uç SUBSCRIPTION_PURCHASED türünde bir RTDN alır. Satın alma durumu bu uygulama dışı satın alma türü için linkedPurchaseToken içermez orijinal satın alma işlemiyle ilişkilendirilebilir, çünkü orijinal abonelik tamamen sona erdi. Bunlar, arka ucunuzun yapması gereken yeni satın alma işlemleridir diğer satın alma işlemlerinde olduğu gibi kabul edin.

Abonelik yükseltme, düşürme ve yeniden abone olma

Bir kullanıcı üst, alt sürüme veya daha sonra kaydolduğunda abonelik süresinin dolmadan önce uygulamanızdan iptal edilmesi durumunda, abonelik geçersiz kılındı ve şunun için yeni bir abonelik oluşturuldu: yeni bir satın alma jetonu ekleyebilirsiniz.

Ayrıca, abonelik kaynak Google Play Geliştirici API'sinden döndürülen bir linkedPurchaseToken kodu kullanıcının üst veya alt sürüme geçtiği eski satın alma işlemini veya yeniden abone olmanız gerekir. Bu alandaki satın alma jetonunu kullanarak eski mevcut kullanıcı hesabını tanımlayarak bu yeni hesabın aynı hesapla yapılan yeni satın alma işlemidir.

Uygulamanızda bir kullanıcıya yükseltme, düşürme veya yeniden abone olma seçenekleri sunmadan önce mevcut aboneliği kabul etmeniz gerekir. Plan değişikliği veya yeniden abone olma mevcut abonelik hâlâ onay bekliyorsa engellenir.

Kullanıcı yükseltme, düşürme veya yeniden abone olma işlemini başarıyla satın alırsa Bu, onaylamanız gereken yeni bir satın alma işlemidir. Önerilen yöntem Google Play Geliştirici API'sini kullanmaktır. Abonelik kaynağı aşağıdaki örneğe benzer:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "linkedPurchaseToken": old_purchase_token,
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ],
}

Fiyat değişiklikleri

Fiyat değişikliğiyle ilgili en iyi uygulamalar kılavuzunu inceleyin. otomatik yenilenen abonelik fiyatlarını değiştirme ve kullanıcıları bilgilendirme hakkında bilgi edinin gerektiğini unutmayın.

Kaydolan mevcut abonelere fiyat değişiklikleri uygulandığında Kullanıcı yeni fiyatı onaylamak veya reddetmek için işlem yaparsa RTDN alır.

Fiyat değişikliği onayı için kullanıcı onayını işleme

Bir kullanıcı abonelik fiyat artışınızı kabul ettiğinde SubscriptionNotification mesaj SUBSCRIPTION_PRICE_CHANGED_CONFIRMED türünde. Kullanıcı onayı istenmeyen fiyatla düştüğünde ya da abonelik fiyatı arttığında, SUBSCRIPTION_RENEWED türünde SubscriptionNotification mesaj. Bunu tedavi et diğer yenileme gibi bildirimler alırsınız.

Kullanıcı onayı istenen fiyat artışının kabul edilmediği durumları ele alma

Kullanıcı, kaydı uzatmak için önceden fiyat artışınızı kabul etmemişse otomatik olarak iptal edilir ve daha yüksek bir fiyattan ücretlendirilirsiniz. SubscriptionNotification mesaj SUBSCRIPTION_CANCELED türünde. Bu etkinliği şurada açıklandığı gibi yönetebilirsiniz: İptaller.

Kullanıcılar, kullanıcı onayı istenmeyen fiyat artışı için aboneliklerini iptal edebilir. çalışmasını sağlamalısınız.

Ön ödemeli planların yaşam döngüsünü yönetme

Otomatik yenilenen aboneliklerde olduğu gibi, ön ödemeli planları şu tarihten sonra kabul etmeniz gerekir: Her yeni satın alma işlemi için. Ön ödemeli planlar için hem ilk satın alma hem de para ekleme işlemleri, çünkü kullanıcının daha yakından inceleyeceğiz.

Ön ödemeli plan sürelerinin kısa olma ihtimali nedeniyle mümkün olan en kısa sürede onaylamanız gerekir. Şu süreye sahip ön ödemeli planlar: en az bir hafta 3 gün içinde kabul edilmelidir. Ön ödemeli planlar bir haftadan kısa süre, planın yarısında kabul edilmelidir gerekir. Örneğin, geliştiricilerin bir ürünün satın alınmasını onaylamak için 1,5 üç günlük ön ödemeli plan.

Şekil 8. Şu kampanya için yaşam döngüsü durumları ve geçiş etkinlikleri: abonelik satın almaları için ödeme yapar.

SubscriptionNotification mesajı SUBSCRIPTION_PURCHASED türünde bir ileti, RTDN istemcinize Her para ekleme de dahil olmak üzere ön ödemeli plan aboneliği satın alınır. Şunu çağırın: purchases.subscriptionsv2.get yöntemini kontrol edebilirsiniz.

Para ekleme işlemleri için yeni bir satın alma jetonu verilir ve linkedPurchaseToken alanında önceki satın alma jetonunu abonelik satın alma durumu. Satın alma jetonu, abonelikten itibaren geçerlidir geçerlilik süresi sona erdikten sonra 60 gün içinde kaydolması gerekir. Bu tarihten sonra satın alma jetonu artık Google Play Developer API'yi çağırmak için kullanılamayacak.

Ön ödemeli plan satın alma işlemlerinde kullanılacak abonelik kaynağı şuna benzer: şu örneği inceleyin:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  "startTime": "2022-04-22T18:39:58.270Z",
  "regionCode": "US",
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "latestOrderId": "GPA.3333-4137-0319-36762",
  "acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
  "lineItems": [
    {
      "productId": "prepaid_plan01",
      "expiryTime": expiry_date,
      "prepaidPlan": {
        "allowExtendAfterTime": timestamp_after_which_topups_are_allowed
      }
    }
  ]
}

Yararlanma hakkının ne zaman sona erdiğini expiryTime alanında görebilirsiniz. Para ekleme satın alma işlemleri, hak kazanım süresini biriktirerek artırır. Yani, projenizin Kullanıcı orijinal yararlanma hakkı sona ermeden para eklediğinde, yeni zaman eklenir eklemesi gerekir.

Uygulamanızda, kullanıcıya, açılış sayfanızı veya oyununuzu Ön ödemeli abonelikler para ekleyerek uzatılabilir. Kullanıcının ne zaman para ekleyebiliyorsanız abonelikteki allowExtendAfterTime alanını kontrol edin. gösterir.

Ön ödemeli planlar otomatik olarak yenilenmediğinden iptal edilemez. Kullanıcı ön ödemeli planları iptal ettikleri takdirde, son kullanma tarihine ulaşabilecekler.