Subskrypcja z dodatkami

Subskrypcja z dodatkami umożliwia łączenie ze sobą wielu produktów subskrypcyjnych, które można kupować, rozliczać i zarządzać nimi razem. Istniejące subskrypcje katalogu produktów można bezproblemowo oferować jako dodatki bez konieczności wcześniejszego określania szczegółów ani dodatkowej konfiguracji. Możesz uruchomić proces zakupu z wieloma istniejącymi produktami subskrypcyjnymi i sprzedawać je jako dodatki.

Uwagi

Korzystając z funkcji subskrypcji z dodatkami, pamiętaj o tych kwestiach:

  • Subskrypcja z dodatkami jest obsługiwana tylko w przypadku automatycznie odnawianych abonamentów podstawowych.

  • Wszystkie produkty w zakupie muszą mieć ten sam okres rozliczeniowy płatności cyklicznej. Nie możesz na przykład mieć subskrypcji z rocznym okresem rozliczeniowym i dodatków z miesięcznym okresem rozliczeniowym.

  • W subskrypcji z dodatkami możesz mieć maksymalnie 50 produktów.

  • Ta funkcja jest niedostępna w Korei Południowej (KR).

Integracja z Biblioteką płatności w Play

W tej sekcji opisujemy, jak zintegrować funkcję subskrypcji z dodatkami z Biblioteką płatności w Play (PBL). Zakładamy, że znasz już początkowe kroki integracji biblioteki Płatności w Google Play, takie jak dodanie zależności biblioteki Płatności w Google Play do aplikacji, zainicjowanie BillingClientpołączenie z Google Play. Ta sekcja skupia się na aspektach integracji PBL, które są specyficzne dla subskrypcji z dodatkami.

Uruchamianie procesu zakupu

Aby uruchomić proces zakupu subskrypcji z dodatkami, wykonaj te czynności:

  1. Pobierz wszystkie elementy subskrypcji za pomocą metody BillingClient.queryProductDetailsAsync.

  2. Ustaw obiekt ProductDetailsParams dla każdego elementu.

    Produkt reprezentowany przez obiekt ProductDetailsParams określa zarówno ProductDetails wskazujący produkt subskrypcyjny, jak i offerToken wybierający konkretną subskrypcję base plan lub offer.

  3. Podaj szczegóły produktu w metodzie BillingFlowParams.Builder.setProductDetailsParamsList. Klasa BillingFlowParams określa szczegóły procesu zakupu.

    Poniższy przykład pokazuje, jak uruchomić proces płatności za subskrypcję z wieloma produktami:

    Java

       BillingClient billingClient = ;
    
        // ProductDetails obtained from queryProductDetailsAsync().
        ProductDetailsParams productDetails1 = ...;
        ProductDetailsParams productDetails2 = ...;
        ArrayList productDetailsList = new ArrayList<>();
        productDetailsList.add(productDetails1);
        productDetailsList.add(productDetails2);
    
        BillingFlowParams billingFlowParams =
            BillingFlowParams.newBuilder()
               .setProductDetailsParamsList(productDetailsList)
               .build();
        billingClient.launchBillingFlow(billingFlowParams);

Zasady obowiązujące w przypadku produktów w zakupie

  • Aby daty odnowienia dodatków były zgodne z datami odnowienia produktu podstawowego, Google Play może po zakończeniu okresu próbnego lub okresu z ceną dla nowych użytkowników naliczyć proporcjonalną opłatę.
  • Kryteria kwalifikacji oferty będą oceniane oddzielnie dla każdego produktu.

Przetwarzanie zakupów

Przetwarzanie subskrypcji z dodatkami jest takie samo jak przetwarzanie pojedynczego zakupu subskrypcji, co opisano w artykule Integrowanie Biblioteki płatności w Google Play z aplikacją. Jedyna różnica polega na tym, że użytkownik może otrzymać wiele uprawnień w ramach jednego zakupu. Zakup subskrypcji z dodatkami zwraca wiele elementów, które można pobrać za pomocą Purchase.getProducts() w bibliotece Płatności w Google Play, a następnie listy lineItemspurchases.subscriptionsv2.get interfejsu Google Play Developer API.

Zmienianie subskrypcji z dodatkami

Wszelkie zmiany w subskrypcji z dodatkami powodują przejście na wyższą lub niższą wersję. Więcej informacji znajdziesz w artykule Przechodzenie na wyższą lub niższą wersję subskrypcji.

