Zarządzanie subskrypcjami i jednorazowymi zakupami

W ramach codziennej działalności możesz potrzebować zarządzania subskrypcjami lub zakupami jednorazowymi. Na przykład zespół obsługi klienta może być zmuszony do przyznania użytkownikom pełnych lub częściowych zwrotów środków. W niektórych przypadkach może być konieczne cofnięcie uprawnień. Możesz zarządzać zamówieniami w Konsoli Play. Jeśli chcesz zarządzać nimi w swoim systemie, możesz to zrobić za pomocą interfejsu API Google Play Developer.

Anulowanie subskrypcji

Anulowanie subskrypcji może być inicjowane przez użytkowników lub deweloperów.

Anulowania zainicjowane przez użytkownika

Użytkownicy mogą w każdej chwili anulować subskrypcję Google Play w Sklepie Play. W stosownych przypadkach musisz też udostępnić użytkownikom możliwość anulowania subskrypcji w aplikacji i na stronie internetowej.

Najłatwiejszym sposobem umożliwienia użytkownikom dobrowolnego anulowania subskrypcji jest udostępnienie w aplikacji precyzyjnych linków do Sklepu Play, gdzie mogą oni wyświetlać swoje subskrypcje i nimi zarządzać.

Anulowania zainicjowane przez dewelopera

Jako deweloper możesz też potrzebować wywołania anulowania z poziomu backendu. Interfejs API purchases.subscriptions.cancel umożliwia anulowanie zakupu subskrypcji. Możesz na przykład użyć tej metody, aby wyłączyć starszą usługę. Anulowanie subskrypcji nie powoduje zwrotu środków, a użytkownik zachowuje dostęp do końca bieżącego okresu rozliczeniowego.

Ta metoda umożliwia określenie w parametrze treści żądania cancellationType następujących typów anulowań:

  • USER_REQUESTED_STOP_RENEWALS: anuluje subskrypcję tak, jakby użytkownicy anulowali ją w Sklepie Play. Wszelkie płatności ratalne będą kontynuowane do końca bieżącego okresu zobowiązania. W Sklepie Play użytkownicy mogą przywrócić subskrypcję przed jej wygaśnięciem lub ponownie ją aktywować po jej wygaśnięciu, jeśli jest to możliwe w przypadku abonamentu podstawowego.

  • DEVELOPER_REQUESTED_STOP_PAYMENTS: anulowanie subskrypcji i zapobieganie dalszym płatnościom. Użytkownicy nie mogą przywrócić ani ponownie wykupić subskrypcji ze Sklepu Play, ale możesz umożliwić im ponowne wykupienie subskrypcji w aplikacji.

Pozwalanie użytkownikom na przywracanie niewygasłych subskrypcji

W niektórych przypadkach warto umożliwić użytkownikom przywrócenie subskrypcji, które nie wygasły, z centrum subskrypcji w Google Play, gdy jako deweloper wywołasz anulowanie. Możesz na przykład udostępnić niestandardową procedurę anulowania w aplikacji. Na podstawie logiki biznesowej możesz określić, które anulowania wywołane przez backend mogą być przywracane przez użytkowników.

Aby wskazać, że użytkownik może przywrócić anulowanie, wyślij żądanie POST do interfejsu API purchases.subscriptions.cancel i ustaw parametr cancellationType żądania na wartość USER_REQUESTED_STOP_RENEWAL.

Przykład:

  • Token zakupu subskrypcji 1a2b3c4d5e6f7g8h9i0j
  • Nazwa pakietu aplikacji com.your.app
  • Identyfikator subskrypcji your-subscription-product

Żądanie HTTP POST:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptions/your-subscription-product/tokens/1a2b3c4d5e6f7g8h9i0j:cancel

Treść żądania:

{
  "cancellationType": "USER_REQUESTED_STOP_RENEWAL"
}

Zezwalanie użytkownikom na ponowne subskrybowanie wygasłych subskrypcji

Aby umożliwić ponowne subskrybowanie wygasłej subskrypcji, musisz włączyć opcję ponownej subskrypcji w planie podstawowym subskrypcji, a następnie anulować subskrypcję, ustawiając parametr cancellationType na wartość USER_REQUESTED_STOP_RENEWAL.

