Dodawanie ofert przedsprzedaży produktów kupowanych raz

1. Wprowadzenie

W tym laboratorium skupisz się na utworzeniu produktu kupowanego raz i dodaniu do niego oferty przedsprzedaży.

Uwaga: zanim rozpoczniesz ten kurs, musisz poprosić o dostęp do funkcji zamówień w przedsprzedaży, wypełniając formularz zgłoszenia zainteresowania programem wcześniejszego dostępu do produktów kupowanych raz.

Odbiorcy

Te warsztaty są przeznaczone dla deweloperów aplikacji na Androida, którzy znają produkty kupowane raz i chcą dowiedzieć się, jak dodać do nich oferty przedsprzedaży.

Wymagania wstępne

Jeśli dopiero zaczynasz korzystać z produktów kupowanych raz, zalecamy ukończenie kursu Unlock new markets with regional product pricing (Odblokuj nowe rynki dzięki regionalnym cenom produktów).

Czego się nauczysz...

  • Jak korzystać z Konsoli Google Play do tworzenia ofert przedsprzedaży produktów kupowanych raz.
  • Jak używać interfejsów API biblioteki Płatności w Google Play do wysyłania zapytań o produkty kupowane raz i odpowiednie szczegóły oferty przedsprzedaży.

Co będzie Ci potrzebne...

2. Tworzenie przykładowej aplikacji

W tym ćwiczeniu w Codelabs dowiesz się, jak zarządzać produktami jednorazowymi, korzystając z 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 ofert przedsprzedaży.
  • Realizuj procesy zakupu w przypadku cen regionalnych.

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

    Uwaga: utworzenie przykładowej aplikacji powoduje utworzenie tylko pliku APK, którego możesz użyć 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.

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

Teraz możesz utworzyć produkty kupowane raz.

Tworzenie produktu kupowanego raz

Teraz utwórz produkt kupowany raz, który użytkownicy mają kupić.

  1. Otwórz przykładową aplikację w Konsoli Google Play i 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: upcoming_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.
    • (Opcjonalnie) Dodaj obraz ikony: prześlij ikonę, która reprezentuje Twój produkt.
    Uwaga: na potrzeby tego kursu możesz pominąć konfigurowanie sekcji Podatki, zgodność z przepisami 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 dotyczące 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 jest dostępna we wszystkich regionach.W sekcji Dostępność i ceny kliknij Edytuj dostępność i dostęp.
    1. Kliknij Ustaw jako niedostępną.
    Zauważ, że wszystkie regiony są automatycznie wybrane i mają ustawienie Dostępne.
    1. Odznacz tylko United States kraj, a następnie kliknij Ustaw jako niedostępny. Produkt kupowany raz będzie teraz dostępny tylko w United States.
    2. W menu Wszystkie regiony wybierz Dostępne kraje i regiony. Powinien wyświetlić się tylko znak United States.
    3. Kliknij ikonę Cena. Wyświetli się okno dialogowe, w którym możesz ustawić cenę.
    4. Wpisz 10 PLN, a potem kliknij Zapisz.
  7. Kliknij Zapisz jako wersję roboczą.

Uwaga: nie aktywuj jeszcze opcji zakupu. Aktywujemy ją po skonfigurowaniu oferty w przedsprzedaży. Nie możesz dodać oferty przedsprzedaży do aktywnej opcji zakupu, dla której ustawiono dostępność regionalną.

Dodawanie oferty przedsprzedaży

Teraz dodasz ofertę przedsprzedaży do utworzonej wcześniej opcji zakupu. Oferta przedsprzedaży umożliwia użytkownikom zakup produktu przed jego oficjalną premierą. Pamiętaj, że oferty przedsprzedaży są obsługiwane tylko w przypadku opcji zakupu Kup i można je skonfigurować tylko w przypadku nowych produktów w danym regionie.

Dodawanie oferty przedsprzedaży obejmuje te 2 etapy:

  1. Przygotuj opcję zakupu Kup na potrzeby oferty przedsprzedaży.
  2. Dodaj ofertę przedsprzedaży dla opcji zakupu.

Przygotowanie opcji zakupu do oferty przedsprzedaży

  1. Otwórz przykładową aplikację w Konsoli Google Play i kliknij Zarabianie w Google Play > Produkty > Produkty kupowane raz.
  2. Na stronie Produkty kupowane raz kliknij strzałkę w prawo obok produktu (upcoming_movie_1). Otworzy się strona Edytuj produkt kupowany raz.
  3. Kliknij strzałkę w prawo obok utworzonej wcześniej buy-movie opcji zakupu. Otworzy się strona Edytuj opcję zakupu.
  4. Kliknij Edytuj dostępność i dostęp, a następnie wybierz Ustaw jako dostępny i zezwól użytkownikom na zamawianie produktu w przedsprzedaży.
  5. W menu Wszystkie regiony wybierz Dostępne kraje i regiony. Powinny się tu wyświetlać tylko United States, które zostały wcześniej skonfigurowane.
  6. Wybierz kraj, a następnie kliknij Ustaw jako dostępny tylko dla przedsprzedaży.
  7. Kliknij Zapisz.

Pamiętaj, że do opcji zakupu nie została jeszcze dodana oferta przedsprzedaży. Następnym krokiem jest dodanie oferty przedsprzedaży.

