Informacje o subskrypcjach

W tym artykule opisujemy, jak obsługiwać zdarzenia cyklu życia subskrypcji, takie jak odnowienia i wygaśnięcia. Są w nim też opisane dodatkowe funkcje dostępne w ramach subskrypcji. np. oferowanie promocji i umożliwienie użytkownikom subskrypcji.

Jeśli w przypadku aplikacji nie masz skonfigurowanych produktów objętych subskrypcją, zobacz Utwórz i skonfiguruj produkty.

Przegląd subskrypcji

Subskrypcja reprezentuje zbiór korzyści, do których użytkownicy mają dostęp podczas w określonym przedziale czasu. Subskrypcja może na przykład przynosić użytkownikowi uprawnienia aby uzyskać dostęp do usługi strumieniowania muzyki.

W jednej aplikacji możesz mieć wiele subskrypcji. reprezentują różne zestawy korzyści lub poziomy poszczególnych korzyści. zestawu korzyści (np. na poziomach „srebrnym” i „złotym”).

Za pomocą abonamentów podstawowych i ofert możesz utworzyć wiele konfiguracji. tej samej subskrypcji. Możesz na przykład utworzyć dla użytkowników, którzy nigdy nie zasubskrybowali Twojej aplikacji. Podobnie możesz utworzyć ofertę przejścia na wyższą wersję dla użytkowników, którzy już subskrybują Twój kanał.

Aby uzyskać szczegółowe informacje o usługach objętych subskrypcją, abonamentach podstawowych i ofertach, zapoznaj się z dokumentacją w Centrum pomocy Konsoli Play.

Integracja abonamentów przedpłaconych

Abonamenty przedpłacone nie są automatycznie odnawiane po wygaśnięciu. Aby przedłużyć subskrypcji, użytkownik musi doładować abonamentu przedpłaconego.

W przypadku doładowań uruchom proces płatności w taki sam sposób, jak w przypadku doładowania zakup. Nie musisz wskazywać, że zakup to doładowanie.

Doładowania abonamentu przedpłaconego zawsze wykorzystują CHARGE_FULL_PRICE i nie musisz go konfigurować. użytkownik jest natychmiast obciążany opłatą za pełny okres rozliczeniowy, a ich uprawnienie zostanie przedłużone o czas określony podczas doładowania.

Po doładowaniu następujące pola w Purchase obiekt wynikowy jest aktualizowany w celu odzwierciedlenia ostatniego zakupu doładowania:

  • Identyfikator zamówienia
  • Czas zakupu
  • Podpis
  • Token zakupu
  • Potwierdzone

Te pola Purchase zawsze zawierają te same dane, które znaleziono w: pierwotny zakup:

  • Nazwa pakietu
  • Stan zakupu
  • Produkty
  • Automatyczne odnawianie

Potwierdzenie zakupu opłaconego z góry

Podobnie jak w przypadku subskrypcji odnawianych automatycznie, musisz potwierdzić abonamenty przedpłacone. po dokonaniu zakupu. Zarówno początkowy zakup, jak i wszelkie doładowania muszą być potwierdzono. Więcej informacji: Przetwarzanie zakupów

Ze względu na potencjał krótkich abonamentów przedpłaconych warto potwierdzić zakup tak szybko, jak to możliwe.

Potwierdź abonamenty przedpłacone o czasie trwania wynoszącym co najmniej tydzień w ciągu trzech dni.

Należy potwierdzić abonamenty przedpłacone o czasie trwania krótszym niż tydzień o połowę swojego czasu trwania. Na przykład deweloperzy mają 1, 5 dnia na potwierdzić 3-dniowy abonament przedpłacony.

Integracja subskrypcji ratalnych

Subskrypcja ratalna to typ subskrypcji, w ramach której użytkownicy płacą za subskrypcję na wiele rat, zamiast płacenia pełną opłatę za subskrypcję z góry.

Dodatkowe uwagi dotyczące abonamentów ratalnych:

  • Dostępność w poszczególnych krajach: funkcja subskrypcji ratalnych jest dostępna tylko. w Brazylii, Francji, Hiszpanii i we Włoszech (najnowszą dostępność znajdziesz w Konsoli).
  • Określanie ceny: podczas ustawiania ceny subskrypcji ratalnej. na konsoli cena reprezentuje miesięczną kwotę płatności. Oznacza to, w połączeniu z ustawionym okresem zobowiązania generuje łączną kwotę obok subskrypcji na ekranie zakupu.
  • Okres zobowiązania: łączny czas trwania początkowej subskrypcji. zobowiązania, w trakcie których wymagane są płatności miesięczne. Jeśli na przykład plik abonament podstawowy ma 15-miesięczny okres zobowiązania, użytkownik będzie miał 15 miesięcy, płatności w tym okresie.
  • Odnowienia: w kontekście subskrypcji ratalnych „odnowienie”. oznacza końca okresu zobowiązania, czyli początkowego okresu zobowiązania, kolejnego okresu zobowiązania. Pierwsze odnowienie po rejestracji następuje po zakończeniu całego początkowego okresu zobowiązania. Kolejna Odnowienie następuje po zakończeniu każdego kolejnego okresu zobowiązania. typ odnowienia subskrypcji ratalnych może mieć wartość „automatyczne odnawianie co miesiąc” lub „automatycznie odnawia się na ten sam okres”. W przypadku opcji „automatycznie odnawiane co miesiąc” nie ma a abonament działa jak subskrypcja miesięczna, każda miesięczna opłata za subskrypcję oznacza odnowienie.
  • Okres rozliczeniowy: w kontekście subskrypcji ratalnych oznacza to zgodnie z cyklem cyklicznym, w którym dokonywane są indywidualne płatności, w abonamencie podstawowym.
  • Zmiany abonamentu a zachowania związane ze zmianami cen: w przypadku zmian cen oraz to zobowiązanie jest mocne. Oznacza to, że jeśli użytkownik chce anulowania lub gdy deweloper chce zmienić cenę, zmiana zacznie obowiązywać od na koniec okresu zobowiązania. Jeśli chodzi o zmianę abonamentu, zobowiązanie nie jest stabilne. Oznacza to, że zmiana abonamentu nie musi nastąpić do końca okresu zobowiązania, zaczyna obowiązywać natychmiast lub przy następnej płatności na podstawie ustawionego trybu zastępowania.
  • Zmiana abonamentu tego samego abonamentu: zmiana abonamentu podstawowego z rat. z nieratalnym abonamentem podstawowym tego samego produktu objętego subskrypcją nie jest jest dozwolona.
  • Powiadomienia w czasie rzeczywistym dla deweloperów (RTDN): SUBSCRIPTION_CANCELLATION_SCHEDULED RTDN jest wysyłany natychmiast po anulowanie inicjowane przez użytkownika w przypadku, gdy płatności pozostają w okresie zobowiązania; Anulowanie oczekuje na realizację i będzie obowiązywać dopiero z końcem okres zobowiązania. Następnie, jeśli użytkownik nie przywróci tego konta, SUBSCRIPTION_CANCELED i numery RTDN (SUBSCRIPTION_EXPIRED) są wysyłane po zakończeniu okresu zobowiązania.

  • Zapłaty / Realizacja przychodów: wypłaty dla deweloperów będą realizowane w miarę dokonywania przez użytkowników płatności miesięczne, zgodnie z takimi samymi warunkami jak w przypadku wszystkich innych subskrypcji. Deweloperzy nie otrzymują płatności z góry, gdy użytkownik zarejestruje się na ratę subskrypcji.

  • Nieodebrane płatności: jeśli użytkownik nie spłaci żadnej raty. płatności za subskrypcję, ani Google, ani Deweloper nie będą próbowali pobierać wszelkich takich nieuregulowanych lub zaległych płatności od użytkownika, z wyjątkiem sytuacji, gdy Google okresowo ponawiać próby płatności w odpowiednim okresie prolongaty; Okres zawieszenia konta zgodnie ze zwykłymi procedurami ponownych prób ponowienia płatności. Google nie ponosi odpowiedzialności wobec Dewelopera za pozostałe raty.

  • Dostępność Biblioteki płatności w Play: pole installmentDetails zawiera tylko wartość dostępne na PBL 7 lub nowsze. W przypadku PBL 5 i nowszych, rata subskrypcja jest zwracana za pomocą parametru queryProductDetails(), ale subskrypcja nie będzie zawierać szczegółowych informacji o ratach, takich jak liczba zobowiązań planu.

