Menambahkan penawaran praorder untuk produk sekali beli

1. Pengantar

Dalam codelab ini, Anda akan berfokus pada pembuatan produk sekali beli (OTP) dan menambahkan penawaran praorder untuk produk tersebut.

Catatan: Sebelum memulai codelab ini, Anda harus meminta akses untuk fitur praorder dengan mengisi Formulir Minat EAP Produk sekali beli.

Penonton

Codelab ini ditujukan untuk developer aplikasi Android yang sudah memahami produk sekali beli dan ingin memahami cara menambahkan penawaran praorder ke produk sekali beli mereka.

Prasyarat

Jika Anda baru mengenal produk sekali beli, sebaiknya selesaikan codelab Buka pasar baru dengan harga produk regional.

Yang akan Anda pelajari ...

  • Cara menggunakan Konsol Google Play untuk membuat penawaran praorder untuk produk sekali beli Anda.
  • Cara menggunakan API Play Billing Library untuk membuat kueri produk sekali beli dan detail penawaran praorder yang sesuai.

Yang Anda butuhkan ...

2. Mem-build aplikasi contoh

Codelab ini menggunakan aplikasi Android contoh untuk mengajari Anda cara mengelola produk sekali beli. Aplikasi contoh dirancang sebagai aplikasi Android yang berfungsi penuh dan memiliki kode sumber lengkap yang menunjukkan aspek berikut:

  • Mengintegrasikan aplikasi dengan PBL.
  • Pengambilan produk sekali beli dan penawaran praorder terkait.
  • Menjalankan alur pembelian untuk harga regional.

Video demo berikut menunjukkan tampilan dan perilaku aplikasi contoh setelah di-deploy dan dijalankan.

Jika sudah memahami produk sekali beli dan Play Billing Library (PBL), Anda dapat mendownload aplikasi contoh dan mencobanya.

Prasyarat

Sebelum Anda membuat dan men-deploy aplikasi contoh, lakukan hal berikut:

Build

Tujuan dari langkah build ini adalah untuk membuat file Android App Bundle bertanda tangan dari aplikasi contoh.

Untuk membuat app bundle Android, lakukan langkah-langkah berikut:

  1. Download aplikasi contoh dari GitHub.
  2. Bangun aplikasi contoh. Sebelum membangun, ubah nama paket aplikasi contoh, lalu bangun. Jika Anda memiliki paket aplikasi lain di Konsol Play, pastikan nama paket yang Anda berikan untuk aplikasi contoh unik.

    Catatan: Membangun aplikasi contoh hanya akan membuat file APK yang dapat Anda gunakan untuk pengujian lokal. Namun, menjalankan aplikasi tidak akan mengambil produk dan harga karena produk belum dikonfigurasi di Konsol Play.
  3. Buat Android App Bundle yang ditandatangani.
    1. Membuat keystore dan kunci upload
    2. Menandatangani aplikasi dengan kunci upload
    3. Mengonfigurasi Penandatanganan Aplikasi Play

Langkah berikutnya adalah mengupload Android app bundle ke Konsol Google Play.

3. Membuat OTP dengan praorder di Konsol Play

Untuk membuat produk sekali beli (OTP) di Konsol Google Play, Anda harus memiliki aplikasi di Konsol Play. Buat aplikasi di Konsol Play, lalu upload app bundle bertanda tangan yang dibuat sebelumnya.

Buat aplikasi

Untuk membuat aplikasi:

  1. Login ke Konsol Google Play menggunakan akun developer Anda.
  2. Klik Buat aplikasi. Tindakan ini akan membuka halaman Buat aplikasi.
  3. Masukkan nama aplikasi, pilih bahasa default, dan detail terkait aplikasi lainnya.
  4. Klik Buat aplikasi. Tindakan ini akan membuat aplikasi di Konsol Google Play.

Sekarang Anda dapat mengupload app bundle yang ditandatangani dari aplikasi contoh.

Upload app bundle yang ditandatangani

  1. Upload app bundle yang ditandatangani ke jalur pengujian internal Konsol Google Play. Hanya setelah mengupload, Anda dapat mengonfigurasi fitur terkait monetisasi di Konsol Play.
    1. Klik Uji dan rilis > Pengujian > Rilis internal > Buat rilis baru.
    2. Masukkan nama rilis dan upload file APK yang ditandatangani.
    3. Klik Berikutnya, lalu klik Simpan dan publikasikan.

Sekarang, Anda dapat membuat produk sekali beli.

Membuat produk sekali beli

