Khai thác thị trường mới nhờ giá sản phẩm theo khu vực

1. Giới thiệu

Trong lớp học lập trình này, bạn sẽ tập trung vào việc tạo một sản phẩm tính phí một lần, xác định lựa chọn mua sản phẩm đó, đặt giá theo khu vực cụ thể và kiểm thử quy trình mua sản phẩm tính phí một lần.

Đối tượng người xem

Lớp học lập trình này dành cho các nhà phát triển ứng dụng Android muốn sử dụng Play Console để quản lý danh mục sản phẩm mua một lần.

Kiến thức bạn sẽ học được...

  • Mô hình đối tượng sản phẩm tính phí một lần.
  • Cách sử dụng Google Play Console để quản lý danh mục sản phẩm tính phí một lần.
  • Cách dịch thông tin chi tiết về sản phẩm tính phí một lần sang nhiều ngôn ngữ mà không tốn phí.
  • Cách thiết lập tình trạng còn hàng và giá theo khu vực cho sản phẩm tính phí một lần.
  • Cách sử dụng các API Thư viện Play Billing để truy vấn thông tin chi tiết về sản phẩm mua một lần.
  • Cách kiểm thử sản phẩm tính phí một lần bằng Play Billing Lab.

Những thứ bạn cần...

2. Sản phẩm tính phí một lần

Mô hình đối tượng sản phẩm tính phí một lần giúp bạn linh hoạt hơn trong cách bán sản phẩm và giảm mức độ phức tạp khi quản lý sản phẩm. Mô hình đối tượng tách biệt những gì bạn đang bán với cách thức bán, cho phép một sản phẩm có nhiều điểm giá và nhiều cách tiếp thị cho người dùng. Mô hình đối tượng có 3 cấp phân cấp:

  • Sản phẩm tính phí một lần – Đối tượng sản phẩm xác định mặt hàng mà người dùng đang mua.
  • Lựa chọn mua – Lựa chọn mua xác định cách cấp quyền sử dụng sản phẩm cho người dùng, mức giá và vị trí (khu vực) mà sản phẩm được phân phối. Một sản phẩm có thể có nhiều lựa chọn mua, kèm theo là các mức giá khác nhau ở những khu vực khác nhau.
  • Ưu đãi – Ưu đãi có thể ảnh hưởng đến giá của lựa chọn mua được liên kết, đồng thời có thể được dùng để lập mô hình ưu đãi giảm giá hoặc đơn đặt hàng trước. Một lựa chọn mua có thể có nhiều ưu đãi.

Sơ đồ sau đây cho thấy mô hình đối tượng sản phẩm tính phí một lần.

codelab-otp-model.png Hình 1: Mô hình đối tượng một lần.

Để biết thêm thông tin, hãy xem bài viết tổng quan về sản phẩm tính phí một lần.

3. Tạo ứng dụng mẫu

Lớp học lập trình này sử dụng một ứng dụng Android mẫu để hướng dẫn bạn cách quản lý sản phẩm dùng một lần. Ứng dụng mẫu được thiết kế để trở thành một ứng dụng Android có đầy đủ chức năng và mã nguồn hoàn chỉnh, cho thấy các khía cạnh sau:

  • Tích hợp ứng dụng với PBL
  • Tìm nạp sản phẩm tính phí một lần và các lựa chọn mua hàng có liên quan
  • Chạy quy trình mua hàng với mức giá theo khu vực

Video minh hoạ sau đây cho thấy giao diện và cách hoạt động của ứng dụng mẫu sau khi được triển khai và chạy.

Nếu đã quen thuộc với sản phẩm tính phí một lần và Thư viện Play Billing (PBL), bạn có thể tải ứng dụng mẫu xuống và dùng thử.

Điều kiện tiên quyết

Trước khi bạn tạo và triển khai ứng dụng mẫu, hãy làm như sau:

Tạo

Mục tiêu của bước tạo này là tạo một tệp Android App Bundle có chữ ký của ứng dụng mẫu.

