Gói thuê bao có tiện ích bổ sung

Gói thuê bao kèm gói bổ sung cho phép bạn kết hợp nhiều sản phẩm thuê bao với nhau để có thể mua, thanh toán và quản lý cùng nhau. Bạn có thể cung cấp liền mạch các gói thuê bao danh mục sản phẩm hiện có dưới dạng tiện ích bổ sung mà không cần chỉ định trước hoặc cấu hình bổ sung. Bạn có thể khởi chạy quy trình mua hàng với nhiều sản phẩm thuê bao hiện có và bán chúng dưới dạng gói bổ sung.

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

Hãy cân nhắc những điểm sau đây khi sử dụng tính năng gói thuê bao có bổ sung:

  • Gói thuê bao có gói bổ sung chỉ được hỗ trợ cho các gói cơ bản tự động gia hạn.

  • Tất cả các mặt hàng trong giao dịch mua phải có cùng kỳ thanh toán định kỳ. Ví dụ: bạn không thể có gói thuê bao thanh toán hằng năm với các gói bổ sung thanh toán hằng tháng.

  • Bạn có thể có tối đa 50 mặt hàng trong một giao dịch mua gói thuê bao kèm tiện ích bổ sung.

  • Tính năng này không hoạt động ở khu vực Ấn Độ (IN) và Hàn Quốc (KR).

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

Phần này mô tả cách tích hợp tính năng thuê bao có gói bổ sung với Thư viện Google Play Billing (PBL). Hướng dẫ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 gói thuê bao có gói bổ sung.

Bắt đầu quy trình mua

Để bắt đầu quy trình mua gói thuê bao có gói bổ sung, hãy làm theo các bước sau:

  1. Tìm nạp tất cả các mục trong gói thuê bao bằng phương thức BillingClient.queryProductDetailsAsync.

  2. Đặt đối tượng ProductDetailsParams cho từng mục.

    Mặt hàng do đối tượng ProductDetailsParams đại diện, chỉ định cả ProductDetails cho biết mặt hàng thuê bao và offerToken chọn một base plan gói thuê bao cụ thể hoặc offer.

  3. Chỉ định thông tin chi tiết về mặt hàng 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 gói thuê bao có nhiều mặt hàng:

    Java

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

Các quy tắc áp dụng cho các mặt hàng trong giao dịch mua

  • Để đảm bảo ngày gia hạn gói bổ sung cuối cùng sẽ trùng với ngày gia hạn mặt hàng cơ bản, Google Play có thể tính phí theo tỷ lệ sau bất kỳ giai đoạn dùng thử hoặc giá ưu đãi ban đầu nào.
  • Điều kiện sử dụng ưu đãi sẽ được đánh giá riêng cho từng mặt hàng.

Xử lý giao dịch mua

Việc xử lý gói thuê bao có tiện ích bổ sung cũng giống như việc xử lý giao dịch mua một mặt hàng 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à người dùng có thể nhận được nhiều quyền với một giao dịch mua. Giao dịch mua gói thuê bao có các tiện ích bổ sung sẽ trả về nhiều mục 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.subscriptionsv2.get của API Nhà phát triển Google Play.

Sửa đổi gói thuê bao có gói bổ sung

Mọi thay đổi đối với gói thuê bao có gói bổ sung đều dẫn đến việc nâng cấp hoặc hạ cấp. Để biết thêm thông tin, hãy xem bài viết nâng cấp hoặc hạ cấp gói thuê bao.

