Menjangkau pasar baru dengan harga produk regional

1. Pengantar

Dalam codelab ini, Anda akan berfokus pada pembuatan produk sekali beli, menentukan opsi pembeliannya, menetapkan harga khusus wilayah, dan menguji alur pembelian produk sekali beli.

Penonton

Codelab ini ditujukan untuk developer aplikasi Android yang ingin menggunakan Konsol Play untuk mengelola katalog produk sekali beli mereka.

Yang akan Anda pelajari ...

  • Model objek produk sekali beli.
  • Cara menavigasi dan menggunakan Konsol Google Play untuk mengelola katalog produk sekali beli Anda.
  • Cara menerjemahkan detail produk sekali beli ke berbagai bahasa tanpa biaya.
  • Cara mengonfigurasi harga dan ketersediaan regional untuk produk sekali beli.
  • Cara menggunakan API Play Billing Library untuk mengkueri detail produk sekali beli.
  • Cara menguji produk sekali beli menggunakan Play Billing Lab.

Yang Anda butuhkan ...

2. Premier produk sekali beli

Model objek produk sekali beli memberikan fleksibilitas yang lebih besar dalam cara Anda dapat menjual produk, dan mengurangi kompleksitas pengelolaannya. Model objek memisahkan apa yang dijual dari cara penjualannya, sehingga memungkinkan hak yang sama untuk memiliki beberapa titik harga, dan berbagai cara untuk dipasarkan kepada pengguna. Model objek memiliki tiga tingkat hierarki:

  • Produk sekali beli - Objek produk menentukan apa yang dibeli pengguna.
  • Opsi pembelian - Opsi pembelian menentukan cara pemberian hak kepada pengguna, harganya, dan tempat (wilayah) produk akan tersedia. Satu produk dapat memiliki beberapa opsi pembelian, yang dapat menampilkan harga yang berbeda di berbagai wilayah.
  • Penawaran - Penawaran dapat memengaruhi harga opsi pembelian yang ditautkan, dan dapat digunakan untuk membuat model diskon atau praorder. Satu opsi pembelian dapat memiliki beberapa penawaran.

Diagram berikut menunjukkan model objek produk sekali beli.

codelab-otp-model.png Gambar 1: Model objek sekali pakai.

Untuk mengetahui informasi selengkapnya, lihat ringkasan produk sekali beli.

3. Mem-build aplikasi contoh

Codelab ini menggunakan aplikasi Android contoh untuk menunjukkan 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 opsi pembelian terkait
  • Menjalankan alur pembelian dengan 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: Mem-build 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.

4. Membuat produk sekali beli di Konsol Play

Untuk membuat produk sekali beli 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. Setelah mengupload, Anda dapat mengonfigurasi fitur terkait monetisasi di Konsol Play.
  2. Klik Uji dan rilis > Pengujian > Rilis internal > Buat rilis baru.
  3. Masukkan nama rilis dan upload file APK yang ditandatangani.
  4. Klik Berikutnya, lalu klik Simpan dan publikasikan.

Sekarang, Anda dapat membuat produk sekali beli.

Membuat produk sekali beli