Để tạo gói ứng dụng Android, hãy làm theo các bước sau:

  1. Tải ứng dụng mẫu xuống từ GitHub.
  2. Tạo ứng dụng mẫu. Trước khi tạo, hãy thay đổi tên gói của ứng dụng mẫu rồi tạo. Nếu bạn có các gói của những ứng dụng khác trong Play Console, hãy đảm bảo tên gói mà bạn cung cấp cho ứng dụng mẫu là duy nhất.

    Lưu ý: Việc tạo ứng dụng mẫu chỉ tạo ra một tệp APK mà bạn có thể dùng để kiểm thử cục bộ. Tuy nhiên, việc chạy ứng dụng không tìm nạp sản phẩm và giá vì các sản phẩm chưa được định cấu hình trong Play Console.
  3. Tạo một Android App Bundle đã ký.
    1. Tạo khoá tải lên và kho khoá
    2. Ký ứng dụng bằng khoá tải lên
    3. Định cấu hình Tính năng ký ứng dụng của Play

Bước tiếp theo là tải gói ứng dụng Android lên Google Play Console.

4. Tạo sản phẩm tính phí một lần trong Play Console

Để tạo sản phẩm tính phí một lần trong Google Play Console, bạn cần có một ứng dụng trong Play Console. Tạo một ứng dụng trong Play Console, sau đó tải gói ứng dụng đã ký mà bạn tạo trước đó lên.

Tạo ứng dụng

Cách tạo ứng dụng:

  1. Đăng nhập vào Google Play Console bằng tài khoản nhà phát triển của bạn.
  2. Nhấp vào Tạo ứng dụng. Thao tác này sẽ mở trang Tạo ứng dụng.
  3. Nhập tên ứng dụng, chọn ngôn ngữ mặc định và các thông tin khác liên quan đến ứng dụng.
  4. Nhấp vào Tạo ứng dụng. Thao tác này sẽ tạo một ứng dụng trong Google Play Console.

Giờ đây, bạn có thể tải gói ứng dụng đã ký của ứng dụng mẫu lên.

Tải gói ứng dụng đã ký lên

  1. Tải gói ứng dụng đã ký lên kênh kiểm thử nội bộ của Google Play Console. Bạn chỉ có thể định cấu hình các tính năng liên quan đến việc kiếm tiền trong Play Console sau khi tải lên.
  2. Nhấp vào Kiểm thử và phát hành > Kiểm thử > Bản phát hành nội bộ > Tạo bản phát hành mới.
  3. Nhập tên bản phát hành và tải tệp APK đã ký lên.
  4. Nhấp vào Tiếp theo, rồi nhấp vào Lưu và xuất bản.

Giờ đây, bạn có thể tạo sản phẩm tính phí một lần.

Tạo sản phẩm tính phí một lần

