Informacje o wersji Biblioteki płatności w Google Play

Ten temat zawiera informacje o wersji Biblioteki płatności w Google Play.

Wersja 7.0.0 Biblioteki płatności w Google Play (14.05.2024)

Biblioteka płatności w Google Play i rozszerzenia Kotlin są teraz dostępne w wersji 7.0.0 i dostępności informacji.

Podsumowanie zmian

Wersja 6.2.1 Biblioteki płatności w Google Play (16.04.2024)

Biblioteka płatności w Google Play i rozszerzenia Kotlin są teraz dostępne w wersji 6.2.1 i dostępności informacji.

Podsumowanie zmian

Wersja 6.2.0 Biblioteki płatności w Google Play (6.03.2024)

Biblioteka płatności w Google Play i rozszerzenia Kotlin są teraz dostępne w wersji 6.2.0 i dostępności informacji.

Podsumowanie zmian

Wersja 6.1.0 Biblioteki płatności w Google Play (14.11.2023 r.)

Biblioteka płatności w Google Play i rozszerzenia Kotlin są teraz dostępne w wersji 6.1.0 i dostępności informacji.

Podsumowanie zmian

Wersja 6.0.1 Biblioteki płatności w Google Play (22.06.2023 r.)

Biblioteka płatności w Google Play i rozszerzenia Kotlin są teraz dostępne w wersji 6.0.1 i dostępności informacji.

Podsumowanie zmian

Zaktualizuj Bibliotekę płatności w Play, aby była zgodna z Androidem 14.

Wersja 6.0 Biblioteki płatności w Google Play (10.05.2023 r.)

Biblioteka płatności w Google Play i rozszerzenia Kotlin są teraz dostępne w wersji 6.0.0 i dostępności informacji.

Podsumowanie zmian

  • Dodano nowe ReplacementMode wyliczenie do zastąpienia ProrationMode

    Pamiętaj, że pakiet ProrationMode jest nadal dostępny na potrzeby zgodności wstecznej .

  • Usunięto identyfikator zamówienia dla PENDING zakupów.

    Wcześniej identyfikator zamówienia był zawsze tworzony, nawet jeśli zakup oczekujący. Od wersji 6.0.0 identyfikator zamówienia nie będzie tworzony dla oczekujące zakupy. W przypadku tych zakupów uzupełniony będzie identyfikator zamówienia. po przeniesieniu zakupu do PURCHASED stanu.

  • Usunięto metody queryPurchases i launchPriceConfirmationFlow.

    Metody queryPurchases i launchPriceConfirmationFlow, które zawierają oznaczone wcześniej jako wycofane, zostały usunięte z Płatności w Play Biblioteka 6.0.0 Deweloperzy powinni użyć metody queryPurchasesAsync zamiast queryPurchases. Jeśli masz inne wersje (launchPriceConfirmationFlow), zapoznaj się z sekcją Zmiany cen.

  • Dodano nowy kod odpowiedzi na błąd sieci.

    nowy kod odpowiedzi na błąd sieci, NETWORK_ERROR została dodana wersja PBL w wersji 6.0.0. Ten kod jest zwracany, gdy z powodu problemu z połączeniem sieciowym. Te połączenia sieciowe Błędy zostały wcześniej zgłoszone jako SERVICE_UNAVAILABLE.

  • Zaktualizowano SERVICE_UNAVAILABLE oraz SERVICE_TIMEOUT

    Od wersji PBL w wersji 6.0.0 błędy z powodu przekroczenia limitu czasu przetwarzania będą została zwrócona jako SERVICE_UNAVAILABLE, a nie jako obecna SERVICE_TIMEOUT.

    To zachowanie nie zmienia się we wcześniejszych wersjach PBL.

  • Usunięty SERVICE_TIMEOUT

    Od wersji PBL w wersji 6.0.0 usługa SERVICE_TIMEOUT nie będzie już zwracana. Poprzednie wersje PBL nadal będą zwracać ten kod.

  • Dodano dodatkowe rejestrowanie.

    Wersja 6 Biblioteki płatności w Play obejmuje dodatkowe logowanie, które zapewnia wgląd w wykorzystanie interfejsów API (np. sukcesy i niepowodzenia) oraz połączenia z usługami. problemów. Wykorzystamy te informacje do poprawy działania Google Play Bibliotekę płatności i zapewniamy lepszą pomoc w przypadku błędów.

Wersja 5.2.1 Biblioteki płatności w Google Play (22.06.2023 r.)