Để thay đổi hoặc khôi phục giao dịch mua gói thuê bao có tiện ích bổ sung hiện tại trong ứng dụng, bạn phải gọi API launchBillingFlow kèm theo các tham số bổ sung và đảm bảo những điều sau:

  • Luôn gọi setOldPurchaseToken bằng mã thông báo giao dịch mua của giao dịch mua gói thuê bao hiện tại.
  • Để nâng cấp, hạ cấp hoặc chuyển đổi gói thuê bao của một mặt hàng, hãy gọi SubscriptionProductReplacementParams.setReplacementMode để chỉ định cách xử lý thay đổi gói thuê bao giữa mặt hàng cũ và mặt hàng mới. Nếu không, bạn không cần đặt thông số này.
  • Khi mục cơ sở không thay đổi, bạn vẫn có thể gọi SubscriptionProductReplacementParams.setSubscriptionReplacementMode để áp dụng một hành vi thay thế cụ thể. Để biết các quy tắc áp dụng trong trường hợp này, hãy xem phần Đăng ký lại hoặc chuyển đổi gói trong cùng một gói thuê bao.
  • Các tiện ích bổ sung mới sẽ được áp dụng ngay lập tức và bạn sẽ phải trả phí theo tỷ lệ để điều chỉnh ngày gia hạn tiếp theo cho phù hợp với mặt hàng cơ bản trong gói thuê bao.
  • Các gói bổ sung bị xoá sẽ hết hạn vào cuối kỳ thanh toán hiện tại.
  • Khi chạy quy trình thanh toán, bạn sẽ cần chỉ định tất cả các mặt hàng đang hoạt động trong gói thuê bao có tiện ích bổ sung, ngoại trừ những mặt hàng sẽ bị xoá, cùng với mọi tiện ích bổ sung mới.

Mẫu sau đây cho thấy cách gọi API launchBillingFlow khi thay đổi giao dịch mua gói thuê bao hiện có có các tiện ích bổ sung:

Java

BillingClient billingClient = ;

int replacementMode =;

// ProductDetails obtained from queryProductDetailsAsync().
ProductDetailsParams productDetails1 = ...;
ProductDetailsParams productDetails2 = ...;
ProductDetailsParams productDetails3 = ...;

ArrayList newProductDetailsList = new ArrayList<>();
newProductDetailsList.add(productDetails1);
newProductDetailsList.add(productDetails1);
newProductDetailsList.add(productDetails1);

BillingFlowParams billingFlowParams =
    BillingFlowParams.newBuilder()
        .setSubscriptionUpdateParams(
          SubscriptionUpdateParams.newBuilder()
              .setOldPurchaseToken(purchaseTokenOfExistingSubscription)
              // No need to set if change does not affect the base item.
             .setSubscriptionReplacementMode(replacementMode)
             .build())
        .setProductDetailsParamsList(productDetailsList)
        .build();

billingClient.launchBillingFlow(billingFlowParams);

Các trường hợp sửa đổi gói thuê bao

Bảng sau đây liệt kê các trường hợp sửa đổi khác nhau đối với gói thuê bao có tiện ích bổ sung và hành vi tương ứng.

Khi sử dụng SubscriptionProductReplacementParams

Mặt hàng hiện có Mặt hàng đã sửa đổi Bạn có cần đặt chế độ thay thế trong SubscriptionProductReplacementParams không? Hành vi
A (mặt hàng cơ bản), B Một (mục cơ sở) Có (sử dụng KEEP_EXISTING)
  • Mặt hàng B được lên lịch gỡ bỏ sau.
  • Mục A được giữ lại.
  • Người dùng sẽ giữ nguyên mức giá hiện tại cho mặt hàng A, bao gồm cả mọi khoản thanh toán ưu đãi còn lại mà họ nhận được tại thời điểm đăng ký.
A A (mặt hàng cơ bản), B Có (sử dụng KEEP_EXISTING cho A)
  • Mặt hàng B sẽ được thêm ngay lập tức và tính phí theo tỷ lệ.
  • Mục A được giữ lại.
  • Người dùng sẽ giữ nguyên mức giá hiện tại cho mặt hàng A, bao gồm cả mọi khoản thanh toán ưu đãi còn lại mà họ nhận được tại thời điểm đăng ký.