Używaj precyzyjnych linków, aby umożliwić użytkownikom zarządzanie subskrypcją

Aplikacja powinna zawierać link na ekranie ustawień, który pozwala na użytkowników do zarządzania ich subskrypcjami, które możesz uwzględnić w swoich subskrypcjach do ich naturalnego wyglądu i stylu.

Możesz dodać precyzyjny link z aplikacji do subskrypcji w Google Play do niewygasłych subskrypcji, co możesz określić, korzystając z subscriptionState zasobu subskrypcji. W związku z tym istnieje kilka sposobów na dodanie precyzyjnych linków do Google Play Centrum subskrypcji w sklepie.

Skorzystaj z poniższego adresu URL, aby skierować użytkowników na stronę ze wszystkimi subskrypcji zgodnie z rysunkami 1 i 2:

https://play.google.com/store/account/subscriptions
. Ekran subskrypcji w Sklepie Play pokazuje stan wszystkich subskrypcji opłacanych przez użytkownika za pomocą Google Play.
Rysunek 1. Ekran subskrypcji w Sklepie Play pokazuje stan wszystkich subskrypcji opłacanych przez użytkownika za pomocą Google Play.


Dotknij subskrypcji, aby wyświetlić dodatkowe szczegóły.
Rysunek 2. Kliknij subskrypcję, aby zobaczyć dodatkowe .

Ten precyzyjny link może być przydatny, gdy użytkownik chce przywrócić anulowaną subskrypcję w centrum subskrypcji w Sklepie Play.

Aby utworzyć bezpośredni link do strony zarządzania niewygasłą subskrypcją, wskaż nazwa pakietu i elementy productId powiązane z kupioną subskrypcją. Do automatycznie określić productId na potrzeby istniejącej subskrypcji, z backendem aplikacji lub wywołaj BillingClient.queryPurchasesAsync(), aby uzyskać listę subskrypcji powiązanych z konkretnym użytkownikiem. Każda subskrypcja obejmuje odpowiednie pole productId jako część informacji o stanie subskrypcji. Każdy obiekt SubscriptionPurchaseLineItem powiązany z parametrem zakup subskrypcji zawiera wartość productId powiązaną z parametrem subskrypcji wykupionej przez użytkownika w ramach tego elementu zamówienia.

Użyj tego adresu URL, aby skierować użytkowników do określonego systemu zarządzania subskrypcją na ekranie, zastępując „identyfikator-twojego-produktu”. i „pakiet-aplikacji” z productId i nazwa pakietu aplikacji:

https://play.google.com/store/account/subscriptions?sku=your-sub-product-id&package=your-app-package

Dzięki temu użytkownik może zarządzać formami płatności i korzystać z funkcji w tym anulowanie, ponowna subskrypcja i wstrzymanie.

Zezwalanie użytkownikom na przełączanie się na wyższą lub niższą wersję usługi albo zmianę subskrypcji

Możesz dać obecnym subskrybentom różne opcje zmiany abonament pozwala lepiej zaspokoić ich potrzeby:

  • Jeśli sprzedajesz różne poziomy subskrypcji, np. „podstawowe” i „premium” subskrypcji, możesz zezwolić użytkownikom na przełączanie poziomów, kupując inny w ramach abonamentu podstawowego lub oferty.
  • Możesz zezwolić użytkownikom na zmianę bieżącego okresu rozliczeniowego, na przykład przejście na inną wersję z abonamentu miesięcznego na roczny.
  • Możesz też zezwolić użytkownikom na przełączanie się między automatycznie odnawianym abonamentem a abonamentem przedpłaconym.

Możesz zachęcić do tych zmian, przedstawiając oferty subskrypcji zaoferować rabat odpowiednim użytkownikom. Możesz na przykład utworzyć ofertę oferując 50% zniżki za pierwszy rok przy przejściu z abonamentu miesięcznego na roczną i ogranicz tę ofertę do użytkowników, którzy subskrybują co miesiąc , którzy nie kupili jeszcze tej oferty. Więcej informacji o kryteriach kwalifikacji do oferty kryteria te są dostępne w Centrum pomocy.

Ilustracja 3 przedstawia przykładową aplikację z 3 różnymi abonamentami:

Ta aplikacja ma 3 poziomy subskrypcji.
Rysunek 3. Ta aplikacja ma 3 poziomy subskrypcji.

Twoja aplikacja może wyświetlać ekran podobny do ilustracji 3 z opcjami zmiany ustawień subskrypcji. We wszystkich przypadkach użytkownicy powinni dokładnie wiedzieć, oraz opcje zmiany abonamentu.

Gdy użytkownicy zdecydują się przejść na wyższą lub niższą wersję usługi, określić tryb wymiany, który określa proporcję wartości obowiązuje bieżący płatny okres rozliczeniowy i gdy nastąpi jakakolwiek zmiana uprawnień.

Tryby wymiany

W tabeli poniżej znajdziesz dostępne tryby zastępowania i przykładowe zastosowania. oraz liczbę płatności, które zostały uznane za opłacone.

Tryb wymiany

Opis

Przykład użycia

Zobowiązania zarejestrowane jako opłacone (w przypadku wymiany subskrypcji w ratach)

WITH_TIME_PRORATION

od razu przejdziesz na wyższą lub niższą wersję usługi; Pozostały czas jest korygowany na podstawie różnicy w cenie i zaliczany na poczet nowej subskrypcji przez przesunięcie daty następnej płatności. Jest to jego ustawienie domyślne.

Przejdź na droższy poziom bez natychmiastowej dodatkowej płatności.

0

CHARGE_PRORATED_PRICE

Subskrypcja zostanie natychmiast uaktualniona, a cykl rozliczeniowy pozostanie bez zmian. Różnica w cenie za pozostały okres zostanie wtedy naliczona użytkownikowi.

Uwaga: ta opcja jest dostępna tylko w przypadku takiej, w której cena za jednostkę czasu rośnie.

Przejdź na droższy poziom bez zmiany daty rozliczenia.

1

CHARGE_FULL_PRICE