Biblioteka płatności w Google Play i rozszerzenia Kotlin są teraz dostępne w wersji 5.2.1 i dostępności informacji.

Podsumowanie zmian

Zaktualizuj Bibliotekę płatności w Play, aby była zgodna z Androidem 14.

Wersja 5.2 Biblioteki płatności w Google Play (6.04.2023 r.)

Biblioteka płatności w Google Play i rozszerzenia Kotlin są teraz dostępne w wersji 5.2.0 i dostępności informacji.

Podsumowanie zmian

Wersja 5.1 Biblioteki płatności w Google Play (31.10.2022)

Biblioteka płatności w Google Play i rozszerzenia Kotlin są teraz dostępne w wersji 5.1.0 i dostępności informacji.

Ta wersja zawiera następujące zmiany.

Podsumowanie zmian

Wersja 5.0 Biblioteki płatności w Google Play (11.05.2022)

Biblioteka płatności w Google Play i rozszerzenia Kotlin są teraz dostępne w wersji 5.0.0 i dostępności informacji.

Ta wersja zawiera następujące zmiany.

Podsumowanie zmian

  • Wprowadzono nowy model subskrypcji, w tym nowe podmioty, które: umożliwiają tworzenie wielu ofert dla jednej subskrypcji. Więcej informacji: przewodnika po migracji.
  • Dodane BillingClient.queryProductDetailsAsync() aby zastąpić BillingClient.querySkuDetailsAsync().
  • Dodano metodę setIsOfferPersonalized() do personalizowania cen w UE wymagania dotyczące ujawniania informacji. Więcej informacji o korzystaniu z tej metody znajdziesz w artykule Określ cenę spersonalizowaną.
  • Usunięto narzędzie queryPurchases(), które zostało wcześniej wycofane i zastąpione przez queryPurchasesAsync wprowadzona w Bibliotece płatności w Google Play w wersji 4.0.0.
  • Aplikacja launchPriceChangeFlow została wycofana i w przyszłości zostanie usunięta wersji. Aby dowiedzieć się więcej o alternatywnych rozwiązaniach, zobacz Uruchom proces potwierdzenia zmiany ceny.
  • Usunięty setVrPurchaseFlow() która była wcześniej używana podczas tworzenia wystąpienia procesu zakupu. W poprzednich wersjach ta metoda przekierowywała użytkownika do strony sfinalizować zakup na urządzeniu z Androidem. Po usunięciu użytkownicy finalizują zakup na stronie standardowy proces zakupu.

Wersja 4.1 Biblioteki płatności w Google Play (23.02.2022)

Biblioteka płatności w Google Play i rozszerzenia Kotlin są teraz dostępne w wersji 4.1.0 i dostępności informacji.

Ta wersja zawiera następujące zmiany.

Podsumowanie zmian

Wersja 4.0 Biblioteki płatności w Google Play (18.05.2021)

Biblioteka płatności w Google Play i rozszerzenia Kotlin są teraz dostępne w wersji 4.0.0 i dostępności informacji.

Podsumowanie zmian

Wersja 3.0.3 Biblioteki płatności w Google Play (12.03.2021)

Wersja 3.0.3 Biblioteki płatności w Google Play, rozszerzenia Kotlin i Unity wtyczka jest już dostępna.

Poprawki błędów Java i Kotlin

  • Napraw wyciek pamięci, gdy: endConnection() .
  • Rozwiązanie problemu, który występuje, gdy Biblioteka płatności w Google Play jest używana przez aplikacje, które korzystają z funkcji w trybie uruchamiania pojedynczego zadania. O onPurchasesUpdated() wywołanie zwrotne zostanie uruchomione po wznowieniu aplikacji z programu uruchamiającego Androida a przed zawieszeniem widoczne było okno płatności.

Poprawki błędów Unity

  • Zaktualizuj Javę do wersji 3.0.3, aby naprawić wyciek pamięci i uniknąć problemów zakupów po wznowieniu aplikacji z Menu z aplikacjami na Androida i rozliczenia. było widoczne przed zawieszeniem.

Wersja 3.0.2 Biblioteki płatności w Google Play (24.11.2020)

Biblioteka płatności w Google Play i rozszerzenie Kotlin są już dostępne w wersji 3.0.2.

Poprawki błędów

  • Naprawiliśmy błąd w rozszerzeniu Kotlin, który powodował, że współrzędna zawodziła i wyświetlała się komunikat o błędzie „Już wznowiono”.
  • Naprawiono nierozstrzygnięte odwołania, gdy w bibliotece kotlinx.coroutines w wersji 1.4 lub nowszej używane było rozszerzenie Kotlin.