Cách tạo sản phẩm tính phí một lần:

  1. Trong Google Play Console, trên trình đơn điều hướng bên trái, hãy chuyển đến Kiếm tiền qua Play > Sản phẩm > Sản phẩm tính phí một lần.
  2. Nhấp vào Tạo sản phẩm tính phí một lần.
  3. Nhập các thông tin chi tiết sau về sản phẩm:
    • Mã sản phẩm: Nhập một mã nhận dạng duy nhất. Ví dụ: trending_movie_1.
    • (Không bắt buộc) Thẻ: Thêm các thẻ có liên quan.
    • Tên: Nhập tên sản phẩm. Ví dụ: Product Movie.
    • Nội dung mô tả: Nhập nội dung mô tả sản phẩm. Ví dụ: Product Description.
    Bản dịch thủ công cho tên và nội dung mô tả sản phẩm
    Theo mặc định, tên và nội dung mô tả sản phẩm sẽ bằng ngôn ngữ tiếng Anh (Hoa Kỳ) – en-US. Bạn cũng có thể nhập tên và nội dung mô tả bằng các ngôn ngữ khác theo cách thủ công. Để nhập thông tin chi tiết, hãy nhấp vào Quản lý bản dịch, chọn ngôn ngữ mà bạn muốn nhập văn bản đã dịch, rồi nhấp vào Áp dụng. Hình ảnh sau đây cho thấy lựa chọn Quản lý bản dịch:manage-translations.pngHình 2: Quản lý bản dịch.

    Các ngôn ngữ bạn đã chọn sẽ xuất hiện trong trình đơn thả xuống ngôn ngữ. Chọn từng ngôn ngữ rồi nhập tên và nội dung mô tả tương ứng bằng ngôn ngữ đã chọn. Bạn cũng có thể dịch tên và nội dung mô tả sản phẩm tự động mà không mất phí. Để biết thêm thông tin, hãy xem phần Dịch sản phẩm tính phí một lần trong lớp học lập trình này.

    Lưu ý: Vì mục đích của lớp học lập trình này, bạn có thể bỏ qua việc định cấu hình trường Biểu tượng và phần Thuế, việc tuân thủ và các chương trình.
  4. Nhấp vào Tiếp theo.
  5. Thêm một lựa chọn mua và thiết lập phạm vi cung cấp theo khu vực. Sản phẩm tính phí một lần cần có ít nhất một lựa chọn mua, trong đó xác định cách cấp quyền sử dụng, giá và phạm vi cung cấp theo khu vực. Trong lớp học lập trình này, chúng ta sẽ thêm lựa chọn Mua tiêu chuẩn cho sản phẩm.

    Trong phần Lựa chọn mua, hãy nhập các thông tin sau:
    • Mã lựa chọn mua: Nhập một mã nhận dạng duy nhất. Ví dụ: buy-movie.
    • Loại giao dịch mua: Chọn Mua.
    • (Không bắt buộc) Thẻ: Thêm thẻ dành riêng cho lựa chọn mua này.
    • (Không bắt buộc) Nhấp vào Tuỳ chọn nâng cao để định cấu hình các tuỳ chọn nâng cao. Trong phạm vi của lớp học lập trình này, bạn có thể bỏ qua bước định cấu hình các lựa chọn nâng cao.
  6. Tiếp theo, bạn phải thiết lập tình trạng còn hàng và giá theo khu vực cho lựa chọn mua. Trong phần tình trạng còn hàng theo khu vực, bạn sẽ chỉ định những khu vực cung cấp sản phẩm, kể cả những khu vực mà bạn chưa phát hành ứng dụng. Theo mặc định, lựa chọn mua sẽ có ở tất cả các khu vực.

    Trong mục Phạm vi cung cấp và giá, hãy nhấp vào Chỉnh sửa phạm vi cung cấp và quyền truy cập > Đặt thành không có sẵn. Xin lưu ý rằng theo mặc định, tất cả các khu vực đều được đặt thành Có sẵn.
    1. Chọn tất cả các quốc gia trừ France, SpainUnited States, sau đó nhấp vào Đặt thành không có sẵn.
    2. Trong trình đơn thả xuống Tất cả khu vực, hãy chọn Các quốc gia và khu vực được hỗ trợ. Chỉ những quốc gia mà bạn đã chọn ở bước trước mới xuất hiện.
    3. Đối với từng quốc gia được cung cấp, hãy nhấp vào biểu tượng chỉnh sửa trong cột Giá. Thao tác này sẽ hiển thị một hộp thoại để chỉnh sửa giá. Nhập và lưu các mức giá sau:
      • Đối với France, hãy nhập 10 EUR
      • Đối với Spain, hãy nhập 8 EUR
      • Đối với United States, hãy nhập 130.000 VND
  7. Nhấp vào Kích hoạt. Thao tác này sẽ cung cấp sản phẩm tính phí một lần của bạn với lựa chọn mua Mua.

Lưu ý: Đơn vị tiền tệ theo giá khu vực sẽ xuất hiện dựa trên chế độ cài đặt quốc gia trên Play của người dùng. Ví dụ: nếu quốc gia của người dùng trên Play được đặt là Pháp, thì giá của sản phẩm tính phí một lần sẽ xuất hiện bằng Euro.

Video hướng dẫn tạo sản phẩm tính phí một lần

Video sau đây trình bày các bước tạo sản phẩm tính phí một lần như đã mô tả trước đó.

Thêm lựa chọn mua loại Thuê

Bây giờ, hãy thêm một lựa chọn mua để thuê vào sản phẩm tính phí một lần mà bạn đã tạo trước đó.

  1. Trong Google Play Console, trên trình đơn điều hướng bên trái, hãy chuyển đến Kiếm tiền qua Play > Sản phẩm > Sản phẩm tính phí một lần.
  2. Nhấp vào mũi tên bên phải sản phẩm có mã nhận dạng sản phẩm trending_movie_1 mà bạn đã tạo ở bước trước.
  3. Nhấp vào Thêm lựa chọn mua.
  4. Trong phần Lựa chọn mua, hãy nhập các thông tin sau:
    • Mã lựa chọn mua: Nhập rent-movie.
    • Loại giao dịch mua: Chọn Thuê.
    • Thời gian thuê: Chọn 48 giờ.
    • Thời hạn bắt đầu thuê: Chọn 24 giờ.
    • (Không bắt buộc) Thẻ: Thêm thẻ dành riêng cho lựa chọn mua này.
    • (Không bắt buộc) Nhấp vào Tuỳ chọn nâng cao để định cấu hình các tuỳ chọn nâng cao. Trong phạm vi của lớp học lập trình này, bạn có thể bỏ qua bước định cấu hình các lựa chọn nâng cao.
  5. Tiếp theo, tương tự như lựa chọn mua, hãy thiết lập phạm vi cung cấp theo khu vực cho lựa chọn mua theo hình thức thuê. Xem bước 6 và 7 trong phần trước. Khi đặt giá theo khu vực, hãy đặt một mức giá khác cho phim thuê. Ví dụ:
    • France – 5 EUR
    • Spain – 4 EUR
    • United States – 7 USD.

