Quản lý gói thuê bao và giao dịch mua hàng một lần

Trong công việc hằng ngày, có thể bạn cần phải thực hiện các thao tác quản lý các gói thuê bao hoặc giao dịch mua hàng một lần. Ví dụ: có thể dịch vụ khách hàng cần hoàn tiền toàn bộ hoặc một phần cho người dùng, hoặc bạn có thể cần thu hồi quyền trong một số trường hợp nhất định. Bạn có thể quản lý đơn đặt hàng trên Play Console hoặc nếu muốn quản lý các đơn đặt hàng đó từ hệ thống của riêng mình, bạn có thể thực hiện bằng cách sử dụng API Nhà phát triển Google Play.

Huỷ gói thuê bao

Người dùng có thể huỷ gói thuê bao trên Google Play bất cứ lúc nào bằng cách sử dụng Cửa hàng Play. Tuy nhiên, bạn cũng phải cung cấp cho người dùng tuỳ chọn huỷ gói thuê bao trong ứng dụng và trên trang web của bạn (nếu có).

Cách dễ nhất để cho phép người dùng tự nguyện huỷ là liên kết sâu với Cửa hàng Play, nơi họ có thể xem và quản lý gói thuê bao của mình.

Bạn cũng có thể cần kích hoạt các lượt huỷ trong phần phụ trợ của mình. Phương thức purchases.subscriptions.cancel cho phép bạn huỷ giao dịch mua gói thuê bao. Ví dụ: Bạn có thể sử dụng phương thức này để ngừng cung cấp một dịch vụ cũ. Việc huỷ gói thuê bao sẽ không hoàn lại tiền và người dùng vẫn có quyền truy cập cho đến khi kết thúc kỳ thanh toán hiện tại. Khi huỷ gói thuê bao bằng phương thức này, người dùng sẽ không thể khôi phục gói thuê bao đó trong Cửa hàng Play. Tuy nhiên, người dùng vẫn có thể đăng ký lại thông qua ứng dụng của bạn nếu cần.

Việc thực hiện thao tác này sẽ kích hoạt Thông báo theo thời gian thực dành cho nhà phát triển SUBSCRIPTION_CANCELED. Hãy xử lý các yêu cầu huỷ này như mô tả trong phần Huỷ.

Hoãn thanh toán

Sử dụng subscriptions.defer để kéo dài thời hạn được hưởng quyền của một gói thuê bao. Trong thời gian hoãn, hệ thống vẫn duy trì gói thuê bao của người dùng đối với nội dung của bạn nhưng không bị tính phí thêm thời gian. Khi bạn hoãn thanh toán cho một gói thuê bao, thông tin trạng thái sẽ được cập nhật tương ứng và bạn sẽ thấy thông tin này được phản ánh trong trường expiryTime trong thông tin trạng thái mua hàng:

  • Đối với các gói thuê bao định kỳ đang hoạt động, việc thanh toán chậm sẽ kéo dài ngày gia hạn tiếp theo.
  • Đối với các gói trả trước, việc thanh toán chậm sẽ kéo dài thời gian hết hạn.

Một số ví dụ về cách bạn có thể sử dụng tính năng thanh toán chậm:

  • Tặng quyền truy cập miễn phí cho người dùng dưới dạng ưu đãi đặc biệt, chẳng hạn như tặng miễn phí một tuần cho những người đăng ký hiện tại khi họ điền thông tin vào bản khảo sát ý kiến phản hồi.
  • Cấp cho khách hàng quyền truy cập mà không mất phí như một hành động chăm sóc khách hàng, chẳng hạn như sau khi một khoảng thời gian ngừng dịch vụ kéo dài có thể ảnh hưởng đến khả năng sử dụng dịch vụ của bạn.

Đối với mỗi lệnh gọi API, quy trình thanh toán có thể bị hoãn chỉ một ngày và tối đa 1 năm đối với mỗi lệnh gọi API. Để hoãn ngày hết hạn của quyền thêm nữa, hãy gọi lại API trước khi đến ngày hết hạn mới.

Việc thực hiện thao tác này sẽ kích hoạt Thông báo theo thời gian thực dành cho nhà phát triển SUBSCRIPTION_DEFERRED. Xem bài viết Trì hoãn việc thanh toán cho người đăng ký trong bài viết Giới thiệu về gói thuê bao để tìm hiểu cách xử lý những trường hợp này.