Sekarang, buat produk sekali beli yang ingin Anda beli oleh pengguna.

  1. Buka aplikasi contoh di Konsol Google Play, lalu buka Monetisasi dengan Play > Produk > Produk sekali beli.
  2. Klik Buat produk sekali beli.
  3. Masukkan detail produk berikut:
    • ID Produk: Masukkan ID unik. Misalnya, upcoming_movie_1.
    • (Opsional) Tag: Tambahkan tag yang relevan.
    • Nama: Masukkan nama produk. Misalnya, Product Movie.
    • Deskripsi: Masukkan deskripsi produk. Misalnya, Product Description.
    • (Opsional) Tambahkan gambar Ikon: Upload ikon yang mewakili produk Anda.
    Catatan: Untuk tujuan codelab ini, Anda dapat melewati konfigurasi bagian Pajak, kepatuhan, dan program.
  4. Klik Berikutnya.
  5. Tambahkan opsi pembelian dan konfigurasi ketersediaan regionalnya. Produk sekali beli memerlukan setidaknya satu opsi pembelian, yang menentukan cara pemberian hak, harganya, dan ketersediaan regional. Untuk codelab ini, kita akan menambahkan opsi Beli standar untuk produk.Di bagian Opsi pembelian, masukkan detail berikut:
    • ID Opsi Pembelian: Masukkan ID unik. Misalnya, buy-movie.
    • Jenis pembelian: Pilih Beli.
    • (Opsional) Tag: Tambahkan tag khusus untuk opsi pembelian ini.
    • (Opsional) Klik Advanced options untuk mengonfigurasi opsi lanjutan. Untuk tujuan codelab ini, Anda dapat melewati konfigurasi opsi lanjutan.
  6. Selanjutnya, Anda harus mengonfigurasi ketersediaan dan harga regional untuk opsi pembelian. Dalam ketersediaan regional, Anda akan menentukan wilayah tempat produk Anda tersedia, termasuk wilayah tempat aplikasi Anda belum dipublikasikan. Secara default, opsi pembelian akan tersedia di semua wilayah.Di bagian Ketersediaan dan harga, klik Edit ketersediaan dan akses.
    1. Pilih Setel ke tidak tersedia.
    Perhatikan bahwa semua region dipilih secara otomatis dan disetel ke Tersedia.
    1. Batalkan pilihan hanya negara United States, lalu klik Tetapkan ke tidak tersedia. Sekarang produk sekali beli hanya akan tersedia di United States.
    2. Di drop-down Semua wilayah, pilih Negara dan wilayah yang tersedia. Anda hanya akan melihat United States.
    3. Klik ikon Harga. Tindakan ini akan menampilkan dialog untuk menetapkan harga.
    4. Masukkan 10 USD, lalu klik Simpan.
  7. Klik Simpan sebagai draf.

Catatan: Jangan aktifkan opsi pembelian terlebih dahulu. Kami akan mengaktifkannya setelah mengonfigurasi penawaran praorder. Hal ini karena Anda tidak dapat menambahkan penawaran praorder ke opsi pembelian aktif yang ketersediaan regionalnya telah ditetapkan.

Menambahkan penawaran praorder

Sekarang, Anda akan menambahkan penawaran praorder untuk opsi pembelian beli yang Anda buat sebelumnya. Penawaran praorder memungkinkan pengguna membeli item Anda sebelum rilis resminya. Perhatikan bahwa penawaran praorder hanya didukung untuk opsi pembelian Beli dan hanya dapat dikonfigurasi untuk produk baru di suatu wilayah.

Menambahkan penawaran praorder mencakup 2 langkah berikut:

  1. Siapkan opsi pembelian Beli untuk penawaran praorder.
  2. Tambahkan penawaran praorder untuk opsi pembelian.

Siapkan opsi pembelian Beli untuk penawaran praorder

  1. Buka aplikasi contoh di Konsol Google Play, lalu buka Monetisasi dengan Play > Produk > Produk sekali beli.
  2. Di halaman Produk sekali beli, klik panah kanan untuk produk Anda (upcoming_movie_1). Tindakan ini akan membuka halaman Edit produk sekali beli.
  3. Klik panah kanan untuk opsi pembelian buy-movie yang Anda buat sebelumnya. Tindakan ini akan membuka halaman Mengedit opsi pembelian.
  4. Klik Edit ketersediaan dan akses, lalu pilih Tetapkan ke tersedia dan izinkan pengguna melakukan praorder.
  5. Dari drop-down Semua wilayah, pilih Negara dan wilayah yang tersedia. Hanya United States yang telah Anda konfigurasi sebelumnya yang akan ditampilkan.
  6. Pilih negara, lalu klik Tetapkan ke tersedia untuk praorder saja.
  7. Klik Simpan.

Perhatikan bahwa Anda belum menambahkan penawaran praorder ke opsi pembelian. Langkah berikutnya adalah menambahkan penawaran praorder.