Wersja 3.0.1 Biblioteki płatności w Google Play (30.09.2020)

Biblioteka płatności w Google Play i rozszerzenie Kotlin są już dostępne w wersji 3.0.1.

Poprawki błędów

  • Usunęliśmy błąd, który powodował, że gdy aplikacja była zamykana i przywracana podczas procesu płatności, Nie można wywołać funkcji PurchasesUpdatedListener z wynikiem zakupu.

Wersja 3.0 Biblioteki płatności w Google Play (8.06.2020)

Wersja 3.0.0 Biblioteki płatności w Google Play z rozszerzeniem Kotlin i wtyczka Unity są już dostępne.

Podsumowanie zmian

  • Usunięto obsługę kodu SKU z nagrodą.
  • Usunięto parametry ChildDirected i UnderAgeOfConsent.
  • Usunęliśmy wycofane metody ładunków używanych przez programistów.
  • Usunięto wycofane metody BillingFlowParams.setAccountId() i BillingFlowParams.setDeveloperId().
  • Usunięto wycofane metody BillingFlowParams.setOldSkus(String oldSku) i BillingFlowParams.addOldSku(String oldSku).
  • Dodano adnotacje dotyczące dopuszczalności wartości null.

Poprawki błędów

  • SkuDetails.getIntroductoryPriceCycles() zwraca teraz int zamiast String.
  • Naprawiono błąd, który powodował, że proces płatności był traktowany jako zawierający dodatkowe parametry. nawet jeśli nie ustawiono żadnych dodatkowych parametrów.

Wersja 2.2.1 Biblioteki płatności w Google Play (20.05.2020)

Dostępna jest wersja 2.2.1 Biblioteki płatności w Google Play.

Poprawki błędów

  • Zaktualizowaliśmy domyślną wersję biblioteki Płatności w Java Play, którą Rozszerzenie Kotlin zależy od tego,

Wersja 2.2.0 Biblioteki płatności w Google Play i obsługa Unity (23.03.2020)

W wersji 2.2.0 Płatności w Google Play dostępne są funkcje, które pomagają Dba o to, aby zakupy były przypisywane do właściwego użytkownika. Te zmiany mogą zrezygnować z tworzenia rozwiązań niestandardowych na podstawie ładunku programistycznego. Jako W ramach tej aktualizacji funkcja ładunku programistycznego została wycofana i zostanie usunięte w przyszłej wersji. Więcej informacji, w tym zalecane alternatywne rozwiązania, patrz Ładunek dewelopera.

Biblioteka płatności w Google Play 2 na Unity

Oprócz obecnych wersji Płatności w Google Play w języku Java i Kotlin Biblioteka 2 i opublikowaliśmy jej wersję do użytku w Unity. Gra którzy korzystają z interfejsu API zakupów w aplikacji Unity, mogą wszystkich funkcji Biblioteki płatności w Google Play 2 oraz kolejne uaktualnienia Biblioteki płatności w Google Play. .

Więcej informacji: Korzystaj z Płatności w Google Play na platformie Unity

Podsumowanie zmian

Wersja 2.1.0 Biblioteki płatności w Google Play i rozszerzenie Kotlin 2.1.0 (10.12.2019)

Wersja 2.1.0 biblioteki Płatności w Google Play i nowe rozszerzenie Kotlin są już dostępne. Rozszerzenie Kotlin do Biblioteki płatności w Play zapewnia idiomatyczne Alternatywy interfejsów API do wykorzystania w Kotlin, zapewniające lepsze zabezpieczenia o wartości null współrzędne. Przykłady kodu znajdziesz tutaj: Korzystanie z Biblioteki płatności w Google Play

Ta wersja zawiera następujące zmiany.

Podsumowanie zmian

  • W BillingFlowParams wycofano setOldSku(String oldSku) i zastąpiono przez setOldSku(String oldSku, String purchaseToken), aby określić, kiedy wiele kont na urządzeniu ma ten sam kod SKU.

Wersja 2.0.3 Biblioteki płatności w Google Play (5.08.2019)

Dostępna jest wersja 2.0.3 biblioteki Płatności w Google Play.

Poprawki błędów

  • Naprawiliśmy błąd polegający na tym, że usługa querySkuDetailsAsync() czasami powodowała błędy z kodem. DEVELOPER_ERROR zamiast zwracać udany wynik.

Wersja 2.0.2 Biblioteki płatności w Google Play (8.07.2019)