5. Dịch thông tin chi tiết về sản phẩm tính phí một lần

Bạn có thể dịch tên và nội dung mô tả sản phẩm mà không mất thêm phí bằng cách sử dụng tính năng dịch máy có trong Google Play Console.

Để dịch tiêu đề và nội dung mô tả, hãy làm như sau:

  1. Trong Google Play Console, từ trình đơn điều hướng bên trái, hãy chuyển đến Phát triển người dùng > Bản dịch > Cửa hàng và sản phẩm trong ứng dụng.
  2. Nhấp vào Tạo đơn đặt hàng.
  3. Chọn mục Bản dịch máy miễn phí, rồi nhấp vào Tiếp theo.
  4. Trong phần Dịch sang, hãy chọn Tiếng Pháp – fr-FRTiếng Tây Ban Nha – es-ES, rồi nhấp vào Tiếp theo.
  5. Chọn Sản phẩm tính phí một lần và gói thuê bao, rồi nhấp vào Dịch và xem bản dịch. Thao tác này sẽ hiển thị một biểu ngữ tuyên bố từ chối trách nhiệm. Xác nhận tuyên bố từ chối trách nhiệm.
  6. Giờ đây, bạn sẽ thấy danh sách các ngôn ngữ được dịch. Nhấp vào Xem xét và áp dụng cho một ngôn ngữ. Xem lại văn bản rồi nhấp vào Áp dụng tất cả bản dịch. Lặp lại bước này cho tất cả các ngôn ngữ mà bạn đã chọn để dịch.

Sau khi dịch, bạn có thể chỉnh sửa văn bản đã dịch trong Play Console. Cách chỉnh sửa văn bản đã dịch:

  1. Mở trang Sản phẩm tính phí một lần > [sản phẩm tính phí một lần của bạn] > Chỉnh sửa sản phẩm tính phí một lần > Chỉnh sửa thông tin chi tiết về sản phẩm tính phí một lần.
  2. Chọn ngôn ngữ cần thiết trong trình đơn thả xuống ngôn ngữ. Thao tác này sẽ hiển thị văn bản bằng ngôn ngữ đã chọn. Hình ảnh sau đây minh hoạ việc chọn một ngôn ngữ để chỉnh sửa văn bản đã dịch:

    edit-translations.png Hình 3: Chỉnh sửa văn bản đã dịch.
  3. Chỉnh sửa văn bản theo yêu cầu, rồi nhấp vào Lưu thay đổi.

Người dùng sẽ thấy văn bản đã dịch dựa trên lựa chọn ưu tiên về ngôn ngữ trên điện thoại của họ. Ví dụ: nếu ngôn ngữ trên điện thoại của người dùng được đặt là tiếng Pháp, thì tiêu đề và nội dung mô tả của sản phẩm tính phí một lần sẽ xuất hiện bằng tiếng Pháp. Hình ảnh mẫu sau đây cho thấy cách và vị trí văn bản đã dịch sẽ xuất hiện bằng nhiều ngôn ngữ.

post-translation.pngHình 4: Văn bản đã dịch trong ứng dụng của bạn.

Video về cấu hình bản dịch

Video sau đây minh hoạ các bước thiết lập bản dịch như đã mô tả trước đó.

6. Tích hợp với PBL