Zezwalanie użytkownikom na odnowienie subskrypcji tylko w Twojej aplikacji

Jeśli parametr cancellationType ma wartość DEVELOPER_REQUESTED_STOP _PAYMENTS lub nie jest ustawiony, użytkownicy nie mogą przywrócić subskrypcji w Centrum subskrypcji Google Play.cancellationType W razie potrzeby użytkownicy mogą ponownie zarejestrować się w aplikacji.

Ta czynność powoduje wysłanie SUBSCRIPTION_CANCELEDpowiadomienia dla deweloperów w czasie rzeczywistym. Zarządzaj tymi anulowaniami zgodnie z opisem w sekcji Anulowania.

Odroczenie rozliczeń

Aby przedłużyć okres uprawnień w ramach subskrypcji, użyj opcji subscriptions.defer. W tym okresie użytkownik pozostaje subskrybentem Twoich treści, ale nie jest od niego pobierana opłata za dodatkowy czas. Gdy odroczysz płatności za subskrypcję, informacje o stanie zostaną odpowiednio zaktualizowane i zobaczysz to w polu expiryTime w informacjach o stanie zakupu:

  • W przypadku aktywnych cyklicznych subskrypcji odroczone płatności wydłużają termin następnego odnowienia.
  • W przypadku abonamentów przedpłaconych odroczone płatności wydłużają czas ważności.

Oto kilka przykładów zastosowań płatności odroczonych:

  • Udostępnij użytkownikom bezpłatny dostęp jako ofertę specjalną, np. oferuj 1 tydzień bez opłat obecnym subskrybentom za wypełnienie ankiety z opinią.
  • Daj klientom bezpłatny dostęp jako działanie związane z obsługą klienta, na przykład po przedłużonym przestoju, który mógł wpłynąć na możliwość korzystania z Twojej usługi.

Płatności mogą być opóźnione o co najmniej 1 dzień, a maksymalnie o rok na każde wywołanie interfejsu API. Aby jeszcze bardziej odłożyć koniec uprawnień, ponownie wywołaj interfejs API przed upływem nowej daty ważności.

Ta czynność powoduje wysłanie SUBSCRIPTION_DEFERREDpowiadomienia dla deweloperów w czasie rzeczywistym. Aby dowiedzieć się, jak obsługiwać te zdarzenia, przeczytaj artykuł Odroczenie płatności dla subskrybenta w sekcji Informacje o subskrypcjach.

Przykład:

  1. Usługa strumieniowa FitnessGoals chce w lutym przeprowadzić promocję, aby zachęcić do regularnych ćwiczeń.

  2. Decydują się zaoferować dodatkowy miesiąc korzystania z usługi każdemu subskrybentowi, który w ciągu lutego wykonał co najmniej 10 treningów z FitnessGoals.

  3. Śledzą wyniki wyzwania, a 1 marca wywołują interfejs API subscriptions.defer w przypadku każdego aktywnego zakupu subskrypcji należącego do użytkowników, którzy w lutym podjęli wyzwanie.

  4. Użytkownicy ci mogą bezpłatnie korzystać z dodatkowego miesiąca filmów z ćwiczeniami, a potem opowiadać znajomym, jak FitnessGoals pomaga im dbać o zdrowie.

Zwroty środków i odstąpienia od umowy

Istnieje wiele sytuacji, w których możesz chcieć zwrócić środki za subskrypcję lub zakup jednorazowy albo cofnąć dostęp do nich.

Zwrot środków za zamówienie na podstawie identyfikatora

Dzięki interfejsowi API orders.refund możesz przyznawać pełne zwroty środków za każde zamówienie w ciągu 3 lat od zakupu. Metoda orders.refund otrzymuje parametr revoke, który wskazuje, czy dostęp ma zostać cofnięty, a także czy ma zostać przyznany zwrot środków.