A (mặt hàng cơ bản), B A (mặt hàng cơ sở), C Có (sử dụng KEEP_EXISTING cho A)
  • B được lên lịch để gỡ bỏ sau.
  • C sẽ được thêm ngay lập tức và bạn sẽ phải trả phí theo tỷ lệ.
  • Mục A được giữ lại.
  • Người dùng sẽ giữ nguyên mức giá hiện tại cho mặt hàng A, bao gồm cả mọi khoản thanh toán ưu đãi còn lại mà họ nhận được tại thời điểm đăng ký.
A (mặt hàng cơ bản), B B (mặt hàng cơ sở) Không A được lên lịch gỡ bỏ sau.
A (mặt hàng cơ bản), B C (mặt hàng cơ bản)
  • Việc thay thế A -> C phụ thuộc vào SubscriptionProductReplacementParams replacementMode
  • B được lên lịch để gỡ bỏ sau.
A (mặt hàng cơ bản), B C (mặt hàng cơ bản), B
  • Việc thay thế A -> C phụ thuộc vào SubscriptionProductReplacementParams replacementMode.
  • Để giữ nguyên mặt hàng B, hãy đặt chế độ thay thế là KEEP_EXISTING. Nếu không, theo mặc định, chế độ thay thế là IMMEDIATE_WITHOUT_PRORATION.
A (mặt hàng cơ bản), B C (mặt hàng cơ sở), D
  • Việc thay thế A -> C phụ thuộc vào SubscriptionProductReplacementParams replacementMode.
  • B được lên lịch để gỡ bỏ sau.
  • D sẽ được thêm ngay lập tức và bạn sẽ phải trả phí theo tỷ lệ.
A (mặt hàng cơ bản), B A (mặt hàng cơ sở), C
  • Việc thay thế A -> A và B -> C phụ thuộc vào chế độ thay thế được cung cấp trong SubscriptionProductReplacementParams replacementMode ở mỗi ProductDetailsParams.
  • Để giữ nguyên mục A, hãy đặt chế độ thay thế là KEEP_EXISTING.
A (mặt hàng cơ sở), B, C D (mặt hàng cơ sở), B, C
  • Việc thay thế A->D và B->B, C->C phụ thuộc vào chế độ thay thế được cung cấp trong SubscriptionProductReplacementParams replacementMode ở mỗi ProductDetailsParams.
  • Để giữ nguyên các mục B và C, hãy đặt chế độ thay thế của các mục này thành KEEP_EXISTING.

Khi sử dụng SubscriptionUpdateParams

Mặt hàng hiện có Mặt hàng đã sửa đổi Bạn có cần đặt thông tin thay thế không? Hành vi
A (mặt hàng cơ bản), B Một (mục cơ sở) Không
  • Mặt hàng B được lên lịch gỡ bỏ sau.
  • Hành vi của Mục A phụ thuộc vào chế độ cài đặt Thay đổi về ưu đãi và gói cơ bản của gói cơ bản.
  • Giá của mặt hàng A được cập nhật thành giá mới nhất và người dùng có thể mất mọi khoản thanh toán ưu đãi mà họ nhận được trong quá trình đăng ký dựa trên tiêu chí đủ điều kiện của ưu đãi.
A A (mặt hàng cơ bản), B Không
  • Mặt hàng B sẽ được thêm ngay lập tức và tính phí theo tỷ lệ.
  • Hành vi của Mục A phụ thuộc vào chế độ cài đặt Thay đổi về ưu đãi và gói cơ bản của gói cơ bản.
  • Giá của mặt hàng A được cập nhật thành giá mới nhất và người dùng có thể mất mọi khoản thanh toán ưu đãi mà họ nhận được trong quá trình đăng ký dựa trên tiêu chí đủ điều kiện của ưu đãi.
