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ą parametruqueryProductDetails()
, 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.
Link do Centrum subskrypcji
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.](https://developer.android.google.cn/static/images/google/play/billing/sub_center_general.png?authuser=19&hl=pl)
![Dotknij subskrypcji, aby wyświetlić dodatkowe szczegóły.](https://developer.android.google.cn/static/images/google/play/billing/sub_management_mock_general.png?authuser=19&hl=pl)
Ten precyzyjny link może być przydatny, gdy użytkownik chce przywrócić anulowaną subskrypcję w centrum subskrypcji w Sklepie Play.
Link do konkretnej strony zarządzania subskrypcjami (zalecane)
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.](https://developer.android.google.cn/static/images/google/play/billing/plan_change_inapp.png?authuser=19&hl=pl)
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) |
|
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 |
|
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 |
|
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ą. |
|
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 |
|
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
iWITHOUT_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 Uprawnienia do starego abonamentu obowiązują aż do dnia następnego odnowienia. Aby sprawdzić, czy aplikacja nadaje odpowiednie uprawnienie, Nowy token zakupu nie jest widoczny, więc nie można go teraz przetworzyć. |
Usługa
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:
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) |
Teraz pojawia się nowy token zakupu, więc powinien zostać przetworzony. |
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 |
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:
|
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](https://developer.android.google.cn/static/images/google/play/billing/resubscribe.jpg?authuser=19&hl=pl)
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](https://developer.android.google.cn/static/images/google/play/billing/resubscribe-remove.jpg?authuser=19&hl=pl)
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ą](https://developer.android.google.cn/static/images/google/play/billing/subscriptions-in-app-messaging-snackbar.png?authuser=19&hl=pl)
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.