użytkownik natychmiast przejdzie na wyższą lub niższą wersję usługi, a użytkownik natychmiast pobierzemy pełną opłatę za nowe uprawnienie. Pozostała wartość z poprzedniej subskrypcji jest przenoszona na ten sam lub proporcjonalnie do czasu przejścia na inne uprawnienie.

Uwaga: jeśli nowa subskrypcja obejmuje bezpłatną wersję próbną lub dla nowych użytkowników, użytkownik płaci 0 PLN lub cenę początkową w zależności od tego, która z tych ofert ma zastosowanie w momencie przejścia na wyższą lub niższą wersję usługi.

Przejdź na krótszy okres rozliczeniowy na dłuższy.

1. Uwaga: wartość 0, jeśli nowa subskrypcja obejmuje bezpłatną wersję próbną.

WITHOUT_PRORATION

Subskrypcja zostanie natychmiast zmieniona na wyższą lub niższą, a nowa cena zostanie naliczona przy odnowieniu subskrypcji. Cykl rozliczeniowy pozostaje bez zmian.

Przejdź na wyższy poziom subskrypcji, zachowując pozostały okres bezpłatnego.

0

DEFERRED

Zmiana na wyższą lub niższą wersję subskrypcji nastąpi tylko przy odnowieniu subskrypcji, ale nowy zakup jest kupowany natychmiast z datą rozpoczęcia przypadającą w przyszłości w przypadku nowego uprawnienia, więc deweloper może zezwolić użytkownikom na wprowadzanie dodatkowych zmian, jeśli chcą. Mogą na przykład przywrócić pierwotny abonament lub zainicjować nową odroczoną zmianę abonamentu. Uwaga: w przypadku abonamentów ratalnych zmiana abonamentu następuje na początku następnej daty płatności.

Przejdź na tańszy poziom.

1

Aby dowiedzieć się więcej o różnych zastosowaniach sprzedaży dodatkowej i powrotnej, na wyższą lub niższą wersję usługi, przeczytaj przewodnik po ofertach i promocjach.

Ustawianie trybu wymiany dla zakupu

W przypadku różnych typów subskrypcji możesz używać różnych trybów zastępowania zgodnie z Twoimi preferencjami i logiką biznesową. W tej sekcji znajdziesz omówienie jak ustawić tryb zastąpienia w przypadku zmiany w subskrypcji i jakie są ograniczenia w odpowiednich przypadkach.

Ponowne subskrybowanie lub zmiana abonamentu w ramach tej samej subskrypcji

W Konsoli Google Play możesz określić domyślny tryb zastępczy. Ten pozwala określić, kiedy obecni subskrybenci mają być obciążani opłatą za zakup inny abonament podstawowy lub ofertę tej samej subskrypcji albo odnowienie subskrypcji po anulowanie. Dostępne opcje to Obciążaj natychmiast, co odpowiada CHARGE_FULL_PRICE i Obciążenie w kolejnym rozliczeniu, odpowiednio WITHOUT_PRORATION To jedyne stosowne tryby wymiany, gdy zmienić abonament podstawowy w ramach tej samej subskrypcji.

Jeśli na przykład wdrażasz ofertę odzyskania konta w ramach tego samego planu po użytkownik anuluje subskrypcję, ale przed jej zakończeniem możesz przetworzyć nowy zakup jak zwykły zakup bez wskazywania żadnych wartości w SubscriptionUpdateParams System używa domyślnego trybu wymiany, jest skonfigurowana w subskrypcji i automatycznie obsługuje przenoszenie subskrypcji od starego do nowego.

Zmieniaj abonamenty w różnych subskrypcjach lub zastąp domyślny tryb wymiany

Jeśli użytkownik zmienia produkty objęte subskrypcją, a tym samym kupuje inną subskrypcji – lub jeśli chcesz zastąpić domyślny tryb wymiany dla dowolnego określasz proporcjonalną stawkę w czasie działania w ramach procesu zakupu. .

Aby prawidłowo podać SubscriptionUpdateParams w ramach zakupu środowiska wykonawczego konfiguracji przepływu, zwróć uwagę na te ograniczenia:

  • Podczas przechodzenia na wyższą lub niższą wersję usługi albo rozpoczynanie procesu przechodzenia na tę samą subskrypcję na Abonament przedpłacony od abonamentu przedpłaconego, automatycznie odnawianego abonamentu lub abonamentu w ratach dozwolony tryb wymiany to CHARGE_FULL_PRICE. Jeśli podasz inne w trybie wymiany, zakup nie powiedzie się, a użytkownikowi wyświetli się komunikat o błędzie.
  • Podczas zmiany abonamentu w ramach tej samej subskrypcji na automatycznie odnawiany abonament od abonamentu przedpłaconego lub abonamentu odnawianego automatycznie, z prawidłowych trybów proporcjonalnych to CHARGE_FULL_PRICE i WITHOUT_PRORATION. Jeśli podasz inne trybu proporcjonalnego zakupu, zakup nie powiedzie się, a użytkownikowi wyświetli się błąd.
  • Przełączanie abonamentów w ramach tej samej subskrypcji z bazy danych ratalnych z abonamentu podstawowego niespłaconego w ratach jest niedozwolone.

Przykłady i zachowania wymiany

Aby zrozumieć, jak działa każdy tryb proporcjonalnego podziału, weź pod uwagę ten scenariusz:

Szymon ma subskrypcję treści online z aplikacji Country Gardener. On użytkownik ma miesięczną subskrypcję treści w wersji Poziom 1, który jest tylko tekstowy. Ta subskrypcja kosztuje 2 USD miesięcznie i jest odnawiana. w pierwszym dniu miesiąca.

15 kwietnia firma Samwise zdecydowała się przejść na roczną wersję poziomu 2. Subskrypcja obejmuje aktualizacje wideo i kosztuje 36 USD rocznie.

Podczas przechodzenia na wyższą subskrypcję deweloper wybiera tryb proporcjonalny. Poniższa lista zawiera opis wpływu poszczególnych trybów proporcjonalności na subskrypcję Samwise:

WITH_TIME_PRORATION

