Bạn có thể cần thực hiện các thao tác quản lý đối với gói thuê bao hoặc giao dịch mua một lần trong quá trình kinh doanh hằng ngày. Ví dụ: dịch vụ khách hàng của bạn có thể 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. Bạn có thể quản lý đơn đặt hàng trên Play Console. Nếu muốn quản lý đơn đặt hàng trên hệ thống của riêng mình, bạn có thể làm như vậy bằng cách sử dụng Google Play Developer API.
Hủy đăng ký
Người dùng hoặc nhà phát triển có thể bắt đầu huỷ gói thuê bao.
Người dùng bắt đầu huỷ
Người dùng có thể huỷ gói thuê bao trên Google Play bất cứ lúc nào thông qua Cửa hàng Play. Nếu có thể, bạn cũng phải cung cấp cho người dùng lựa chọn huỷ gói thuê bao trong ứng dụng và trên trang web của bạn.
Cách dễ nhất để cho phép người dùng tự nguyện huỷ là cung cấp đường liên kết sâu trong ứng dụng của bạn đến Cửa hàng Play, nơi họ có thể xem và quản lý gói thuê bao của mình.
Nhà phát triển yêu cầu huỷ
Là nhà phát triển, bạn cũng có thể cần kích hoạt việc huỷ từ phần phụ trợ.
purchases.subscriptions.cancel
API cho phép bạn huỷ giao dịch mua gói thuê bao.
Ví dụ: bạn có thể dùng phương thức này để từ chối một dịch vụ cũ.
Khi huỷ gói thuê bao, người dùng sẽ không được hoàn tiền và vẫn có quyền truy cập cho đến khi kết thúc kỳ thanh toán hiện tại.
Phương thức này cho phép bạn chỉ định các loại huỷ sau đây trong tham số nội dung yêu cầu cancellationType:
USER_REQUESTED_STOP_RENEWALS: Huỷ gói thuê bao như thể người dùng đã huỷ trên Cửa hàng Play. Mọi khoản thanh toán trả góp sẽ tiếp tục trong thời gian cam kết còn lại. Trên Cửa hàng Play, người dùng có thể khôi phục gói thuê bao trước khi gói thuê bao hết hạn hoặc đăng ký lại sau khi gói thuê bao hết hạn nếu gói cơ bản được bật.
DEVELOPER_REQUESTED_STOP_PAYMENTS: Huỷ gói thuê bao và ngăn chặn mọi khoản thanh toán tiếp theo. Người dùng không thể khôi phục hoặc đăng ký lại gói thuê bao qua Cửa hàng Play, nhưng bạn có thể cho phép họ đăng ký lại trong ứng dụng của bạn.
Cho phép người dùng khôi phục gói thuê bao chưa hết hạn
Trong một số trường hợp, bạn có thể thấy việc cho phép người dùng khôi phục các gói thuê bao chưa hết hạn trong Trung tâm thuê bao của Play sau khi bạn kích hoạt việc huỷ gói thuê bao với tư cách là nhà phát triển là hữu ích. Ví dụ: bạn có thể muốn cung cấp một quy trình huỷ tuỳ chỉnh trong ứng dụng. Dựa trên logic kinh doanh của mình, bạn có thể quyết định những lượt huỷ nào được kích hoạt từ phần phụ trợ mà người dùng có thể khôi phục.
Để cho biết rằng người dùng có thể khôi phục việc huỷ, hãy gửi một yêu cầu POST đến API purchases.subscriptions.cancel và đặt tham số yêu cầu cancellationType thành giá trị USER_REQUESTED_STOP_RENEWAL.
Ví dụ:
- Mã thông báo giao dịch mua của gói thuê bao
1a2b3c4d5e6f7g8h9i0j - Tên gói ứng dụng
com.your.app - Mã gói thuê bao
your-subscription-product
Yêu cầu POST qua HTTP:
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptions/your-subscription-product/tokens/1a2b3c4d5e6f7g8h9i0j:cancel
Nội dung yêu cầu:
{
"cancellationType": "USER_REQUESTED_STOP_RENEWAL"
}
Cho phép người dùng đăng ký lại gói thuê bao đã hết hạn
Để cho phép đăng ký lại một gói thuê bao đã hết hạn, bạn phải bật lựa chọn Đăng ký lại trong gói cơ bản của gói thuê bao, sau đó huỷ gói thuê bao bằng cách đặt tham số cancellationType thành giá trị USER_REQUESTED_STOP_RENEWAL.
Chỉ cho phép người dùng đăng ký lại trong ứng dụng của bạn
Nếu bạn đã đặt tham số cancellationType thành DEVELOPER_REQUESTED_STOP
_PAYMENTS hoặc chưa đặt tham số cancellationType, thì người dùng không thể khôi phục gói thuê bao của họ qua Trung tâm gói thuê bao của Play. Tuy nhiên, người dùng có thể đăng ký lại gói thuê bao thông qua ứng dụng của bạn nếu cần.
Thao tác này sẽ kích hoạt một Thông báo theo thời gian thực dành cho nhà phát triển SUBSCRIPTION_CANCELED. Xử lý các yêu cầu huỷ này như mô tả trong phần Yêu cầu huỷ.
Hoãn thanh toán
Bạn có thể gia hạn thời gian hưởng quyền của một gói thuê bao bằng phương thức subscriptionsv2.defer. Khi bạn hoãn gói thuê bao có tiện ích bổ sung, tất cả các mục trong gói thuê bao đó đều sẽ được hoãn trong cùng một khoảng thời gian. Trong thời gian hoãn, người dùng vẫn được đăng ký nội dung của bạn nhưng không bị tính phí cho thời gian bổ sung này. 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 cho phù hợp và bạn sẽ thấy thông tin này xuất hiện trong trường expiryTime trong thông tin trạng thái mua:
- Đối với các gói thuê bao định kỳ đang hoạt động, tính năng thanh toán trễ sẽ kéo dài ngày gia hạn tiếp theo.
- Đối với gói trả trước, tính năng thanh toán hoãn lại 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 lập hoá đơn hoãn lại:
- 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 một tuần miễn phí cho người đăng ký hiện tại khi họ điền vào một bản khảo sát phản hồi.
- Cung cấp quyền truy cập miễn phí cho khách hàng như một biện pháp chăm sóc khách hàng, chẳng hạn như sau khi xảy ra tình trạng ngừng hoạt động kéo dài có thể ảnh hưởng đến khả năng sử dụng dịch vụ của bạn.
Hệ thống có thể hoãn khoản thanh toán chỉ trong một ngày và tối đa là một năm cho mỗi lệnh gọi API. Để hoãn ngày kết thúc quyền thêm nữa, hãy gọi lại API trước ngày hết hạn mới.
Thao tác này sẽ kích hoạt một Thông báo theo thời gian thực dành cho nhà phát triển SUBSCRIPTION_DEFERRED. Hãy xem phần Hoãn 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 sự kiện này.
Ví dụ:
Dịch vụ phát trực tuyến FitnessGoals muốn chạy một chương trình khuyến mãi để khuyến khích tập thể dục thường xuyên vào tháng 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 FitnessGoals ít nhất 10 lần trong tháng 2.
Họ theo dõi kết quả của thử thách và vào ngày 1 tháng 3, họ gọi phương thức subscriptionsv2.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 đã hoàn thành thử thách trong tháng 2.
Những người dùng này được hưởng lợi ích là thêm một tháng xem miễn phí các video tập thể dục thông thường và họ sẽ kể cho tất cả bạn bè về cách FitnessGoals giúp họ duy trì sức khoẻ!
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 đối với một gói thuê bao hoặc giao dịch mua một lần.
Hoàn tiền toàn bộ cho một đơn đặt hàng theo mã đơn đặt hàng
Với API orders.refund, bạn có thể hoàn tiền toàn bộ cho bất kỳ đơn đặt hàng nào trong vòng 3 năm kể từ ngày mua.
Phương thức orders.refund nhận một tham số thu hồi cho biết liệu có cần thu hồi quyền truy cập ngoài việc hoàn tiền hay không.
Nếu bạn đưa ra lệnh thu hồi kèm theo lệnh 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ển SUBSCRIPTION_REVOKED. Hãy đọc hướng dẫn quản lý vòng đời của gói thuê bao mục Thu hồi để tìm hiểu cách xử lý những sự kiện này.
Ví dụ:
Để chào mừng sự kiện bắt đầu của World Cup mới, ứng dụng thể thao điện tử Football-Not-Soccer quyết định tặng áo đấu ảo miễn phí cho tất cả người dùng mua bộ dụng cụ mới của đội trong 24 giờ đầu tiên.
Football-Not-Soccer sử dụng API
orders.refundmà không truyền tham số thu hồi để hoàn tiền cho các giao dịch mua áo đấu cho người chiến thắng.
Thu hồi và hoàn tiền cho gói thuê bao theo mã thông báo mua hàng
Đố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. Play Billing cung cấp các phương thức thu hồi, bao gồm cả hoàn tiền toàn bộ và hoàn tiền theo tỷ lệ thông qua 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.
Hành động này sẽ kích hoạt mộ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ụ:
- Mua bằng mã thông báo giao dịch mua
1a2b3c4d5e6f7g8h9i0j - Ứng dụng có tên gói
com.your.app - Mục đích của việc hoàn 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 lại toàn bộ tiền
Nếu bạn cần chấm dứt một gói thuê bao và hoàn lại toàn bộ số tiền của kỳ thanh toán hiện tại, hãy hoàn tiền toàn bộ. Sử dụng hàm purchases.subscriptionsv2.revoke và đặt "fullRefund": {} làm loại tiền hoàn lại.
Ví dụ:
Maria có gói thuê bao tự động gia hạn 30 ngày cho gói xem trực tuyến SuperMovies hằng tháng. Maria gặp phải một số vấn đề kỹ thuật khiến cô không truy cập được nội dung. Vào ngày thứ 3 của chu kỳ thanh toán, cô ấy liên hệ với dịch vụ khách hàng để cho biết rằng cô ấy chưa bao giờ có quyền truy cập vào gói thuê bao.
Dịch vụ khách hàng tìm thấy 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 toàn bộ.Nhân viên dịch vụ khách hàng cho Maria biết rằng cô sẽ được hoàn lại 100% giá gói thuê bao và cô không còn đăng ký gói đó nữa.
Hoàn tiền theo tỷ lệ
Nếu bạn cần chấm dứt một gói thuê bao và hoàn tiền một phần cho thời gian sử dụng còn lại, hãy hoàn tiền theo tỷ lệ. Sử dụng hàm purchases.subscriptionsv2.revoke và đặt "proratedRefund": {} làm loại tiền hoàn lại.
Ví dụ:
Maria có gói thuê bao tự động gia hạn 30 ngày cho gói xem trực tuyến SuperMovies hằng tháng. Cô ấy đã sử dụng dịch vụ này trong một thời gian và cảm thấy hài lòng. Vào ngày thứ 15 của chu kỳ thanh toán, Maria liên hệ với dịch vụ khách hàng để thông báo rằng cô sẽ chuyển ra nước ngoài và không thể sử dụng dịch vụ này nữa kể từ ngày hôm sau.
Dịch vụ khách hàng tìm thấy 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ệ.Nhân viên dịch vụ khách hàng cho Maria biết rằng cô sẽ được hoà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.