Aby zmienić lub przywrócić istniejący zakup subskrypcji z dodatkami w aplikacji, musisz wywołać interfejs API launchBillingFlow z dodatkowymi parametrami i upewnić się, że:

  • Zawsze wywołuj funkcję setOldPurchaseToken z tokenem zakupu bieżącej subskrypcji.
  • Aby przejść na wyższą lub niższą wersję produktu albo zmienić go na inny, zadzwoń pod numer SubscriptionProductReplacementParams.setReplacementMode, aby określić, jak ma być obsługiwana zmiana subskrypcji między starym a nowym produktem. W przeciwnym razie nie musisz ustawiać wartości SubscriptionProductReplacementParams.
  • Jeśli element podstawowy nie zostanie zmieniony, nadal możesz wywołać SubscriptionProductReplacementParams.setSubscriptionReplacementMode, aby zastosować określone zachowanie zastępowania. Odpowiednie reguły w tym przypadku znajdziesz w artykule Ponowna subskrypcja lub zmiana abonamentu w ramach tej samej subskrypcji.
  • Nowe dodatki zaczną obowiązywać od razu, a opłata zostanie naliczona proporcjonalnie, aby dopasować datę kolejnego odnowienia do produktu podstawowego w subskrypcji.
  • Usunięte dodatki wygasną z końcem bieżącego okresu rozliczeniowego.
  • Podczas uruchamiania procesu płatności musisz określić wszystkie aktywne elementy subskrypcji z dodatkami z wyjątkiem tych, które mają zostać usunięte, oraz wszystkie nowe dodatki.

Z przykładu poniżej dowiesz się, jak wywołać interfejs launchBillingFlow API podczas zmiany istniejącego zakupu subskrypcji z dodatkami:

Java

BillingClient billingClient = ;

int replacementMode =;

// ProductDetails obtained from queryProductDetailsAsync().
ProductDetailsParams productDetails1 = ...;
ProductDetailsParams productDetails2 = ...;
ProductDetailsParams productDetails3 = ...;

ArrayList newProductDetailsList = new ArrayList<>();
newProductDetailsList.add(productDetails1);
newProductDetailsList.add(productDetails1);
newProductDetailsList.add(productDetails1);

BillingFlowParams billingFlowParams =
    BillingFlowParams.newBuilder()
        .setSubscriptionUpdateParams(
          SubscriptionUpdateParams.newBuilder()
              .setOldPurchaseToken(purchaseTokenOfExistingSubscription)
              // No need to set if change does not affect the base item.
             .setSubscriptionReplacementMode(replacementMode)
             .build())
        .setProductDetailsParamsList(productDetailsList)
        .build();

billingClient.launchBillingFlow(billingFlowParams);

Scenariusze modyfikacji subskrypcji

W tabeli poniżej znajdziesz różne scenariusze modyfikacji subskrypcji z dodatkami i odpowiednie zachowania.

Podczas używania parametru SubscriptionProductReplacementParams

Istniejące produkty Zmodyfikowane produkty Czy w parametrze SubscriptionProductReplacementParams muszę ustawić tryb wymiany? Zachowanie
A (produkt podstawowy), B A (produkt podstawowy) Tak (użyj KEEP_EXISTING)
  • Element B jest przeznaczony do odroczonego usunięcia.
  • Element A zostaje zachowany.
  • Użytkownicy zachowają obecną cenę produktu A, w tym pozostałą część płatności wprowadzających, które otrzymali w momencie rejestracji.
A A (produkt podstawowy), B Tak (w przypadku A użyj KEEP_EXISTING)
  • Produkt B zostanie dodany natychmiast, a opłata zostanie naliczona proporcjonalnie.
  • Element A zostaje zachowany.
  • Użytkownicy zachowają obecną cenę produktu A, w tym pozostałą część płatności wprowadzających, które otrzymali w momencie rejestracji.
A (produkt podstawowy), B A (produkt podstawowy), C Tak (w przypadku A użyj KEEP_EXISTING)
  • B jest przeznaczony do odroczonego usunięcia.
  • C zostanie dodany natychmiast, a opłata zostanie naliczona proporcjonalnie.
  • Element A zostaje zachowany.
  • Użytkownicy zachowają obecną cenę produktu A, w tym pozostałą część płatności wprowadzających, które otrzymali w momencie rejestracji.