Subskrypcja Tier 1 firmy Samwise kończy się natychmiast. Ponieważ zapłacił za pełną miesiąca (1–30 kwietnia), ale w połowie okresu subskrypcji (połowa subskrypcja miesięczna (1 USD) zostanie zastosowana do jego nowej subskrypcji. Jednak ponieważ nowa subskrypcja kosztuje 36 zł rocznie, a saldo środków w wysokości 1 zł pozwala zapłacić tylko 10 zł. dni (16–25 kwietnia), więc 26 kwietnia zostaje obciążony opłatą za nową subskrypcję w wysokości 36 zł. 36 USD 26 kwietnia każdego następnego roku.

Wywołaj PurchasesUpdatedListener swojej aplikacji w chwili, zakup zostanie zrealizowany i będziesz mieć możliwość pobrania nowego zakupu w ramach queryPurchasesAsync(). Backend natychmiast otrzymuje Powiadomienie dla deweloperów w czasie rzeczywistym (SUBSCRIPTION_PURCHASED).

CHARGE_PRORATED_PRICE

Możesz użyć tego trybu, ponieważ cena subskrypcji Poziom 2 za jednostkę czasu (36 USD rocznie = 3 USD/miesiąc) jest wyższa niż cena subskrypcji poziomu 1 na dany okres. (2 PLN/miesiąc). Subskrypcja Tier 1 firmy Samwise kończy się natychmiast. Ponieważ on zapłaciliśmy za cały miesiąc, ale wykorzystali tylko połowę, czyli połowa miesięcznej subskrypcji (1 USD) zostanie zastosowany do jego nowej subskrypcji. Nowa subskrypcja kosztuje 36 USD rocznie, pozostałe 15 dni – 1,50 USD; więc zostaje obciążony opłatą, wynosi 0,50 USD za nową subskrypcję. 1 maja Samwise zostanie obciążony opłatą w wysokości 36 USD nowego poziomu subskrypcji i kolejne 36 USD 1 maja każdego kolejnego roku.

Wywołaj PurchasesUpdatedListener swojej aplikacji w chwili, zakup zostanie zrealizowany i będziesz mieć możliwość pobrania nowego zakupu w ramach połączenie queryPurchasesAsync(). Backend natychmiast otrzymuje Powiadomienie dla deweloperów w czasie rzeczywistym (SUBSCRIPTION_PURCHASED).

WITHOUT_PRORATION

Subskrypcja Samwise Poziom 1 zostanie natychmiast uaktualniona do poziomu 2 bez żadnych i 1 maja zostaje obciążony opłatą w wysokości 36 PLN za nowy poziom subskrypcji. kolejne 36 USD 1 maja każdego kolejnego roku.

Wywołaj PurchasesUpdatedListener swojej aplikacji w chwili, zakup zostanie zrealizowany i będziesz mieć możliwość pobrania nowego zakupu w ramach połączenie queryPurchasesAsync(). Backend natychmiast otrzymuje Powiadomienie dla deweloperów w czasie rzeczywistym (SUBSCRIPTION_PURCHASED).

DEFERRED

Subskrypcja Tier 1 firmy Samwise jest ważna do 30 kwietnia. Maj Po pierwsze, wejdzie w życie subskrypcja poziomu 2, a Samwise zostanie obciążony opłatą w wysokości 36 USD za nowego poziomu subskrypcji.

Wywołaj PurchasesUpdatedListener swojej aplikacji w chwili, zakup zostanie zrealizowany i będziesz mieć możliwość pobrania nowego zakupu w ramach połączenie queryPurchasesAsync(). Backend natychmiast otrzymuje Powiadomienie dla deweloperów w czasie rzeczywistym (SUBSCRIPTION_PURCHASED). Zalecenia przetwarzać zakup w taki sam sposób jak każdy inny nowy zakup. w danym momencie. W szczególności potwierdź zakup. Notatka że pole startTime nowej subskrypcji jest wypełnione wartością od momentu, w którym zaczyna obowiązywać zamiennik, czyli gdy stary po wygaśnięciu subskrypcji. W tym momencie otrzymasz: SUBSCRIPTION_RENEWED RTDN dla nowego abonamentu. Przeczytaj więcej na temat Zachowanie funkcji ReplacementMode.DEFERRED w Zakończ obsługę odroczonej wymiany.

CHARGE_FULL_PRICE

Subskrypcja Tier 1 firmy Samwise kończy się natychmiast. Jego subskrypcja poziomu 2. rozpoczyna się dzisiaj i zostaje obciążony opłatą w wysokości 108 PLN. Ponieważ zapłacił za cały miesiąc, ale wykorzystał tylko połowa miesięcznej subskrypcji (1 USD) zostanie przypisana do jego nowego urządzenia. subskrypcji. Nowa subskrypcja kosztuje 36 USD rocznie, więc do 36 grudnia roku dodanego do okresu subskrypcji (ok. 10 dni). W związku z tym Samwise's następna opłata wyniesie 1 rok i 10 dni od dzisiaj i wynosi 36 PLN. Następnie jest pobierał opłaty w wysokości 36 USD każdego kolejnego roku.

Wybierając tryb proporcjonalności, zapoznaj się z zalecenia dotyczące wymiany.

Aktywowanie zmian subskrypcji w aplikacji

Możesz przejść na wyższą lub niższą wersję aplikacji, wykonując te same czynności co w przypadku rozpoczynania procesu zakupu. Jednak przy przejściu na wyższą lub niższą wersję usługi musisz podać szczegółowe informacje na temat obecnej subskrypcji, przyszłości (zaktualizowanej lub subskrypcji na niższy pakiet dodatkowego miejsca) oraz używanego trybu wymiany, jak pokazano w następujący przykład:

Kotlin

val offerToken = productDetails
        .getSubscriptionOfferDetails(selectedOfferIndex)
        .getOfferToken()

val billingParams = BillingFlowParams.newBuilder().setProductDetailsParamsList(
       listOf(
           BillingFlowParams.ProductDetailsParams.newBuilder()
               .setProductDetails(productDetails)
               .setOfferToken(offerToken)
               .build()
       )
       ).setSubscriptionUpdateParams(
           BillingFlowParams.SubscriptionUpdateParams.newBuilder()
               .setOldPurchaseToken("old_purchase_token")
               .setSubscriptionReplacementMode(
                 BillingFlowParams.ReplacementMode.CHARGE_FULL_PRICE
               )
               .build()
       ).build()

billingClient.launchBillingFlow(
    activity,
    billingParams
   )
// ...

Java

String offerToken = productDetails
    .getSubscriptionOfferDetails(selectedOfferIndex)
    .getOfferToken();

BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
    .setProductDetailsParamsList(
        ImmuableList.of(
            ProductDetailsParams.newBuilder()
                // fetched via queryProductDetailsAsync
                .setProductDetails(productDetails)
                // offerToken can be found in
                // ProductDetails=>SubscriptionOfferDetails
                .setOfferToken(offerToken)
                .build()))
    .setSubscriptionUpdateParams(
        SubscriptionUpdateParams.newBuilder()
            // purchaseToken can be found in Purchase#getPurchaseToken
            .setOldPurchaseToken("old_purchase_token")
            .setSubscriptionReplacementMode(ReplacementMode.CHARGE_FULL_PRICE)
            .build())
    .build();

BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams);
// ...

Rekomendacje dotyczące wymiany

W tabeli poniżej znajdziesz różne scenariusze proporcjonalnej aktywności oraz nasze zalecane w każdej sytuacji:

Scenariusz Zalecany tryb wymiany Wynik
Przechodzenie na droższy poziom CHARGE_PRORATED_PRICE Użytkownik uzyskuje dostęp natychmiast, zachowując te same ustawienia płatności okresu przejściowego.
Przejście na tańszy poziom DEFERRED Użytkownik zapłacił już za droższy poziom, więc zachowa dostęp aż do daty następnej płatności.
Przejście na wyższą wersję w trakcie bezpłatnego okresu próbnego, zachowanie okresu próbnego WITHOUT_PRORATION Użytkownik zachowuje dostęp do bezpłatnego okresu próbnego, ale przechodzi na wyższy poziom za przez resztę procesu.
Przejście na wyższą wersję w trakcie bezpłatnego okresu próbnego – zakończenie bezpłatnego okresu próbnego CHARGE_PRORATED_PRICE Użytkownik natychmiast uzyska dostęp do nowego poziomu, ale już nie ma bezpłatny okres próbny.