Untuk membuat produk sekali beli:

  1. Di Konsol Google Play, dari menu navigasi kiri, 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, trending_movie_1.
    • (Opsional) Tag: Tambahkan tag yang relevan.
    • Nama: Masukkan nama produk. Misalnya, Product Movie.
    • Deskripsi: Masukkan deskripsi produk. Misalnya, Product Description.
    Terjemahan manual nama dan deskripsi produk
    Secara default, nama dan deskripsi produk menggunakan bahasa Inggris (Amerika Serikat) – en-US. Anda juga dapat memasukkan nama dan deskripsi dalam bahasa lain secara manual. Untuk memasukkan detail, klik Kelola terjemahan, pilih bahasa yang ingin Anda masukkan teks terjemahannya, lalu klik Terapkan. Gambar berikut menunjukkan opsi Kelola terjemahan:manage-translations.pngGambar 2: Kelola terjemahan.

    Bahasa yang telah Anda pilih akan muncul di drop-down bahasa. Pilih setiap bahasa, lalu masukkan nama dan deskripsi yang sesuai dalam bahasa yang dipilih. Anda juga dapat menerjemahkan nama dan deskripsi produk secara otomatis tanpa biaya. Untuk mengetahui informasi selengkapnya, lihat bagian Terjemahkan produk sekali beli di codelab ini.

    Catatan: Untuk tujuan codelab ini, Anda dapat melewati konfigurasi kolom Ikon dan bagian Pajak, kepatuhan, dan program.
  4. Klik Berikutnya.
  5. Tambahkan opsi pembelian dan konfigurasikan 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 > Tetapkan ke tidak tersedia. Perhatikan bahwa semua wilayah secara default disetel ke Tersedia.
    1. Pilih semua negara kecuali France, Spain, dan United States, lalu klik Tetapkan ke tidak tersedia.
    2. Dari drop-down Semua wilayah, pilih Negara dan wilayah yang tersedia. Bagian ini hanya menampilkan negara yang Anda pilih pada langkah sebelumnya.
    3. Untuk setiap negara yang tersedia, klik ikon edit di kolom Harga. Tindakan ini akan menampilkan dialog untuk mengedit harga. Masukkan dan simpan harga berikut:
      • Untuk France, masukkan 10 EUR
      • Untuk Spain, masukkan 8 EUR
      • Untuk United States, masukkan 13 USD
  7. Klik Aktifkan. Tindakan ini membuat produk sekali beli Anda tersedia dengan opsi pembelian Beli.

Catatan: Mata uang harga regional terlihat berdasarkan setelan negara Play pengguna. Misalnya, jika negara Play pengguna disetel ke Prancis, harga produk sekali beli akan ditampilkan dalam Euro.

Video pembuatan produk sekali beli

Video berikut menunjukkan langkah-langkah pembuatan produk satu kali yang dijelaskan sebelumnya.

Menambahkan opsi pembelian sewa