A (produkt podstawowy), B B (produkt podstawowy) Nie A jest zaplanowane do usunięcia z opóźnieniem.
A (produkt podstawowy), B C (produkt podstawowy) Tak
  • Zamiana A -> C zależy od SubscriptionProductReplacementParams replacementMode
  • B jest przeznaczony do odroczonego usunięcia.
A (produkt podstawowy), B C (produkt podstawowy), B Tak
  • Zamiana A -> C zależy od SubscriptionProductReplacementParams replacementMode.
  • Aby zachować element B bez zmian, ustaw tryb zastępowania jako KEEP_EXISTING.
A (produkt podstawowy), B C (produkt podstawowy), D Tak
  • Zamiana A -> C zależy od SubscriptionProductReplacementParams replacementMode.
  • B jest przeznaczony do odroczonego usunięcia.
  • D zostanie dodany natychmiast, a opłata zostanie naliczona proporcjonalnie.
A (produkt podstawowy), B A (produkt podstawowy), C Tak
  • Zamiana A –> A i B –> C zależy od trybu zamiany podanego w SubscriptionProductReplacementParams replacementMode w każdym ProductDetailsParams.
  • Aby zachować element A bez zmian, ustaw jego tryb zastępowania na KEEP_EXISTING.
A (produkt podstawowy), B, C D (produkt podstawowy), B, C Tak
  • Zastąpienie A->D i B->B, C->C zależy od trybu zastępowania podanego w SubscriptionProductReplacementParams replacementMode w każdym ProductDetailsParams.
  • Aby zachować elementy B i C bez zmian, ustaw dla nich tryb zastępowania KEEP_EXISTING.

Podczas korzystania z SubscriptionUpdateParams

Istniejące produkty Zmodyfikowane produkty Czy musisz ustawić informacje o zamienniku? Zachowanie
A (produkt podstawowy), B A (produkt podstawowy) Nie
  • Element B jest przeznaczony do odroczonego usunięcia.
  • Działanie produktu A zależy od ustawienia Zmiany abonamentu podstawowego i oferty w abonamencie podstawowym.
  • Cena produktu A zostanie zaktualizowana do najnowszej ceny, a użytkownicy mogą utracić wszelkie płatności wprowadzające, które otrzymali podczas rejestracji na podstawie kryteriów kwalifikacji do oferty.
A A (produkt podstawowy), B Nie
  • Produkt B zostanie dodany natychmiast, a opłata zostanie naliczona proporcjonalnie.
  • Działanie produktu A zależy od ustawienia Zmiany abonamentu podstawowego i oferty w abonamencie podstawowym.
  • Cena produktu A zostanie zaktualizowana do najnowszej ceny, a użytkownicy mogą utracić wszelkie płatności wprowadzające, które otrzymali podczas rejestracji, w zależności od kryteriów kwalifikacji do oferty.
A (produkt podstawowy), B A (produkt podstawowy), C Nie
  • B jest przeznaczony do odroczonego usunięcia.
  • C zostanie dodany natychmiast, a opłata zostanie naliczona proporcjonalnie.
  • Działanie produktu A zależy od ustawienia Zmiany abonamentu podstawowego i oferty w abonamencie podstawowym.
A (produkt podstawowy), B B (produkt podstawowy) Nie A jest zaplanowane do usunięcia z opóźnieniem.
A (produkt podstawowy), B C (produkt podstawowy) Tak
  • Zamiana A → C zależy od setSubscriptionReplacementMode (w PBL 8.1 ta funkcja została wycofana).
  • B jest przeznaczony do odroczonego usunięcia.
A (produkt podstawowy), B C (produkt podstawowy), B Tak Zamiana A –> C zależy od setSubscriptionReplacementMode (wycofane w PBL 8.1).
A (produkt podstawowy), B C (produkt podstawowy), D Tak
  • Zamiana A –> C zależy od setSubscriptionReplacementMode (wycofane w PBL 8.1).
  • B jest przeznaczony do odroczonego usunięcia.
  • D zostanie dodany natychmiast, a opłata zostanie naliczona proporcjonalnie.

Powiadomienia w czasie rzeczywistym dla deweloperów

W przypadku zakupów subskrypcji z dodatkami, które zawierają wiele uprawnień do produktów, w RTDN nie jest podawane pole subscriptionId. Zamiast tego możesz użyć interfejsów Play Developer API, aby uzyskać informacje o zakupie i zobaczyć powiązane uprawnienia do produktów.

