Otwieraj nowe rynki dzięki regionalnym cenom produktów

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...

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.

codelab-otp-model.png 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:

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:

  1. Pobierz przykładową aplikację z GitHub.
  2. 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.
  3. Wygeneruj podpisany pakiet aplikacji na Androida.
    1. Generowanie klucza przesyłania i magazynu kluczy
    2. Podpisywanie aplikacji kluczem przesyłania
    3. Konfigurowanie podpisywania aplikacji przez Google Play

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ę:

  1. Zaloguj się w Konsoli Google Play za pomocą konta dewelopera.
  2. Kliknij Utwórz aplikację. Otworzy się strona Utwórz aplikację.
  3. Wpisz nazwę aplikacji, wybierz domyślny język i podaj inne szczegóły dotyczące aplikacji.
  4. 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

  1. 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.
  2. Kliknij Testuj i publikuj > Testowanie > Wersja wewnętrzna > Utwórz nową wersję.
  3. Wpisz nazwę wersji i prześlij podpisany plik APK.
  4. Kliknij Dalej, a następnie Zapisz i opublikuj.

Teraz możesz tworzyć produkty kupowane raz.

Tworzenie produktu kupowanego raz

Aby utworzyć produkt kupowany raz:

  1. W Konsoli Google Play w menu nawigacyjnym po lewej stronie kliknij Zarabianie w Google Play > Produkty > Produkty kupowane raz.
  2. Kliknij Utwórz produkt kupowany raz.
  3. 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.
    Ręczne tłumaczenie nazwy i opisu produktu
    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:manage-translations.pngIlustracja 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.
  4. Kliknij Dalej.
  5. 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.
  6. 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.
    1. Wybierz wszystkie kraje oprócz France, Spain i United States, a następnie kliknij Ustaw jako niedostępny.
    2. W menu Wszystkie regiony wybierz Dostępne kraje i regiony. Wyświetlane są tylko kraje wybrane w poprzednim kroku.
    3. 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 France wpisz 10 PLN.
      • W polu Spain wpisz 8 EUR.
      • W przypadku United States wpisz 13 USD.
  7. 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.

  1. W Konsoli Google Play w menu nawigacyjnym po lewej stronie kliknij Zarabianie w Google Play > Produkty > Produkty kupowane raz.
  2. Kliknij strzałkę w prawo obok produktu z identyfikatorem trending_movie_1 utworzonym w poprzednim kroku.
  3. Kliknij Dodaj opcję zakupu.
  4. 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.
  5. 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 PLN
    • Spain – 4 EUR
    • United 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:

  1. W Konsoli Google Play w menu nawigacyjnym po lewej stronie kliknij Zwiększanie liczby użytkowników > Tłumaczenia > Sklep i produkty w aplikacji.
  2. Kliknij Utwórz zamówienie.
  3. Wybierz opcję Bezpłatne tłumaczenie maszynowe, a następnie kliknij Dalej.
  4. W sekcji Przetłumacz na wybierz francuski – fr-FR i hiszpański – es-ES, a następnie kliknij Dalej.
  5. 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.
  6. 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:

  1. Otwórz stronę Produkty kupowane raz > [Twój produkt kupowany raz] > Edytuj produkt kupowany raz > Edytuj szczegóły produktu kupowanego raz.
  2. 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:

    edit-translations.png Ilustracja 3. Edytowanie przetłumaczonego tekstu.
  3. 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.

post-translation.pngRysunek 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:

  1. 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")
    }
    
  2. 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();
     }
    
  3. 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");
            }
            });
    }
    
  4. 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.
    private 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());
                }
            }
            });
    }
    
    Pobranie produktu kupowanego raz (w tym przykładzie trending_movie_1) w ProductDetails daje odpowiedź podobną do tej:
    {
        "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"
                }
            }
        ]
    }
    
    Zwróć uwagę, że opcje zakupu i wypożyczenia są dostępne w oneTimePurchaseOfferDetailsList. Lista zawiera 2 opcje zakupu (buy-optionrent-option), które zostały skonfigurowane w Konsoli Play. Każdą opcję zakupu możesz jednoznacznie zidentyfikować za pomocą parametru offerIdToken.
  5. 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);
        }
    }
    
  6. 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

Testowanie cen regionalnych w przypadku opcji zakupu

Aby przetestować ceny regionalne dla opcji zakupu:

  1. Otwórz aplikację Laboratorium Płatności w Play i zaloguj się jako tester licencji.
  2. 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.
  3. Zamknij i ponownie otwórz aplikację przykładową. Powinna teraz wyświetlać walutę zakupu i wypożyczenia dla France w 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

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.