Sekarang, tambahkan opsi pembelian sewa ke produk sekali beli yang dibuat sebelumnya.

  1. Di Konsol Google Play, dari menu navigasi kiri, buka Monetisasi dengan Play > Produk > Produk sekali beli.
  2. Klik panah kanan untuk produk dengan ID produk trending_movie_1 yang Anda buat di langkah sebelumnya.
  3. Klik Tambahkan opsi pembelian.
  4. Di bagian Opsi pembelian, masukkan detail berikut:
    • ID Opsi Pembelian: Masukkan rent-movie.
    • Jenis pembelian: Pilih Sewa.
    • Periode sewa: Pilih 48 jam.
    • Periode mulai sewa: Pilih 24 jam.
    • (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.
  5. Selanjutnya, mirip dengan opsi pembelian, konfigurasi ketersediaan regional untuk opsi pembelian rental. Lihat langkah 6 dan 7 di bagian sebelumnya. Saat menetapkan harga regional, tetapkan harga yang berbeda untuk penyewaan. Contoh:
    • France - 5 EUR
    • Spain - 4 EUR
    • United States - 7 USD.

5. Menerjemahkan detail produk sekali beli

Anda dapat menerjemahkan nama dan deskripsi produk tanpa biaya tambahan menggunakan fitur terjemahan mesin yang tersedia di Konsol Google Play.

Untuk menerjemahkan judul dan deskripsi, lakukan langkah berikut:

  1. Di Konsol Google Play, dari menu navigasi kiri, buka Mendorong pertumbuhan pengguna > Terjemahan > Produk dalam aplikasi dan di Store.
  2. Klik Buat pesanan.
  3. Pilih opsi Terjemahan mesin tanpa biaya, lalu klik Berikutnya.
  4. Dari bahasa Terjemahkan ke, pilih Prancis - fr-FR dan Spanyol - es-ES, lalu klik Berikutnya.
  5. Pilih Produk sekali beli dan langganan, lalu klik Terjemahkan dan lihat terjemahan. Tindakan ini akan menampilkan banner pernyataan penyangkalan. Konfirmasi pernyataan penyangkalan.
  6. Sekarang Anda akan melihat daftar bahasa yang diterjemahkan. Klik Tinjau dan terapkan untuk bahasa. Tinjau teks, lalu klik Terapkan semua terjemahan. Ulangi langkah ini untuk semua bahasa yang telah Anda pilih untuk diterjemahkan.

Setelah terjemahan, Anda dapat mengedit teks yang diterjemahkan di Konsol Play. Untuk mengedit teks yang diterjemahkan:

  1. Buka halaman Produk sekali beli > [produk sekali beli Anda] > Edit produk sekali beli > Edit detail produk sekali beli.
  2. Pilih bahasa yang diperlukan dari drop-down bahasa. Tindakan ini akan menampilkan teks dalam bahasa yang dipilih. Gambar berikut menunjukkan pemilihan bahasa untuk mengedit teks terjemahan:

    edit-translations.png Gambar 3: Mengedit teks terjemahan.
  3. Edit teks sesuai kebutuhan, lalu klik Simpan perubahan.

Teks yang diterjemahkan dapat dilihat oleh pengguna berdasarkan preferensi bahasa ponsel pengguna. Misalnya, jika bahasa ponsel pengguna disetel ke Prancis, judul dan deskripsi produk sekali beli akan ditampilkan dalam bahasa Prancis. Contoh gambar berikut menunjukkan cara dan tempat teks terjemahan akan muncul dalam berbagai bahasa.

post-translation.pngGambar 4: Teks yang diterjemahkan di aplikasi Anda.

Video konfigurasi terjemahan

Video berikut menunjukkan langkah-langkah konfigurasi terjemahan yang dijelaskan sebelumnya.

6. 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.0.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 (trending_movie_1 dalam contoh ini) di ProductDetails, akan memberi Anda respons yang mirip dengan berikut:
    {
        "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"
                }
            }
        ]
    }
    
    Perhatikan bahwa opsi pembelian dan sewa tersedia di oneTimePurchaseOfferDetailsList. Daftar ini memiliki 2 opsi pembelian (buy-option dan rent-option) yang dikonfigurasi di Konsol Play. Anda dapat mengidentifikasi setiap opsi pembelian secara unik berdasarkan offerIdToken-nya.
  5. Ambil token penawaran untuk penawaran Sewa dan Beli. Anda memerlukan token penawaran untuk memulai alur penagihan pada langkah 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. 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);
    }
    

Tips: Anda juga dapat menyiapkan notifikasi developer real-time (RTDN) untuk menerapkan kampanye akuisisi ulang pelanggan dan strategi pengelolaan siklus proses pembelian lainnya. Untuk memahami cara menyiapkan RTDN dan menangani notifikasi dengan pelacakan dan hak yang akurat, sebaiknya Anda mempelajari codelab Maximize Your Play Billing Integration

7. Opsi pembelian pengujian

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

Anda akan mempelajari cara menguji pelokalan harga dan ketersediaan aplikasi yang hanya tersedia di beberapa wilayah dengan harga yang berbeda untuk setiap wilayah.

Prasyarat

Menguji harga regional untuk opsi pembelian

Untuk menguji harga regional untuk opsi pembelian, lakukan hal berikut:

  1. Buka aplikasi Play Billing Lab, lalu login sebagai penguji lisensi.
  2. Di Configuration Settings, klik Edit, pilih negara France, lalu klik Terapkan. Di sini kita memilih negara Play yang menentukan mata uang yang akan ditampilkan di aplikasi.
  3. Tutup dan buka kembali aplikasi contoh. Sekarang, aplikasi tersebut akan menampilkan mata uang pembelian dan penyewaan untuk France dalam Euro.

Untuk menguji negara lain, pilih Spain di langkah 2, lalu lakukan langkah 3.

Video pengujian Play Billing Lab

Video berikut menunjukkan langkah-langkah pengujian harga regional menggunakan aplikasi contoh.

8. Langkah berikutnya

Dokumen referensi

9. Selamat!

Selamat! Anda telah berhasil menjelajahi Konsol Google Play untuk membuat produk sekali beli baru, mengonfigurasi opsi pembelian, dan menguji alur pembelian menggunakan Lab Layanan Penagihan Play. 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.