Biblioteka płatności w Google Play jest już dostępna w wersji 2.0.2. Ta wersja zawiera aktualizacje dokumentacji referencyjnej i nie zmienia biblioteki funkcji.

Wersja 2.0.1 Biblioteki płatności w Google Play (6.06.2019)

Biblioteka płatności w Google Play jest już dostępna w wersji 2.0.1. Ta wersja zawiera następujące zmiany.

Poprawki błędów

  • Naprawiliśmy błąd, który w niektórych przypadkach powodował, że komunikaty debugowania były zwracane jako null.
  • Rozwiązano potencjalny problem z wyciekiem pamięci.

Wersja 2.0 Biblioteki płatności w Google Play (7.05.2019)

Biblioteka płatności w Google Play jest już dostępna w wersji 2.0. Ta wersja zawiera następujące zmiany.

Zakupy muszą zostać potwierdzone w ciągu 3 dni

Google Play umożliwia kupowanie produktów w aplikacji lub w aplikacji poza aplikacją. Aby zagwarantować, że Google Play Spójny proces zakupu niezależnie od tego, usługi, musisz potwierdzić wszystkie zakupy dokonane przy użyciu Google Play Biblioteka płatności, gdy tylko to możliwe po przyznaniu użytkownikowi uprawnienia. Jeśli nie potwierdzisz zakupu w ciągu trzech dni, użytkownik automatycznie otrzyma zwrot środków, a Google Play anuluje zakup. Dla: transakcje oczekujące (nowość w wersji 2.0), trzydniowy okres ważności, rozpoczyna się po przeniesieniu do stanu PURCHASED i nie ma zastosowania gdy zakup jest w stanie PENDING.

W przypadku subskrypcji musisz potwierdzić każdy zakup, który wiąże się z nowym zakupem token. Oznacza to, że wszystkie początkowe zakupy, zmiany abonamentów i ponowne rejestracje muszą być , ale nie musisz potwierdzać kolejnych odnowień. Do Aby określić, czy zakup wymaga potwierdzenia, możesz to potwierdzić. zakupu.

Obiekt Purchase zawiera teraz isAcknowledged(). , która wskazuje, czy zakup został potwierdzony. Dodatkowo Interfejs Google Play Developer API obejmuje wartości logiczne potwierdzenia Purchases.products i Purchases.subscriptions. Przed potwierdzeniem zakupu należy skorzystać z tych metod, aby sprawdzić, czy: zakup został już potwierdzony.

Aby potwierdzić zakup, użyj jednej z tych metod:

  • W przypadku produktów zużywalnych użyj atrybutu consumeAsync() znalezionego w interfejsie API klienta.
  • W przypadku produktów, które nie są konsumowane, użyj atrybutu acknowledgePurchase() znajdującego się w API klienta.
  • Nowa metoda acknowledge() jest też dostępna w interfejsie Server API.

Usunięto BillingFlowParams.setSku()

Wycofana wcześniej metoda BillingFlowParams#setSku() została usunięta tej wersji. Przed renderowaniem produktów w procesie zakupu musisz wywołać BillingClient.querySkuDetailsAsync() podając wynik SkuDetails obiekt BillingFlowParams.Builder.setSkuDetails().

Przykłady kodu znajdziesz tutaj: Korzystanie z Biblioteki płatności w Google Play

Obsługiwany jest ładunek dewelopera

W wersji 2.0 Biblioteki płatności w Google Play dodaliśmy obsługę deweloperów ładunek – dowolne ciągi znaków, które można dołączyć do zakupów. Dostępne opcje dołącza parametr ładunku programisty do zakupu, ale tylko wtedy, gdy zakup i zajmuje się ich przetwarzaniem. Różni się to od ładunku programistycznego w AIDL, w którym funkcja można określić ładunek podczas uruchamiania procesu zakupu. Ponieważ zakupy można teraz zainicjować spoza aplikacji, ta zmiana daje możliwość dodania ładunku do zakupów.

Aby można było uzyskać dostęp do ładunku w nowej bibliotece, obiekty Purchase zawierają teraz getDeveloperPayload(). .

Spójne oferty

Jeśli zaoferujesz obniżoną cenę SKU, Google Play zwróci teraz pierwotną cenę kod SKU, aby pokazać użytkownikom, że otrzymują rabat.

SkuDetails zawiera 2 nowe metody pobierania pierwotnej ceny SKU:

Transakcje oczekujące

