Bạn có thể cần phải thực hiện các hành động quản lý đối với gói thuê bao hoặc giao dịch mua hàng 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 hoặc 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 API Nhà phát triển Google Play.
Huỷ gói thuê bao
Người dùng hoặc nhà phát triển có thể bắt đầu huỷ gói thuê bao.
Yêu cầu huỷ do người dùng thực hiện
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.
Các yêu cầu huỷ do nhà phát triển thực hiện
Là nhà phát triển, bạn cũng có thể cần kích hoạt các yêu cầu huỷ từ phần phụ trợ.
API 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 để 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 khoảng thời gian còn lại của thời hạn cam kết hiện tạ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 bạn bật tính năng này cho gói cơ bản.
DEVELOPER_REQUESTED_STOP_PAYMENTS: Huỷ gói thuê bao và ngă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. Tuy nhiên, 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 cá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 qua trung tâm thuê bao của Play là hữu ích 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. Ví dụ: bạn có thể muốn cung cấp quy trình huỷ tuỳ chỉnh trong ứng dụng. Dựa trên logic nghiệp vụ, bạn có thể quyết định những yêu cầu huỷ được kích hoạt từ phần phụ trợ mà người dùng có thể khôi phục.
Để cho biết người dùng có thể khôi phục yêu cầu huỷ, hãy đưa ra 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 các 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 tuỳ 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 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 Yêu cầu huỷ.
Hoãn thanh toán
Sử dụng subscriptions.defer
để gia hạn thời hạn sử dụng của gói thuê bao. Trong thời gian hoãn, người dùng vẫn đăng ký nội dung của bạn nhưng không phải trả phí cho khoảng thời gian gia hạn. 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 đó được phản ánh trong trường expiryTime
trong thông tin trạng thái giao dịch mua:
- Đối với các gói thuê bao định kỳ đang hoạt động, phương thức thanh toán trễ sẽ kéo dài ngày gia hạn tiếp theo.
- Đối với các gói trả trước, tính năng thanh toán trễ sẽ kéo dài thời gian hết hạn.
Sau đây là một số ví dụ về cách bạn có thể sử dụng tính năng thanh toán trả sau:
- Cấp cho người dùng quyền truy cập miễn phí 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 bản khảo sát ý kiến phản hồi.
- Cung cấp quyền truy cập miễn phí cho khách hàng như một hành động chăm sóc khách hàng, ví dụ: sau khi xảy ra sự cố 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 họ.
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 thời điểm 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 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ý các sự kiện này.
Ví dụ:
Dịch vụ phát trực tuyến FitnessGoals muốn chạy chương trình khuyến mãi để khuyến khích mọi người tập thể dục thường xuyên vào tháng 2.
Họ quyết định tặng thêm một tháng sử dụng dịch vụ cho những người đăng ký 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 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 đã hoàn thành thử thách vào tháng 2.Những người dùng này được hưởng lợi ích là thêm một tháng đầy đủ các video tập thể dục thường xuyên mà không mất phí. Ngoài ra, họ còn giới thiệu 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 vào một gói thuê bao hoặc giao dịch mua hàng một lần.
Hoàn tiền toàn bộ cho đơ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 bất kỳ đơn đặt hàng nào trong vòng 3 năm kể từ khi mua.
Phương thức orders.refund
nhận được một tham số thu hồi cho biết liệu có nên thu hồi quyền truy cập hay không ngoài việc hoàn tiền.
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à điều 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
. Hãy đọc phần Huỷ trong hướng dẫn quản lý vòng đời của gói thuê bao để tìm hiểu cách xử lý những sự kiện này.
Ví dụ:
Để kỷ niệm 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ổ chức chương trình rút thăm tặng áo đấu ảo miễn phí cho tất cả người dùng mua bộ quần áo mới của đội trong 24 giờ đầu tiên.
Football-Not-Soccer sử dụng API
orders.refund
mà không truyền tham số thu hồi để hoàn tiền cho người chiến thắng khi mua áo đấu.
Thu hồi và hoàn tiền cho 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, 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.
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_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 là
com.your.app
- Ý định 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 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 lại toàn bộ số tiền. 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 hằng tháng của SuperMovies. 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. Cô liên hệ với bộ phận hỗ trợ khách hàng vào ngày thứ 3 của chu kỳ thanh toán, cho biết rằng cô 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ông tin chi tiết về giao dịch mua gói thuê bao của Maria trong hệ thống và kích hoạt lệnh gọi đến
purchases.subscriptionsv2.revoke
để yêu cầu hoàn tiền toàn bộ.Bộ phậ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 gói thuê bao và hoàn tiền một phần cho thời gian còn lại của quyền sử dụng, 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 hằng tháng của SuperMovies. Cô đã sử dụng dịch vụ này một thời gian và rất hài lòng. Maria liên hệ với bộ phận dịch vụ khách hàng vào ngày thứ 15 của chu kỳ thanh toán để thông báo rằng cô sẽ chuyển ra nước ngoài và sẽ không thể sử dụng dịch vụ nữa kể từ ngày hôm sau.
Dịch vụ khách hàng tìm thông tin chi tiết về giao dịch mua gói thuê bao của Maria trong hệ thống và kích hoạt lệnh gọi đến
purchases.subscriptionsv2.revoke
để yêu cầu hoàn tiền theo tỷ lệ.Bộ phậ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.