Dodawanie oferty przedsprzedaży

  1. Otwórz przykładową aplikację w Konsoli Google Play i kliknij Zarabianie w Google Play > Produkty > Produkty kupowane raz.
  2. Na stronie Produkty kupowane raz kliknij Dodaj ofertę > Zamówienie w przedsprzedaży w przypadku swojego produktu upcoming_movie_1. Otworzy się strona Dodaj przedsprzedaż.
  3. Wpisz szczegóły przedsprzedaży:
    • Identyfikator przedsprzedaży: wpisz preorder-offer-1.
    • (Opcjonalnie) Dodaj rabat: możesz wybrać opcję Brak, Procentowy lub Bezwarunkowy. Na potrzeby tego laboratorium wybierz Brak.
    • (Opcjonalnie) Tagi: dodaj odpowiednie tagi.
    • Data i godzina rozpoczęcia: ustaw datę przypadającą za co najmniej 3 dni.
    • Data i godzina zakończenia: ustaw datę, która przypada co najmniej 24 godziny po dacie rozpoczęcia.
    • Dostępność po zamówieniu w przedsprzedaży: wybierz, czy produkt ma być dostępny od razu po okresie przedsprzedaży, czy w określonym późniejszym terminie.
    • (Opcjonalnie) Gwarancja niższej ceny: wybierz tę opcję, jeśli chcesz, aby użytkownicy zapłacili niższą z tych kwot: cenę z momentu złożenia zamówienia w przedsprzedaży lub cenę z momentu premiery. Może to być silna zachęta dla pierwszych kupujących.
  4. Kliknij Zapisz.
  5. Otwórz stronę Edytuj produkt kupowany raz dla produktu kupowanego raz (upcoming_movie_1).
  6. Kliknij Aktywuj obok opcji zakupu (buy-movie).
  7. Kliknij Aktywuj w przypadku oferty przedsprzedaży (preorder-offer-1) w sekcji opcji zakupu. Spowoduje to aktywowanie oferty przedsprzedaży i jej opublikowanie w dniu, który został wcześniej skonfigurowany w szczegółach przedsprzedaży.

Film o tworzeniu oferty w przedsprzedaży

Film poniżej przedstawia opisane wcześniej kroki tworzenia oferty przedsprzedaży.

4. 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.1.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 upcoming_movie_1) w ProductDetails daje odpowiedź podobną do tej:
    {
        "productId": "upcoming_movie_1",
        "type": "inapp",
        "title": "Purrfect Mayhem: The Final Playback (Movies All Day | Play Samples)",
        "name": "Purrfect Mayhem: The Final Playback",
        "description": "Yolo and Thorne must reach the original broadcasting site to initiate the \"Final Playback\" and save the timeline. Follow them through their race against the Clockinators.",
        "skuDetailsToken": "<---skuDetailsToken--->",
        "oneTimePurchaseOfferDetails": {},
        "oneTimePurchaseOfferDetailsList": [
            {
                "priceAmountMicros": 8500000,
                "priceCurrencyCode": "USD",
                "formattedPrice": "$8.50",
                "offerIdToken": "<---offerIdToken--->",
                "offerId": "preorder",
                "purchaseOptionId": "buy-option",
                "offerTags": [],
                "validTimeWindow": {
                    "startTimeMillis": 1756771200000,
                    "endTimeMillis": 1785542400000
                },
                "preorderDetails": {
                    "preorderReleaseTimeMillis": 1785542400000,
                    "preorderPresaleEndTimeMillis": 1785542400000
                }
            }
        ]
    }
    
    Zwróć uwagę, że szczegóły oferty w przedsprzedaży są dostępne w oneTimePurchaseOfferDetailsList. Ta lista zawiera 1 opcję zakupu (buy-option), dla której w Konsoli Play skonfigurowano ofertę zamówienia w przedsprzedaży. Każdą opcję zakupu możesz jednoznacznie zidentyfikować za pomocą parametru offerIdToken.
  5. Pobierz token oferty wraz ze szczegółami oferty w przedsprzedaży. Token oferty jest potrzebny do uruchomienia procesu płatności w kroku 6.
    @Override
    public void onProductDetailsResponse(List<ProductDetails> productDetailsList) {
    
    if (productDetailsList != null && !productDetailsList.isEmpty()) {
    
    // Process productDetailsList returned by QueryProductDetailsResult
    for (ProductDetails productDetails : productDetailsResult.getProductDetailsList()) {
      for (OneTimePurchaseOfferDetails oneTimePurchaseOfferDetails :
          productDetails.getOneTimePurchaseOfferDetailsList()) {
        // Checks if the offer is a preorder offer.
        if (oneTimePurchaseOfferDetails.getPreorderDetails() != null) {
          // Process the returned PreorderDetails
          OneTimePurchaseOfferDetails.PreorderDetails preorderDetails =
              oneTimePurchaseOfferDetails.getPreorderDetails();
          // Get preorder release time in millis.
          long preorderReleaseTimeMillis = preorderDetails.getPreorderReleaseTimeMillis();
          // Get preorder presale end time in millis.
          long preorderPresaleEndTimeMillis = preorderDetails.getPreorderPresaleEndTimeMillis();
          // Get offer ID
            String offerId = oneTimePurchaseOfferDetails.getOfferId();
          // Get the associated purchase option ID
          if (oneTimePurchaseOfferDetails.getPurchaseOptionId() != null) {
            String purchaseOptionId = oneTimePurchaseOfferDetails.getPurchaseOptionId();
          }
        }
      }
      }
      } 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);
    }
    

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

Aby dowiedzieć się, jak testować opcje zakupu za pomocą Play Billing Lab, zapoznaj się z samouczkiem Otwieranie nowych rynków dzięki regionalnym cenom produktów.

6. Dalsze kroki

Dokumentacja

7. Gratulacje!

Gratulacje! Udało Ci się utworzyć w Konsoli Google Play ofertę przedsprzedaży produktu kupowanego raz. 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.