Jeśli korzystasz z Biblioteki płatności w Google Play w wersji 2.0, musisz obsługiwać zakupy, w przypadku których wymagane jest dodatkowe działanie przed przyznaniem uprawnienia. Dla: np. użytkownik może zdecydować się na zakup produktu w aplikacji w sklepie stacjonarnym gotówką. Oznacza to, że transakcja jest zrealizowana poza aplikacją. W w tym scenariuszu uprawnienia należy przyznać dopiero wtedy, gdy użytkownik wykona transakcji.

Aby włączyć oczekujące zakupy, zadzwoń pod numer enablePendingPurchases() podczas inicjowania aplikacji.

Użyj formatu Purchase.getPurchaseState() aby określić, czy stan zakupu to PURCHASED czy PENDING. Pamiętaj, że uprawnienia należy przyznawać tylko wtedy, gdy stan to PURCHASED. Zalecenia Sprawdź, czy dostępne są aktualizacje stanu funkcji Purchase, wykonując te czynności:

  1. Aby uruchomić aplikację, zadzwoń: BillingClient.queryPurchases() aby pobrać listę niewykorzystanych produktów powiązanych z użytkownikiem.
  2. Wywołaj polecenie Purchase.getPurchaseState() przy każdym zwróconym obiekcie Purchase.
  3. Wdrażanie onPurchasesUpdated() do odpowiadania na zmiany obiektów Purchase.

Oprócz tego interfejs Google Play Developer API zawiera stan PENDING za Purchases.products. Transakcje oczekujące nie są obsługiwane w przypadku subskrypcji.

W tej wersji wprowadziliśmy też nowy typ powiadomień dla deweloperów w czasie rzeczywistym: OneTimeProductNotification Ten typ powiadomienia zawiera 1 wiadomość której wartość to ONE_TIME_PRODUCT_PURCHASED lub ONE_TIME_PRODUCT_CANCELED Ten typ powiadomień jest wysyłany tylko w przypadku zakupów związane z opóźnionymi formami płatności, np. gotówką.

Gdy potwierdzasz oczekujące zakupy, potwierdź to tylko wtedy, gdy stan zakupu to PURCHASED, a nie PENDING.

Zmiany w interfejsie API

W wersji 2.0 biblioteki Płatności w Google Play wprowadziliśmy kilka zmian w interfejsie API obsługiwać nowe funkcje i wyjaśniać istniejące funkcje.

consumeAsync

consumeAsync() trwa teraz ConsumeParams obiekt zamiast purchaseToken. ConsumeParams zawiera purchaseToken jako oraz opcjonalny ładunek programisty.

Poprzednia wersja pakietu consumeAsync() została usunięta w tej wersji.

QueryPurchaseHistoryAsync

Aby zmniejszyć ryzyko nieporozumień, queryPurchaseHistoryAsync() zwraca teraz PurchaseHistoryRecord zamiast obiektu Purchase. Obiekt PurchaseHistoryRecord jest obiektem taki sam jak obiekt Purchase, z tym że odzwierciedla tylko wartości zwracane przez queryPurchaseHistoryAsync() i nie zawiera autoRenewing, orderId i packageName. Zwróć uwagę, że nic się nie zmieniło w zwrócone dane – funkcja queryPurchaseHistoryAsync() zwraca te same dane, co wcześniej.

Wartości zwrócone w BillingResult

Interfejsy API, które wcześniej zwracały wartość całkowitą BillingResponse, zwracają teraz BillingResult. obiektu. BillingResult zawiera liczbę całkowitą BillingResponse oraz ciąg debugowania, który może służyć do diagnozowania błędów. Ciąg debugowania używa tagu en-US język i nie jest przeznaczona do wyświetlania użytkownikom.

Poprawki błędów

Wersja 1.2.2 Biblioteki płatności w Google Play (7.03.2019)

Dostępna jest wersja 1.2.2 biblioteki Płatności w Google Play. Ta wersja zawiera następujące zmiany.

Poprawki błędów

  • Rozwiązaliśmy problem z wątkami wprowadzony w wersji 1.2.1. Połączenia w tle nie są już blokowane w wątku głównym.

Inne zmiany

  • Chociaż korzystanie z wątku głównego jest nadal zalecane, możesz teraz tworzyć instancje z Biblioteki płatności w Google Play z wątku w tle.
  • Instancje zostały w pełni przeniesione do wątku w tle, aby zmniejszyć prawdopodobieństwo wystąpienia błędów ANR.

Wersja 1.2.1 Biblioteki płatności w Play (4.03.2019)

