Ten dokument zawiera informacje o wersji Biblioteki płatności w Google Play.
Biblioteka płatności w Google Play w wersji 8.0.0 (30.06.2025)
Dostępna jest już wersja 8.0.0 Biblioteki płatności w Google Play i rozszerzeń Kotlina.
Podsumowanie zmian
Produkty w aplikacji będą teraz nazywane produktami kupowanymi raz.
Wiele opcji zakupu i ofert dla produktów kupowanych raz.
Teraz możesz oferować wiele opcji zakupu i ofert dla produktów jednorazowych. Daje to elastyczność w sposobie sprzedaży produktów i upraszcza zarządzanie nimi.
Ulepszono metodę
queryProductDetailsAsync()
.Przed wersją PBL 8.0.0 metoda
queryProductDetailsAsync()
nie zwracała produktów, których nie udało się pobrać. Może to być spowodowane tym, że nie znaleziono produktu lub nie ma żadnych ofert dostępnych dla użytkownika. W wersji 8.0.0 interfejsu PBL niewyszukane produkty są zwracane z nowym kodem stanu na poziomie produktu, który zawiera informacje o niewyszukanych produktach. Pamiętaj, że podpisProductDetailsResponseListener.onProductDetailsResponse()
uległ zmianie i wymaga wprowadzenia zmian w aplikacji. Więcej informacji znajdziesz w sekcji Przetwarzanie wyniku.automatyczne ponowne łączenie się z usługą,
Nowy parametr konstruktora
BillingClient.Builder.enableAutoServiceReconnection()
pozwala deweloperom włączyć automatyczne ponowne łączenie z usługą, co upraszcza zarządzanie połączeniem, ponieważ automatycznie obsługuje ponowne łączenie z usługą Google Play Billing i eliminuje konieczność ręcznego wywoływania funkcjistartConnection()
w przypadku utraty połączenia z usługą. Więcej informacji znajdziesz w artykule Automatyczne nawiązywanie połączenia ponownie.Kody odpowiedzi podrzędnych dla metody
launchBillingFlow()
.BillingResult zwracany przez
launchBillingFlow()
będzie teraz zawierać pole kodu odpowiedzi podrzędnej. To pole będzie wypełniane tylko w niektórych przypadkach, aby podać bardziej szczegółowy powód niepowodzenia. W wersji PBL 8.0.0 zwracany jest podkod PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS, gdy środki użytkownika są mniejsze niż cena produktu, który próbuje kupić.Usunięto metodę
queryPurchaseHistory()
.Metoda
queryPurchaseHistory()
, która została wcześniej oznaczona jako wycofana, została teraz usunięta. Więcej informacji o tym, którego z interfejsów API możesz użyć zamiast tego, znajdziesz w artykule Wysyłanie zapytania o historię zakupów.Usunięto metodę
querySkuDetailsAsync()
.Metoda
querySkuDetailsAsync()
, która została wcześniej oznaczona jako wycofana, została teraz usunięta. Zamiast tego użyj funkcji queryProductDetailsAsync.Usunięto metodę
BillingClient.Builder.enablePendingPurchases()
.Metoda
enablePendingPurchases()
bez parametrów, która została wcześniej oznaczona jako wycofana, została teraz usunięta. Zamiast tego użyj interfejsuenablePendingPurchases(PendingPurchaseParams params)
. Uwaga: wycofane ustawienieenablePendingPurchases()
jest funkcjonalnie równoważne ustawieniuenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())
.Usunięto przeciążoną metodę
queryPurchasesAsync()
, która przyjmuje parametr skuType.Metoda
queryPurchasesAsync(String skuType, PurchasesResponseListener listener)
, która została wcześniej oznaczona jako wycofana, została teraz usunięta. Możesz też użyć poleceniaqueryPurchasesAsync(QueryPurchasesParams queryPurchasesParams, PurchasesResponseListener listener)
.
Biblioteka płatności w Google Play w wersji 7.1.1 (3.10.2024)
Dostępna jest już wersja 7.1.1 Biblioteki płatności w Google Play i rozszerzeń Kotlina.
Poprawki błędów
- Naprawiono błąd w Bibliotece płatności w Play w wersji 7.1.0 związany z testowaniem kodów odpowiedzi
BillingResult
.
Wersja 7.1.0 biblioteki płatności w Google Play (19.09.2024)
Dostępne są już wersje 7.1.0 Biblioteki płatności w Google Play i rozszerzeń Kotlina.
Podsumowanie zmian
- Ulepszona ochrona wątku związana ze stanem połączenia i zarządzaniem nim.
- Wprowadziliśmy częściowe zmiany w celu przetestowania kodów odpowiedzi [
BillingResult
][billing-result], które są w pełni dostępne w wersji 7.1.1 Biblioteki płatności w Google Play. Aby przetestować integrację za pomocą tej funkcji, musisz przejść na Bibliotekę płatności Google Play w wersji 7.1.1. Wystąpił błąd, który będzie miał wpływ tylko na aplikacje z [testowaniem zastąpienia płatności włączonym][enable-billing-overrides-testing] i nie wpłynie na zwykłe korzystanie z aplikacji. Więcej informacji znajdziesz w sekcji Testowanie kodów odpowiedziBillingResult
. [billing-result]: /reference/com/android/billingclient/api/BillingResult [enable-billing-overrides-testing]: /google/play/billing/test-response-codes#enable-billing-overrides-testing
Biblioteka płatności w Google Play w wersji 7.0.0 (14.05.2024)
Dostępna jest już wersja 7.0.0 Biblioteki płatności w Google Play i rozszerzeń Kotlina.
Podsumowanie zmian
Dodano interfejsy API do obsługi subskrypcji ratalnych.
- Dodano [
ProductDetails.InstallmentPlanDetails
][installment-details] dla abonamentów podstawowych z ratami, które użytkownicy mogą kupić. Ten interfejs API pomaga aplikacji zidentyfikować plan ratalny i jego ustawienia, aby udostępnić użytkownikowi odpowiednie informacje. Więcej informacji znajdziesz w [przewodniku][installments]. [installment-details]: /reference/com/android/billingclient/api/ProductDetails.InstallmentPlanDetails [installments]: /google/play/billing/subscriptions#installments
- Dodano [
Dodaliśmy
PendingPurchasesParams
iBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
, aby zastąpićBillingClient.Builder.enablePendingPurchases()
, które zostało wycofane w tej wersji.- Wycofane środowisko wykonawcze
enablePendingPurchases()
jest funkcjonalnie identyczne zenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())
.
- Wycofane środowisko wykonawcze
Dodano interfejsy API do obsługi oczekujących transakcji w przypadku abonamentów przedpłaconych:
- Użyj
PendingPurchasesParams.Builder.enablePrepaidPlans()
iBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
, aby umożliwić oczekujące transakcje w przypadku abonamentów przedpłaconych. Dodając obsługę, sprawdź, czy Twoja aplikacja prawidłowo zarządza cyklem subskrypcji. Więcej informacji znajdziesz w przewodniku dotyczącym oczekujących zakupów. - Dodano
Purchase.PendingPurchaseUpdate
iPurchase.getPendingPurchaseUpdate()
do pobierania oczekujących doładowań lub przechodzenia na wyższą lub niższą wersję istniejącej subskrypcji.
- Użyj
Usunięto:
BillingClient.Builder.enableAlternativeBilling()
,AlternativeBillingListener
iAlternativeChoiceDetails
.- Deweloperzy powinni zamiast tego używać funkcji
BillingClient.Builder.enableUserChoiceBilling()
z parametremUserChoiceBillingListener
i parametremUserChoiceDetails
w wywołaniu zwrotnym listenera.
- Deweloperzy powinni zamiast tego używać funkcji
Usunięto
BillingFlowParams.ProrationMode
,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
iBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
. – Deweloperzy powinni używać znacznikaBillingFlowParams.SubscriptionUpdateParams.ReplacementMode
zamiastBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)
. –BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
. –BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
.Usunięto
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()
. – Deweloperzy powinni zamiast tego używać znacznikaBillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)
.BillingClient.queryPurchaseHistoryAsync()
został wycofany i zostanie usunięty w przyszłej wersji. Deweloperzy powinni zamiast tego używać tych alternatyw:- Zaakceptowane i oczekujące zakupy: użyj parametru
BillingClient.queryPurchasesAsync()
, aby pobrać aktywne zakupy. - Zużyte zakupy: deweloperzy powinni śledzić zużyte zakupy na swoich serwerach.
- Anulowane zakupy: użyj interfejsu API dla deweloperów voided-purchases.
- Więcej informacji znajdziesz w artykule Wysyłanie zapytania o historię zakupów.
- Zaakceptowane i oczekujące zakupy: użyj parametru
BillingFlowParams.ProductDetailsParams.setOfferToken()
wyrzuca teraz wyjątek, gdy deweloperzy podają pusty parametrofferToken
.Zaktualizowano
minSdkVersion
na 21, atargetSdkVersion
na 34.
Biblioteka płatności w Google Play w wersji 6.2.1 (16.04.2024)
Dostępna jest już wersja 6.2.1 Biblioteki płatności w Google Play i rozszerzeń Kotlina.
Podsumowanie zmian
- Naprawiliśmy błąd w
BillingClient.showAlternativeBillingOnlyInformationDialog()
, w którymAlternativeBillingOnlyInformationDialogListener
może nie zostać wywołany w pewnych przypadkach po zakończeniu dialogu.
Biblioteka płatności w Google Play w wersji 6.2.0 (6.03.2024)
Dostępna jest już wersja 6.2.0 Biblioteki płatności w Google Play i rozszerzeń Kotlina.
Podsumowanie zmian
- Dodaliśmy interfejsy API do obsługi ofert zewnętrznych.
- Dodaliśmy
BillingClient.Builder.enableExternalOffer()
, aby umożliwić wyświetlanie ofert zewnętrznych. - Dodano
BillingClient.isExternalOfferAvailableAsync()
, aby sprawdzić dostępność funkcji oferowania ofert zewnętrznych. - Dodano
BillingClient.showExternalOfferInformationDialog()
okno z informacjami, które wyświetla się użytkownikom przed przekierowaniem ich poza aplikację. - Dodano
BillingClient.createExternalOfferReportingDetailsAsync()
, aby utworzyć ładunek wymagany do zgłaszania transakcji dokonanych za pomocą ofert zewnętrznych.
- Dodaliśmy
Biblioteka płatności w Google Play w wersji 6.1.0 (14.11.2023)
Dostępne są już wersje 6.1.0 Biblioteki płatności w Google Play i rozszerzeń Kotlina.
Podsumowanie zmian
- Dodaliśmy interfejsy API do obsługi tylko rozliczeń alternatywnych (tj.bez opcji wyboru przez użytkownika).
- Dodano
BillingClient.Builder.enableAlternativeBillingOnly()
, aby umożliwić oferowanie tylko rozliczeń alternatywnych. - Dodano
BillingClient.isAlternativeBillingOnlyAvailableAsync()
, aby sprawdzić dostępność oferowania tylko rozliczeń alternatywnych. - Dodano
BillingClient.showAlternativeBillingOnlyInformationDialog()
, aby wyświetlać użytkownikom okno informacyjne z informacjami o używaniu wyłącznie rozliczeń alternatywnych. - Dodano
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()
, aby utworzyć ładunek wymagany do zgłaszania transakcji dokonanych tylko za pomocą rozliczeń alternatywnych.
- Dodano
- Zaktualizowano interfejsy API rozliczeń o wyborze użytkownika
- Dodano
UserChoiceBillingListener
, aby zastąpić AlternativeBillingListener, który został oznaczony jako przestarzały. - Dodano
UserChoiceDetails
, aby zastąpićAlternativeChoiceDetails
, które zostało wycofane. - Dodano kolumnę
BillingClient.Builder.enableUserChoiceBilling()
, która zastępuje kolumnęBillingClient.Builder.enableAlternativeBilling()
, która została wycofana.
- Dodano
- Dodano
BillingClient.getBillingConfigAsync()
do pobierania kraju w Google Play.
Biblioteka płatności w Google Play w wersji 6.0.1 (22.06.2023)
Dostępne są już wersje 6.0.1 Biblioteki płatności w Google Play i rozszerzeń Kotlina.
Podsumowanie zmian
Zaktualizuj Bibliotekę płatności w Play, aby była zgodna z Androidem 14.
Biblioteka płatności w Google Play w wersji 6.0 (10.05.2023)
Dostępna jest już wersja 6.0.0 Biblioteki płatności w Google Play i rozszerzeń Kotlina.
Podsumowanie zmian
Dodano nowy typ enumeracji
ReplacementMode
, który zastępuje typProrationMode
.Pamiętaj, że
ProrationMode
jest nadal dostępny ze względu na zgodność wsteczną.Usunięto identyfikator zamówienia w przypadku zakupów w usłudze
PENDING
.Wcześniej identyfikator zamówienia był zawsze tworzony, nawet jeśli zakup był w toku. Począwszy od wersji 6.0.0 identyfikator zamówienia nie będzie tworzony w przypadku oczekujących zakupów. W przypadku tych zakupów identyfikator zamówienia zostanie wypełniony po przeniesieniu zakupu do stanu
PURCHASED
.Usunięto metody
queryPurchases
ilaunchPriceConfirmationFlow
.Metody
queryPurchases
ilaunchPriceConfirmationFlow
, które zostały wcześniej oznaczone jako wycofane, zostały teraz usunięte z Biblioteki płatności Google w wersji 6.0.0. Deweloperzy powinni używać operatoraqueryPurchasesAsync
zamiastqueryPurchases
. Informacje o alternatywnych opcjachlaunchPriceConfirmationFlow
znajdziesz w artykule Zmiany cen.Dodano nowy kod odpowiedzi na błąd sieci.
Od wersji 6.0.0 Biblioteki Google Play dodano nowy kod odpowiedzi na błąd sieci
NETWORK_ERROR
. Ten kod jest zwracany, gdy wystąpił błąd z powodu problemu z połączeniem sieciowym. Te błędy połączenia z siecią zostały wcześniej zgłoszone jakoSERVICE_UNAVAILABLE
.Zaktualizowano
SERVICE_UNAVAILABLE
iSERVICE_TIMEOUT
.Począwszy od wersji 6.0.0 usługi PBL błędy spowodowane przekroczeniem limitu czasu przetwarzania będą zwracane jako
SERVICE_UNAVAILABLE
zamiast obecnegoSERVICE_TIMEOUT
.W poprzednich wersjach PBL zachowanie nie ulega zmianie.
Usunięto
SERVICE_TIMEOUT
.Od wersji 6.0.0 PBL parametr
SERVICE_TIMEOUT
nie będzie już zwracany. Poprzednie wersje PBL będą nadal zwracać ten kod.Dodano dodatkowe logowanie.
Wersja 6 biblioteki Play Billing Library zawiera dodatkowe logowanie, które zapewnia wgląd w korzystanie z interfejsu API (np. powodzenie i niepowodzenie) oraz problemy z połączeniem z usługą. Te informacje posłużą do poprawy wydajności Biblioteki płatności Google Play i lepszego obsługiwania błędów.
Wersja 5.2.1 Biblioteki płatności w Google Play (22.06.2023)
Dostępna jest już wersja 5.2.1 Biblioteki płatności w Google Play i rozszerzeń Kotlina.
Podsumowanie zmian
Zaktualizuj Bibliotekę płatności w Play, aby była zgodna z Androidem 14.
Biblioteka płatności w Google Play w wersji 5.2 (6.04.2023)
Dostępna jest już wersja 5.2.0 Biblioteki płatności w Google Play i rozszerzeń Kotlina.
Podsumowanie zmian
- Dodaliśmy klasy, które obsługują procesy rozliczeń alternatywnych na urządzeniach mobilnych/tabletach dla użytkowników w Korei Południowej:
- Dodano metodę
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()
, która umożliwia określenie zewnętrznego identyfikatora transakcji subskrypcji. - Dodano
BillingClient.Builder.enableAlternativeBilling()
metodę umożliwiającą użytkownikom w Korei Południowej wybór rozliczeń alternatywnych.
Wersja 5.1 biblioteki Płatności w Google Play (31.10.2022)
Dostępna jest już wersja 5.1.0 Biblioteki płatności w Google Play i rozszerzeń Kotlina.
Ta wersja zawiera te zmiany.
Podsumowanie zmian
- Dodano metodę
ProductDetails.SubscriptionOfferDetails.getOfferId()
do pobierania identyfikatora oferty. - Dodano metodę
ProductDetails.SubscriptionOfferDetails.getBasePlanId()
do pobierania identyfikatora abonamentu podstawowego. - Zaktualizowano
targetSdkVersion
do 31.
Biblioteka płatności w Google Play w wersji 5.0 (11.05.2022)
Dostępna jest już wersja 5.0.0 Biblioteki płatności w Google Play i rozszerzeń Kotlina.
Ta wersja zawiera te zmiany.
Podsumowanie zmian
- Wprowadziliśmy nowy model subskrypcji, w tym nowe elementy, które umożliwiają tworzenie wielu ofert dla jednego produktu subskrypcyjnego. Więcej informacji znajdziesz w przewodniku po migracji.
- Dodano
BillingClient.queryProductDetailsAsync()
, aby zastąpićBillingClient.querySkuDetailsAsync()
. - Dodano metodę
setIsOfferPersonalized()
w związku z wymogami UE dotyczącymi ujawniania informacji o spersonalizowanych cenach. Więcej informacji o tym, jak korzystać z tej metody, znajdziesz w artykule Wskazanie ceny spersonalizowanej. - Usunięto
queryPurchases()
, która została wycofana i zastąpiona przez queryPurchasesAsync wprowadzoną w Bibliotece płatności w Google Play w wersji 4.0.0. - Interfejs
launchPriceChangeFlow
został wycofany i zostanie usunięty w przyszłej wersji. Więcej informacji o alternatywnych opcjach znajdziesz w artykule Procedura potwierdzenia wprowadzenia zmiany ceny. - Usunięto parametr
setVrPurchaseFlow()
, który był używany wcześniej podczas tworzenia instancji procesu zakupu. W poprzednich wersjach ta metoda przekierowywała użytkownika do sfinalizowania zakupu na urządzeniu z Androidem. Po usunięciu tej metody użytkownicy będą mogli dokonać zakupu w ramach standardowego procesu zakupu.
Wersja 4.1 biblioteki płatności w Google Play (23.02.2022)
Dostępna jest już wersja 4.1.0 Biblioteki płatności w Google Play i rozszerzeń Kotlina.
Ta wersja zawiera te zmiany.
Podsumowanie zmian
- Dodano
BillingClient.showInAppMessages()
, aby ułatwić obsługę odrzuconych płatności za subskrypcję. Więcej informacji o używaniu wiadomości w aplikacji do obsługi odrzuconych płatności za subskrypcję znajdziesz w artykule Obsługa odrzuconych płatności.
Wersja 4.0 biblioteki Płatności w Google Play (18.05.2021)
Wersja 4.0.0 Biblioteki płatności w Google Play i rozszerzeń Kotlina jest już dostępna.
Podsumowanie zmian
Dodano
BillingClient.queryPurchasesAsync()
, aby zastąpićBillingClient.queryPurchases()
, które zostanie usunięte w przyszłej wersji.Dodano nowy tryb zastępowania abonamentu
IMMEDIATE_AND_CHARGE_FULL_PRICE
.Dodano metodę
BillingClient.getConnectionState()
do pobierania stanu połączenia z biblioteką płatności Play.Zaktualizowano Javadoc i implementację, aby wskazać, z którego wątku można wywołać metodę i które wyniki wątku są publikowane.
Dodano
BillingFlowParams.Builder.setSubscriptionUpdateParams()
jako nowy sposób inicjowania aktualizacji subskrypcji. Zastępuje ona strategieBillingFlowParams#getReplaceSkusProrationMode
,BillingFlowParams#getOldSkuPurchaseToken
,BillingFlowParams#getOldSku
,BillingFlowParams.Builder#setReplaceSkusProrationMode
iBillingFlowParams.Builder#setOldSku
, które zostały usunięte.Dodano
Purchase.getQuantity()
iPurchaseHistoryRecord.getQuantity()
.Dodano
Purchase#getSkus()
iPurchaseHistoryRecord#getSkus()
. Zastępują onePurchase#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)
Dostępne są już wersje 3.0.3 Biblioteki płatności w Google Play, rozszerzenia Kotlin i wtyczki Unity.
Poprawki błędów w Java i Kotlin
- Naprawiono wyciek pamięci podczas wywoływania funkcji
endConnection()
. - Rozwiązanie problemu z Biblioteką płatności w Google Play używaną przez aplikacje, które korzystają z trybu uruchamiania pojedynczego zadania.
onPurchasesUpdated()
Ponowne uruchomienie aplikacji z wyszukiwarki Androida spowoduje wywołanie funkcji zwrotnej, jeśli przed zawieszeniem aplikacja wyświetlała okno płatności.
Poprawki błędów w Unity
- Zaktualizuj Java do wersji 3.0.3, aby naprawić wyciek pamięci i rozwiązać problem uniemożliwiający dokonywanie zakupów, gdy aplikacja jest wznawiana z wyrzutki Androida, a okno płatności było widoczne przed zawieszeniem.
Wersja 3.0.2 biblioteki płatności w Google Play (24.11.2020)
Dostępne są już wersje 3.0.2 Biblioteki płatności w Google Play i jej rozszerzenia na potrzeby Kotlina.
Poprawki błędów
- Naprawiliśmy błąd w rozszerzeniu Kotlin, który powodował, że coroutine kończyła się z błędem „Już wznowiono”.
- Rozwiązaliśmy problem z nierozwiązanymi odwołaniami podczas używania rozszerzenia Kotlin z biblioteką kotlinx.coroutines w wersji 1.4 lub nowszej.
Wersja 3.0.1 Biblioteki płatności w Google Play (30.09.2020)
Dostępne są już wersje 3.0.1 Biblioteki płatności w Google Play i jej rozszerzenia na potrzeby Kotlina.
Poprawki błędów
- Rozwiązaliśmy błąd, który powodował, że jeśli aplikacja została zamknięta i przywrócona podczas procesu płatności, funkcja
PurchasesUpdatedListener
mogła nie zostać wywołana z wynikiem zakupu.
Wersja 3.0 Biblioteki płatności w Google Play (8 czerwca 2020 r.)
Dostępne są już wersje 3.0.0 Biblioteki płatności w Google Play, rozszerzenia Kotlin i wtyczki Unity.
Podsumowanie zmian
- Usunięto obsługę kodu SKU nagrody.
- Usunięto parametry
ChildDirected
iUnderAgeOfConsent
. - Usunięto wycofane metody przesyłania danych przez deweloperó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 możliwości wystąpienia wartości null.
Poprawki błędów
SkuDetails.getIntroductoryPriceCycles()
zwraca teraz wartośćint
zamiastString
.- Naprawiliśmy błąd, który powodował, że proces płatności był traktowany jako zawierający dodatkowe parametry, nawet jeśli nie były one ustawione.
Wersja 2.2.1 biblioteki Płatności w Google Play (2020-05-20)
Biblioteka płatności w Google Play w wersji 2.2.1 jest już dostępna.
Poprawki błędów
- Zaktualizowano domyślną wersję biblioteki Java Play Billing, od której zależy rozszerzenie Kotlin.
Wersja 2.2.0 Biblioteki płatności w Google Play i obsługa Unity (23.03.2020)
Wersja 2.2.0 systemu płatności Google Play zawiera funkcje, które pomagają deweloperom przypisywać zakupy do właściwego użytkownika. Dzięki tym zmianom nie musisz już tworzyć rozwiązań niestandardowych na podstawie danych przesyłanych przez dewelopera. W ramach tej aktualizacji wycofujemy funkcję przesyłania danych dla deweloperów, która zostanie usunięta w kolejnych wersjach. Więcej informacji, w tym zalecane alternatywy, znajdziesz w artykule Dane programisty.
Biblioteka płatności w Google Play 2 dla Unity
Oprócz obecnych wersji Biblioteki płatności w Google Play w językach Java i Kotlin udostępniliśmy wersję biblioteki do użycia z Unity. Deweloperzy gier korzystający z interfejsu API zakupów w aplikacji Unity mogą już teraz przejść na nowszą wersję, aby korzystać ze wszystkich funkcji Biblioteki płatności w Google Play 2 i ułatwić sobie dalsze przechodzenie na nowsze wersje tej biblioteki.
Więcej informacji znajdziesz w artykule Korzystanie z płatności w Google Play w Unity.
Podsumowanie zmian
- Biblioteka płatności w Google Play w języku Java
- W
AcknowledgePurchaseParams
metodysetDeveloperPayload()
igetDeveloperPayload()
są wycofane. - W
ConsumeParams
metodysetDeveloperPayload()
igetDeveloperPayload()
są wycofane. - W pliku
BillingFlowParams
zmieniliśmy nazwę nasetObfuscatedAccountId()
i zastosowaliśmy ograniczenie długości do 64 znaków oraz ograniczenie dotyczące informacji umożliwiających identyfikację.setAccountId()
setAccountId()
został oznaczony jako przestarzały i zostanie usunięty w przyszłej wersji biblioteki. - W
BillingFlowParams
dodanosetObfuscatedProfileId()
, które działa podobnie dosetObfuscatedAccountId()
. Więcej informacji znajdziesz w artykule Zmiany i alternatywne rozwiązania dotyczące ładunku aplikacji. - W
Purchase
dodano metodęgetAccountIdentifiers()
, która zwraca zanonimizowane identyfikatory kont ustawione wBillingFlowParams
. - W
BillingClient
metodaloadRewardedSku()
została oznaczona jako przestarzała w ramach wycofywania kodów SKU z nagrodami. Więcej informacji o wycofaniu znajdziesz w Centrum pomocy Konsoli Play.
- W
Wersja 2.1.0 Biblioteki płatności w Google Play i wersja 2.1.0 rozszerzenia Kotlin (10 grudnia 2019 r.)
Dostępna jest już wersja 2.1.0 Biblioteki płatności w Google Play i nowe rozszerzenie Kotlina. Rozszerzenie Kotlina do biblioteki Play Billing zapewnia alternatywne interfejsy API do użycia w Kotlinie, które zapewniają większą ochronę przed nullami i lepsze coroutines. Przykłady kodu znajdziesz w artykule Korzystanie z Biblioteki płatności w Google Play.
Ta wersja zawiera te zmiany.
Podsumowanie zmian
- W
BillingFlowParams
wycofanosetOldSku(String oldSku)
i zastąpiono go wartościąsetOldSku(String oldSku, String purchaseToken)
, aby uniknąć niejasności w przypadku wielu kont na urządzeniu z tym samym identyfikatorem SKU.
Wersja 2.0.3 biblioteki Płatności w Google Play (5 sierpnia 2019 r.)
Biblioteka Google Play Billing w wersji 2.0.3 jest już dostępna.
Poprawki błędów
- Naprawiliśmy błąd, który powodował, że funkcja
querySkuDetailsAsync()
zamiast zwracać pomyślny wynik, czasami kończyła się niepowodzeniem z kodemDEVELOPER_ERROR
.
Biblioteka płatności w Google Play w wersji 2.0.2 (8 lipca 2019 r.)
Biblioteka płatności w Google Play w wersji 2.0.2 jest już dostępna. Ta wersja zawiera aktualizacje dokumentacji referencyjnej i nie zmienia funkcjonalności biblioteki.
Wersja 2.0.1 Biblioteki płatności w Google Play (6 czerwca 2019 r.)
Biblioteka Google Play Billing w wersji 2.0.1 jest już dostępna. Ta wersja zawiera następujące zmiany.
Poprawki błędów
- Naprawiliśmy błąd, który w niektórych przypadkach powodował zwracanie komunikatów debugowania jako
null
. - Naprawiono potencjalny problem z wyciekiem pamięci.
Wersja Biblioteki płatności w Google Play 2.0 (07.05.2019)
Biblioteka Google Play Billing w wersji 2.0 jest już dostępna. 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 poza nią. Aby zapewnić spójne wrażenia z zakupów w Google Play niezależnie od tego, gdzie użytkownik kupuje produkt, musisz potwierdzić wszystkie zakupy dokonane za pomocą Biblioteki płatności w Google Play tak szybko, jak to możliwe po przyznaniu uprawnień użytkownikowi. Jeśli w ciągu 3 dni nie potwierdzisz zakupu, użytkownik automatycznie otrzyma zwrot środków, a Google Play unieważni zakup. W przypadku oczekujących transakcji (nowość w wersji 2.0) 3-dniowy okres zaczyna się, gdy zakup ma stan PURCHASED
. Nie dotyczy to stanu PENDING
.
W przypadku subskrypcji musisz potwierdzić każdy zakup, który ma nowy token zakupu. Oznacza to, że wszystkie początkowe zakupy, zmiany abonamentu i ponowne rejestracje muszą być potwierdzone, ale nie musisz potwierdzać kolejnych odnowień. Aby określić, czy zakup wymaga potwierdzenia, sprawdź pole potwierdzenia w zakupie.
Obiekt Purchase
zawiera teraz metodę isAcknowledged()
, która wskazuje, czy zakup został potwierdzony. Interfejs Google Play Developer API zawiera też wartości logiczne potwierdzenia zarówno dla Purchases.products
, jak i Purchases.subscriptions
.
Zanim potwierdzisz zakup, użyj tych metod, aby sprawdzić, czy zakup został już potwierdzony.
Możesz potwierdzić zakup, korzystając z jednej z tych metod:
- W przypadku produktów konsumpcyjnych użyj wartości
consumeAsync()
, która znajduje się w interfejsie API klienta. - W przypadku produktów, które nie są zużywane, użyj
acknowledgePurchase()
, dostępnego w interfejsie klienta API. - Nowa metoda
acknowledge()
jest też dostępna w interfejsie Server API.
Metoda BillingFlowParams.setSku() została usunięta
W tej wersji została usunięta metoda BillingFlowParams#setSku()
, która została wycofana. Zanim zrenderujesz produkty w procesie zakupu, musisz wywołać funkcję BillingClient.querySkuDetailsAsync()
, przekazując jej wynikowy obiekt SkuDetails
do BillingFlowParams.Builder.setSkuDetails()
.
Przykłady kodu znajdziesz w artykule Korzystanie z Biblioteki płatności w Google Play.
Obsługiwane są dane programisty.
Wersja 2.0 biblioteki Google Play Billing obsługuje dane dewelopera – dowolne ciągi znaków, które można dołączyć do zakupów. Parametr ładunku dewelopera możesz dołączyć do zakupu, ale tylko wtedy, gdy zakup został potwierdzony lub wykorzystany. W przeciwieństwie do danych dewelopera w AIDL dane te można określić podczas uruchamiania procesu zakupu. Zakupy można teraz inicjować poza aplikacją, więc ta zmiana zapewnia, że zawsze możesz dodać ładunek do zakupów.
Aby uzyskać dostęp do ładunku w nowej bibliotece, obiekty Purchase
zawierają teraz metodę getDeveloperPayload()
.
Stałe oferty
Gdy oferujesz kod SKU ze zniżką, Google Play zwraca teraz pierwotną cenę tego kodu, aby umożliwić użytkownikom sprawdzenie, czy otrzymują zniżkę.
SkuDetails
zawiera 2 nowe metody pobierania pierwotnej ceny SKU:
getOriginalPriceAmountMicros()
- zwraca niesformatowaną pierwotną cenę SKU przed rabatem.
getOriginalPrice()
- zwraca pierwotną cenę z dodatkowym formatowaniem waluty.
Transakcje oczekujące
W wersji 2.0 biblioteki Płatności w Google Play musisz obsługiwać zakupy, które wymagają dodatkowych działań przed przyznaniem uprawnień. Użytkownik może na przykład kupić produkt w aplikacji w sklepie stacjonarnym, płacąc gotówką. Oznacza to, że transakcja jest przeprowadzana poza Twoją aplikacją. W tym scenariuszu uprawnienia należy przyznać dopiero po zakończeniu transakcji przez użytkownika.
Aby umożliwić zakupy oczekujące, wywołaj funkcję enablePendingPurchases()
w ramach inicjowania aplikacji.
Użyj parametru Purchase.getPurchaseState()
, aby określić, czy stan zakupu to PURCHASED
czy PENDING
. Pamiętaj, że uprawnienia należy przyznać tylko wtedy, gdy stan to PURCHASED
. Aby sprawdzić aktualny stan Purchase
:
- Podczas uruchamiania aplikacji wywołaj funkcję
BillingClient.queryPurchases()
, aby pobrać listę niewykorzystanych produktów powiązanych z użytkownikiem. - Wywołaj funkcję
Purchase.getPurchaseState()
w przypadku każdego zwróconego obiektuPurchase
. - Zaimplementuj metodę
onPurchasesUpdated()
, aby reagować na zmiany w obiektachPurchase
.
Interfejs Google Play Developer API zawiera też stan PENDING
dla Purchases.products
.
Transakcje oczekujące nie są obsługiwane w przypadku subskrypcji.
W tej wersji wprowadzamy też nowy typ powiadomienia dla deweloperów w czasie rzeczywistym.OneTimeProductNotification
Ten typ powiadomienia zawiera jedną wiadomość, której wartość to ONE_TIME_PRODUCT_PURCHASED
lub ONE_TIME_PRODUCT_CANCELED
. Ten typ powiadomienia jest wysyłany tylko w przypadku zakupów związanych z opóźnionymi formami płatności, takimi jak gotówka.
Potwierdzanie oczekujących zakupów należy przeprowadzać tylko wtedy, gdy stan zakupu to PURCHASED
, a nie PENDING
.
Zmiany w interfejsie API
Biblioteka Google Play Billing w wersji 2.0 zawiera kilka zmian w interfejsie API, które umożliwiają obsługę nowych funkcji i uproszczają korzystanie z dotychczasowych.
consumeAsync
consumeAsync()
odbiera teraz obiekt ConsumeParams
zamiast obiektu purchaseToken
. ConsumeParams
zawiera purchaseToken
, a także opcjonalny ładunek dewelopera.
W tej wersji usunięto poprzednią wersję (consumeAsync()
).
queryPurchaseHistoryAsync
Aby zminimalizować dezorientację, funkcja queryPurchaseHistoryAsync()
zwraca teraz obiekt PurchaseHistoryRecord
zamiast obiektu Purchase
. Obiekt PurchaseHistoryRecord
jest taki sam jak obiekt Purchase
, z tym że odzwierciedla tylko wartości zwracane przez obiekt queryPurchaseHistoryAsync()
i nie zawiera pól autoRenewing
, orderId
ani packageName
. Pamiętaj, że zwrócone dane się nie zmieniły – funkcja queryPurchaseHistoryAsync()
zwraca te same dane co wcześniej.
Wartości zwracane przez BillingResult
Interfejsy API, które wcześniej zwracały wartość całkowitą BillingResponse
, zwracają teraz obiekt BillingResult
. BillingResult
zawiera liczbę całkowitą BillingResponse
oraz ciąg znaków debugowania, który możesz wykorzystać do diagnozowania błędów. Ciąg debugowania jest w języku angielskim (US) i nie jest przeznaczony do wyświetlania użytkownikom.
Poprawki błędów
SkuDetails.getIntroductoryPriceAmountMicros()
zwraca teraz wartośćlong
zamiastString
.
Wersja 1.2.2 Biblioteki płatności w Google Play (7 marca 2019 r.)
Biblioteka płatności w Google Play w wersji 1.2.2 jest już dostępna. 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 blokują już wątku głównego.
Inne zmiany
- Chociaż nadal zalecamy korzystanie z głównego wątku, możesz teraz utworzyć instancję biblioteki Google Play Billing Library z wątku w tle.
- Tworzenie instancji zostało w pełni przeniesione do wątku w tle, aby zmniejszyć ryzyko wystąpienia błędów ANR.
Wersja Biblioteki płatności w Play 1.2.1 (04.03.2019)
Biblioteka płatności w Google Play w wersji 1.2.1 jest już dostępna. 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 w artykule Dodawanie funkcji związanych z produktami z nagrodami.
Inne zmiany
- Dodano publiczne konstruktory
PurchasesResult
iSkuDetailsResult
, aby ułatwić testowanie. - Obiekty
SkuDetails
mogą używać nowej metodygetOriginalJson()
. - Wszystkie wywołania usługi AIDL są teraz obsługiwane przez wątki w tle.
Poprawki błędów
- Listeners wywoływanych metod 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 października 2018 r.)
Biblioteka płatności w Google Play w wersji 1.2 jest już dostępna. Ta wersja zawiera następujące zmiany.
Podsumowanie zmian
- Biblioteka Google Play Billing Library jest teraz objęta licencją na podstawie Umowy licencyjnej na pakiet Android SDK.
- Dodaliśmy interfejs API
launchPriceChangeConfirmationFlow
, który prosi użytkowników o sprawdzenie oczekującej zmiany ceny abonamentu. - Dodano obsługę nowego trybu proporcjonalnego
DEFERRED
podczas podwyższania lub obniżania poziomu subskrypcji użytkownika. - W klasie
BillingFlowParams
zastąpionosetSku()
wartościąsetSkuDetails()
. - Drobne poprawki błędów i optymalizacje kodu.
Potwierdzenie zmiany ceny
Możesz teraz zmienić cenę abonamentu w Konsoli Google Play i poprosić użytkowników o sprawdzenie i zaakceptowanie nowej ceny, gdy otworzą aplikację.
Aby użyć tego interfejsu API, utwórz obiekt PriceChangeFlowParams
, korzystając z identyfikatora skuDetails
produktu subskrypcji, a następnie wywołaj funkcję launchPriceChangeConfirmationFlow()
. Aby przetworzyć wynik po zakończeniu procesu potwierdzenia zmiany ceny, zastosuj fragment kodu PriceChangeConfirmationListener
, jak pokazano 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 informacjami o nowej cenie i prośbą o jej zaakceptowanie. Ten przepływ zwraca kod odpowiedzi typu BillingClient.BillingResponse
.
Nowy tryb przydziału
Podczas przechodzenia na wyższą lub niższą wersję subskrypcji możesz użyć nowego trybu podziału DEFERRED
. Ten tryb aktualizuje subskrypcję użytkownika przy następnym odnowieniu.
Więcej informacji o skonfigurowaniu tego trybu znajdziesz w artykule Konfigurowanie trybu podziału na częście.
Nowa metoda ustawiania 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 kliencie płatności w aplikacji zalecamy bezpośrednie korzystanie z obiektu JSON za pomocą funkcji setSkuDetails()
, jak pokazano w tym fragmencie kodu:
W klasie BillingFlowParams
Builder metoda setSku()
została wycofana. Zamiast tego użyj metody setSkuDetails()
, jak pokazano w tym fragmencie kodu. Obiekt przekazany do obiektu setSkuDetails()
pochodzi z metody 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 Biblioteki płatności w Play 1.1 (7 maja 2018 r.)
Biblioteka płatności w Google Play w wersji 1.1 jest już dostępna. Ta wersja zawiera następujące zmiany.
Podsumowanie zmian
- Dodano obsługę określania trybu proporcjonalnego w
BillingFlowParams
podczas przechodzenia na wyższą lub niższą wersję istniejącej subskrypcji. - Flaga logiczna
replaceSkusProration
wBillingFlowParams
nie jest już obsługiwana. Zamiast tego użyjreplaceSkusProrationMode
. launchBillingFlow()
wywołuje teraz wywołanie zwrotne w przypadku odpowiedzi, które nie powiodły się.
Zmiany w zachowaniu
Wersja 1.1 Biblioteki płatności w Google Play zawiera te zmiany zachowania:
Deweloperzy mogą ustawić replaceSkusProrationMode
w klasie BillingFlowParams
ProrationMode
zawiera dodatkowe informacje o typie proporcjonalnego przedłużenia subskrypcji podczas jej uaktualniania lub obniżania.
Kotlin
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
Java
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build();
Google Play obsługuje te tryby podziału:
IMMEDIATE_WITH_TIME_PRORATION |
Zastąpienie zacznie obowiązywać natychmiast, a nowy czas ważności będzie proporcjonalnie naliczany i doliczony do konta użytkownika lub odjęty od jego rachunku. Jest to obecne domyślne zachowanie. |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE |
Zastąpienie zacznie obowiązywać natychmiast, a cykl rozliczeniowy pozostanie bez zmian. Obciążymy Cię ceną za pozostałą część okresu.
Uwaga: ta opcja jest dostępna tylko w przypadku uaktualnienia subskrypcji. |
IMMEDIATE_WITHOUT_PRORATION |
Zastąpienie wejdzie w życie natychmiast, a nowa cena zostanie naliczona przy następnym odnowieniu. Cykl rozliczeniowy pozostaje bez zmian. |
W klasie BillingFlowParams
nie jest już obsługiwana kolumna replaceSkusProration
Deweloperzy mogli wcześniej ustawić flagę logiczną, aby naliczać proporcjonalną kwotę za prośbę o przejście na wyższą wersję subskrypcji. Ponieważ obsługujemy ProrationMode
, która zawiera bardziej szczegółowe instrukcje podziału, ten parametr logiczny nie jest już obsługiwany.
launchBillingFlow()
wywołuje teraz wywołanie zwrotne w przypadku nieudanych odpowiedzi
Biblioteka płatności zawsze wywoła funkcję PurhcasesUpdatedListener
i zwróci asynchronicznie wartość BillingResponse
. Zachowana jest też synchroniczna wartość zwracana przez funkcję BillingResponse
.
Poprawki błędów
- W metodach asynchronicznych prawidłowo kończy się wcześnie, gdy usługa zostanie odłączona.
Builder
param obiekty nie zmieniają już zbudowanych obiektów.- Problem 68087141:
launchBillingFlow()
teraz wywołuje wywołanie zwrotne w przypadku nieudanych odpowiedzi.
Wersja 1.0 Biblioteki płatności w Google Play (19.09.2017, ogłoszenie)
Biblioteka płatności w Google Play w wersji 1.0 jest już dostępna. Ta wersja zawiera następujące zmiany.
Ważne zmiany
- Wbudowane uprawnienie do płatności w pliku manifestu biblioteki. Nie musisz już dodawać uprawnienia
com.android.vending.BILLING
w pliku manifestu Androida. - Do klasy
BillingClient.Builder
dodano nowy kreator. - Wprowadziliśmy wzór konstruktora dla klasy
SkuDetailsParams
, która ma służyć do wywoływania metod służących do zapytania o kody SKU. - Zmieniliśmy kilka metod interfejsu API, aby zapewnić spójność (te same nazwy i kolejność argumentów zwracanych).
Zmiany w zachowaniu
Wersja 1.0 Biblioteki płatności w Google Play zawiera te zmiany zachowania:
Klasa BillingClient.Builder
BillingClient.Builder
jest teraz inicjowany 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 zainicjować proces płatności w przypadku zakupu lub subskrypcji, metoda launchBillingFlow()
otrzymuje instancję BillingFlowParams
inicjowaną parametrami określonymi w żądaniu:
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 przesyłania zapytań o dostępne produkty
Argumenty metod queryPurchaseHistoryAsync()
i querySkuDetailsAsync()
zostały zapakowane w schemat Builder:
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 za pomocą kodu wyniku i listy obiektów SkuDetails
zamiast poprzedniej klasy opakowującej, co ma na celu zapewnienie wygody i spójności w naszym interfejsie API:
Kotlin
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
Java
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
Zmieniono kolejność parametrów w metodzie onConsumeResponse()
Kolejność argumentów interfejsu onConsumeResponse
w interfejsie ConsumeResponseListener
została zmieniona, aby była spójna w naszych interfejsach API:
Kotlin
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
Java
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
Rozwinięty obiekt PurchaseResult
PurchaseResult
został odwinięty, aby zachować spójność w naszych interfejsach 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 ProxyBillingActivity i PurchasesUpdatedListener podczas obracania urządzenia
Wersja przedpremierowa 1 dla programistów (12 czerwca 2017 r., ogłoszenie)
Udostępniliśmy wersję przedpremierową dla deweloperów, która ma na celu uproszczenie procesu tworzenia w zakresie płatności. Dzięki temu deweloperzy mogą skupić się na wdrażaniu logiki specyficznej dla aplikacji na Androida, takiej jak architektura aplikacji czy struktura nawigacji.
Biblioteka zawiera kilka przydatnych klas i funkcji, których możesz używać podczas integrowania aplikacji na Androida z interfejsem Google Play Billing API. Biblioteka zapewnia też warstwę abstrakcji na poziomie usługi Android Interface Definition Language (AIDL), ułatwiając deweloperom definiowanie interfejsu między aplikacją a interfejsem Google Play Billing API.