W ramach codziennej działalności możesz wykonywać działania związane z zarządzaniem subskrypcjami lub zakupami jednorazowymi. Na przykład obsługa klienta może przyznawać użytkownikom pełne lub częściowe zwroty środków albo w określonych przypadkach możesz cofnąć uprawnienia. Zamówieniami możesz zarządzać w Konsoli Play. Jeśli chcesz zarządzać nimi we własnym systemie, możesz to zrobić za pomocą interfejsu Google Play Developer API.
Anulowanie subskrypcji
Anulowanie subskrypcji może zostać zainicjowane przez użytkowników lub deweloperów.
Anulowanie 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 na umożliwienie użytkownikom dobrowolnego anulowania subskrypcji jest udostępnienie w aplikacji linków bezpośrednich do Sklepu Play, w którym mogą oni wyświetlać swoje subskrypcje i nimi zarządzać.
Anulowanie zainicjowane przez dewelopera
Jako deweloper możesz też w pewnych sytuacjach zainicjować anulowanie subskrypcji z poziomu backendu.
Interfejs purchases.subscriptions.cancel
API 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 tych typów anulowania w parametrze cancellationType w treści żądania:
USER_REQUESTED_STOP_RENEWALS: anuluje subskrypcję tak, jakby użytkownicy anulowali ją w Sklepie Play. Wszystkie płatności ratalne będą kontynuowane przez pozostałą część bieżącego okresu zobowiązania. W Sklepie Play użytkownicy mogą przywrócić subskrypcję przed jej wygaśnięciem lub ponownie ją wykupić po jej wygaśnięciu, jeśli jest to włączone w przypadku abonamentu podstawowego.
DEVELOPER_REQUESTED_STOP_PAYMENTS: anuluje subskrypcję i uniemożliwia dalsze płatności. Użytkownicy nie mogą przywrócić subskrypcji ani ponownie jej wykupić w Sklepie Play, ale możesz im umożliwić ponowne subskrybowanie w aplikacji.
Umożliwienie użytkownikom przywracania niewygasłych subskrypcji
W niektórych przypadkach może się okazać przydatne umożliwienie użytkownikom przywracania niewygasłych subskrypcji w centrum subskrypcji Google Play po zainicjowaniu anulowania przez dewelopera. Możesz na przykład udostępnić niestandardowy proces anulowania w aplikacji. Na podstawie logiki biznesowej możesz zdecydować, które anulowania zainicjowane z poziomu backendu mogą zostać przywrócone 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 żądania cancellationType
na wartość USER_REQUESTED_STOP_RENEWALS.
Przykład:
- Token zakupu subskrypcji
1a2b3c4d5e6f7g8h9i0j - Nazwa pakietu aplikacji
com.your.app - Identyfikator subskrypcji
your-subscription-product
Żądanie POST w protokole HTTP:
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptions/your-subscription-product/tokens/1a2b3c4d5e6f7g8h9i0j:cancel
Treść żądania:
{
"cancellationType": "USER_REQUESTED_STOP_RENEWALS"
}
Umożliwienie użytkownikom ponownego subskrybowania wygasłych subskrypcji
Aby umożliwić ponowne subskrybowanie wygasłej subskrypcji, musisz włączyć opcję Subskrybuj ponownie w abonamencie podstawowym subskrypcji, a następnie anulować subskrypcję, ustawiając cancellationType parametr na wartość USER_REQUESTED_STOP_RENEWALS.
Umożliwienie użytkownikom ponownego subskrybowania tylko w aplikacji
Jeśli ustawisz parametr cancellationType na DEVELOPER_REQUESTED_STOP_PAYMENTS lub nie ustawisz tego cancellationTypeparametru, użytkownicy nie będą mogli przywrócić subskrypcji w centrum subskrypcji Google Play. W razie potrzeby użytkownicy mogą jednak ponownie zarejestrować się w subskrypcji w Twojej aplikacji.
Ta czynność spowoduje wysłanie powiadomienia w czasie rzeczywistym dla deweloperów SUBSCRIPTION_CANCELED. Postępuj zgodnie z instrukcjami w sekcji
Anulowanie, aby obsługiwać te anulowania.
Odroczenie płatności
Okres uprawnień do subskrypcji możesz przedłużyć za pomocą
metody subscriptionsv2.defer. Gdy odroczysz subskrypcję z dodatkami, wszystkie elementy subskrypcji zostaną odroczone na ten sam okres. W okresie odroczenia użytkownik pozostaje subskrybentem Twoich treści, ale nie jest obciążany opłatą za dodatkowy czas. Gdy odroczysz płatność za subskrypcję, informacje o stanie zostaną odpowiednio zaktualizowane i zobaczysz je w polu expiryTime w informacjach o stanie zakupu:
- W przypadku aktywnych subskrypcji cyklicznych odroczona płatność przedłuża datę następnego odnowienia.
- W przypadku abonamentów przedpłaconych odroczona płatność przedłuża czas wygaśnięcia.
Oto kilka przykładów, jak możesz użyć odroczonej płatności:
- Udostępnij użytkownikom bezpłatny dostęp w ramach oferty specjalnej, np. bezpłatny tydzień dla obecnych subskrybentów za wypełnienie ankiety z opiniami.
- Udostępnij klientom bezpłatny dostęp w ramach obsługi klienta, np. po dłuższej awarii, która mogła wpłynąć na możliwość korzystania z Twojej usługi.
Płatność można odroczyć o co najmniej 1 dzień i maksymalnie o rok na każde wywołanie interfejsu API. Aby jeszcze bardziej odroczyć koniec okresu uprawnień, przed upływem nowej daty wygaśnięcia ponownie wywołaj interfejs API.
Ta czynność spowoduje wysłanie powiadomienia w czasie rzeczywistym dla deweloperów SUBSCRIPTION_DEFERRED. Aby dowiedzieć się, jak obsługiwać te zdarzenia, przeczytaj artykuł Odroczenie płatności za subskrypcję w sekcji Informacje o subskrypcjach.
Przykład:
Usługa strumieniowa FitnessGoals chce przeprowadzić promocję, aby zachęcić do regularnych ćwiczeń w lutym.
Firma postanawia zaoferować dodatkowy miesiąc usługi każdemu subskrybentowi, który w lutym będzie ćwiczyć z FitnessGoals co najmniej 10 razy.
Firma śledzi wyniki wyzwania i 1 marca wywołuje metodę subscriptionsv2.defer w przypadku każdego aktywnego zakupu subskrypcji należącego do użytkowników, którzy w lutym podjęli wyzwanie.
Ci użytkownicy mogą bezpłatnie korzystać z dodatkowego miesiąca regularnych filmów z ćwiczeniami, a także informują wszystkich swoich znajomych, jak FitnessGoals pomaga im zachować zdrowie.
Przyznawanie zwrotów środków i cofanie uprawnień
W wielu sytuacjach możesz chcieć przyznać zwrot środków za subskrypcję lub zakup jednorazowy albo cofnąć dostęp do nich.
Pełny zwrot środków za zamówienie według identyfikatora zamówienia
Za pomocą interfejsu orders.refund
API możesz przyznać pełny zwrot środków za dowolne zamówienie w ciągu 3 lat od zakupu.
Metoda orders.refund przyjmuje parametr revoke, który wskazuje, czy oprócz zwrotu środków należy cofnąć dostęp.
Jeśli cofniesz uprawnienia za pomocą wywołania zwrotu środków w przypadku zakupu subskrypcji, subskrypcja zostanie natychmiast zakończona i zostanie wysłane powiadomienie w czasie rzeczywistym dla deweloperów SUBSCRIPTION_REVOKED. Aby dowiedzieć się, jak obsługiwać te zdarzenia, przeczytaj sekcję Cofanie uprawnień w przewodniku Zarządzanie cyklem życia subskrypcji.
Przykład:
Aby uczcić początek nowych mistrzostw świata, 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 zestawy drużynowe.
Football-Not-Soccer używa interfejsu
orders.refundAPI bez przekazywania parametru revoke, aby zwrócić środki za zakup koszulek zwycięzcom.
Cofanie uprawnień i zwrot środków za subskrypcję według tokena zakupu
W niektórych przypadkach może być konieczne cofnięcie dostępu do subskrypcji użytkownika i przyznanie zwrotu środków. Płatności w Play oferują metody cofania uprawnień, w tym pełne zwroty środków i proporcjonalne zwroty środków, za pomocą interfejsu subscriptionsv2.revoke API. Za pomocą tego punktu końcowego możesz określić revocationContext, aby określić sposób obliczania zwrotu środków.
Ta czynność spowoduje wysłanie powiadomienia w czasie rzeczywistym dla deweloperów SUBSCRIPTION_REVOKED. Twoja aplikacja powinna obsługiwać te anulowania zgodnie z opisem w sekcji
Cofanie uprawnień.
Przykład:
- Zakup z tokenem zakupu
1a2b3c4d5e6f7g8h9i0j - Aplikacja o nazwie pakietu
com.your.app - Zamiar przyznania proporcjonalnego zwrotu środków
Żądanie POST w protokole HTTP:
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke
Treść żądania:
{
"revocationContext": {
"proratedRefund": {}
}
}
Pełny zwrot kosztów
Jeśli musisz zakończyć subskrypcję i zwrócić pełną kwotę za bieżący okres rozliczeniowy, przyznaj pełny zwrot środków. Użyj funkcji
purchases.subscriptionsv2.revoke
i ustaw "fullRefund": {} jako typ zwrotu środków.
Przykład:
Maria ma automatycznie odnawianą 30-dniową subskrypcję miesięcznego abonamentu strumieniowego SuperMovies. Maria napotkała problemy techniczne, które uniemożliwiają jej dostęp do treści. W 3. dniu cyklu rozliczeniowego kontaktuje się z obsługą klienta, informując, że nigdy nie uzyskała dostępu do subskrypcji.
Obsługa klienta znajduje w systemie szczegóły zakupu subskrypcji Marii i wywołuje funkcję
purchases.subscriptionsv2.revokeprosząc o pełny zwrot środków.Obsługa klienta informuje Marię, że powinna otrzymać 100% ceny subskrypcji, a jej subskrypcja została anulowana.
Proporcjonalne zwroty środków
Jeśli musisz zakończyć subskrypcję i częściowo zwrócić środki za pozostały czas uprawnień, przyznaj proporcjonalny zwrot środków. Użyj funkcji
purchases.subscriptionsv2.revoke
i ustaw "proratedRefund": {} jako typ zwrotu środków.
Przykład:
Maria ma automatycznie odnawianą 30-dniową subskrypcję miesięcznego abonamentu strumieniowego SuperMovies. Od pewnego czasu korzysta z usługi. W 15. dniu cyklu rozliczeniowego Maria kontaktuje się z obsługą klienta, informując, że przeprowadza się za granicę i od następnego dnia nie będzie mogła korzystać z usługi.
Obsługa klienta znajduje w systemie szczegóły zakupu subskrypcji Marii i wywołuje funkcję
purchases.subscriptionsv2.revokeprosząc o proporcjonalny zwrot środków.Obsługa klienta informuje Marię, że powinna otrzymać około 50% ceny subskrypcji, a dostęp do usługi został natychmiast zakończony.