A (mặt hàng cơ bản), B A (mặt hàng cơ sở), C Không
  • B được lên lịch để gỡ bỏ sau.
  • C sẽ được thêm ngay lập tức và bạn sẽ phải trả phí theo tỷ lệ.
  • Hành vi của Mục A phụ thuộc vào chế độ cài đặt Thay đổi về ưu đãi và gói cơ bản của gói cơ bản.
A (mặt hàng cơ bản), B B (mặt hàng cơ sở) Không A được lên lịch gỡ bỏ sau.
A (mặt hàng cơ bản), B C (mặt hàng cơ bản)
  • Việc thay thế A -> C phụ thuộc vào setSubscriptionReplacementMode (không dùng nữa trong PBL 8.1).
  • B được lên lịch để gỡ bỏ sau.
A (mặt hàng cơ bản), B C (mặt hàng cơ bản), B Việc thay thế A -> C phụ thuộc vào setSubscriptionReplacementMode (không dùng nữa trong PBL 8.1).
A (mặt hàng cơ bản), B C (mặt hàng cơ sở), D
  • Việc thay thế A -> C phụ thuộc vào setSubscriptionReplacementMode (không dùng nữa trong PBL 8.1).
  • B được lên lịch để gỡ bỏ sau.
  • D sẽ được thêm ngay lập tức và bạn sẽ phải trả phí theo tỷ lệ.

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

Trường subscriptionId không được cung cấp trong RTDN cho giao dịch mua gói thuê bao có tiện ích bổ sung, trong đó có nhiều quyền đối với mặt hàng. Thay vào đó, bạn có thể sử dụng Play Developer API để nhận giao dịch mua và xem các quyền đối với mặt hàng được liên kết.

Thay đổi giá đối với người đăng ký hiện có

Việc thay đổi giá gói thuê bao đối với người đăng ký hiện tại của một gói thuê bao có mua thêm tiện ích bổ sung cũng tương tự như việc thay đổi giá gói thuê bao của gói thuê bao một mặt hàng như mô tả trong phần Thay đổi giá gói thuê bao. Tuy nhiên, có một số hạn chế và khác biệt về chức năng như mô tả trong phần này.

Chấm dứt một nhóm thuần tập theo giá cũ

Việc chấm dứt một nhóm thuần tập cũ cũng ảnh hưởng đến giao dịch mua gói thuê bao có tiện ích bổ sung. Các quy tắc sau đây được áp dụng:

  • Tất cả các mức tăng giá chưa được chấp nhận phải có cùng thời gian gia hạn với giá mới. Nếu một mặt hàng trong giao dịch mua gói thuê bao có gói bổ sung có mức tăng giá cần có sự đồng ý mà người dùng chưa xác nhận, thì mọi mức tăng giá cần có sự đồng ý mới cho các mặt hàng khác trong giao dịch mua sẽ bị bỏ qua, trừ phi mức tăng giá đó dẫn đến thời gian gia hạn áp dụng giá mới giống như mức tăng giá hiện có ở trạng thái CHƯA XỬ LÝ. Sau khi người dùng xác nhận việc tăng giá, mọi thay đổi về giá mới hơn sẽ được đăng ký. Người dùng chỉ có thể chấp nhận tất cả các thay đổi giá cần có sự đồng ý chưa được xác nhận cùng một lúc.

    Ví dụ:

    • Hãy xem xét một gói thuê bao có các tiện ích bổ sung (mặt hàng A và B), gia hạn vào ngày 7 hằng tháng.
    • Mặt hàng A đang trong quá trình thay đổi giá từ 70.000 VND lên 100.000 VND và dự kiến giá sẽ tăng từ ngày 7 tháng 7.
    • Quá trình di chuyển giá mới từ 5 USD lên 6 USD bắt đầu cho mặt hàng B vào ngày 2 tháng 6. Vì việc tăng giá cần có sự đồng ý bắt đầu sau 37 ngày kể từ khi di chuyển, nên việc tăng giá sớm nhất cho mặt hàng B sẽ diễn ra vào ngày 7 tháng 8.

    Trong trường hợp này, cho đến khi người dùng chấp nhận thay đổi giá cho mặt hàng A (cho đến khi mặt hàng ở trạng thái CONFIRMED), thay đổi giá cho mặt hàng B sẽ không được đăng ký cho giao dịch mua gói thuê bao này và SubscriptionPurchaseV2 sẽ không trả về thông tin chi tiết về việc thay đổi giá cho mặt hàng B. Sau khi người dùng xác nhận thay đổi giá cho mặt hàng A, thay đổi giá của mặt hàng B sẽ bắt đầu. Người dùng chỉ nhận được thông báo tăng giá cần có sự đồng ý của mặt hàng B sau khi chấp nhận mức tăng giá cần có sự đồng ý của mặt hàng A.

  • Email của Google Play có danh sách tất cả các mặt hàng có giá tăng hoặc giảm có hiệu lực trong cùng một ngày.