Jeśli podczas rozmowy o zwrot środków cofniesz zgodę na zakup subskrypcji, subskrypcja zostanie natychmiast zakończona i wywoła powiadomienie w czasie rzeczywistym dla dewelopera.SUBSCRIPTION_REVOKED Aby dowiedzieć się, jak obsługiwać te zdarzenia, przeczytaj sekcję dotyczącą odwoływania w przewodniku zarządzania cyklem życia subskrypcji.

Przykład:

  1. Aby uczcić rozpoczęcie nowego mundialu, aplikacja e-sportowa Football-Not-Soccer postanawia rozlosować bezpłatne wirtualne koszulki dla wszystkich użytkowników, którzy w ciągu pierwszych 24 godzin kupią nowe stroje drużyny.

  2. Football-Not-Soccer używa interfejsu API orders.refund bez przekazywania parametru revoke, aby zwrócić zwycięzcom pieniądze za zakupione koszulki.

Unieważnienie subskrypcji i zwrot środków za pomocą tokena zakupu

W niektórych przypadkach może być konieczne cofnięcie dostępu do subskrypcji użytkownika i zwrot środków. Płatności w Google Play oferują metody odstąpienia od umowy, w tym pełne zwroty środków i zwroty środków proporcjonalne za pomocą interfejsu API subscriptionsv2.revoke. Za pomocą tego punktu końcowego możesz określić parametr revocationContext, aby określić sposób obliczania zwrotu środków.

W efekcie zostanie wysłane SUBSCRIPTION_REVOKED powiadomienie dla deweloperów w czasie rzeczywistym. Aplikacja powinna obsługiwać takie anulowania zgodnie z opisem w sekcji Odstąpienie od umowy.

Przykład:

  • Zakup z tokenem zakupu 1a2b3c4d5e6f7g8h9i0j
  • Aplikacja o nazwie pakietu com.your.app
  • intencja przyznania proporcjonalnego zwrotu środków;

Żądanie HTTP POST:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke

Treść żądania:

{
  "revocationContext": {
    "proratedRefund": {}
  }
}

Pełny zwrot środków

Jeśli chcesz anulować subskrypcję i zwrócić pełną kwotę za bieżący okres rozliczeniowy, zrób to. Użyj funkcji purchases.subscriptionsv2.revoke i ustaw jako typ zwrotu środków wartość "fullRefund": {}.

Przykład:

  1. Maria ma 30-dniową subskrypcję miesięcznego abonamentu streamingowego SuperMovies z automatycznym odnawianiem. Maria napotkała problemy techniczne, które uniemożliwiają jej dostęp do treści. W 3. dniu cyklu rozliczeniowego kontaktuje się z działem obsługi klienta i twierdzi, że nigdy nie miała dostępu do subskrypcji.

  2. Obsługa klienta znajduje w systemie szczegóły zakupu subskrypcji Marii i wywołuje połączenie z purchases.subscriptionsv2.revoke, aby poprosić o pełny zwrot środków.

  3. Obsługa klienta informuje Marię, że powinna otrzymać 100% zwrotu ceny abonamentu i że nie jest już abonentką tego abonamentu.

Proporcjonalne zwroty środków

Jeśli chcesz anulować subskrypcję i częściowo zwrócić środki za niewykorzystany okres, zrób to proporcjonalnie. Użyj funkcji purchases.subscriptionsv2.revoke i jako typ zwrotu środków podaj wartość "proratedRefund": {}.

Przykład:

  1. Maria ma 30-dniową subskrypcję miesięcznego abonamentu streamingowego SuperMovies z automatycznym odnawianiem. Korzysta z niej od jakiegoś czasu. Maria kontaktuje się z działem obsługi klienta 15. dnia swojego cyklu rozliczeniowego i informuje, że wyjeżdża za granicę i od następnego dnia nie będzie już korzystać z usługi.

  2. Obsługa klienta znajduje w systemie szczegóły subskrypcji Marii i wywołuje połączenie z purchases.subscriptionsv2.revoke, aby poprosić o proporcjonalny zwrot środków.

  3. Obsługa klienta informuje Marię, że powinna otrzymać zwrot około 50% wartości abonamentu i że dostęp do usługi zostanie natychmiast zakończony.