Để tích hợp ứng dụng của bạn với Thư viện Google Play Billing (PBL), hãy làm theo các bước sau:

  1. Thêm phần phụ thuộc Thư viện Play Billing vào ứng dụng mẫu.
    dependencies {
    val billing_version = "8.0.0"
    
    implementation("com.android.billingclient:billing-ktx:$billing_version")
    }
    
  2. Khởi động BillingClient. BillingClient là SDK ứng dụng khách nằm trên ứng dụng của bạn và giao tiếp với Thư viện Google Play Billing. Đoạn mã sau đây cho biết cách khởi chạy ứng dụng thanh toán.
    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. Kết nối với Google Play.Đoạn mã sau đây minh hoạ cách kết nối với 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. Tìm nạp thông tin chi tiết về sản phẩm tính phí một lần.Sau khi tích hợp ứng dụng với PBL, bạn phải tìm nạp thông tin chi tiết về sản phẩm tính phí một lần vào ứng dụng. Đoạn mã sau đây minh hoạ cách tìm nạp thông tin chi tiết về sản phẩm tính phí một lần trong ứng dụng.
    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());
                }
            }
            });
    }
    
    Việc tìm nạp sản phẩm dùng một lần (trending_movie_1 trong ví dụ này) trong ProductDetails sẽ cho bạn một phản hồi tương tự như sau:
    {
        "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"
                }
            }
        ]
    }
    
    Lưu ý rằng lựa chọn mua và thuê có trong oneTimePurchaseOfferDetailsList. Danh sách này có 2 lựa chọn mua (buy-optionrent-option) được định cấu hình trong Play Console. Bạn có thể xác định riêng từng lựa chọn mua bằng offerIdToken.
  5. Tìm nạp mã thông báo ưu đãi cho ưu đãi Thuê và Mua. Bạn cần mã thông báo ưu đãi để khởi chạy quy trình thanh toán ở bước 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. Bắt đầu quy trình thanh toán.
    /**
     * 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);
    }
    

Lưu ý: Bạn cũng có thể thiết lập thông báo theo thời gian thực dành cho nhà phát triển (RTDN) để triển khai chiến dịch thu hút người dùng quay lại và các chiến lược quản lý vòng đời giao dịch mua khác. Để hiểu cách thiết lập RTDN và xử lý thông báo bằng tính năng theo dõi và xác định quyền chính xác, bạn nên xem qua codelab Tối đa hoá khả năng tích hợp với dịch vụ thanh toán của Play

7. Kiểm tra các lựa chọn mua

Trước khi cung cấp các sản phẩm tính phí một lần trong ứng dụng chính thức, bạn có thể kiểm thử chế độ tích hợp PBL bằng người kiểm thử được cấp phép và Play Billing Lab.

Bạn sẽ tìm hiểu cách kiểm thử việc bản địa hoá giá và tình trạng còn hàng khi ứng dụng chỉ có ở một số khu vực với mức giá khác nhau cho từng khu vực.

Điều kiện tiên quyết

Kiểm thử giá theo khu vực cho các lựa chọn mua

Để kiểm thử tính năng thiết lập giá theo khu vực cho các lựa chọn mua, hãy làm như sau:

  1. Mở ứng dụng Play Billing Lab rồi đăng nhập với tư cách là nhân viên kiểm thử được cấp phép.
  2. Trong phần Cài đặt cấu hình, hãy nhấp vào Chỉnh sửa, chọn quốc gia France rồi nhấp vào Áp dụng. Ở đây, chúng ta sẽ chọn quốc gia trên Play để xác định đơn vị tiền tệ sẽ xuất hiện trong ứng dụng.
  3. Đóng rồi mở lại ứng dụng mẫu. Giờ đây, ứng dụng sẽ hiển thị đơn vị tiền tệ mua và thuê cho France bằng Euro.

Để kiểm thử cho một quốc gia khác, hãy chọn Spain ở bước 2 rồi thực hiện bước 3.

Video kiểm thử Play Billing Lab

Video sau đây cho thấy các bước kiểm thử giá theo khu vực bằng ứng dụng mẫu.

8. Các bước tiếp theo

Tài liệu tham khảo

9. Xin chúc mừng!

Xin chúc mừng! Bạn đã truy cập thành công Google Play Console để tạo một sản phẩm tính phí một lần mới, định cấu hình một lựa chọn mua và kiểm thử quy trình mua bằng Play Billing Lab. Giờ đây, bạn đã hiểu rõ hơn về danh mục sản phẩm linh hoạt của Google Play cho các giao dịch mua một lần.

Khảo sát

Chúng tôi rất coi trọng ý kiến phản hồi của bạn về lớp học lập trình này. Hãy cân nhắc dành vài phút để hoàn thành bản khảo sát của chúng tôi.