1. Wprowadzenie
W tym laboratorium skupisz się na tworzeniu produktu kupowanego raz, definiowaniu jego opcji zakupu, ustawianiu cen w poszczególnych regionach i testowaniu procesu zakupu produktów kupowanych raz.
Odbiorcy
Te warsztaty są przeznaczone dla deweloperów aplikacji na Androida, którzy chcą zarządzać katalogiem produktów kupowanych raz za pomocą Konsoli Play.
Czego się nauczysz...
- Model obiektowy produktu kupowanego raz.
- Jak poruszać się po Konsoli Google Play i z niej korzystać, aby zarządzać katalogiem produktów kupowanych raz.
- Jak bezpłatnie przetłumaczyć szczegóły produktów kupowanych raz na różne języki.
- Jak skonfigurować regionalną dostępność i ceny produktów kupowanych raz.
- Jak używać interfejsów API Biblioteki płatności w Play do wysyłania zapytań o szczegóły produktów kupowanych raz.
- Jak testować produkty kupowane raz za pomocą aplikacji Play Billing Lab.
Co będzie Ci potrzebne...
- Dostęp do Konsoli Google Play za pomocą konta dewelopera. Jeśli nie masz konta dewelopera, musisz utworzyć konto.
- Przykładowa aplikacja do tego laboratorium, którą możesz pobrać z GitHuba.
- Android Studio
2. Premiera produktu kupowanego raz
Model obiektowy produktów kupowanych raz zapewnia większą elastyczność w zakresie sprzedaży produktów i ułatwia zarządzanie nimi. Model obiektowy oddziela przedmiot od sposobu sprzedaży, dzięki czemu to samo uprawnienie może mieć kilka pułapów cenowych i różne sposoby przedstawiania użytkownikom. Model obiektów ma 3 poziomy hierarchii:
- Produkt kupowany raz – obiekt produktu określa, co kupuje użytkownik.
- Opcja zakupu – określa, w jaki sposób uprawnienie jest przyznawane użytkownikowi. Zawiera też informacje o jego cenie i regionie, w którym będzie dostępny. W przypadku jednego produktu może być dostępnych kilka opcji zakupu, które mogą reprezentować różne ceny w różnych regionach.
- Oferta – oferty mogą wpływać na cenę powiązanej z nimi opcji zakupu i mogą być używane do modelowania rabatów lub zamówień w przedsprzedaży. Jedna opcja zakupu może mieć kilka ofert.
Ten diagram przedstawia model obiektu produktu kupowanego raz.
Ilustracja 1. Model obiektu kupowanego raz.
Więcej informacji znajdziesz w omówieniu produktów kupowanych raz.
3. Tworzenie przykładowej aplikacji
W tym ćwiczeniu w Codelabs pokazujemy, jak zarządzać produktami jednorazowymi na przykładzie przykładowej aplikacji na Androida. Aplikacja przykładowa to w pełni funkcjonalna aplikacja na Androida z kompletnym kodem źródłowym, który pokazuje te aspekty:
- Integracja aplikacji z PBL
- Pobieranie produktów kupowanych raz i powiązanych z nimi opcji zakupu
- Przeprowadzanie procesów zakupu z cenami regionalnymi
Poniższy film demonstracyjny pokazuje, jak będzie wyglądać i działać przykładowa aplikacja po wdrożeniu i uruchomieniu.
Jeśli znasz już produkty kupowane raz i Bibliotekę płatności w Play (PBL), możesz pobrać aplikację przykładową i ją wypróbować.
Wymagania wstępne
Zanim utworzysz i wdrożysz przykładową aplikację, wykonaj te czynności:
- Utwórz konto dewelopera w Konsoli Google Play. Jeśli masz już konto dewelopera, pomiń ten krok.
- Utwórz nową aplikację w Konsoli Play. Podczas tworzenia aplikacji możesz podać dowolną nazwę aplikacji przykładowej.
- Zainstaluj Android Studio.
Kompilacja
Celem tego kroku jest wygenerowanie podpisanego pliku pakietu aplikacji na Androida dla aplikacji przykładowej.
Aby wygenerować pakiet aplikacji na Androida, wykonaj te czynności:
- Pobierz przykładową aplikację z GitHub.
- Skompiluj przykładową aplikację. Zanim to zrobisz, zmień nazwę pakietu przykładowej aplikacji, a potem ją skompiluj. Jeśli w Konsoli Play masz pakiety innych aplikacji, upewnij się, że nazwa pakietu podana w przypadku aplikacji przykładowej jest unikalna.
Uwaga: utworzenie aplikacji przykładowej powoduje wygenerowanie tylko pliku APK, którego możesz używać do testowania lokalnego. Uruchomienie aplikacji nie powoduje jednak pobrania produktów i cen, ponieważ nie zostały one skonfigurowane w Konsoli Play. - Wygeneruj podpisany pakiet aplikacji na Androida.
Następnym krokiem jest przesłanie pakietu aplikacji na Androida do Konsoli Google Play.
4. Tworzenie produktu kupowanego raz w Konsoli Play
Aby utworzyć produkty jednorazowe w Konsoli Google Play, musisz mieć aplikację w Konsoli Play. Utwórz aplikację w Konsoli Play, a następnie prześlij wcześniej utworzony podpisany pakiet aplikacji.
Tworzenie aplikacji
Aby utworzyć aplikację:
- Zaloguj się w Konsoli Google Play za pomocą konta dewelopera.
- Kliknij Utwórz aplikację. Otworzy się strona Utwórz aplikację.
- Wpisz nazwę aplikacji, wybierz domyślny język i podaj inne szczegóły dotyczące aplikacji.
- Kliknij Utwórz aplikację. Spowoduje to utworzenie aplikacji w Konsoli Google Play.
Teraz możesz przesłać podpisany pakiet aplikacji przykładowej.
Prześlij podpisany pakiet aplikacji
- Prześlij podpisany pakiet aplikacji na ścieżkę testów wewnętrznych w Konsoli Google Play. Dopiero po przesłaniu możesz skonfigurować funkcje związane z zarabianiem w Konsoli Play.
- Kliknij Testuj i publikuj > Testowanie > Wersja wewnętrzna > Utwórz nową wersję.
- Wpisz nazwę wersji i prześlij podpisany plik APK.
- Kliknij Dalej, a następnie Zapisz i opublikuj.
Teraz możesz tworzyć produkty kupowane raz.
Tworzenie produktu kupowanego raz
Aby utworzyć produkt kupowany raz:
- W Konsoli Google Play w menu nawigacyjnym po lewej stronie kliknij Zarabianie w Google Play > Produkty > Produkty kupowane raz.
- Kliknij Utwórz produkt kupowany raz.
- Podaj te szczegóły produktu:
- Identyfikator produktu: wpisz unikalny identyfikator. Na przykład:
trending_movie_1. - (Opcjonalnie) Tagi: dodaj odpowiednie tagi.
- Nazwa: wpisz nazwę produktu. Na przykład:
Product Movie. - Opis: wpisz opis produktu. Na przykład:
Product Description.
Domyślnie nazwa i opis produktu są w języku angielskim (Stany Zjednoczone) – en-US. Możesz też ręcznie wpisać nazwę i opis w innych językach. Aby wprowadzić szczegóły, kliknij Zarządzaj tłumaczeniami, wybierz języki, dla których chcesz wprowadzić przetłumaczony tekst, a następnie kliknij Zastosuj. Obraz poniżej pokazuje opcję Zarządzaj tłumaczeniami:
Ilustracja 2. Zarządzanie tłumaczeniami.
Wybrane języki pojawią się w menu języków. Wybierz każdy język i wpisz odpowiednią nazwę oraz opis w wybranym języku. Możesz też bezpłatnie przetłumaczyć nazwę i opis produktu automatycznie. Więcej informacji znajdziesz w sekcji Tłumaczenie produktów kupowanych raz w tym laboratorium.
Uwaga: na potrzeby tego laboratorium możesz pominąć konfigurowanie pola Ikona i sekcji Podatki, zgodność i programy. - Identyfikator produktu: wpisz unikalny identyfikator. Na przykład:
- Kliknij Dalej.
- Dodaj opcję zakupu i skonfiguruj jej dostępność regionalną. Produkt kupowany raz wymaga co najmniej 1 opcji zakupu, która określa sposób przyznania uprawnienia, jego cenę i dostępność regionalną. W tym samouczku dodamy standardową opcję Kup dla produktu.
W sekcji Opcja zakupu podaj te informacje:- Identyfikator opcji zakupu: wpisz unikalny identyfikator. Na przykład
buy-movie. - Typ zakupu: wybierz Kup.
- (Opcjonalnie) Tagi: dodaj tagi specyficzne dla tej opcji zakupu.
- (Opcjonalnie) Kliknij Opcje zaawansowane, aby skonfigurować opcje zaawansowane. Na potrzeby tego laboratorium możesz pominąć konfigurację opcji zaawansowanych.
- Identyfikator opcji zakupu: wpisz unikalny identyfikator. Na przykład
- Następnie musisz skonfigurować regionalną dostępność i cenę opcji zakupu. W sekcji dostępności regionalnej określisz regiony, w których Twój produkt jest dostępny, w tym regiony, w których aplikacja nie została jeszcze opublikowana. Domyślnie opcja zakupu będzie dostępna we wszystkich regionach.
W sekcji Dostępność i ceny kliknij Edytuj dostępność i dostęp > Ustaw jako niedostępny. Zauważ, że wszystkie regiony są domyślnie ustawione na Dostępne.- Wybierz wszystkie kraje oprócz
France,SpainiUnited States, a następnie kliknij Ustaw jako niedostępny. - W menu Wszystkie regiony wybierz Dostępne kraje i regiony. Wyświetlane są tylko kraje wybrane w poprzednim kroku.
- W przypadku każdego z dostępnych krajów kliknij ikonę edycji w kolumnie Cena. Wyświetli się okno dialogowe, w którym możesz edytować cenę. Wpisz i zapisz te ceny:
- W polu
Francewpisz 10 PLN. - W polu
Spainwpisz 8 EUR. - W przypadku
United Stateswpisz 13 USD.
- W polu
- Wybierz wszystkie kraje oprócz
- Kliknij Aktywuj. Dzięki temu produkt kupowany raz będzie dostępny z opcją zakupu Kup.
Uwaga: waluta ceny regionalnej jest widoczna w zależności od ustawień kraju w Google Play. Jeśli na przykład kraj w Google Play użytkownika jest ustawiony na Francję, cena produktu kupowanego raz jest wyświetlana w euro.
Film o tworzeniu produktu kupowanego raz
Poniższy film pokazuje opisane wcześniej kroki tworzenia produktu kupowanego raz.
Dodawanie opcji wypożyczenia
Teraz dodaj opcję zakupu wypożyczenia do utworzonego wcześniej produktu kupowanego raz.
- W Konsoli Google Play w menu nawigacyjnym po lewej stronie kliknij Zarabianie w Google Play > Produkty > Produkty kupowane raz.
- Kliknij strzałkę w prawo obok produktu z identyfikatorem
trending_movie_1utworzonym w poprzednim kroku. - Kliknij Dodaj opcję zakupu.
- W sekcji Opcja zakupu podaj te informacje:
- Identyfikator opcji zakupu: wpisz
rent-movie. - Typ zakupu: wybierz Wypożycz.
- Okres wypożyczenia: wybierz 48 godzin.
- Okres rozpoczęcia wypożyczenia: wybierz 24 godziny.
- (Opcjonalnie) Tagi: dodaj tagi specyficzne dla tej opcji zakupu.
- (Opcjonalnie) Kliknij Opcje zaawansowane, aby skonfigurować opcje zaawansowane. Na potrzeby tego laboratorium możesz pominąć konfigurację opcji zaawansowanych.
- Identyfikator opcji zakupu: wpisz
- Następnie, podobnie jak w przypadku opcji zakupu, skonfiguruj dostępność regionalną opcji wypożyczenia. Patrz kroki 6 i 7 w poprzedniej sekcji. Podczas ustawiania cen regionalnych określ inną cenę za wypożyczenie. Na przykład:
France– 5 PLNSpain– 4 EURUnited States– 7 USD.
5. Tłumaczenie szczegółów produktu kupowanego raz
Możesz przetłumaczyć nazwę i opis produktu bez dodatkowych opłat, korzystając z funkcji tłumaczenia maszynowego dostępnej w Konsoli Google Play.
Aby przetłumaczyć tytuł i opis, wykonaj te czynności:
- W Konsoli Google Play w menu nawigacyjnym po lewej stronie kliknij Zwiększanie liczby użytkowników > Tłumaczenia > Sklep i produkty w aplikacji.
- Kliknij Utwórz zamówienie.
- Wybierz opcję Bezpłatne tłumaczenie maszynowe, a następnie kliknij Dalej.
- W sekcji Przetłumacz na wybierz francuski – fr-FR i hiszpański – es-ES, a następnie kliknij Dalej.
- Wybierz Produkty kupowane raz i subskrypcje, a potem kliknij Przetłumacz i wyświetl tłumaczenia. Wyświetli się baner z wyłączeniem odpowiedzialności. Zaakceptuj wyłączenie odpowiedzialności.
- Zobaczysz listę przetłumaczonych języków. Kliknij Sprawdź i zastosuj w przypadku danego języka. Sprawdź tekst, a potem kliknij Zastosuj wszystkie tłumaczenia. Powtórz tę czynność w przypadku wszystkich języków, na które chcesz przetłumaczyć tekst.
Po przetłumaczeniu możesz edytować tekst w Konsoli Play. Aby edytować przetłumaczony tekst:
- Otwórz stronę Produkty kupowane raz > [Twój produkt kupowany raz] > Edytuj produkt kupowany raz > Edytuj szczegóły produktu kupowanego raz.
- Wybierz odpowiedni język z menu. Tekst zostanie wyświetlony w wybranym języku. Na ilustracji poniżej pokazano wybór języka, w którym ma być edytowany przetłumaczony tekst:
Ilustracja 3. Edytowanie przetłumaczonego tekstu. - W razie potrzeby edytuj tekst, a następnie kliknij Zapisz zmiany.
Przetłumaczony tekst jest widoczny dla użytkownika na podstawie ustawień języka na jego telefonie. Jeśli na przykład język telefonu użytkownika jest ustawiony na francuski, tytuł i opis produktu kupowanego raz będą wyświetlane w tym języku. Przykładowy obraz poniżej pokazuje, jak i gdzie przetłumaczony tekst będzie wyświetlany w różnych językach.
Rysunek 4. Przetłumaczony tekst w aplikacji.
Film o konfiguracji tłumaczenia
Na poniższym filmie pokazano opisane wcześniej czynności związane z konfiguracją tłumaczenia.
6. Integracja z PBL
Aby zintegrować aplikację z Biblioteką płatności w Google Play, wykonaj te czynności:
- Dodaj zależność Biblioteki płatności w Google Play do aplikacji przykładowej.
dependencies { val billing_version = "8.0.0" implementation("com.android.billingclient:billing-ktx:$billing_version") } - Zainicjuj BillingClient. BillingClient to pakiet SDK klienta, który znajduje się w aplikacji i komunikuje się z Biblioteką płatności w Google Play. Poniższy fragment kodu pokazuje, jak zainicjować klienta rozliczeń.
private BillingClient createBillingClient() { return BillingClient.newBuilder(activity) .enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()) // For one-time products, add a listener to process and acknowledge the purchases. This will notify // Google the purchase was processed. // For client-only apps, use billingClient.acknowledgePurchase(). // If you have a secure backend, you must acknowledge purchases on your server using the // server-side API. // See https://developer.android.com/google/play/billing/security#acknowledge // In this sample snippet purchases aren't processed. You must // implement your business logic to process and acknowledge the purchases. .setListener((billingResult, purchases) -> {}) .enableAutoServiceReconnection() .build(); } - Połącz się z Google Play.Poniższy fragment kodu pokazuje, jak połączyć się z Google Play.
/** * Starts the billing connection with Google Play. This method should be called exactly once * before any other methods in this class. * * @param productList The list of products to query for after the connection is established. */ public void startBillingConnection(List<Product> productList) { billingClient.startConnection( new BillingClientStateListener() { @Override public void onBillingSetupFinished(BillingResult billingResult) { if (billingResult.getResponseCode() == BillingResponseCode.OK) { Log.d(TAG, "Billing Client Connection Successful"); queryProductDetails(productList); } else { Log.e(TAG, "Billing Client Connection Failed: " + billingResult.getDebugMessage()); listener.onBillingSetupFailed(billingResult); // Propagate the error to the listener to show a message to the user. } } @Override public void onBillingServiceDisconnected() { Log.e(TAG, "Billing Client Connection Lost"); listener.onBillingError("Billing Connection Lost"); } }); } - Pobierz szczegóły produktu kupowanego raz.Po zintegrowaniu aplikacji z PBL musisz pobrać szczegóły produktu kupowanego raz do aplikacji. Poniższy fragment kodu pokazuje, jak pobrać szczegóły produktu kupowanego raz w aplikacji.
Pobranie produktu kupowanego raz (w tym przykładzieprivate void queryProductDetails(List<Product> productList) { QueryProductDetailsParams queryProductDetailsParams = QueryProductDetailsParams.newBuilder().setProductList(productList).build(); billingClient.queryProductDetailsAsync( queryProductDetailsParams, new ProductDetailsResponseListener() { @Override public void onProductDetailsResponse( BillingResult billingResult, QueryProductDetailsResult productDetailsResponse) { if (billingResult.getResponseCode() == BillingResponseCode.OK) { List<ProductDetails> productDetailsList = productDetailsResponse.getProductDetailsList(); listener.onProductDetailsResponse(productDetailsList); } else { Log.e(TAG, "QueryProductDetailsAsync Failed: " + billingResult.getDebugMessage()); listener.onBillingError("Query Products Failed: " + billingResult.getResponseCode()); } } }); }trending_movie_1) wProductDetailsdaje odpowiedź podobną do tej: Zwróć uwagę, że opcje zakupu i wypożyczenia są dostępne w{ "productId": "trending_movie_1", "type": "inapp", "title": "Purrfect Mayhem: The Rewind Protocol (Movies All Day | Play Samples)", "name": "Purrfect Mayhem: The Rewind Protocol", "description": "Dr. Arid Thorne and a smart tiger named Yolo find a mysterious tape. It's a \"Rewind Protocol\" to fix time. A shadowy group, the Clockinator, hunts them to seize the tape's power.", "skuDetailsToken": "<---skuDetailsToken--->", "oneTimePurchaseOfferDetails": {}, "oneTimePurchaseOfferDetailsList": [ { "priceAmountMicros": 13000000, "priceCurrencyCode": "USD", "formattedPrice": "$13.00", "offerIdToken": "<---buy offerIdToken --->", "purchaseOptionId": "buy-option", "offerTags": [ "adventure", "mystery" ] }, { "priceAmountMicros": 7000000, "priceCurrencyCode": "USD", "formattedPrice": "$7.00", "offerIdToken": "<---rent offerIdToken--->", "purchaseOptionId": "rent-option", "offerTags": [ "adventure", "mystery" ], "rentalDetails": { "rentalPeriod": "P30D", "rentalExpirationPeriod": "PT24H" } } ] }oneTimePurchaseOfferDetailsList. Lista zawiera 2 opcje zakupu (buy-option i rent-option), które zostały skonfigurowane w Konsoli Play. Każdą opcję zakupu możesz jednoznacznie zidentyfikować za pomocą parametru offerIdToken. - Pobierz tokeny ofert dla ofert wypożyczenia i zakupu. Tokeny oferty są potrzebne do uruchomienia procesu płatności w kroku 6.
@Override public void onProductDetailsResponse(List<ProductDetails> productDetailsList) { if (productDetailsList != null && !productDetailsList.isEmpty()) { // Iterate over all details of the queried product in step 4. for (ProductDetails productDetails : productDetailsList) { // Get the list of all the offers associated with the product. List<ProductDetails.OneTimePurchaseOfferDetails> offerDetailsList = productDetails.getOneTimePurchaseOfferDetailsList(); // Iterate over the offer details for (ProductDetails.OneTimePurchaseOfferDetails offerDetails : offerDetailsList) { // For a Rent purchase option, the // offerDetails.getRentalDetails() method returns // the rent information. If this information is present, // the offer corresponds to a Rent purchsae option. if (offerDetails.getRentalDetails() != null) { rentFormattedPrice = offerDetails.getFormattedPrice(); // Get the offerIdToken for the Rent purchase option rentOfferToken = offerDetails.getOfferToken(); rentMovieTags = offerDetails.getOfferTags(); } // If the offerDetails.getRentalDetails() returns // null, the offer corresponds to a Buy purchsae option. else { buyFormattedPrice = offerDetails.getFormattedPrice(); // Get the offerIdToken for the Buy purchase option buyOfferToken = offerDetails.getOfferToken(); buyMovieTags = offerDetails.getOfferTags(); } } updateUIButtons(); return; } } else { Log.e(TAG, "No product details found for " + productId); } } - Uruchom proces płatności.
/** * Launches the billing flow for the product with the given offer token. * * @param activity The activity instance from which the billing flow will be launched. * @param productDetails The product details of the product to purchase. * @param offerToken The offer token of the product to purchase. * @return The result of the billing flow. */ public void launchPurchase(Activity activity, ProductDetails productDetails, String offerToken) { ImmutableList<BillingFlowParams.ProductDetailsParams> productDetailsParamsList = ImmutableList.of( BillingFlowParams.ProductDetailsParams.newBuilder() .setProductDetails(productDetails) .setOfferToken(offerToken) .build()); BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList(productDetailsParamsList) .build(); billingClient.launchBillingFlow(activity, billingFlowParams); }
Wskazówka: możesz też skonfigurować powiadomienia dla deweloperów w czasie rzeczywistym, aby wdrażać kampanie zachęcające do ponownego zakupu i inne strategie zarządzania cyklem życia zakupu. Aby dowiedzieć się, jak skonfigurować RTDN i obsługiwać powiadomienia z dokładnym śledzeniem i uprawnieniami, zapoznaj się z samouczkiem Maximize Your Play Billing Integration.
7. Opcje zakupu testu
Zanim udostępnisz produkty kupowane raz w opublikowanej aplikacji, możesz przetestować integrację PBL za pomocą testerów licencji i Play Billing Lab.
Dowiesz się, jak testować lokalizację cen i dostępność, w których aplikacja jest dostępna tylko w niektórych regionach z różnymi cenami w każdym z nich.
Wymagania wstępne
- Dodaj testera licencji w Konsoli Google Play, a następnie włącz go w testach wewnętrznych.
- Pobierz i zainstaluj aplikację Play Billing Lab na telefonie lub emulatorze.
- Uruchom na telefonie lub emulatorze przykładową aplikację utworzoną wcześniej.
Testowanie cen regionalnych w przypadku opcji zakupu
Aby przetestować ceny regionalne dla opcji zakupu:
- Otwórz aplikację Laboratorium Płatności w Play i zaloguj się jako tester licencji.
- W sekcji Ustawienia konfiguracji kliknij Edytuj, wybierz kraj
France, a następnie kliknij Zastosuj. Wybieramy tutaj kraj w Google Play, który określa walutę wyświetlaną w aplikacji. - Zamknij i ponownie otwórz aplikację przykładową. Powinna teraz wyświetlać walutę zakupu i wypożyczenia dla
Francew euro.
Aby przetestować usługę w innym kraju, w kroku 2 kliknij Spain, a potem wykonaj krok 3.
Film o testowaniu w Laboratorium Płatności w Play
Poniższy film pokazuje kroki testowania cen regionalnych przy użyciu aplikacji przykładowej.
8. Dalsze kroki
- Dowiedz się, jak zmaksymalizować integrację płatności w Google Play.
- Dowiedz się, jak analizować rezygnacje z zakupu produktu.
- Gdy użytkownicy zaczną kupować te produkty, pamiętaj, aby postępować zgodnie ze sprawdzonymi metodami weryfikowania i przetwarzania zakupów na bezpiecznym backendzie.
Dokumentacja
9. Gratulacje!
Gratulacje! Udało Ci się utworzyć w Konsoli Google Play nowy produkt kupowany raz, skonfigurować opcję zakupu i przetestować proces zakupu w laboratorium płatności w Google Play. Teraz masz już większą wiedzę o elastycznym katalogu produktów kupowanych raz w Google Play.
Ankieta
Twoja opinia na temat tego laboratorium jest dla nas bardzo cenna. Poświęć kilka minut na wypełnienie naszej ankiety.