Huỷ gói thuê bao có gói bổ sung

Người dùng có thể huỷ toàn bộ giao dịch mua gói thuê bao có tiện ích bổ sung trên Trung tâm gói thuê bao của Play, còn bạn chỉ có thể huỷ toàn bộ giao dịch mua gói thuê bao có tiện ích bổ sung bằng Google Play Developer API.

Khi một giao dịch mua gói thuê bao bị huỷ mà không bị thu hồi, không có mặt hàng nào trong giao dịch mua đó tự động gia hạn, nhưng người dùng sẽ tiếp tục có quyền truy cập vào các mặt hàng được hưởng cho đến khi chu kỳ thanh toán tương ứng kết thúc.

Thu hồi và hoàn tiền cho gói thuê bao có gói bổ sung

Sau đây là một số nguyên tắc về việc thu hồi và hoàn tiền cho gói thuê bao:

  • Sử dụng Play Console để hoàn tiền một phần cho một Đơn đặt hàng cụ thể mà không thu hồi quyền truy cập vào gói thuê bao.

  • Gọi orders.refund để hoàn tiền đầy đủ cho một số khoản thanh toán gói thuê bao cụ thể mà người dùng đã thực hiện mà không thu hồi quyền truy cập vào gói thuê bao.

  • Gọi purchases.subscriptionsv2.revoke để thu hồi ngay quyền truy cập vào tất cả các mục trong gói thuê bao. Với API này, bạn có thể:

    • Thu hồi quyền truy cập vào tất cả các mặt hàng và hoàn tiền tỷ lệ.

    • Khi thu hồi một gói thuê bao có các tiện ích bổ sung bằng cách hoàn tiền theo tỷ lệ, bạn sẽ được hoàn tiền cho đơn đặt hàng mới nhất của từng mặt hàng với số tiền hoàn lại theo tỷ lệ dựa trên thời gian còn lại cho đến lần gia hạn tiếp theo.

    • Thu hồi quyền truy cập đối với tất cả các mặt hàng và cung cấp FullRefund (Hoàn tiền toàn bộ).

    • Thu hồi quyền truy cập của từng mặt hàng và hoàn tiền toàn bộ cho mặt hàng đó.

Thu hồi từng mặt hàng trong gói thuê bao có tiện ích bổ sung

Để thu hồi từng mặt hàng trong gói thuê bao có tiện ích bổ sung mà không thu hồi toàn bộ giao dịch mua, hãy gọi purchases.subscriptionsv2.revoke khi trường ItemBasedRefund được đặt trong RevocationContext. Bạn có thể đặt productId của mặt hàng cần thu hồi và hoàn tiền trong trường ItemBasedRefund.

