Nhiều sản phẩm cho sản phẩm tính phí một lần

Tài liệu này mô tả cách bạn có thể tích hợp ứng dụng của mình với tính năng nhiều sản phẩm của Thư viện Play Billing (PBL).

Tính năng nhiều sản phẩm cho sản phẩm tính phí một lần (OTP) cho phép bạn kết hợp nhiều sản phẩm tính phí một lần thành một đơn vị duy nhất. Sau đó, người dùng có thể mua, thanh toán và quản lý các sản phẩm được đóng gói này cùng nhau. Bạn cũng có thể tạo ưu đãi chiết khấu cho những sản phẩm tính phí một lần được bán theo gói này để khuyến khích người dùng mua sản phẩm.

Những yếu tố nên cân nhắc

Khi tạo gói sản phẩm tính phí một lần, hãy lưu ý những điểm cần cân nhắc sau:

  • Bạn không thể có gói thuê bao trong gói sản phẩm tính phí một lần.
  • Bạn không thể kết hợp nội dung kỹ thuật số và dịch vụ trong cùng một gói sản phẩm tính phí một lần.
  • Các sản phẩm tính phí một lần trong gói phải có sẵn để tải xuống ngay lập tức. Ví dụ: gói sản phẩm tính phí một lần không thể có giao dịch mua đặt hàng trước vì không có sẵn để tải xuống ngay lập tức.
  • Sản phẩm có nhiều mặt hàng cho sản phẩm tính phí một lần không hỗ trợ lựa chọn mua để thuê.

Tích hợp với Thư viện Play Billing

Phần này giả định rằng bạn đã quen thuộc với các bước tích hợp PBL ban đầu, chẳng hạn như thêm phần phụ thuộc PBL vào ứng dụng, khởi động BillingClientkết nối với Google Play. Phần này tập trung vào các khía cạnh tích hợp PBL dành riêng cho giao dịch mua OTP nhiều sản phẩm.

Bắt đầu quy trình mua

Để chạy quy trình mua cho sản phẩm tính phí một lần có nhiều sản phẩm, hãy làm theo các bước sau:

  1. Tạo một danh sách sản phẩm có tất cả sản phẩm tính phí một lần bằng cách sử dụng phương thức QueryProductDetailsParams.Builder.setProductList.

  2. Tìm nạp tất cả sản phẩm tính phí một lần bằng phương thức BillingClient.queryProductDetailsAsync.

    Mẫu sau đây trình bày cách tìm nạp tất cả sản phẩm mua một lần:

    Java

    billingClient.queryProductDetailsAsync(
    queryProductDetailsParams,
    new ProductDetailsResponseListener() {
      public void onProductDetailsResponse(
          BillingResult billingResult, QueryProductDetailsResult productDetailsResult) {
        // check billingResult
        // …
        // process productDetailsList returned by QueryProductDetailsResult
        ImmutableList productDetailsList = productDetailsResult.getProductDetailsList();
        for (ProductDetails productDetails : productDetailsList) {
          for (OneTimePurchaseOfferDetails oneTimePurchaseOfferDetails :
              productDetails.getOneTimePurchaseOfferDetailsList()) {
                 // …
          }
        }
      }
    });
  3. Đặt đối tượng ProductDetails cho từng sản phẩm tính phí một lần.

  4. Chỉ định thông tin chi tiết về sản phẩm tính phí một lần trong phương thức BillingFlowParams.Builder.setProductDetailsParamsList. Lớp BillingFlowParams chỉ định thông tin chi tiết về quy trình mua hàng.

    Mẫu sau đây cho biết cách bắt đầu quy trình thanh toán cho giao dịch mua OTP nhiều sản phẩm:

    Java

    BillingClient billingClient =
       BillingClient.newBuilder()
        // set other options
        .build();
    // ProductDetails obtained from queryProductDetailsAsync().
    ProductDetails productDetails1 = ...;
    ProductDetails productDetails2 = ...;
    ArrayList productDetailsList = new ArrayList<>();
    productDetailsList.add(productDetails1);
    productDetailsList.add(productDetails2);
    BillingFlowParams billingFlowParams =
    BillingFlowParams.newBuilder()
        .setProductDetailsParamsList(productDetailsList)
        .build();
    billingClient.launchBillingFlow(billingFlowParams);

Xử lý giao dịch mua

Quy trình xử lý giao dịch mua OTP nhiều sản phẩm cũng giống như quy trình xử lý giao dịch mua một mặt hàng hiện có như mô tả trong phần Tích hợp Thư viện Google Play Billing vào ứng dụng. Điểm khác biệt duy nhất là bạn cần cấp quyền cho tất cả sản phẩm thay vì chỉ một sản phẩm đối với giao dịch mua OTP nhiều sản phẩm để người dùng có thể nhận được nhiều quyền với một giao dịch mua duy nhất. Giao dịch mua OTP nhiều sản phẩm trả về nhiều mặt hàng mà bạn có thể truy xuất bằng cách sử dụng Purchase.getProducts() trong Thư viện Google Play Billing, sau đó là danh sách lineItems trong purchases.products.get của API Nhà phát triển Google Play.

Thông báo theo thời gian thực dành cho nhà phát triển

Trường sku không được cung cấp trong RTDN cho giao dịch mua OTP nhiều sản phẩm. Giao dịch mua OTP nhiều sản phẩm là giao dịch mua nhiều sản phẩm. Do đó, bạn có thể dùng Play Developer API để lấy dữ liệu mua hàng và xem tất cả các mục trong đó.

Hoàn tiền

Trong giao dịch mua OTP nhiều sản phẩm, người dùng không thể yêu cầu hoàn tiền cho từng mặt hàng riêng lẻ và bạn cũng không thể hoàn tiền cho từng mặt hàng riêng lẻ. Tuy nhiên, bạn có thể yêu cầu và được hoàn tiền cho toàn bộ giao dịch mua OTP có nhiều sản phẩm. Nếu bạn huỷ giao dịch mua OTP nhiều sản phẩm cho một người dùng, thì tất cả các quyền liên quan đến giao dịch mua đó sẽ bị huỷ.

Báo cáo và đối chiếu tài chính

Sử dụng Báo cáo thu nhập để đối chiếu các giao dịch mua OTP có nhiều sản phẩm đang hoạt động với các khoản thanh toán và giao dịch trên Play. Mỗi mặt hàng trong dòng giao dịch đều có một Mã đơn đặt hàng. Đối với giao dịch mua OTP có nhiều sản phẩm, Báo cáo thu nhập và doanh số bán hàng ước tính sẽ có các hàng riêng biệt (có cùng mã đơn đặt hàng) cho từng giao dịch, chẳng hạn như phí, thuế và tiền hoàn lại, cho từng mặt hàng có liên quan.

Đối với trang tổng quan trong Play Console:

  • Số liệu thống kê về doanh thu được trình bày trong phần Báo cáo tài chính của bảng điều khiển được phân tích theo từng sản phẩm.

  • Tính năng quản lý đơn đặt hàng phản ánh các giao dịch mua OTP nhiều sản phẩm và cho thấy danh sách chi tiết về những mặt hàng đã mua. Trong phần quản lý đơn đặt hàng, bạn có thể thu hồi, huỷ hoặc hoàn tiền toàn bộ cho giao dịch mua của người dùng.