Zmiany cen dla obecnych subskrybentów

Zmiana cen subskrypcji dla obecnych subskrybentów subskrypcji z zakupem dodatków jest podobna do zmiany cen pojedynczej subskrypcji, jak opisano w sekcji Zmienianie cen subskrypcji. Istnieją jednak pewne ograniczenia i różnice funkcjonalne, które opisujemy w tej sekcji.

Rezygnowanie ze starszej kohorty cenowej

Zakończenie starszej kohorty ma też wpływ na subskrypcje z zakupionymi dodatkami. Obowiązują te reguły:

  • Wszystkie oczekujące wzrosty cen z możliwością akceptacji powinny mieć ten sam czas odnowienia z nową ceną. Jeśli element w subskrypcji z dodatkami ma wzrost ceny wymagający zgody użytkownika, który nie został jeszcze potwierdzony przez użytkownika, wszelkie nowe wzrosty ceny wymagające zgody użytkownika w przypadku innych elementów zakupu będą ignorowane, chyba że spowodują ten sam czas odnowienia zastosowania nowej ceny co istniejący wzrost ceny w stanie OUTSTANDING. Gdy użytkownik potwierdzi wzrost ceny, zostaną zarejestrowane wszelkie nowsze zmiany ceny. Użytkownicy mogą zaakceptować wszystkie niepotwierdzone wzrosty ceny wymagające zgody użytkownika jednocześnie.

    Przykład:

    • Załóżmy, że masz subskrypcję z dodatkami (produkty A i B), która odnawia się 7 dnia każdego miesiąca.
    • Produkt A ma trwającą migrację ceny z 7 zł na 10 zł, a wzrost ceny ma nastąpić 7 lipca.
    • Nowa migracja ceny z 5 USD na 6 USD rozpoczyna się w przypadku produktu B 2 czerwca. Ponieważ wzrost ceny wymagający zgody użytkownika rozpoczyna się 37 dni po migracji, najwcześniejszy wzrost ceny w przypadku produktu B nastąpi 7 sierpnia.

    W tym scenariuszu dopóki użytkownik nie zaakceptuje zmiany ceny produktu A (dopóki nie będzie on w stanie POTWIERDZONY), zmiana ceny produktu B nie zostanie zarejestrowana w przypadku zakupu subskrypcji, a metoda SubscriptionPurchaseV2 nie zwróci szczegółów zmiany ceny produktu B. Po potwierdzeniu przez użytkownika zmiany ceny produktu A rozpoczyna się zmiana ceny produktu B. Użytkownik otrzyma wzrost ceny wymagający zgody użytkownika w przypadku produktu B dopiero po zaakceptowaniu wzrostu ceny wymagającego zgody użytkownika w przypadku produktu A.

  • E-mail od Google Play zawiera listę wszystkich produktów, których ceny wzrosną lub spadną tego samego dnia.

Anulowanie subskrypcji z dodatkami

Użytkownicy mogą anulować cały zakup subskrypcji z dodatkami w centrum subskrypcji Google Play, a Ty możesz anulować cały zakup subskrypcji z dodatkami tylko za pomocą interfejsu Google Play Developer API.

Gdy subskrypcja zostanie anulowana bez cofnięcia, żadne elementy zakupu nie będą odnawiać się automatycznie, ale użytkownik zachowa dostęp do przysługujących mu elementów, w tym do bezpłatnych okresów próbnych, do końca odpowiednich okresów rozliczeniowych.

Unieważnianie subskrypcji z dodatkami i zwracanie za nie środków

Oto kilka wytycznych dotyczących wycofywania i zwracania środków za subskrypcje:

  • W Konsoli Play możesz zwrócić środki za konkretne zamówienie bez odbierania dostępu do subskrypcji.

  • Wywołaj orders.refund, aby w pełni zwrócić użytkownikowi środki za konkretne płatności za subskrypcję bez odbierania mu dostępu do niej.

  • Zadzwoń pod numer purchases.subscriptionsv2.revoke, aby natychmiast odebrać dostęp do wszystkich elementów subskrypcji. Za pomocą tego interfejsu API możesz:

    • Cofnij dostęp do wszystkich elementów i zwróć proporcjonalną kwotę.

    • W przypadku wycofania subskrypcji z dodatkami z proporcjonalnym zwrotem środków zwrot środków zostanie przyznany za ostatnie zamówienie każdego produktu w proporcjonalnej kwocie na podstawie czasu pozostałego do następnego odnowienia.

    • Cofnij dostęp do wszystkich elementów i zapewnij pełny zwrot środków.

    • Cofnij dostęp do poszczególnych elementów i otrzymaj pełny zwrot środków za dany element.