Bạn có thể đặt trường ItemBasedRefund cho các giao dịch mua có một hoặc nhiều mặt hàng thuê bao tự động gia hạn.

  • Nếu vẫn còn các mặt hàng đang hoạt động trong giao dịch mua gói thuê bao sau khi thu hồi mặt hàng được chỉ định trong ItemBasedRefund, thì chỉ mặt hàng đó sẽ bị thu hồi và được hoàn tiền đầy đủ mà không làm gián đoạn trạng thái gói thuê bao.
  • Nếu không còn mặt hàng nào đang hoạt động trong giao dịch mua gói thuê bao sau khi thu hồi mặt hàng được chỉ định trong ItemBasedRefund, thì mặt hàng đó sẽ bị thu hồi, được hoàn tiền đầy đủ và gói thuê bao sẽ bị huỷ.

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

  • Khi sử dụng ItemBasedRefund, bạn chỉ có thể thu hồi một mục tại một thời điểm. Bạn có thể gọi yêu cầu này nhiều lần nếu cần thu hồi các mục khác nhau.
  • Khi giao dịch mua gói thuê bao ở bất kỳ trạng thái nào trong số các trạng thái thanh toán bị từ chối hoặc mặt hàng được chỉ định trong ItemBasedRefund không thuộc quyền sở hữu hoặc đã hết hạn, thì yêu cầu từ chối mặt hàng sẽ bị chặn.
  • Không hỗ trợ tính năng giảm giá mặt hàng trong gói thuê bao trả trước.

Mặt hàng hết hạn trong khi khoản thanh toán bị từ chối

Đối với giao dịch mua gói thuê bao kèm tiện ích bổ sung, một số lần gia hạn có thể chỉ cần gia hạn một nhóm nhỏ các quyền đối với mặt hàng mà không ảnh hưởng đến những mặt hàng có ngày hết hạn trong tương lai.

Bất kể mặt hàng nào có trong giao dịch gia hạn, nếu khoản thanh toán gia hạn bị từ chối, thì giao dịch mua gói thuê bao nói chung sẽ chuyển sang thời gian ân hạn và tài khoản sẽ bị tạm ngưng như mô tả trong tài liệu sau.

Chọn khoảng thời gian khôi phục

Vì thời gian ân hạn vẫn cấp quyền cho người dùng, nên khi người dùng mua gói thuê bao có kèm theo các tiện ích bổ sung, khoản thanh toán gia hạn sẽ bị từ chối, mặt hàng có thời gian ân hạn tối thiểu trong số tất cả các mặt hàng đang hoạt động sẽ được chọn, đồng thời thời gian ân hạn và thời gian tạm ngưng tài khoản của mặt hàng đó sẽ được áp dụng làm thời gian khôi phục cho lần gia hạn này.

Các mục đang hoạt động bao gồm những mục đang hoạt động trong giao dịch mua gói thuê bao có tiện ích bổ sung ngay trước khi có yêu cầu gia hạn, không bao gồm mọi mục mới thêm (sẽ không được hưởng quyền cho đến sau khi khôi phục) và không bao gồm mọi mục không còn hoạt động do bị xoá hoặc ngừng cung cấp.

Chế độ tạm ngưng tài khoản của mặt hàng có thời gian ân hạn tối thiểu đã chọn sẽ được áp dụng. Nếu có nhiều mặt hàng có thời gian ân hạn tối thiểu nhưng có thời gian tạm ngưng tài khoản khác nhau, thì thời gian tạm ngưng tài khoản dài nhất sẽ được áp dụng.

Thời gian ân hạn

Khi khoản thanh toán gia hạn gói thuê bao bị từ chối, giao dịch mua gói thuê bao sẽ chuyển sang trạng thái thời gian ân hạn. Trong thời gian ân hạn, người dùng vẫn có quyền truy cập vào tất cả các mục đang hoạt động của kỳ gia hạn trước. Sau thời gian ân hạn, nếu phương thức thanh toán chưa được khắc phục, thì toàn bộ giao dịch mua gói thuê bao sẽ chuyển sang trạng thái tạm ngưng tài khoản. Nếu bất kỳ mặt hàng nào khác đến ngày gia hạn trong thời gian ân hạn, thì hệ thống sẽ bắt đầu một lần tính phí mới cho những mặt hàng đó sau khi gói thuê bao khôi phục được trạng thái sau khi bị từ chối thanh toán.