Dostępna jest wersja 1.2.1 biblioteki Płatności w Google Play. Ta wersja zawiera następujące zmiany.

Najważniejsze zmiany

Inne zmiany

  • Dodano konstruktory publiczne do konstrukcji PurchasesResult i SkuDetailsResult, testowanie rozwiązań.
  • Obiekty SkuDetails mogą używać nowej metody (getOriginalJson()).
  • Wszystkie wywołania usługi AIDL są teraz obsługiwane przez wątki w tle.

Poprawki błędów

  • Detektory wywołań zwrotnych o wartości null nie są już przekazywane do publicznych interfejsów API.

Wersja 1.2 Biblioteki płatności w Google Play (18.10.2018)

Dostępna jest wersja 1.2 biblioteki Płatności w Google Play. Ta wersja zawiera następujące zmiany.

Podsumowanie zmian

  • Biblioteka płatności w Google Play jest teraz licencjonowana na podstawie Umowa licencyjna dotycząca pakietu Android SDK.
  • Dodano interfejs API launchPriceChangeConfirmationFlow, który zachęca użytkowników do sprawdzić oczekującą zmianę ceny subskrypcji.
  • Dodano obsługę nowego trybu proporcjonalnego (DEFERRED) podczas uaktualniania lub na zmianę subskrypcji użytkownika na niższą wersję.
  • W klasie BillingFlowParams zastąpiono element setSku() elementem setSkuDetails().
  • Drobne poprawki błędów i optymalizacje kodu.

Potwierdzenie zmiany ceny

Teraz możesz zmienić cenę subskrypcji w Konsoli Google Play i wyświetlić prośbę aby użytkownicy mogli sprawdzić i zaakceptować nową cenę, gdy wejdą do aplikacji.

Aby użyć tego interfejsu API, utwórz obiekt PriceChangeFlowParams za pomocą polecenia skuDetails usługi objętej subskrypcją, a następnie wywołaj launchPriceChangeConfirmationFlow() Zaimplementuj tag PriceChangeConfirmationListener do obsługi wyniku w przypadku zmiany ceny jak widać w tym fragmencie kodu:

Kotlin

val priceChangeFlowParams = PriceChangeFlowParams.newBuilder()
    .setSkuDetails(skuDetailsOfThePriceChangedSubscription)
    .build()

billingClient.launchPriceChangeConfirmationFlow(activity,
        priceChangeFlowParams,
        object : PriceChangeConfirmationListener() {
            override fun onPriceChangeConfirmationResult(responseCode: Int) {
                // Handle the result.
            }
        })

Java

PriceChangeFlowParams priceChangeFlowParams =
        PriceChangeFlowParams.newBuilder()
    .setSkuDetails(skuDetailsOfThePriceChangedSubscription)
    .build();

billingClient.launchPriceChangeConfirmationFlow(activity,
        priceChangeFlowParams,
        new PriceChangeConfirmationListener() {
            @Override
            public void onPriceChangeConfirmationResult(int responseCode) {
                // Handle the result.
            }
        });

W ramach procesu potwierdzenia zmiany ceny wyświetla się okno z nowym cenem z prośbą o zaakceptowanie nowej ceny. Ten przepływ zwraca kod typu odpowiedzi BillingClient.BillingResponse

Nowy tryb proporcjonalności

Podczas przechodzenia na wyższą lub niższą wersję subskrypcji użytkownika możesz użyć nowego proporcjonalnie DEFERRED. Ten tryb aktualizuje subskrypcję użytkownika po następnym uruchomieniu odnowi się. Aby dowiedzieć się, jak ustawić tryb proporcjonalności, zobacz Ustawianie proporcji .

Nowa metoda konfigurowania szczegółów kodu SKU

W klasie BillingFlowParams metoda setSku() została wycofana. Ta zmiana ma na celu optymalizację procesu płatności w Google Play.

Podczas tworzenia nowego wystąpienia BillingFlowParams w rozliczeniach w aplikacji zalecamy bezpośrednią pracę z obiektem JSON za pomocą funkcji setSkuDetails() na przykład w tym fragmencie kodu:

W klasie Builder BillingFlowParams metoda setSku() została wycofane. Zamiast tego użyj metody setSkuDetails(), jak pokazano w tym przykładzie fragment kodu. Obiekt przekazywany do obiektu setSkuDetails() pochodzi z querySkuDetailsAsync(). .

Kotlin

private lateinit var mBillingClient: BillingClient
private val mSkuDetailsMap = HashMap<String, SkuDetails>()