Unieważnianie poszczególnych elementów w subskrypcji z dodatkami

Aby cofnąć poszczególne elementy subskrypcji z dodatkami bez cofania całego zakupu, wywołaj purchases.subscriptionsv2.revoke z polem ItemBasedRefund ustawionym w RevocationContext. productId produktu, który ma zostać wycofany i za który mają zostać zwrócone środki, można ustawić w polu ItemBasedRefund.

Pole ItemBasedRefund można ustawić w przypadku zakupów obejmujących co najmniej 1 element subskrypcji z automatycznym odnawianiem.

  • Jeśli po wycofaniu produktu określonego w parametrze ItemBasedRefund w ramach zakupu subskrypcji nadal będą aktywne inne produkty, wycofany zostanie tylko ten produkt, a środki za niego zostaną w pełni zwrócone bez przerywania stanu subskrypcji.
  • Jeśli po wycofaniu produktu określonego w ItemBasedRefund w ramach zakupu subskrypcji nie pozostaną żadne aktywne produkty, produkt zostanie wycofany, w pełni zwrócony, a subskrypcja zostanie anulowana.

Uwagi

  • W przypadku korzystania z ItemBasedRefund można cofnąć tylko 1 element naraz. Żądanie można wywołać wiele razy, jeśli trzeba cofnąć różne elementy.
  • Gdy zakup subskrypcji jest w stanie odrzucenia płatności lub gdy element określony w ItemBasedRefund nie jest własnością użytkownika lub wygasł, odrzucenie elementu jest blokowane.
  • Odrzucanie produktów nie jest obsługiwane w przypadku subskrypcji przedpłaconych.

Odroczenie płatności

Datę kolejnego rozliczenia subskrypcji z dodatkami możesz przesunąć za pomocą metody Purchases.subscriptionsv2:defer.

Gdy odroczysz subskrypcję z dodatkami, wszystkie elementy subskrypcji zostaną odroczone o ten sam czas. W tym okresie użytkownicy zachowują pełny dostęp do wszystkich elementów, ale nie są obciążani opłatami. Data odnowienia wszystkich elementów zostanie zmieniona na nową.

Może to być przydatne w przypadku promocji lub gestów dobrej woli wobec klientów. Rozliczenie może być odroczone o co najmniej 1 dzień i maksymalnie o rok na każde wywołanie interfejsu API. Możesz wielokrotnie wywoływać interfejs API, aby przedłużyć odroczenie przed nadejściem nowej daty rozliczenia.

Gdy to działanie zostanie wykonane, zostanie wygenerowane SUBSCRIPTION_DEFERREDpowiadomienie w czasie rzeczywistym dla deweloperów.

Wygasanie produktów podczas odrzucenia płatności

W przypadku zakupu subskrypcji z dodatkami niektóre odnowienia mogą wymagać tylko przedłużenia części uprawnień do elementów bez wpływu na elementy z przyszłą datą wygaśnięcia.

Niezależnie od tego, które elementy są objęte odnowieniem, jeśli płatność za odnowienie zostanie odrzucona, cały zakup subskrypcji przejdzie w okres prolongaty, a konto zostanie zablokowane zgodnie z opisem w dokumentacji.

Wybór okresu regeneracji

Okres prolongaty nadal przyznaje użytkownikowi uprawnienia, więc po zakupie subskrypcji z dodatkami, gdy płatność za odnowienie zostanie odrzucona, zostanie wybrany produkt z minimalnym okresem prolongaty spośród wszystkich aktywnych produktów, a jego okres prolongaty i okres zawieszenia konta zostaną zastosowane jako okres przywrócenia w przypadku tego odnowienia.

Aktywne produkty to produkty, które były aktywne w momencie zakupu subskrypcji z dodatkami tuż przed próbą odnowienia. Nie obejmują one żadnych nowo dodanych produktów (które nie będą uprawnione do czasu odzyskania) ani żadnych produktów, które nie są już aktywne z powodu usunięcia lub wyłączenia.