Tạm ngưng tài khoản

Trong thời gian gói thuê bao bị tạm ngưng tài khoản, quyền truy cập vào tất cả các mặt hàng trong gói thuê bao sẽ bị tạm ngưng cho đến khi khoản thanh toán được khôi phục.

Nếu gói thuê bao bị tạm ngưng tài khoản được khôi phục, thì giao dịch mua gói thuê bao đó vẫn tiếp tục như cũ. Nếu gói thuê bao không được khôi phục, thì các mục bị từ chối thanh toán sẽ hết hạn và người dùng sẽ được tiếp tục sử dụng các mục khác trong thời gian còn lại của chu kỳ thanh toán.

Ví dụ:

  • Người dùng có một gói thuê bao Gói cơ bản của tôi gia hạn vào ngày 1 hằng tháng, sau đó vào ngày 15 tháng 8, người dùng này thêm một Gói bổ sung có giá 10 USD/tháng kèm ưu đãi dùng thử miễn phí 7 ngày. Không có mặt hàng nào được thiết lập thời gian ân hạn và cả hai mặt hàng đều có thời gian tạm ngưng tài khoản là 30 ngày.

  • Vào ngày 22 tháng 8, người dùng bị tính phí 2, 90 đô la (10*9/31) để tính theo tỷ lệ cho đến ngày 31 tháng 8, nhưng phương thức thanh toán của người dùng hết hạn trước đó và gói thuê bao bị từ chối thanh toán vào ngày 22 tháng 8.

Khi gói thuê bao chuyển sang trạng thái tạm ngưng tài khoản do giao dịch thanh toán bị từ chối, người dùng sẽ không có quyền truy cập vào bất kỳ mục nào trong gói thuê bao có tiện ích bổ sung. Thời gian còn lại của những mặt hàng không được gia hạn sẽ được trả lại cho người dùng khi gói thuê bao không còn bị tạm ngưng tài khoản, cho dù là do đã thanh toán lại được hay đã bị huỷ.

Trong ví dụ trước, một gói thuê bao chuyển sang trạng thái tạm ngưng tài khoản vào ngày 22 tháng 8.

  • Nếu khôi phục tài khoản vào ngày 25 tháng 8, trước ngày gia hạn chung là ngày 1 tháng 9, thì người dùng sẽ lấy lại quyền truy cập vào cả gói Base Plan của tôigói bổ sung ngay trong ngày đó. Ngày thanh toán tiếp theo được chuyển sang ngày 4 tháng 9.

  • Nếu không khôi phục được tài khoản sau 30 ngày, thì gói thuê bao sẽ bị huỷ vào ngày 21 tháng 9 và người dùng sẽ mất quyền truy cập vào Gói bổ sung, đồng thời có thể tiếp tục truy cập vào Gói cơ bản của tôi cho đến ngày 30 tháng 9.

Trong ví dụ này, bạn phải nhận được expiryTime mới nhất cho TẤT CẢ các mặt hàng trong gói thuê bao có dịch vụ bổ sung, vì một số mặt hàng có thể tiếp tục được hưởng quyền sau thời gian ân hạn và thời gian tạm ngưng tài khoản.

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 trên Play với gói thuê bao đang hoạt động. Mỗi mục hàng trong giao dịch đều có một mã đơn đặt hàng. Với những giao dịch mua đại diện cho nhiều mặt hàng, 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 cho từng giao dịch 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 trong phần Báo cáo tài chính của bảng điều khiển được chia nhỏ theo từng mặt hàng.

  • Tính năng quản lý đơn đặt hàng phản ánh giao dịch mua gói thuê bao có gói bổ sung và cho thấy danh sách chi tiết về những gì đã 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.