Zakup subskrypcji może nastąpić w kilku stanach w ramach i cykl życia w zależności od wielu czynników, w tym sposobu automatycznego odnawiania, płatności sytuacje związane z odrzuceniem aplikacji i działaniami dotyczącymi zarządzania deweloperami.
Obsługa cyklu życia subskrypcji odnawianych automatycznie
Gdy zmieni się stan subskrypcji użytkownika, serwer backendu otrzyma żądanie
SubscriptionNotification
wiadomość
Aby zaktualizować stan w backendzie, wywołaj metodę
purchases.subscriptionsv2.get
Interfejs API z tokenem zakupu dołączonym do powiadomienia. Ten punkt końcowy zapewnia
ostatni stan subskrypcji, który otrzymał token zakupu i jest uważany za
które jest źródłem danych do zarządzania subskrypcjami.
Token zakupu jest ważny od momentu rejestracji subskrypcji przez 60 dni utraty ważności. Po tej dacie token zakupu przestanie być ważny wywołaj interfejs Google Play Developer API.
Nowe automatycznie odnawiane subskrypcje
Gdy użytkownik kupi subskrypcję, w wiadomości wysłanej w aplikacji SubscriptionNotification
pojawi się wiadomość
typ SUBSCRIPTION_PURCHASED
jest wysyłany do klienta RTDN. Niezależnie od tego, czy otrzymasz
lub zarejestrujesz nowy zakup w aplikacji
PurchasesUpdatedListener
lub ręcznie pobieraj zakupy na
onResume()
aplikacji, musisz przetworzyć nowy zakup w bezpiecznym
z backendem. W tym celu należy wykonać następujące czynności:
- Zapytanie
purchases.subscriptionsv2.get
w punkcie końcowym, aby uzyskać subskrypcję zasób zawierający ostatni stan subskrypcji. - Upewnij się, że wartość parametru
subscriptionState
toSUBSCRIPTION_STATE_ACTIVE
. - Zweryfikuj zakup.
- Przyznaj użytkownikowi dostęp do treści. Konto użytkownika powiązane z
zakup można rozpoznać za pomocą
ExternalAccountIdentifiers
obiekt z zasobu subskrypcji, jeśli identyfikatory zostały ustawione przy zakupie za pomocąsetObfuscatedAccountId
orazsetObfuscatedProfileId
.
Biblioteka płatności w Play zawiera też metodę potwierdzenia subskrypcji,
acknowledgePurchase()
oraz metody sprawdzania stanu potwierdzenia,
isAcknowledged()
Zalecamy jednak zajmowanie się przetwarzaniem zakupów na backendzie
i lepsze zabezpieczenia.
Zasób subskrypcji dla nowych zakupów wygląda podobnie do tego przykład:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
"startTime": "2022-04-22T18:39:58.270Z",
"regionCode": "US",
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"latestOrderId": "GPA.3333-4137-0319-36762",
"acknowledgementState": "ACKNOWLEDGEMENT_STATE_PENDING", // need to acknowledge new purchases
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
],
}
Odnawianie subskrypcji
W przypadku subskrypcji innych niż ratalne, automatycznie odnawiane, SUBSCRIPTION_RENEWED
gdy subskrypcja zostanie odnowiona. Na raty
subskrypcji, SUBSCRIPTION_RENEWED
przy każdym
opłata za subskrypcję jest naliczana w dniu rozliczenia. Upewnij się, że użytkownik nie rusza się
uprawnione do subskrypcji, a potem zaktualizuje stan subskrypcji o nowy
expiryTime
w ramach subskrypcji
zasób zwrócony z Google Play
Interfejs API programisty. Zasób subskrypcji wygląda podobnie do tego przykładu:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
"startTime": "2022-04-22T18:39:58.270Z",
"regionCode": "US",
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"latestOrderId": "GPA.3333-4137-0319-36762",
"acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
]
}
Odnawianie subskrypcji nie musisz potwierdzać.
Okres prolongaty
Jeśli pojawią się problemy z płatnościami za odnowienie subskrypcji, Google powiadomi o tym użytkownika i okresowo próbuje odnowić subskrypcję przez jakiś czas, po wygaśnięciu subskrypcji. Ten okres regeneracji może obejmować okres prolongaty po którym następuje okres zawieszenia konta. W okresie prolongaty użytkownik powinien nadal mają dostęp do uprawnień w ramach subskrypcji.
queryPurchasesAsync()
nadal zwraca zakupy w okresie prolongaty. Jeśli Twoja aplikacja
polega wyłącznie na sprawdzeniu, czy użytkownik jest uprawniony do: queryPurchasesAsync
to aplikacja powinna automatycznie
obsługiwać okresy prolongaty, ponieważ
te subskrypcje są widoczne jako aktywne w Bibliotece płatności w Play.
Synchronizowanie stanu subskrypcji z backendem pozwala uzyskać większą wiedzę
odrzucania płatności i daje więcej informacji kontekstowych, gdy próbujesz ograniczyć
rezygnacje. Posłuchaj:
SubscriptionNotification
wiadomości
typu SUBSCRIPTION_IN_GRACE_PERIOD
, aby otrzymać powiadomienie, gdy użytkownik wpisze
okresu prolongaty. Gdy użytkownik znajduje się w okresie prolongaty, subskrypcja
Zasób
zawiera autoRenewEnabled = true
. Google Play dynamicznie rozszerza
Wartość expiryTime
do końca okresu prolongaty ze względu na uprawnienia
powinna obowiązywać do momentu anulowania przez użytkownika lub upłynięcia okresu prolongaty
maksymalnej długości. Wartość pola subscriptionState
w tym okresie wynosi
SUBSCRIPTION_STATE_IN_GRACE_PERIOD
Zasób subskrypcji wygląda podobnie do
następujący przykład:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_IN_GRACE_PERIOD",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_future,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
],
}
Google Play informuje użytkowników znajdujących się w okresie prolongaty o odrzuceniu płatności. i prosi o rozwiązanie problemów z formą płatności w Sklepie Play. Gdy rozpoczyna okres prolongaty, warto zachęcić go do poprawienia formę płatności. Prosty sposób jest to użycie funkcji Wysyłanie wiadomości w aplikacji API. Jeśli wywołujesz ten interfejs API po otwarciu aplikacji użytkownik widzi tymczasowo komunikat Play pasek powiadomień informujący użytkownika o odrzuceniu płatności. Ta wiadomość zawiera też precyzyjny link, za pomocą którego użytkownik może poprawić formę płatności w Google Graj.
Gdy tylko użytkownik zmieni formę płatności, subskrypcja zostanie odnowiona za od pierwotnej daty odnowienia, przy czym możesz to zrobić w sposób opisany w Odnowienia.
Jeśli użytkownik nie rozwiąże problemu z formą płatności w okresie prolongaty, subskrypcja zostanie zawieszona i utracisz uprawnienia.
Dostęp w okresie prolongaty i regeneracja
Rysunek 2 przedstawia oś czasu subskrypcji rozpoczynającej się w okresie prolongaty. wraca, gdy użytkownik rozwiąże problem z formą płatności. Po okresie prolongaty użytkownik powinien utracić dostęp do korzyści płynących z subskrypcji i przejść do zawieszenia konta.
Należy pamiętać o następujących kwestiach:
- W okresie prolongaty użytkownik powinien zachować dostęp do korzyści wynikających z subskrypcji.
- Gdy w okresie prolongaty subskrypcja zostanie wznowiona, data odnowienia nie są resetowane.
- Jeśli wydłużysz okres prolongaty (np. z 7 do 14 dni), użytkownicy, którzy jest w okresie prolongaty, aby uzyskać dłuższy dostęp do korzyści wynikających z subskrypcji.
- Jeśli skrócisz okres prolongaty, użytkownicy, którzy korzystają już ze starej wersji usługi po upływie nowego okresu prolongaty, będą mieli dostęp do korzyści z subskrypcji. odwołane natychmiast. Jeśli na przykład skrócisz okres prolongaty ze Użytkownicy w okresie 8–14 dni poprzedniego okresu prolongaty w ciągu 14–7 dni korzyści z subskrypcji zostaną natychmiast anulowane.
- Subskrypcja pozostanie aktywna i nie otrzymasz okresu prolongaty. okres RTDN do zakończenia cichego okresu prolongaty
Cichy okres prolongaty
Możesz ustawić okres prolongaty wynoszący 0 dni, ale Google Play poczeka co najmniej 1 dzień,
zapewnić wystarczającą ilość czasu na ponowne próby dokonania płatności. Ten okres cichej karencji zapewnia
zabezpieczenia w przypadku przetwarzania płatności. W ciągu tego 24-godzinnego okresu
subskrypcji
ACTIVE
stan.
Aby być na bieżąco ze zmianami stanu subskrypcji,
będzie nasłuchiwać powiadomień dla deweloperów w czasie rzeczywistym (RTDN) i reagować na nie. Wywołaj funkcję
purchases.subscriptionsv2.get()
w czasie RTDN, a nie po czasie ważności, aby uzyskać dokładniejsze dane.
stanu subskrypcji.
W zależności od stanu subskrypcji po 24-godzinnym okresie cichej karencji powinno wyświetlić się jedno z tych powiadomień:
SUBSCRIPTION_ON_HOLD
(jeśli jest włączona)SUBSCRIPTION_CANCELED
(jeśli anulowano)SUBSCRIPTION_EXPIRED
(jeśli wygasł)SUBSCRIPTION_RENEWED
(po odnowieniu)
Możesz również wywołać metodę subscriptionV2.get()
w dowolnym momencie po parametrze
24-godzinny okres cichy, w którym można uzyskać najnowszy stan subskrypcji.
Zawieszenie konta
Jeśli wystąpią problemy z płatnością za odnowienie subskrypcji, po okresie prolongaty. , rozpoczyna się okres zawieszenia konta. Gdy subskrypcja powoduje zawieszenie konta, musisz zablokować dostęp do subskrypcji zezwolenie.
W trakcie zawieszenia konta należy nadal przeprowadzać czynności anulowań, przywrócenie subskrypcji lub ponowny jej zakup. bo użytkownik może dokonać tych zmian w czasie trwania subskrypcji jest wstrzymany.
Numery RTDN informują o tym, że użytkownik rozpoczyna okres zawieszenia konta, jak najszybciej wyjaśnić powód zawieszenia dostępu do subskrypcji. Prosty sposób to użycie funkcji Wysyłanie wiadomości w aplikacji API. Wywołuję ten interfejs API, gdy użytkownik uruchomi aplikację, wyświetli mu się komunikat na tymczasowym pasku powiadomień. informujący o odrzuceniu płatności. Ta wiadomość zawiera też: precyzyjny link, za pomocą którego użytkownik może poprawić formę płatności w Google Play.
Jeśli użytkownicy mają dostęp do treści objętych subskrypcją poza aplikacją, mogą odkryć, że utraciły dostęp na innych platformach. Możesz możesz wysłać do użytkownika powiadomienie push lub e-maila z informacją, że subskrypcja jest już nieaktywna z powodu odrzucenia płatności.
Subskrypcja nie jest zwracana przez
queryPurchasesAsync()
podczas zawieszenia konta. Jeśli aplikacja korzysta z tej metody,
dotychczasowych zakupów, domyślnie włącz zawieszenie konta.
Za pomocą aplikacji dla programistów w czasie rzeczywistym
, otrzymasz
SubscriptionNotification
wiadomość
o typie SUBSCRIPTION_ON_HOLD
, gdy subskrypcja zostanie zawieszona na koncie. Zadzwoń do nas
purchases.subscriptionsv2.get
z bezpiecznego serwera backendu, aby pobrać nową subskrypcję
i informacjami o nich. Podczas konta pozostaw pole expiryTime
subskrypcji.
zasób
jest ustawiona na przeszłą sygnaturę czasową, a pole subscriptionState
ma wartość
SUBSCRIPTION_STATE_ON_HOLD
:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ON_HOLD",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_past,
...
}
],
}
Aby przywrócić dostęp, użytkownik musi rozwiązać problem z formą płatności. Google Play informuje użytkowników w o odrzuceniu płatności na koncie i zachęcaj ich do naprawienia błędu. formę płatności.
Gdy użytkownik poprawi formę płatności, subskrypcja powróci do aktywnej
i trzeba będzie przywrócić dostęp do subskrybowanych treści. W tym przypadku
token zakupu jest taki sam jak przed zawieszeniem konta, ponieważ
wracamy do tego samego zakupu i otrzymujesz RTDN z typem
SUBSCRIPTION_RECOVERED
W przypadku subskrypcji ratalnych płatności mogą zostać odrzucone i odzyskane przez każdej pojedynczej próby płatności.
Po przywróceniu Biblioteka płatności w Play zwróci subskrypcję do
metodę queryPurchasesAsync()
. Jeśli użyjesz tej metody, aby określić, czy
użytkownik jest uprawniony do subskrypcji, to aplikacja powinna automatycznie
po przywróceniu subskrypcji po zawieszeniu konta.
Posłuchaj:
SubscriptionNotification
wiadomość
typu SUBSCRIPTION_RECOVERED
, aby otrzymywać powiadomienia o
został przywrócony, a użytkownik powinien odzyskać dostęp. Jeśli poprosisz o subskrypcję
po otrzymaniu tego powiadomienia w polu expiryTime
zostanie ustawiona sygnatura czasowa
w przyszłości, a pole subscriptionState
będzie ustawione na
Jeszcze raz SUBSCRIPTION_STATE_ACTIVE
:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
...
}
],
}
Jeśli użytkownik nie rozwiąże problemu z formą płatności przed zakończeniem zawieszenia konta
okres, zamiast tego otrzymasz numer RTDN typu SUBSCRIPTION_CANCELED
. Dla:
instrukcje postępowania w przypadku anulowania znajdziesz w sekcji Anulowanie. Gdy
w przypadku zapytania o subskrypcję, która została anulowana w ten sposób, zwrócony
Pole expiryTime
ma ustawioną sygnaturę czasową z przeszłości:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_past,
...
}
],
}
Natychmiast po otrzymaniu powiadomienia o anulowaniu konta użytkownik
otrzyma też RTDN z typem SUBSCRIPTION_EXPIRED
, ponieważ użytkownik
z płatnych uprawnień, a subskrypcja wygasła z powodu anulowania.
Możesz obchodzić się z taką datą w zwykły sposób.
Użytkownik może odzyskać dostęp, ponownie kupując ten sam abonament lub dowolny
inny abonament oferowany przez Ciebie w aplikacji w okresie zawieszenia konta
przy zakupie. W takim przypadku wystawiany jest nowy token zakupu, a
zwracana jest nowa wartość w ramach zdarzenia SUBSCRIPTION_PURCHASED
, które
reprezentuję nową instancję.
Dostęp do zawieszenia konta i jego odzyskiwanie
Rysunek 3 przedstawia oś czasu subskrypcji, w przypadku której następuje zawieszenie konta. wraca, gdy użytkownik rozwiąże problem z formą płatności.
Podobnie jak w poprzednim przykładzie, wykres 4 przedstawia oś czasu subskrypcji. które najpierw przechodzi w okres prolongaty przed zawieszeniem konta, a następnie odzyskuje pozycję po zawieszeniu.
Należy pamiętać o następujących kwestiach:
- Zanim subskrypcja zostanie zawieszona, Google Play wygeneruje dodatkowe próbuje obciążyć formę płatności przez maksymalnie 48 godzin. Użytkownik zachowuje korzyści z subskrypcji w tym okresie. Gdy upłynie okres ponawiania prób, subskrypcja zostaje zawieszona, więc użytkownik powinien utracić dostęp do korzyści wynikających z subskrypcji.
- Subskrypcja przechodzi w stan zawieszenia konta bezpośrednio z chwilą, wznowiona zostanie po wstrzymaniu i w związku z niezrealizowaną formą płatności.
- Po przywróceniu subskrypcji po zawieszeniu konta data odnowienia jest resetowana.
Zakończenie okresu wypożyczenia
Po wygaśnięciu subskrypcji użytkownik powinien utracić do niej dostęp. O
Wysłano wiadomość typu SUBSCRIPTION_EXPIRED
w: SubscriptionNotification
tę sprawę. Gdy otrzymasz to powiadomienie, skontaktuj się z deweloperem w Google Play.
API do pobierania najnowszej subskrypcji
.
Gdy potwierdzisz, że subscriptionState
to SUBSCRIPTION_STATE_EXPIRED
,
usuń upoważnienie i zarejestruj stan zakupu jako nieprawidłowy na
z backendem. Zasób subskrypcji wygląda podobnie do tego przykładu:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": expiration_time_in_past,
...
}
],
}
Anulowania
Użytkownik może dobrowolnie anulować subskrypcję w centrum subskrypcji w Google Play.
lub automatycznie anulować subskrypcję, jeśli nie powróci do poprzedniego stanu.
mieć zawieszone konto. Deweloperzy mogą też aktywować
anulowanie przez
purchases.subscriptions.cancel
Po anulowaniu subskrypcji użytkownik zachowuje dostęp do treści do
na koniec bieżącego cyklu rozliczeniowego. Po zakończeniu cyklu rozliczeniowego dostęp powinien
zostać unieważnione.
Anulowanie automatycznie odnawianej subskrypcji, która nie jest rata, powoduje uruchomienie
SUBSCRIPTION_CANCELED
powiadomienie. Kiedy
to powiadomienie, subskrypcja
Zasób
zwrócony z interfejsu Google Play Developer API zawiera pole subscriptionState
.
ma wartość SUBSCRIPTION_STATE_CANCELED
, a pole expiryTime
zawiera
Data, od której użytkownik powinien utracić dostęp do subskrypcji. Jeśli data przypada w
w przeszłości, użytkownik powinien natychmiast utracić uprawnienia. Może się tak zdarzyć,
na przykład jeśli użytkownik anuluje subskrypcję podczas korzystania z konta
wstrzymanie z powodu odrzucenia płatności.
Zasób subskrypcji anulowanego zakupu wygląda podobnie do tego: przykład:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": expiration_time,
...
}
],
}
W przypadku subskrypcji ratalnych SUBSCRIPTION_CANCELLATION_SCHEDULED
powiadomienie jest wysyłane po anulowaniu przez użytkownika i gdy na koncie pozostają płatności
za okres zobowiązania. Anulowanie oczekuje na realizację. Data wejścia w życie
na koniec bieżącego okresu zobowiązania. Gdy otrzymasz to powiadomienie,
zasób subskrypcji zwrócony z interfejsu Google Play Developer API zawiera wartość
Pole subscriptionState ustawiono na: SUBSCRIPTION_STATE_ACTIVE
, ponieważ
subskrypcja ratalna jest nadal aktywna do końca okresu zobowiązania.
Istnieje jednak pusty obiekt pending cancel.
Wysyłane jest powiadomienie SUBSCRIPTION_CANCELED
, a po nim
SUBSCRIPTION_EXPIRED
na koniec okresu zobowiązania.
Zasób subskrypcji kupna subskrypcji ratalnej, który jest oczekujące anulowanie wygląda podobnie do tego przykładu:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
...
"lineItems": [
{
"productId": "sub_plan01",
"expiryTime": expiration_time,
"autoRenewingPlan": {
"autoRenewEnabled": true,
"recurringPrice": {
"currencyCode": "USD",
"units": "1",
"nanos": 990000000
},
"installmentDetails": {
"initialCommittedPaymentsCount": 6,
"remainingCommittedPaymentsCount": 5,
"pendingCancellation": {}
...
}
}
}
],
}
Możesz zajrzeć do pola canceledStateContext
w zasobie subskrypcji, aby
dowiedz się, dlaczego subskrypcja została anulowana (np. czy
anulowano przez użytkownika, system lub przez Ciebie). Jeśli subskrypcja była
anulowane przez użytkownika, w polu userInitiatedCancellation
możesz
(dowiedz się, dlaczego użytkownik anulował subskrypcję. Może to ułatwić komunikację
strategii ustalania stawek.
Jeśli subskrypcja została anulowana, ale jeszcze nie wygasła, jest
nadal zwrócone z
queryPurchasesAsync()
.
W aplikacji możesz wyświetlić komunikat informujący użytkownika, że
subskrypcja została anulowana z informacją o dacie jej wygaśnięcia.
Odwołania
Subskrypcję można anulować z różnych powodów, np. z Twojego backendu
anulując subskrypcję, używając
purchases.subscriptionsv2.revoke
lub zwrot środków za zakup. W takiej sytuacji unieważnij atrybut
natychmiast. Komunikat SubscriptionNotification
określonego typu
W takim przypadku wysyłana jest wartość SUBSCRIPTION_REVOKED
. Po otrzymaniu
powiadomienia, subskrypcja
Zasób
zwrócony z interfejsu Google Play Developer API zawiera pole subscriptionState
.
ustawiono na SUBSCRIPTION_STATE_EXPIRED
.
Zasób subskrypcji dla anulowanego zakupu wygląda podobnie do tego: przykład:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": expiration_time,
...
}
]
}
Odroczone subskrypcje
Jest wiele powodów, dla których warto zdecydować się na
zezwolenie. Można np. udostępnić użytkownikom bezpłatny dostęp w ramach specjalnej
promocja, np. przez tydzień bezpłatnie na zakup filmu lub
i otwierać przed klientem wyraz dobrej woli. Za pomocą
purchases.subscriptions.defer
z interfejsu Play Developer API, aby przesunąć datę następnej płatności za
automatycznie odnawianą subskrypcję. Gdy to zrobisz, SubscriptionNotification
wysłana wiadomość typu SUBSCRIPTION_DEFERRED
. W okresie odroczenia
użytkownik subskrybuje Twoje treści z pełnym dostępem, ale nie jest za to obciążany.
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.
Zasób subskrypcji odroczonej subskrypcji wygląda podobnie do następujący przykład:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_future,
...
}
],
}
Wstrzymane subskrypcje
Możesz zmniejszyć liczbę dobrowolnych rezygnacji, włączając użytkownikom możliwość wstrzymania subskrypcji. Gdy włączysz funkcję wstrzymywania, użytkownicy będą mogli wstrzymać subskrypcję przez okres od tygodnia do 3 miesięcy, w zależności od w okresie cyklicznym.
Cykliczność subskrypcji | Co tydzień | Co miesiąc | 3 miesiące | 6 miesięcy | rocznych |
---|---|---|---|---|---|
Dostępne długości wstrzymania* | 1 tydzień 2 tygodnie 3 tygodnie 4 tygodnie |
1 miesiąc 2 miesiące 3 miesiące |
1 miesiąc 2 miesiące 3 miesiące |
1 miesiąc 2 miesiące 3 miesiące |
Nie dotyczy |
Wstrzymanie subskrypcji jest możliwe dopiero po zakończeniu bieżącego okresu rozliczeniowego. Gdy subskrypcja jest wstrzymana, użytkownik nie ma dostępu do subskrypcji i nie muszą zapłacić za odnowienie. Na koniec pauzy okres subskrypcji zostanie wznowiony, a Google spróbuje ją odnowić. Jeśli to się uda, wznowiona subskrypcja stanie się znowu aktywna. Jeśli nie udało się wznowić wznowienia z powodu problemu z płatnością, użytkownik przechodzi w stan zawieszenia konta jako widoczne na rysunkach 5 i 6:
.Użytkownik może też ręcznie wznowić subskrypcję w dowolnym momencie jak na ilustracji 6. Gdy użytkownik wznowi płatności ręcznie, data zmieni się na datę wznowienia ręcznego.
Po wstrzymaniu subskrypcji użytkownika Biblioteka płatności w Play nie jest dostępna
subskrypcję za pomocą
queryPurchasesAsync()
. Jeśli subskrypcja zostanie wznowiona, metoda queryPurchasesAsync()
zwróci go ponownie.
Nasłuchuj adresów RTDN, aby otrzymywać powiadomienia o wstrzymaniu subskrypcji przez użytkownika. Te powiadomienia pozwalają też poinformować użytkowników aplikacji, że wstrzymali subskrypcję i nie mają do niej dostępu. Podaj również użytkownik może w każdej chwili ręcznie wznowić subskrypcję za pomocą precyzyjny link do Google Play
Wiadomość SubscriptionNotification
typ SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED
jest wysyłany po zainicjowaniu przez użytkownika
wstrzymanie subskrypcji. Tym razem użytkownik powinien zachować dostęp do
do daty następnego odnowienia, a także subskrypcja
Zasób
zawiera autoRenewEnabled = true
. Wartość pola subscriptionState
wynosi SUBSCRIPTION_STATE_ACTIVE
.
Wiadomość SubscriptionNotification
typu SUBSCRIPTION_PAUSED
jest wysyłana, gdy
zaczyna obowiązywać wstrzymanie. W takim przypadku użytkownik powinien utracić dostęp do swojego
subskrypcja, a zasób subskrypcji zawiera autoRenewEnabled = true
,
a pole subscriptionState
jest ustawione na SUBSCRIPTION_STATE_PAUSED
. Dostępne opcje
aby zobaczyć, kiedy subskrypcja ma zostać ponownie odnowiona. W tym celu sprawdź
PausedStateContext
obiektu.
Wiadomość SubscriptionNotification
typu SUBSCRIPTION_RENEWED
zostanie wysłana, jeśli
subskrypcja zostanie wznowiona automatycznie po zakończeniu okresu wstrzymania.
lub jeśli użytkownik zdecydował się ręcznie wznowić subskrypcję. Należy to zrobić
zgodnie z opisem w sekcji Odnowienia.
Wiadomość SubscriptionNotification
typu SUBSCRIPTION_ON_HOLD
zostanie wysłana, jeśli
podczas próby wznowienia subskrypcji po wstrzymaniu wystąpił błąd płatności.
Należy to zrobić w sposób opisany w sekcji Zawieszenie konta.
Subskrybuj ponownie
W przypadku automatycznie odnawianych abonamentów podstawowych w Sklepie Google Play może wyświetlać się komunikat Przycisk Odnów subskrypcję. Ten przycisk umożliwia użytkownikom odzyskanie dostępu do subskrypcji. Może się ona nie pojawiać z różnych powodów, np. gdy subskrypcja wygasła dawno temu.
Choć przycisk jest zawsze oznaczony etykietą Odnów subskrypcję, jego działanie zależy od stanu subskrypcji.
Mimo że subskrypcja została anulowana, ale jeszcze nie wygasła, użytkownik nadal pozostaje subskrybując kanał i korzystając z korzyści związanych z subskrypcją. Jeśli użytkownik kliknie Odnów subskrypcję, anulowanie będzie anulowane, a subskrypcja będzie nadal odnawiana. W dokumentacji dla programistów i interfejsach API Google Play jest to tzw. restore.
Po wygaśnięciu automatycznie odnawianej subskrypcji możesz zezwolić użytkownikom na jej zakup ten sam abonament podstawowy. To działanie jest nazywane ponowną subskrypcją w: Dokumentacja i interfejsy API Google Play dla deweloperów. Możesz skonfigurować tę opcję w przypadku każdego abonamentu podstawowego w Konsoli Play lub za pomocą interfejsu API.
Przywróć przed wygaśnięciem
Jeśli działanie Twojej aplikacji zależy wyłącznie od
queryPurchasesAsync()
aby określić, czy użytkownik jest uprawniony do subskrypcji,
powinien automatycznie obsługiwać przywracanie, ponieważ queryPurchasesAsync()
nadal zwraca anulowane zakupy przed upływem ich daty ważności. O
przywrócona subskrypcja będzie nadal odnawiana, tak jakby nie została anulowana.
Jeśli aplikacja synchronizuje stan subskrypcji z backendem, musisz nasłuchiwać
dla SubscriptionNotification
wiadomość typu SUBSCRIPTION_RESTARTED
. Po otrzymaniu tego numeru RTDN
może zareagować na powiadomienie, że subskrypcja została rozpoczęta
ustawić odnowienie i przestać wyświetlać w aplikacji wiadomości o przywracaniu.
zasób subskrypcji wygląda podobnie do tego przykładu:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date
...
}
],
}
Odnów subskrypcję po wygaśnięciu
Jeśli automatycznie odnawiany abonament podstawowy został skonfigurowany za pomocą Konsoli Google Play lub interfejsu API aby umożliwić odnowienie subskrypcji, użytkownicy mogą ponownie kupić wygasłą subskrypcję. Sklepu Google Play.
To są nowe zakupy. Google Play wygeneruje nowy token zakupu, a Twój
backend otrzymuje RTDN z typem SUBSCRIPTION_PURCHASED
. Stan zakupu
w przypadku tego typu zakupu poza aplikacją nie zawiera atrybutu linkedPurchaseToken
powiązane z oryginalnym zakupem w tym przypadku, ponieważ
subskrypcja wygasła. To nowe zakupy, których wymaga backend
przetwarzać i potwierdzać tak samo jak każdy inny zakup.
Przechodzenie na wyższą lub niższą wersję usługi i odnawianie subskrypcji
Gdy użytkownik przejdzie na wyższą lub niższą wersję usługi albo zarejestruje się po anulowania w aplikacji przed wygaśnięciem subskrypcji, stary subskrypcja została unieważniona i zostaje utworzona nowa subskrypcja z nowy token zakupu.
Ponadto subskrypcja
Zasób
zwrócony z interfejsu Google Play Developer API zawiera linkedPurchaseToken
.
wskazujący poprzedni zakup, z którego użytkownik przeszedł na wersję standardową,
lub wznowili subskrypcję. Możesz użyć w tym polu tokena zakupu, aby wyszukać stare
i zidentyfikuj istniejące konto użytkownika, aby móc je powiązać
nowy zakup na tym samym koncie.
Zanim zaoferujesz użytkownikowi opcję przejścia na wyższą, niższą lub ponownej subskrypcji, musisz potwierdzić obecną subskrypcję. Zmiana abonamentu lub odnowienie subskrypcji jest zablokowana, jeśli obecna subskrypcja nadal oczekuje na potwierdzenie.
Jeśli użytkownik kupi przejście na wyższą lub niższą wersję usługi albo ponownie wykupi subskrypcję, to nowy zakup, za który musisz potwierdzić. Zalecany sposób użyj interfejsu Google Play Developer API. Zasób subskrypcji wygląda podobnie do tego przykładu:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"linkedPurchaseToken": old_purchase_token,
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
],
}
zmiany cen.
Zobacz przewodnik po sprawdzonych metodach dotyczących zmiany cen aby dowiedzieć się więcej o zmianach cen automatycznie odnawianych subskrypcji i powiadamianiu użytkowników w razie potrzeby.
Gdy zmiany cen zostaną wprowadzone w przypadku obecnych subskrybentów jako zgoda, będziesz otrzyma wiadomość RTDN, jeśli użytkownik podejmie działanie, aby potwierdzić lub odrzucić nową cenę.
Obsługa potwierdzenia zmiany ceny wymagającej zgody użytkownika
Gdy użytkownik zaakceptuje wzrost ceny subskrypcji, otrzymasz
SubscriptionNotification
wiadomość
typu SUBSCRIPTION_PRICE_CHANGED_CONFIRMED
. za pomocą ceny wymagającej rezygnacji,
lub po odnowieniu subskrypcji otrzymasz
SubscriptionNotification
wiadomość typu SUBSCRIPTION_RENEWED
. Coś dla tego
tak jak w przypadku każdego innego odnowienia subskrypcji.
Rozstrzygnij przypadki, w których podwyżka ceny wymagającej zgody użytkownika nie jest akceptowane
Jeśli użytkownik nie zaakceptował podwyżki ceny wymagającej zgody użytkownika, zanim będzie musiał ją odnowić
po wyższej cenie, zostanie automatycznie anulowana, a Ty otrzymasz
SubscriptionNotification
wiadomość
typu SUBSCRIPTION_CANCELED
. Obsługuj to zdarzenie w sposób opisany w
Anulowania.
Użytkownicy mogą też anulować subskrypcje w celu podniesienia ceny z możliwością rezygnacji. korzystając z tego samego mechanizmu.
Obsługa cyklu życia abonamentów przedpłaconych
Tak jak w przypadku subskrypcji odnawianych automatycznie, musisz potwierdzić abonament przedpłacony po każdego nowego zakupu. W przypadku abonamentów przedpłaconych musisz zakupu i doładowań, ponieważ użytkownik musi przez cały proces zakupu.
Abonamenty przedpłacone mogą mieć krótki czas trwania, dlatego ważne jest, aby: potwierdzić zakup tak szybko, jak to możliwe. Abonamenty przedpłacone o czasie trwania: co najmniej tydzień, należy potwierdzić w ciągu 3 dni. Abonamenty przedpłacone ze czas trwania krótszy niż tydzień należy potwierdzić w połowie planu czas trwania kampanii. Na przykład deweloperzy mają 1, 5 dnia na potwierdzenie zakupu trzydniowy abonament przedpłacony.
Wiadomość SubscriptionNotification
o typie SUBSCRIPTION_PURCHASED
jest wysyłana do klienta RTDN za każdym razem, gdy
kupisz abonament przedpłacony, w tym każde doładowanie. Wywołaj funkcję
purchases.subscriptionsv2.get
, aby sprawdzić stan ostatniego abonamentu przedpłaconego.
Dla zakupów doładowań wystawiony jest nowy token zakupu, a Ty otrzymujesz
token poprzedniego zakupu w polu linkedPurchaseToken
w ramach nowego
stanu zakupu subskrypcji. Token zakupu jest ważny z subskrypcji
zarejestruj się przez 60 dni po wygaśnięciu. Po tej dacie token zakupu zostanie
nie można już używać do wywoływania interfejsu Google Play Developer API.
Zasób subskrypcji w przypadku zakupu abonamentu przedpłaconego wygląda podobnie do następujący przykład:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
"startTime": "2022-04-22T18:39:58.270Z",
"regionCode": "US",
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"latestOrderId": "GPA.3333-4137-0319-36762",
"acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
"lineItems": [
{
"productId": "prepaid_plan01",
"expiryTime": expiry_date,
"prepaidPlan": {
"allowExtendAfterTime": timestamp_after_which_topups_are_allowed
}
}
]
}
W polu expiryTime
możesz sprawdzić, kiedy uprawnienie się kończy. Doładowanie
wydłużają czas obowiązywania uprawnienia, zwiększając go. Oznacza to, że jeśli
użytkownik doładuje konto przed zakończeniem pierwotnego okresu obowiązywania uprawnienia, zostanie dodany nowy czas.
w porównaniu z poprzednią datą ważności.
W aplikacji możesz wyświetlić komunikat informujący użytkownika, że
subskrypcje przedpłacone można przedłużyć za pomocą doładowania. Aby wiedzieć, kiedy użytkownik
bez możliwości doładowania, sprawdź pole allowExtendAfterTime
w subskrypcji
.
Abonamenty przedpłacone nie odnawiają się automatycznie, więc nie można ich anulować. Jeśli użytkownik chce anulować abonament przedpłacony, mogą dać mu czas do wygaśnięcia.