Zastosowane zostaną ustawienia zawieszenia konta dla produktu z wybranym minimalnym okresem prolongaty. Jeśli jest więcej niż 1 produkt z minimalnym okresem prolongaty, ale różne okresy zawieszenia konta, zastosowany zostanie najdłuższy okres zawieszenia konta.

Okres prolongaty

Gdy płatność za odnowienie subskrypcji zostanie odrzucona, subskrypcja przejdzie w stan okresu prolongaty. W okresie prolongaty użytkownik nadal będzie mieć dostęp do wszystkich aktywnych elementów z poprzedniego okresu odnowienia. Jeśli po okresie prolongaty problem z formą płatności nie zostanie rozwiązany, cała subskrypcja zostanie zawieszona. Jeśli w okresie prolongaty inne produkty osiągną datę odnowienia, po wznowieniu subskrypcji po odrzuceniu płatności zostanie podjęta nowa próba pobrania opłaty za te produkty.

Zawieszenie konta

Gdy subskrypcja jest wstrzymana, dostęp do wszystkich elementów subskrypcji jest zawieszony do czasu odzyskania płatności.

Jeśli subskrypcja w okresie zawieszenia konta zostanie przywrócona, zakup subskrypcji będzie nadal obowiązywać. Jeśli subskrypcja nie zostanie przywrócona, produkty, w przypadku których płatność została odrzucona, wygasną, a dostęp do pozostałych produktów zostanie przywrócony na pozostałą część okresu rozliczeniowego.

Przykład:

  • Użytkownik ma subskrypcję Mój abonament podstawowy, która odnawia się 1 dnia każdego miesiąca. 15 sierpnia dodaje abonament dodatkowy za 10 USD miesięcznie z 7-dniowym bezpłatnym okresem próbnym. Żaden z tych produktów nie ma okresu prolongaty, a oba mają 30-dniowy okres zawieszenia konta.

  • 22 sierpnia użytkownik zostaje obciążony kwotą 2,90 zł (10 zł*9 dni/31 dni) za okres do 31 sierpnia, ale forma płatności użytkownika wygasa wcześniej i 22 sierpnia subskrypcja zostaje odrzucona.

Gdy subskrypcja zostanie zawieszona z powodu odrzucenia płatności, użytkownik nie będzie mieć dostępu do żadnych elementów subskrypcji z dodatkami. Pozostały czas subskrypcji, które nie są odnawiane, zostanie zwrócony użytkownikom, gdy subskrypcja przestanie być zawieszona na koncie z powodu odzyskania płatności lub anulowania.

W poprzednim przykładzie subskrypcja zostaje wstrzymana 22 sierpnia.

  • Jeśli konto zostanie odzyskane 25 sierpnia, przed datą odnowienia 1 września, użytkownik odzyska dostęp do mojego planu podstawowegododatkowego planu tego samego dnia. Następna data płatności zostanie zmieniona na 4 września.

  • Jeśli konto nie zostanie odzyskane w ciągu 30 dni, 21 września subskrypcja zostanie anulowana, a użytkownik straci dostęp do dodatkowego pakietu. Do 30 września będzie mógł korzystać z pakietu podstawowego.

W tym przykładzie musisz uzyskać zaktualizowany kod expiryTime DLA WSZYSTKICH produktów w subskrypcji z dodatkami, ponieważ niektóre produkty mogą odzyskać uprawnienia po okresie prolongaty i zawieszenia konta.

Sprawozdawczość finansowa i uzgadnianie

Używaj raportu o zarobkach, aby porównywać aktywne subskrypcje z transakcjami w Google Play. Każdy element zamówienia transakcji ma identyfikator zamówienia. W przypadku zakupów obejmujących kilka produktów raporty Zarobki i szacunkowa sprzedaż będą zawierać osobne wiersze dla każdej transakcji, np. obciążenia, opłaty, podatku i zwrotu środków, w przypadku każdego produktu.

W przypadku paneli w Konsoli Play:

  • Statystyki przychodów prezentowane w sekcji Raporty finansowe w konsoli są podzielone według produktów.

  • Zarządzanie zamówieniami odzwierciedla zakup subskrypcji z dodatkami i zawiera szczegółowe listy zakupionych produktów. W sekcji zarządzania zamówieniami możesz cofnąć, anulować lub w pełni zwrócić środki za zakup użytkownika.