private fun querySkuDetails() {
    val skuDetailsParamsBuilder = SkuDetailsParams.newBuilder()
    mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build()
    ) { responseCode, skuDetailsList ->
        if (responseCode == 0) {
            for (skuDetails in skuDetailsList) {
                mSkuDetailsMap[skuDetails.sku] = skuDetails
            }
        }
    }
}

private fun startPurchase(skuId: String) {
    val billingFlowParams = BillingFlowParams.newBuilder()
    .setSkuDetails(mSkuDetailsMap[skuId])
    .build()
}

Java

private BillingClient mBillingClient;
private Map<String, SkuDetails> mSkuDetailsMap = new HashMap<>();

private void querySkuDetails() {
    SkuDetailsParams.Builder skuDetailsParamsBuilder
            = SkuDetailsParams.newBuilder();
    mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build(),
            new SkuDetailsResponseListener() {
                @Override
                public void onSkuDetailsResponse(int responseCode,
                        List<SkuDetails> skuDetailsList) {
                    if (responseCode == 0) {
                        for (SkuDetails skuDetails : skuDetailsList) {
                            mSkuDetailsMap.put(skuDetails.getSku(), skuDetails);
                        }
                    }
                }
            });
}

private void startPurchase(String skuId) {
    BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
            .setSkuDetails(mSkuDetailsMap.get(skuId))
            .build();
}

Wersja 1.1 Biblioteki płatności w Play (7.05.2018)

Dostępna jest wersja 1.1 biblioteki Płatności w Google Play. Ta wersja zawiera następujące zmiany.

Podsumowanie zmian

  • Dodano możliwość określania trybu proporcjonalnego w BillingFlowParams podczas przechodzenia na wyższą lub niższą wersję subskrypcji.
  • Flaga wartości logicznej replaceSkusProration w BillingFlowParams. nie jest już obsługiwany. Użyj w zamian zasady replaceSkusProrationMode.
  • launchBillingFlow() powoduje teraz wywołanie zwrotne w przypadku nieudanych odpowiedzi.

Zmiany w działaniu

W wersji 1.1 biblioteki Płatności w Google Play występują te zachowania zmian.

Deweloperzy mogą skonfigurować replaceSkusProrationMode w klasach BillingFlowParams

ProrationMode zawiera więcej informacji o typie proporcjonalnego udostępniania subskrypcji na wyższą lub niższą wersję usługi. subskrypcji.

Kotlin

BillingFlowParams.newBuilder()
    .setSku(skuId)
    .setType(billingType)
    .setOldSku(oldSku)
    .setReplaceSkusProrationMode(replaceSkusProrationMode)
    .build()

Java

BillingFlowParams.newBuilder()
    .setSku(skuId)
    .setType(billingType)
    .setOldSku(oldSku)
    .setReplaceSkusProrationMode(replaceSkusProrationMode)
    .build();

Obecnie Google Play obsługuje te tryby proporcjonalności:

IMMEDIATE_WITH_TIME_PRORATION Wymiana zacznie obowiązywać natychmiast, a nowy okres ważności zostanie obliczony proporcjonalnie. czy użytkownik jest obciążany opłatami. Jest to aktualne domyślne zachowanie.
IMMEDIATE_AND_CHARGE_PRORATED_PRICE Wymiana zaczyna obowiązywać natychmiast, a cykl rozliczeniowy pozostaje taki sam. Cena za zostanie naliczona opłata za pozostały okres.

Uwaga: ta opcja jest dostępna tylko w przypadku przejścia na wyższą wersję.

IMMEDIATE_WITHOUT_PRORATION Wymiana zacznie obowiązywać od razu, a nowa cena zostanie naliczona przy następnym odnowieniu. obecnie się znajdujesz. Cykl rozliczeniowy pozostaje bez zmian.

Pole replaceSkusProration nie jest już obsługiwane w klasie BillingFlowParams

Deweloperzy mogli wcześniej ustawiać flagę wartości logicznej, by pobierać proporcjonalną opłatę za subskrypcję. o uaktualnienie. Biorąc pod uwagę, że obsługiwana jest właściwość ProrationMode, która zawiera bardziej szczegółowe informacje instrukcja proporcjonalności, ta flaga wartości logicznej nie jest już obsługiwana.

launchBillingFlow() wywołuje teraz wywołanie zwrotne w przypadku nieudanych odpowiedzi