Ví dụ:

  1. Dịch vụ phát trực tuyến FitnessGoals muốn chạy một quảng cáo để khuyến khích việc tập thể dục thường xuyên trong tháng 2.

  2. Họ quyết định cung cấp thêm một tháng dịch vụ cho bất kỳ người đăng ký nào tập thể dục với Mục tiêu thể dục ít nhất 10 lần trong tháng 2.

  3. Họ theo dõi kết quả của thử thách và vào ngày 1 tháng 3, họ gọi API subscriptions.defer cho mọi giao dịch mua gói thuê bao đang hoạt động thuộc về những người dùng đã đáp ứng thử thách vào tháng 2.

  4. Những người dùng này được hưởng lợi ích của thêm một tháng xem video tập thể dục thường xuyên mà không mất phí, và những người dùng này cho tất cả bạn bè của họ biết cách Fitness Mục tiêu giúp họ luôn khoẻ mạnh!

Hoàn tiền và thu hồi

Có nhiều trường hợp bạn có thể muốn hoàn tiền hoặc thu hồi quyền truy cập vào gói thuê bao hoặc giao dịch mua hàng một lần.

Hoàn tiền toàn bộ cho một đơn đặt hàng theo mã đơn hàng

Với API orders.refund, bạn có thể hoàn tiền toàn bộ cho mọi đơn đặt hàng trong vòng 3 năm kể từ khi mua. Phương thức orders.refund nhận được một thông số thu hồi cho biết liệu có nên thu hồi quyền truy cập ngoài việc hoàn tiền hay không.

Nếu bạn thu hồi bằng lệnh gọi hoàn tiền cho giao dịch mua gói thuê bao, thì gói thuê bao sẽ bị chấm dứt ngay lập tức và kích hoạt Thông báo theo thời gian thực dành cho nhà phát triểnSUBSCRIPTION_REVOKED. Hãy đọc hướng dẫn quản lý vòng đời gói thuê bao phần Thu hồi để tìm hiểu cách xử lý những sự kiện này.

Ví dụ:

  1. Để chào mừng giải đấu World Cup mới, ứng dụng thể thao điện tử Football-Not-Football quyết định tặng áo thi đấu ảo miễn phí cho tất cả người dùng mua bộ dụng cụ mới cho đội trong 24 giờ đầu tiên.

  2. Football-Not-Football sử dụng API orders.refund mà không truyền tham số thu hồi để hoàn tiền cho giao dịch mua áo thi đấu cho đội chiến thắng.

Thu hồi và hoàn tiền gói thuê bao bằng mã thông báo giao dịch mua

Đối với một số trường hợp sử dụng nhất định, bạn có thể cần thu hồi quyền truy cập vào gói thuê bao của người dùng và hoàn tiền cho họ. Play Billing sẽ hoàn tiền một phần, bao gồm cả việc hoàn tiền theo tỷ lệ mà bạn có thể thực hiện bằng cách sử dụng API subscriptionsv2.revoke. Với điểm cuối này, bạn có thể chỉ định revocationContext để xác định cách tính tiền hoàn lại.

Thực hiện hành động này sẽ kích hoạt Thông báo theo thời gian thực dành cho nhà phát triển SUBSCRIPTION_REVOKED. Ứng dụng của bạn phải xử lý các thao tác huỷ này như mô tả trong phần Thu hồi.

Ví dụ:

  • Giao dịch mua bằng mã thông báo giao dịch mua 1a2b3c4d5e6f7g8h9i0j
  • Ứng dụng có tên gói com.your.app
  • Ý định hoàn lại tiền theo tỷ lệ

Yêu cầu POST qua HTTP:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke

Nội dung yêu cầu:

{
  "revocationContext": {
    "proratedRefund": {}
  }
}

Hoàn tiền theo tỷ lệ

Nếu bạn cần chấm dứt gói thuê bao và hoàn lại một phần thời gian cho quyền còn lại, hãy hoàn tiền theo tỷ lệ tương ứng. Sử dụng hàm purchases.subscriptionsv2.revoke và đặt "proratedRefund": {} làm loại tiền hoàn lại.

Ví dụ:

  1. Maria đang dùng gói thuê bao tự động gia hạn 30 ngày cho gói truyền trực tuyến hằng tháng SuperMovies. Cô vui vẻ sử dụng dịch vụ này được một thời gian. Maria liên hệ với bộ phận dịch vụ khách hàng vào ngày 15 của chu kỳ thanh toán và cho biết cô đang chuyển ra nước ngoài và sẽ không thể sử dụng dịch vụ này nữa kể từ ngày hôm sau.

  2. Dịch vụ khách hàng sẽ tìm thông tin chi tiết về giao dịch mua gói thuê bao của Maria trong hệ thống của họ và kích hoạt lệnh gọi đến purchases.subscriptionsv2.revoke để yêu cầu hoàn tiền theo tỷ lệ.

  3. Dịch vụ khách hàng cho Maria biết cô sẽ được hoàn tiền khoảng 50% giá gói thuê bao và quyền truy cập vào dịch vụ sẽ bị chấm dứt ngay lập tức.