Obsługa zakupów związanych ze zmianą subskrypcji

Zmiany abonamentu to nowe zakupy obejmujące wszystkie warunki i cele. Powinny być przetworzone i potwierdzone po zakończeniu procesu płatności. . Oprócz prawidłowego przetworzenia nowego zakupu, wycofać zakup, który ma zostać zastąpiony.

Działanie w aplikacji jest takie samo jak w przypadku każdego nowego zakupu. Aplikacja otrzymuje wyniku nowego zakupu na PurchasesUpdatedListener oraz jest dostępny nowy zakup w queryPurchasesAsync.

Interfejs Google Play Developer API zwraca wartość linkedPurchaseToken w polu zasób subskrypcji, gdy zakup zastąpi istniejący jeden. Pamiętaj, aby unieważnić token podany w linkedPurchaseToken upewnij się, że stary token nie jest używany do uzyskania dostępu do Twoich usług. Zobacz Przechodzenie na wyższą lub niższą wersję usługi i ponowne rejestracje – informacje o sposobie przejścia na wyższą wersję usługi. i zmniejszyć dobrą wersję produktu.

Gdy otrzymasz nowy token zakupu, wykonaj tę samą procedurę weryfikacji co w przypadku weryfikacja nowego tokena zakupu. Potwierdź zakupy w Google Play przy użyciu: BillingClient.acknowledgePurchase() Biblioteka płatności lub Purchases.subscriptions:acknowledge od interfejs Google Play Developer API.

Uchwyt odroczonej wymiany

Tryb odroczonej wymiany pozwala użytkownikowi wykorzystać pozostałą część zasobów użytkownika w starym abonamencie, zanim zaczną obowiązywać nowe.

Gdy użyjesz trybu ReplacementMode.DEFERRED przy nowym zakupie, queryPurchasesAsync() zwraca nowy token zakupu po dokonaniu zakupu. proces, który pozostaje powiązany ze starym produktem do czasu odroczenia wymiany ma miejsce w dniu następnego odnowienia, po którym nowy produkt zostanie .

W przeszłości możesz osiągnąć taki poziom wygody użytkowników, korzystając z wycofanych Język ProrationMode.DEFERRED, ale wersja ProrationMode.DEFERRED została wycofana z Google Play Biblioteka płatności 6. W poniższej tabeli znajdziesz informacje o tym, różni się:

Godzina

ProrationMode.DEFERRED (tryb ProrationMode.DEFERRED) (wycofany)

Tryb zastępowania.DEFEROWANY

Tuż po pomyślnym zakończeniu procesu zakupu (aplikacja)

Metoda PurchasesUpdatedListener jest wywoływana po zakupie i informuje, czy udało się przejść na wyższą lub niższą wersję usługi.

Uprawnienia do starego abonamentu obowiązują aż do dnia następnego odnowienia. Aby sprawdzić, czy aplikacja nadaje odpowiednie uprawnienie, queryPurchasesAsync() zwraca obiekt zakupu z oryginalnym tokenem zakupu i oryginalnym uprawnieniem do momentu wymiany.

Nowy token zakupu nie jest widoczny, więc nie można go teraz przetworzyć.

Usługa PurchasesUpdatedListener jest wywoływana po zakupie i informuje, czy udało się przejść na wyższą lub niższą wersję usługi.

queryPurchasesAsync() od razu zwraca zakup przy użyciu nowego tokena zakupu i powiązanego z nim oryginalnego uprawnienia.

Pojawia się nowy token zakupu, więc należy go przetworzyć na tym etapie, z uwzględnieniem daty wymiany.

Bezpośrednio po pomyślnym zakończeniu procesu zakupu (backend)

Numer RTDN SUBSCRIPTION_PURCHASED nie jest wysyłany po zakończeniu procesu zakupu. Backend nie otrzymał jeszcze informacji o nowym zakupie.

Numer RTDN SUBSCRIPTION_PURCHASED ze starym identyfikatorem product_id jest wysyłany natychmiast po zakończeniu procesu zakupu w przypadku nowego tokena zakupu.

Wywołanie metody purchases.subscriptionsv2.get z nowym tokenem zakupu powoduje zwrócenie zakupu z wartością „startTime” wskazujący czas zakupu z 2 elementami zamówienia:

  • Jeden reprezentujący stare uprawnienie i ma wartość „expiryTime” w przyszłości. Stare uprawnienie nie zostanie odnowione i zawiera element DeferredItemReplacement zawierający produkt nowego uprawnienia. Oznacza to, że po wygaśnięciu starego uprawnienia oczekuje na zastąpienie.
  • Jeden reprezentuje nowo zakupione uprawnienie. Nie ma ustawionej wartości „expiryTime”.

Dla starego tokena zakupu wysłano wiadomość SUBSCRIPTION_Wygasła. Gdy wywołujesz metodę purchases.subscriptionsv2.get przy użyciu starego tokena zakupu, wydaje się on wygasł (uprawnienia do starego abonamentu zostaną przeniesione na nowy zakup przez pozostały czas).

Przy wymianie – pierwsze odnowienie po procesie zakupu (aplikacja)

queryPurchasesAsync() zwraca nowy obiekt purchase z nowym tokenem zakupu i uprawnieniem.

Teraz pojawia się nowy token zakupu, więc powinien zostać przetworzony.

queryPurchasesAsync() od razu zwraca zakup z nowym tokenem zakupu i powiązanym z nim nowym uprawnieniem.

Nowy zakup powinien zostać przetworzony już po pomyślnym dokonaniu zakupu, dlatego aplikacja nie powinna wykonywać żadnych specjalnych działań poza zapewnieniem odpowiednich uprawnień.

Przy wymianie – pierwsze odnowienie po procesie zakupu (backend)

Nowy zakup można teraz przetworzyć i potwierdzić, gdy zostanie wysłany pierwszy SUBSCRIPTION_RENEWED RTDN.

Pole linkedPurchaseToken w zasobie subskrypcji może służyć do określenia, który użytkownik w backendzie subskrypcji ma zostać zaktualizowany o nowe uprawnienie.

Nowy zakup został przetworzony i potwierdzony, gdy wiadomość RTDN SUBSCRIPTION_PURCHASED została wysłana dla nowego tokena zakupu i zarejestrowana jako „startTime”.

W przypadku ReplacementMode.DEFERRED pierwsze odnowienia przebiegają w standardowy sposób przy każdym innym odnowieniu i nie musisz stosować specjalnej logiki do zamienników w przypadku tego zdarzenia.

Gdy wywołasz metodę purchases.subscriptionsv2.get z nowym tokenem zakupu, zwracany jest zakup z 2 elementami zamówienia:

  • Jeden reprezentujący stare uprawnienie z wartością „expiryTime” w przeszłości i bez ustawionej wartości parametru DeferredItemReplacement.
  • Jeden reprezentujący nowe uprawnienie z wartością `expiryTime` w przyszłości i włączoną flagą auto_renewing_enabled.

Od teraz zamiast wycofanego trybu powinna być używana funkcja ReplacementMode.DEFERRED ProrationMode.DEFERRED, ponieważ prezentuje to samo zachowanie w przypadku uprawnień się zmienia, ale pozwala zarządzać zakupem w sposób bardziej spójny zachowanie w przypadku innych nowych zakupów.

