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
Dodano interfejsy API do obsługi subskrypcji rat.
- Dodano:
ProductDetails.InstallmentPlanDetails
w przypadku abonamentów podstawowych, które użytkownicy mogą kupić. Ten interfejs API pomaga aplikacji zidentyfikować plan ratalny i konfigurację zobowiązania . Aby dowiedzieć się więcej, przeczytaj przewodnika po ratach ratalnych.
- Dodano:
Dodano:
PendingPurchasesParams
iBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
aby zastąpićBillingClient.Builder.enablePendingPurchases()
, który został wycofany w tej wersji.- Wycofany atrybut
enablePendingPurchases()
jest funkcjonalnie odpowiednikiemenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())
- Wycofany atrybut
Dodano interfejsy API do obsługi transakcji oczekujących w przypadku abonamentów przedpłaconych:
- Użyj formatu
PendingPurchasesParams.Builder.enablePrepaidPlans()
wraz z:BillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
, aby włączyć oczekujące transakcje w przypadku abonamentów przedpłaconych. Podczas dodawania , sprawdź, czy Twoja aplikacja również prawidłowo zarządza subskrypcją cyklem życia klienta. Aby dowiedzieć się więcej, zapoznaj się z przewodnika po oczekujących zakupach. - Dodano:
Purchase.PendingPurchaseUpdate
iPurchase.getPendingPurchaseUpdate()
w celu odzyskania oczekującego doładowania albo przejścia na wyższą lub niższą wersję pakietu subskrypcji.
- Użyj formatu
Usunięto:
BillingClient.Builder.enableAlternativeBilling()
,AlternativeBillingListener
, iAlternativeChoiceDetails
.- Deweloperzy powinni użyć metody
BillingClient.Builder.enableUserChoiceBilling()
zUserChoiceBillingListener
iUserChoiceDetails
w wywołaniu zwrotnym detektora.
- Deweloperzy powinni użyć metody
Usunięto:
BillingFlowParams.ProrationMode
,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
, iBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
.- Deweloperzy powinni użyć metody
BillingFlowParams.SubscriptionUpdateParams.ReplacementMode
zBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)
. BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
.BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
.
- Deweloperzy powinni użyć metody
Element
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()
został usunięty.- Deweloperzy powinni używać narzędzia
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)
.
- Deweloperzy powinni używać narzędzia
BillingClient.queryPurchaseHistoryAsync()
została wycofana i zostanie usunięta w przyszłej wersji. Deweloperzy powinni użyj następujących alternatywnych rozwiązań:- Potwierdzone i oczekujące zakupy: użyj
BillingClient.queryPurchasesAsync()
aby pobrać aktywne zakupy. - Skonsumowane zakupy: deweloperzy powinni śledzić swoje zakupy w z serwerów Google.
- Anulowane zakupy: użyj unieważnione zakupy API dla programistów.
- Więcej informacji: Zapytanie o historię zakupów
- Potwierdzone i oczekujące zakupy: użyj
BillingFlowParams.ProductDetailsParams.setOfferToken()
teraz zgłasza wyjątek, gdy programiści określają pustyofferToken
.Zaktualizowano
minSdkVersion
na 21 itargetSdkVersion
na 34.
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
- Naprawiono błąd w
BillingClient.showAlternativeBillingOnlyInformationDialog()
, który powodował, że w niektórych przypadkach po zakończeniu okna można było nie wywoływać funkcjiAlternativeBillingOnlyInformationDialogListener
.
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
- Dodano interfejsy API, które obsługują oferty zewnętrzne
- Dodano:
BillingClient.Builder.enableExternalOffer()
aby umożliwić dostarczanie ofert zewnętrznych. - Dodano:
BillingClient.isExternalOfferAvailableAsync()
, aby sprawdzić dostępność funkcji udostępniania ofert zewnętrznych. - Dodano:
BillingClient.showExternalOfferInformationDialog()
wyświetlanie okna z informacjami, zanim użytkownicy zostaną przekierowani poza aplikację. - Dodano
BillingClient.createExternalOfferReportingDetailsAsync()
, aby utworzyć ładunek wymagany do raportowania transakcji dokonanych przy użyciu ofert zewnętrznych.
- Dodano:
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
- Dodano interfejsy API, które obsługują tylko rozliczenia alternatywne (tj. bez opcji wyboru przez użytkownika)
- Dodano:
BillingClient.Builder.enableAlternativeBillingOnly()
, aby umożliwiać oferowanie tylko alternatywnego systemu rozliczeniowego. - Dodano:
BillingClient.isAlternativeBillingOnlyAvailableAsync()
aby sprawdzić, czy możesz oferować tylko rozliczenia alternatywne. - Dodano:
BillingClient.showAlternativeBillingOnlyInformationDialog()
aby wyświetlić okno z informacjami dla użytkowników, gdy dostępne są tylko rozliczenia alternatywne w ich wykorzystaniu. - Dodano parametr
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()
, aby utworzyć wymagany ładunek aby uwzględniać w raportach tylko transakcje dokonane za pomocą rozliczeń alternatywnych.
- Dodano:
- Zaktualizowano interfejsy API systemu rozliczeniowego opartego na wyborze użytkownika
- Dodano:
UserChoiceBillingListener
w celu zastąpienia AlternativeBillingListener , który został oznaczony jako wycofany. - Dodano:
UserChoiceDetails
aby zastąpićAlternativeChoiceDetails
, który został oznaczony jako wycofany. - Dodano:
BillingClient.Builder.enableUserChoiceBilling()
aby zastąpićBillingClient.Builder.enableAlternativeBilling()
, który został oznaczony jako wycofany.
- Dodano:
- Dodano
BillingClient.getBillingConfigAsync()
, aby pobrać kraj w Google Play.
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ąpieniaProrationMode
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
ilaunchPriceConfirmationFlow
.Metody
queryPurchases
ilaunchPriceConfirmationFlow
, 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ć metodyqueryPurchasesAsync
zamiastqueryPurchases
. 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 jakoSERVICE_UNAVAILABLE
.Zaktualizowano
SERVICE_UNAVAILABLE
orazSERVICE_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 obecnaSERVICE_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
- Dodano zajęcia do obsługi alternatywnych procesów rozliczeń na urządzeniach mobilnych i tabletach w przypadku użytkownicy z Korei Południowej:
- Dodane
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()
do określenia zewnętrznego identyfikatora transakcji źródłowej subskrypcji. - Dodano:
BillingClient.Builder.enableAlternativeBilling()
, która umożliwia użytkownikom w Korei Południowej wybór alternatywnego systemu rozliczeniowego.
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
- Dodano metodę
ProductDetails.SubscriptionOfferDetails.getOfferId()
służącą do pobierania identyfikatora oferty. - Dodano metodę
ProductDetails.SubscriptionOfferDetails.getBasePlanId()
służącą do pobierania identyfikatora abonamentu podstawowego. - Zaktualizowano:
targetSdkVersion
do wersji 31.
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
- Dodano:
BillingClient.showInAppMessages()
w celu ułatwienia obsługi odrzuconych płatności za subskrypcję. Aby dowiedzieć się, jak to zrobić, jak używać wiadomości w aplikacji do obsługi odrzuconych płatności za subskrypcje, Obsługa odrzuconych płatności
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
Dodano pakiet
BillingClient.queryPurchasesAsync()
, aby zastąpić pakietBillingClient.queryPurchases()
, który zostanie usunięty w przyszłej wersji.Dodano nowy tryb wymiany subskrypcji
IMMEDIATE_AND_CHARGE_FULL_PRICE
.Dodano metodę
BillingClient.getConnectionState()
służącą do pobierania stanu połączenia Biblioteki płatności w Play.Zaktualizowaliśmy dokument Javadoc i jego implementację, aby wskazać, w którym wątku można wywołać metodę i które wyniki wątków są publikowane.
Dodano
BillingFlowParams.Builder.setSubscriptionUpdateParams()
jako nowy sposób inicjowania aktualizacji subskrypcji. Zastąpią oneBillingFlowParams#getReplaceSkusProrationMode
,BillingFlowParams#getOldSkuPurchaseToken
,BillingFlowParams#getOldSku
,BillingFlowParams.Builder#setReplaceSkusProrationMode
,BillingFlowParams.Builder#setOldSku
, które zostały usunięte.Dodano
Purchase.getQuantity()
iPurchaseHistoryRecord.getQuantity()
.Dodano
Purchase#getSkus()
iPurchaseHistoryRecord#getSkus()
. Zastąpiły one regułyPurchase#getSku
iPurchaseHistoryRecord#getSku
, które zostały usunięte.Usunięto:
BillingFlowParams#getSku
,BillingFlowParams#getSkuDetails
iBillingFlowParams#getSkuType
.
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
iUnderAgeOfConsent
. - Usunęliśmy wycofane metody ładunków używanych przez programistów.
- Usunięto wycofane metody
BillingFlowParams.setAccountId()
iBillingFlowParams.setDeveloperId()
. - Usunięto wycofane metody
BillingFlowParams.setOldSkus(String oldSku)
iBillingFlowParams.addOldSku(String oldSku)
. - Dodano adnotacje dotyczące dopuszczalności wartości null.
Poprawki błędów
SkuDetails.getIntroductoryPriceCycles()
zwraca terazint
zamiastString
.- 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
- Biblioteka płatności w Google Play w języku Java
- W
AcknowledgePurchaseParams
wycofanesetDeveloperPayload()
orazgetDeveloperPayload()
. - W
ConsumeParams
wycofanesetDeveloperPayload()
orazgetDeveloperPayload()
. - W
BillingFlowParams
zmieniono nazwęsetAccountId()
dosetObfuscatedAccountId()
, oraz udokumentowane ograniczenie długości do 64 znaków Wyłączenie informacji umożliwiających identyfikację osób w tym polu.setAccountId()
Aplikacja została oznaczona jako wycofana i zostanie usunięta przyszła wersja biblioteki. - W aplikacji
BillingFlowParams
dodanosetObfuscatedProfileId()
. który działa podobnie jaksetObfuscatedAccountId()
Więcej informacji: Aktualizacje ładunku programisty i alternatywne rozwiązania. - W aplikacji
Purchase
dodano funkcjęgetAccountIdentifiers()
zwracają zaciemnione identyfikatory konta ustawione wBillingFlowParams
- W
BillingClient
loadRewardedSku()
została oznaczona jako wycofana w związku z wycofaniem kodów SKU z nagrodą. Więcej informacji o wycofaniu tej funkcji znajdziesz w Centrum pomocy Konsoli Play.
- W
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
wycofanosetOldSku(String oldSku)
i zastąpiono przezsetOldSku(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:
getOriginalPriceAmountMicros()
– zwraca niesformatowaną pierwotną cenę SKU przed rabatem.getOriginalPrice()
– zwraca cenę pierwotną z dodatkowym formatowaniem waluty.
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:
- Aby uruchomić aplikację, zadzwoń:
BillingClient.queryPurchases()
aby pobrać listę niewykorzystanych produktów powiązanych z użytkownikiem. - Wywołaj polecenie
Purchase.getPurchaseState()
przy każdym zwróconym obiekciePurchase
. - Wdrażanie
onPurchasesUpdated()
do odpowiadania na zmiany obiektówPurchase
.
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
SkuDetails.getIntroductoryPriceAmountMicros()
zwraca terazlong
zamiastString
.
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
- Dodaliśmy obsługę produktów z nagrodą. Więcej informacji o opcjach zarabiania znajdziesz tutaj: Dodawanie funkcji nagród za obejrzenie reklamy wideo
Inne zmiany
- Dodano konstruktory publiczne do konstrukcji
PurchasesResult
iSkuDetailsResult
, 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 elementsetSku()
elementemsetSkuDetails()
. - 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
wBillingFlowParams
. nie jest już obsługiwany. Użyj w zamian zasadyreplaceSkusProrationMode
. 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
- Brak kodu odpowiedzi w pakiecie PURCHASES_UPDATED
- Rozwiązywanie problemów z interfejsami ProxyBillingActivity i PurchasesUpdatedListener podczas rotacji urządzenia
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.