Biblioteka płatności zawsze aktywuje metodę PurhcasesUpdatedListener oddzwanianie i zwrócenie BillingResponse asynchronicznie. Synchroniczna wartość zwrotna BillingResponse zachowywany.

Poprawki błędów

  • Prawidłowo zamyka działanie wcześnie w metodach asynchronicznych, gdy usługa jest odłączona.
  • Builder obiekty param nie modyfikują już utworzonych obiektów.
  • Problem 68087141: launchBillingFlow() aktywuje wywołanie zwrotne w przypadku nieudanych odpowiedzi.

Wersja 1.0 Biblioteki płatności w Google Play (19.09.2017, ogłoszenie)

Dostępna jest wersja 1.0 biblioteki Płatności w Google Play. Ta wersja zawiera następujące zmiany.

Ważne zmiany

  • Uprawnienia dotyczące płatności umieszczone w pliku manifestu biblioteki. Nie musisz dodawać parametru uprawnienia com.android.vending.BILLING w manifeście Androida.
  • Do strony BillingClient.Builder dodano nowy kreator zajęcia.
  • Wprowadzono wzorzec kreatora dla SkuDetailsParams , która ma być używana w metodach wysyłania zapytań dotyczących kodów SKU.
  • Zaktualizowaliśmy kilka metod interfejsu API w celu zachowania spójności (te same nazwy zwracanych argumentów i ich kolejność).

Zmiany w działaniu

W wersji 1.0 biblioteki Płatności w Google Play występują te zachowania zmian.

Klasa BillingClient.Builder

BillingClient.Builder jest teraz inicjowana za pomocą wzorca newBuilder:

Kotlin

billingClient = BillingClient.newBuilder(context).setListener(this).build()

Java

billingClient = BillingClient.newBuilder(context).setListener(this).build();

Metoda launchBillingFlow jest teraz wywoływana za pomocą klasy BillingFlowParams

Aby rozpocząć proces płatności za zakup lub subskrypcję, launchBillingFlow() otrzymuje BillingFlowParams instancji zainicjowanej z parametrami specyficznymi dla żądania:

Kotlin

BillingFlowParams.newBuilder().setSku(skuId)
        .setType(billingType)
        .setOldSku(oldSku)
        .build()

// Then, use the BillingFlowParams to start the purchase flow
val responseCode = billingClient.launchBillingFlow(builder.build())

Java

BillingFlowParams.newBuilder().setSku(skuId)
                              .setType(billingType)
                              .setOldSku(oldSku)
                              .build();

// Then, use the BillingFlowParams to start the purchase flow
int responseCode = billingClient.launchBillingFlow(builder.build());

Nowy sposób wysyłania zapytań dotyczących dostępnych produktów

Argumenty typu queryPurchaseHistoryAsync() i querySkuDetailsAsync() są zawarte we wzorcu konstruktora:

Kotlin

val params = SkuDetailsParams.newBuilder()
params.setSkusList(skuList)
        .setType(itemType)
billingClient.querySkuDetailsAsync(params.build(), object : SkuDetailsResponseListener() {
    ...
})

Java

SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList)
        .setType(itemType);
billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {...})

Wynik jest teraz zwracany przez kod wyniku i listę SkuDetails zamiast poprzedniej klasy otoki dla wygody i spójności w całym interfejsie API:

Kotlin

fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)

Java

public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)

Kolejność parametrów została zmieniona w metodzie onConsumeResponse()

Kolejność argumentów funkcji onConsumeResponse z ConsumeResponseListener Interfejs API został zmieniony w taki sposób, aby był spójny:

Kotlin

fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)

Java

public void onConsumeResponse(@BillingResponse int responseCode, String outToken)

Wyodrębniony obiekt PurchaseResult

PurchaseResult zostało wyodrębnione, aby zapewnić spójność w całym interfejsie API:

Kotlin

fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)

Java

void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)

Poprawki błędów

Wersja przedpremierowa dla programistów 1 (12.06.2017, ogłoszenie)

Udostępniliśmy wersję przedpremierową dla deweloperów, która ma uprościć proces programowania w zakresie płatności. które pozwalają deweloperom skupić się na implementacji logiki typowej dla aplikacji na Androida, takich jak architektury aplikacji i strukturze nawigacji.

Zawiera kilka wygodnych zajęć i funkcji, które można wykorzystać do integrowania aplikacje na Androida z interfejsem Google Play Billing API. Biblioteka tworzy też warstwę abstrakcji usługi Android Interface Definition Language (AIDL), co ułatwia programistom określanie interfejsu między aplikacją i interfejsem Google Play Billing API.