Zarządzanie klientami

Dzięki powiadomieniom dla deweloperów w czasie rzeczywistym możesz w czasie rzeczywistym wykrywać, decyduje się na anulowanie. Gdy użytkownik anuluje subskrypcję, ale przed rozpoczęciem subskrypcji wygasł, możesz wysłać mu powiadomienia push lub wiadomości w aplikacji, aby o nie poprosić. aby ponownie zasubskrybować kanał.

Gdy użytkownik anulował subskrypcję, możesz spróbować go odzyskać w aplikacji lub w Sklepie Play. W tabeli poniżej różne scenariusze subskrypcji wraz z powiązanymi działaniami zwrotnymi wymagań aplikacji.

Przed wygaśnięciem subskrypcji Po wygaśnięciu subskrypcji
W aplikacji W Sklepie Play W aplikacji W Sklepie Play
Funkcja przywracania Subskrypcja w aplikacji Przywróć Subskrypcja w aplikacji Subskrybuj ponownie
Użytkownik przechodzi przez proces płatności Tak Nie Tak Tak
Subskrypcja użytkownika jest powiązana z tym samym kodem SKU Użytkownik może zarejestrować się w celu korzystania z tego samego lub różnych kodów SKU Tak Użytkownik może zarejestrować się w celu korzystania z tego samego lub różnych kodów SKU Tak
Tworzy nowy token zakupu. Tak Nie Tak Tak
Włączone domyślnie Nie Tak, wszyscy programiści muszą korzystać z pomocy Nie

Aplikacje bez Biblioteki płatności 2.0 lub nowszej: nie

Aplikacje z Biblioteką płatności w wersji 2.0 lub nowszej: tak. Deweloperzy mogą zrezygnować z tej funkcji w Konsoli Play.

Kiedy pobierane są opłaty od użytkownika

Jeśli używasz tego samego kodu SKU: koniec bieżącego okresu rozliczeniowego.

Jeśli używasz różnych kodów SKU: zależy to od trybu proporcjonalnego.

Koniec bieżącego okresu rozliczeniowego Natychmiast Natychmiast
Wymagana implementacja Podaj interfejs ponownej rejestracji w aplikacji.

Wykrywanie zmiany stanu subskrypcji

Precyzyjny link do Sklepu Play

Udostępnij w aplikacji interfejs ponownej rejestracji Obsługa zakupów poza aplikacją

Przed wygaśnięciem subskrypcji – w aplikacji

W przypadku subskrypcji, które zostały anulowane, ale jeszcze nie wygasły, możesz: pozwala subskrybentom przywrócić subskrypcję w aplikacji przez zastosowanie zakup produktu w aplikacji będzie taki sam jak w przypadku nowych subskrybentów. Zadbaj o własny interfejs oznacza, że użytkownik ma już subskrypcję. Możesz na przykład: chcesz wyświetlić aktualną datę ważności i cenę cykliczną w przycisk Ponownie aktywuj.

Najczęściej warto oferować użytkownikom taką samą cenę i kod SKU. które już zasubskrybowali w następujący sposób:

  • Rozpocznij nowy zakup subskrypcji z tym samym kodem SKU.
  • Nowa subskrypcja zastąpi starą i zostanie odnowiona po tym samym terminie datę. Stara subskrypcja zostanie natychmiast oznaczona jako wygasła.
  • Na przykład Achil ma subskrypcję Przykładowa aplikacja muzyczna, 1 sierpnia upływa 1 sierpnia. 10 lipca ponownie zasubskrybuje subskrypcji miesięcznej w tej samej cenie za miesiąc. Nowa subskrypcja jest proporcjonalna do pozostałego kredytu, jest natychmiast aktywny i nadal zostanie odnowiona 1 sierpnia.

Jeśli chcesz zaoferować inną cenę, np. nowy bezpłatny okres próbny lub zniżki przy odzyskiwaniu konta – możesz zamiast tego zaoferować użytkownikowi inny kod SKU:

  • Rozpocznij przechodzenie na wyższą lub niższą wersję usługi z innym kodem SKU. przy użyciu trybu zastępowania WITHOUT_PRORATION.
  • Nowa subskrypcja zastąpi starą i zostanie odnowiona po tym samym terminie datę. Użytkownik jest obciążany ceną nowego kodu SKU, w tym cen dla nowych subskrybentów w pierwotnej dacie ważności. Jeśli stara subskrypcja został utworzony przy użyciu zaciemnionego identyfikatora konta, należy przekazać ten sam identyfikator BillingFlowParams, aby przejść na wyższą lub niższą wersję usługi.
  • Na przykład Achil ma subskrypcję Przykładowa aplikacja muzyczna, 1 sierpnia upływa 1 sierpnia. 10 lipca ponownie zasubskrybuje subskrypcji rocznej w cenie początkowej. Nowa subskrypcja jest natychmiast aktywna i użytkownik zostanie obciążony ceną początkową 1 sierpnia
  • Jeśli zdecydujesz się uwzględnić w kodzie SKU dotyczącym przywrócenia upewnij się, że użytkownik spełnia wymagania, odznaczając pole Zezwalaj na jeden bezpłatny okres próbny na aplikację w Konsoli Google Play. oznacza, że użytkownik może skorzystać z jednego bezpłatnego okresu próbnego na aplikację.

Gdy otrzymasz token zakupu, przetwórz zakup tak samo jak Ty. w przypadku nowej subskrypcji. Dodatkowo interfejs Google Play Developer API zwraca linkedPurchaseToken w zasobie subskrypcji. Koniecznie unieważnić token w linkedPurchaseToken, aby zapewnić, że stary token nie jest używany do uzyskać dostęp do swoich usług.

Przed wygaśnięciem subskrypcji – w Sklepie Play

Gdy subskrypcja została anulowana, ale nadal jest aktywna, użytkownicy mogą przywrócić w centrum subskrypcji Google Play, klikając Odnów subskrypcję (wcześniej Przywróć). Zachowasz tę samą subskrypcję i token zakupu.

sekcja subskrypcji w aplikacji Sklep Google Play z wyświetloną
            anulowana subskrypcja z przyciskiem odnowienia subskrypcji
Rysunek 8. Konto > Subskrypcje w w aplikacji Sklep Google Play widać anulowaną subskrypcję i informację, Przycisk Odnów subskrypcję.

Więcej informacji o przywracaniu subskrypcji znajdziesz w sekcji Przywracanie subskrypcji.

Po wygaśnięciu subskrypcji – w aplikacji