Menambahkan penawaran praorder

  1. Buka aplikasi contoh di Konsol Google Play, lalu buka Monetisasi dengan Play > Produk > Produk sekali beli.
  2. Di halaman Produk sekali beli, klik Tambahkan penawaran > Praorder untuk produk Anda (upcoming_movie_1). Tindakan ini akan membuka halaman Tambahkan praorder.
  3. Masukkan Detail Praorder:
    • ID praorder: Masukkan preorder-offer-1.
    • (Opsional) Tambahkan diskon: Anda dapat memilih Tidak ada, Persentase, atau Diskon mutlak. Untuk tujuan codelab ini, pilih Tidak ada.
    • (Opsional) Tag: Tambahkan tag yang relevan.
    • Tanggal dan waktu mulai: Tetapkan tanggal setidaknya 3 hari ke depan.
    • Tanggal dan waktu berakhir: Tetapkan tanggal setidaknya 24 jam setelah tanggal mulai.
    • Ketersediaan setelah praorder: Pilih apakah produk tersedia segera setelah periode praorder atau pada tanggal/waktu tertentu di kemudian hari.
    • (Opsional) Jaminan harga lebih rendah: Pilih opsi ini jika Anda ingin pengguna ditagih dengan harga terendah antara harga praorder mereka dan harga saat rilis. Hal ini dapat menjadi insentif yang kuat bagi pembeli awal.
  4. Klik Simpan.
  5. Buka halaman Edit produk sekali beli untuk produk sekali beli Anda (upcoming_movie_1).
  6. Klik Aktifkan untuk opsi pembelian beli (buy-movie).
  7. Klik Aktifkan untuk penawaran praorder (preorder-offer-1) di bagian opsi pembelian beli. Tindakan ini akan mengaktifkan penawaran praorder dan menayangkannya pada tanggal yang sebelumnya Anda konfigurasi dalam detail praorder.

Video pembuatan penawaran praorder

Video berikut menunjukkan langkah-langkah pembuatan penawaran praorder yang dijelaskan sebelumnya.

4. Berintegrasi dengan PBL

Untuk mengintegrasikan aplikasi Anda dengan Play Billing Library (PBL), lakukan langkah-langkah berikut:

  1. Tambahkan dependensi Play Billing Library ke contoh aplikasi.
    dependencies {
    val billing_version = "8.1.0"
    
    implementation("com.android.billingclient:billing-ktx:$billing_version")
    }
    
  2. Lakukan inisialisasi BillingClient. BillingClient adalah SDK klien yang ada di aplikasi Anda dan berkomunikasi dengan Library Layanan Penagihan Play. Cuplikan kode berikut menunjukkan cara menginisialisasi klien penagihan.
    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. Hubungkan ke Google Play.Cuplikan kode berikut menunjukkan cara menghubungkan ke 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. Ambil detail produk sekali beli.Setelah mengintegrasikan aplikasi Anda dengan PBL, Anda harus mengambil detail produk sekali beli ke dalam aplikasi Anda. Cuplikan kode berikut menunjukkan cara mengambil detail produk sekali beli di aplikasi Anda.
    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());
                }
            }
            });
    }
    
    Mengambil produk sekali beli (upcoming_movie_1 dalam contoh ini) di ProductDetails, akan memberi Anda respons yang mirip dengan berikut:
    {
        "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
                }
            }
        ]
    }
    
    Perhatikan bahwa detail penawaran praorder tersedia di oneTimePurchaseOfferDetailsList. Daftar ini memiliki 1 opsi pembelian (buy-option) yang penawaran praordernya dikonfigurasi di Konsol Play. Anda dapat mengidentifikasi setiap opsi pembelian secara unik berdasarkan offerIdToken-nya.
  5. Ambil token penawaran beserta detail penawaran praorder. Anda memerlukan token penawaran untuk memulai alur penagihan di langkah 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. Mulai alur penagihan.
    /**
     * 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. Opsi pembelian pengujian

Sebelum menyediakan produk sekali beli di aplikasi aktif, Anda dapat menguji integrasi PBL menggunakan penguji lisensi dan Play Billing Lab.

Untuk memahami cara menguji opsi pembelian menggunakan Play Billing Lab, lihat codelab Buka pasar baru dengan harga produk regional.

6. Langkah berikutnya

Dokumen referensi

7. Selamat!

Selamat! Anda telah berhasil membuka Konsol Google Play untuk membuat penawaran praorder untuk produk sekali beli. Sekarang Anda memiliki pemahaman yang lebih mendalam tentang katalog produk fleksibel Google Play untuk pembelian sekali beli.

Survei

Masukan Anda tentang codelab ini sangat kami hargai. Luangkan waktu beberapa menit untuk mengisi survei kami.