Możesz pozwolić subskrybentom, którzy wygasli, na odnowienie subskrypcji w aplikacji zakup produktu w aplikacji wygląda tak samo jak w przypadku nowych subskrybentów. Zwróć uwagę na :

  • Aby zaoferować użytkownikom rabat, możesz podać identyfikator produktu z ze specjalną ceną subskrypcji, nazywaną również kodem SKU odzyskiwania. Ofertę możesz podać w aplikacji lub powiadomić użytkownika o tym ofertę poza aplikacją, np. w e-mailu.
  • Aby rozpocząć subskrypcję zwrotną, rozpocznij proces zakupu na swoim aplikacja na Androida korzystająca z Biblioteki płatności w Google Play; Nie ma żadnej jak w przypadku nowej subskrypcji, ale możesz określić, dostępnych dla użytkownika.
  • Jeśli zdecydujesz się uwzględnić w reklamie powrotnej bezpłatny okres próbny lub cenę początkową SKU, sprawdź, czy użytkownik spełnia wymagania, odznaczając Zezwalaj na jeden bezpłatny okres próbny na aplikację w Konsoli Google Play. oznacza, że użytkownik może skorzystać z jednego bezpłatnego okresu próbnego na aplikację.
  • Jeśli użytkownik ponownie wykupi subskrypcję na ten sam kod SKU, utraci możliwość korzystania z tej usługi. jest dostępny w ramach bezpłatnego okresu próbnego lub w cenie dla nowych użytkowników. Sprawdź, czy jest to widoczne w Twoim interfejsie.

Gdy otrzymasz token zakupu, przetwórz zakup tak samo jak Ty. w przypadku nowej subskrypcji. Nie otrzymasz: linkedPurchaseToken w zasobie subskrypcji.

Po wygaśnięciu subskrypcji – w Sklepie Play

Jeśli ta opcja jest włączona, użytkownicy mogą ponownie wykupić subskrypcję tego samego kodu SKU na maksymalnie rok po wygaśnie, klikając Odnów subskrypcję w sekcji Subskrypcje w Google Play. pomocy. Spowoduje to wygenerowanie nowego tokena subskrypcji i zakupu.

sekcja subskrypcji w aplikacji Sklep Google Play z wyświetloną
            anulowana i wygasła subskrypcja z możliwością ponownego zasubskrybowania i usunięcia
            Przyciski
Rysunek 9. Konto > Subskrypcje w aplikacji Sklep Google Play z informacją o anulowaniu i wygaśnięciu prośby. subskrypcja z opcją Odnów subskrypcję i Usuń

Ponowne subskrybowanie to zakup poza aplikacją, więc pamiętaj, stosuj sprawdzone metody obsługi zakupów dokonanych poza aplikacją.

Promowanie subskrypcji

Możesz utworzyć kody promocyjne, aby dać wybranym użytkownikom dłuższy bezpłatny okres próbny do istniejącej subskrypcji. Więcej informacji: Kody promocyjne.

W przypadku bezpłatnych okresów próbnych Google Play sprawdza, czy użytkownik ma ważną formę płatności przed rozpoczęciem bezpłatnego okresu próbnego. Niektórzy użytkownicy mogą zobaczyć tę weryfikację jako wstrzymanie lub obciążenie formy płatności. Ta blokada lub obciążenie są tymczasowy, a później jest zwracany lub objęty zwrotem środków.

Po zakończeniu okresu próbnego forma płatności użytkownika zostanie obciążona opłatą w wysokości pełną kwotę subskrypcji.

Jeśli użytkownik anuluje subskrypcję w dowolnym momencie podczas bezpłatnego okresu próbnego, subskrypcja pozostanie aktywna do końca okresu próbnego i nie będzie pobierana po zakończeniu bezpłatnego okresu próbnego.

Anulowanie, zwrot środków i anulowanie

Za pomocą Interfejs Google Play Developer API do cancel, zwrot środków lub unieważnić subskrypcję. Ta funkcja jest też dostępna w Konsola Google Play.

  • Anulowanie: użytkownicy mogą anulować subskrypcję w Google Play. Możesz też umożliwiać użytkownikom anulowanie subskrypcji w aplikacji lub witrynie; Twoje aplikacja powinna obsługiwać te anulowania w sposób opisany w Anulowania.
  • Zwrot środków: gdy zwrócisz środki, użytkownik będzie mógł nadal korzystać z subskrypcji. Środki mogą zostać zwrócone, np. w przypadku błędu technicznego, w którym uniemożliwił użytkownikowi dostęp do produktu, ale błąd został . Pamiętaj, że aby zwrócić większą kwotę niż ostatnia płatność, lub jeśli jeśli chcesz zwrócić część środków, musisz użyć Konsoli Google Play.
  • Unieważnij: po unieważnieniu uprawnień użytkownik natychmiast traci dostęp do subskrypcji. Tej opcji można użyć, jeśli np. istniała kwestia techniczna który uniemożliwił użytkownikowi dostęp do Twojego produktu, a użytkownik nie chce dalej korzystać z produktu. Aplikacja powinna obsługiwać te anulowań, jak opisano w Wycofania roszczeń.

W tabeli poniżej przedstawiono różnice między anulowaniem, zwrotem środków a unieważnić.

Zatrzymuje odnawianie Zwracanie środków Unieważnij dostęp
Anuluj Tak Nie Nie
Zwrot środków Nie Tak Nie
Unieważnij Tak Tak Tak

Odroczenie płatności subskrybenta

W przypadku automatycznie odnawianej subskrypcji możesz przesunąć datę następnej płatności za pomocą: Purchases.subscriptions:defer w interfejsie Google Play Developer API. W okresie odroczenia użytkownik subskrybują Twoje treści z pełnym dostępem, ale nie są za to pobierane. data odnowienia subskrypcji zostanie zmieniona na nową.

W przypadku abonamentów przedpłaconych możesz odroczyć wygaśnięcie za pomocą interfejsu API odroczenia płatności obecnie się znajdujesz.

Odroczone płatności umożliwiają:

  • Zaoferuj użytkownikom bezpłatny dostęp w ramach oferty specjalnej, np. przez tydzień bezpłatnie podczas kupowania filmu.
  • Oferowanie bezpłatnego dostępu do klientów w formie wyrazu dobrej woli.

Płatności można odroczyć o 1 dzień do 1 roku za wywołanie interfejsu API. Aby odroczyć płatności jeszcze raz, możesz ponownie wywołać interfejs API przed pojawieniem się nowej daty płatności.

Darcy ma na przykład comiesięczną subskrypcję treści online Aplikacja Fishing Quarterly. Zazwyczaj jest ona obciążana kwotą 1,25 GBP miesiąc. W marcu wzięła udział w ankiecie online dla wydawcy aplikacji. Wydawca daje jej 6 bezpłatnych tygodni, odkładając następną płatność do 15 maja, czyli 6 tygodni po zaplanowanej dacie rozliczenia z 1 kwietnia. Darcy nie została obciążona płatnością za kwiecień ani początek maja, ale nadal ma dostęp do treści. 15 maja zostaje naliczona standardowa kwota 1, 25 GBP. opłaty za subskrypcję za dany miesiąc. Następna data odnowienia to 15 czerwca.

Podczas odroczenia możesz powiadomić użytkownika e-mailem lub w aplikacji , aby powiadomić firmę o zmianie daty płatności.

Postępowanie w przypadku odrzucenia płatności

W przypadku problemów z płatnością za odnowienie subskrypcji Google podejmie będzie okresowo próbować odnowić subskrypcję przez jakiś czas, zanim ją anulujesz. Ten okres, w którym można odzyskać dostęp do konta, może składać się z okresu prolongaty, po którym następuje zawieszenie konta. okresu przejściowego. W tym czasie Google wysyła do użytkownika e-maile i powiadomienia z prośbą o zaktualizowanie formy płatności.

Po odrzuceniu płatności subskrypcja przechodzi w okres prolongaty. okres, jeśli jeden z nich to skonfigurowany. Upewnij się, że w okresie karencji użytkownik nadal ma dostęp do subskrypcji.

Po zakończeniu okresu prolongaty subskrypcja pojawia się na koncie okresu blokady. W trakcie zawieszenia konta, należy upewnić się, że użytkownik nie ma dostępu do subskrypcji.

Możesz określić długość okresu prolongaty każdego automatycznie odnawianego abonamentu podstawowego oraz zawieszenia konta w Konsoli Google Play. Podanie długości mniejszej niż wartości domyślne mogą zmniejszyć liczbę subskrypcji odzyskanych z płatności odrzuca.

Aby zmaksymalizować prawdopodobieństwo przywrócenia subskrypcji w momencie odrzucenia płatności: możesz poinformować użytkownika o problemie z płatnością i poprosić go o rozwiązanie problemu.

Możesz to zrobić samodzielnie, zgodnie z opisem w okres i zawieszenia konta lub zaimplementować interfejs API do przesyłania wiadomości w aplikacji, który pokazuje wiadomość dla użytkowników aplikacji.

Wysyłanie wiadomości w aplikacji

Jeśli w aplikacji masz włączoną funkcję przesyłania wiadomości InAppMessageCategoryId.TRANSACTIONAL W okresie prolongaty i zawieszenia konta Google Play wyświetli wiadomość raz dziennie i zapewnić im rozwiązanie problemu z płatnością bez wychodzenia z aplikacji.

Pasek powiadomień informujący użytkownika o konieczności rozwiązania problemu z płatnością
Rysunek 20. Pasek powiadomień informujący użytkownika o konieczności poprawienia płatności.

Zalecamy wywoływanie tego interfejsu API przy każdym uruchomieniu aplikacji przez użytkownika w celu określenia czy komunikat powinien się wyświetlić.

Jeśli użytkownik odzyskał subskrypcję, otrzymasz kod odpowiedzi w wysokości SUBSCRIPTION_STATUS_UPDATED wraz z tokenem zakupu. Użyj tego tokena zakupu, aby wywołać metodę Google Play Developer API i odśwież stan subskrypcji w aplikacji.

Integracja wiadomości w aplikacji

Aby wyświetlać użytkownikom wiadomości w aplikacji, użyj BillingClient.showInAppMessages()

Oto przykład wyzwalania procesu wysyłania wiadomości w aplikacji:

Kotlin

val inAppMessageParams = InAppMessageParams.newBuilder()
        .addInAppMessageCategoryToShow(InAppMessageCategoryId.TRANSACTIONAL)
        .build()

billingClient.showInAppMessages(activity,
        inAppMessageParams,
        object : InAppMessageResponseListener() {
            override fun onInAppMessageResponse(inAppMessageResult: InAppMessageResult) {
                if (inAppMessageResult.responseCode == InAppMessageResponseCode.NO_ACTION_NEEDED) {
                    // The flow has finished and there is no action needed from developers.
                } else if (inAppMessageResult.responseCode
                        == InAppMessageResponseCode.SUBSCRIPTION_STATUS_UPDATED) {
                    // The subscription status changed. For example, a subscription
                    // has been recovered from a suspend state. Developers should
                    // expect the purchase token to be returned with this response
                    // code and use the purchase token with the Google Play
                    // Developer API.
                }
            }
        })

Java

InAppMessageParams inAppMessageParams = InAppMessageParams.newBuilder()
        .addInAppMessageCategoryToShow(InAppMessageCategoryId.TRANSACTIONAL)
        .build();

billingClient.showInAppMessages(activity,
        inAppMessageParams,
        new InAppMessageResponseListener() {
            @Override
            public void onInAppMessageResponse(InAppMessageResult inAppMessageResult) {
                if (inAppMessageResult.responseCode
                        == InAppMessageResponseCode.NO_ACTION_NEEDED) {
                    // The flow has finished and there is no action needed from developers.
                } else if (inAppMessageResult.responseCode
                        == InAppMessageResponseCode.SUBSCRIPTION_STATUS_UPDATED) {
                    // The subscription status changed. For example, a subscription
                    // has been recovered from a suspend state. Developers should
                    // expect the purchase token to be returned with this response
                    // code and use the purchase token with the Google Play
                    // Developer API.
                }
            }
        });

Obsługa transakcji oczekujących na subskrypcję

Transakcje oczekujące mogą mieć miejsce przy pierwszym zakupie, doładowaniu, uaktualnianiu lub przejść na niższą wersję. Zakup subskrypcji rozpoczyna się od Stan: SUBSCRIPTION_STATE_PENDING przed przejściem na SUBSCRIPTION_STATE_ACTIVE Jeśli transakcja wygasła lub została anulowana przez użytkownika, przechodzi do witryny SUBSCRIPTION_STATE_PENDING_PURCHASE_EXPIRED. Musisz a uprawnienia użytkownika powinny być aktualizowane dopiero po .

Obecna zmiana stanu subskrypcji w przypadku początkowego zakupu z oczekującymi transakcjami: nie jest prosty. Aplikacja otrzyma stan Purchase ze stanem PENDING, gdy inicjuje oczekującą transakcję. Po zakończeniu transakcji Twoje aplikacja ponownie otrzymuje: Purchase ze stanem PURCHASED. O Wysłano wiadomość typu SUBSCRIPTION_PURCHASED (SubscriptionNotification) do klienta RTDN. Postępuj zgodnie z normalną procedurą weryfikacji zakupu, a następnie przekaż dostępu do treści i potwierdzenia zakupu. Jeśli transakcja wygasa lub zostanie anulowana, SubscriptionNotification wiadomość typu Do klienta RTDN zostanie wysłany SUBSCRIPTION_PENDING_PURCHASE_CANCELED. W takim użytkownicy nigdy nie powinni mieć dostępu do treści.

Doładowanie, przejście na wyższą lub niższą wersję w przypadku oczekujących transakcji wiąże się ze zmianami stanu zarówno w przypadku starej, jak i nowej subskrypcji. Gdy użytkownik zainicjuje oczekujące transakcja doładowania, przejścia na wyższą lub niższą wersję usługi, aplikacja otrzyma Purchase za stara subskrypcja z obiektem PendingPurchaseUpdate. Obecnie użytkownik nadal ma starą subskrypcję, ale nie uzyskał nowej subskrypcji. Dzwonię do: getProducts() i getPurchaseToken() w Obiekt PendingPurchaseUpdate zwraca identyfikatory produktów i token zakupu nową subskrypcję. Po zakończeniu transakcji aplikacja otrzymuje Purchase z tokenem zakupu najwyższego poziomu ustawionym dla nowej subskrypcji i stan został ustawiony na PURCHASED. Komunikat SubscriptionNotification określonego typu Do klienta RTDN zostanie wysłany SUBSCRIPTION_PURCHASED. Obecnie można należy zastąpić stary token zakupu nowym i zaktualizować dostępu użytkownika do treści. Jeśli transakcja wygaśnie lub zostanie anulowana, SubscriptionNotification wiadomość typu Do klienta RTDN zostanie wysłany SUBSCRIPTION_PENDING_PURCHASE_CANCELED. W takim użytkownicy powinni nadal mieć dostęp do treści ze starej subskrypcji.