Hoàn tiền gói trả trước trên Google Play tuân theo quy tắc khác với gói đăng ký, và chỉ một lần quên xác nhận nạp thêm có thể khiến cả gói bị thu hồi
Gói trả trước không bao giờ tự động gia hạn, nên khách hàng không thể hủy mà chỉ nạp thêm. Bài viết giải thích cách Google Play quyết định hoàn tiền gói trả trước, một lần nạp thêm không được xác nhận khiến bạn mất gì, và lệnh gọi API nào hoàn tiền cho phần nào.

Điểm chính
- Gói trả trước trên Google Play cấp quyền truy cập trong một kỳ thanh toán cố định và không bao giờ tự gia hạn. Khách hàng kéo dài gói bằng cách mua một lần nạp thêm, và Google cho biết gói trả trước không thể hủy vì chúng chỉ đơn giản chạy đến ngày hết hạn.
- Mỗi lần nạp thêm gói trả trước trên Google Play là một giao dịch mua mới với mã thông báo mua hàng mới, và mã thông báo trước đó được gửi trong trường linkedPurchaseToken. Google gửi thông báo SUBSCRIPTION_PURCHASED cho mỗi lần nạp thêm.
- Google Play yêu cầu nhà phát triển xác nhận từng giao dịch mua trả trước và từng lần nạp thêm. Gói từ một tuần trở lên có 3 ngày, còn gói ngắn hơn một tuần có một nửa thời lượng gói, nên gói ba ngày có 1,5 ngày.
- Nếu nhà phát triển bỏ lỡ thời hạn xác nhận một lần nạp thêm gói trả trước trên Google Play, Google sẽ thu hồi lần nạp thêm đó, thu hồi và hủy phần còn lại của gói đăng ký, rồi hoàn tiền cho người dùng.
- Trung tâm trợ giúp Google Play cho khách hàng biết gói trả trước chưa sử dụng có thể được hoàn tiền, và các yêu cầu hoàn tiền gửi sau hơn 48 giờ kể từ khi mua sẽ được chuyển cho nhà phát triển.
- Google mô tả tùy chọn fullRefund của purchases.subscriptionsv2.revoke là hoàn lại khoản phí gần nhất trên mỗi mục, nên với gói trả trước đã nạp thêm, nó nhắm vào khoản phí mới nhất chứ không phải mọi lần nạp thêm khách hàng từng mua.
- Với các đơn hàng Google Play đặt sau ngày 3 tháng 8 năm 2026, một khoản bồi hoàn bị thua khiến nhà phát triển mất giá mua trừ phí dịch vụ của Play, cộng thêm phí bồi hoàn của ngân hàng, và điều này áp dụng cho lần nạp thêm trả trước như mọi đơn hàng khác.
Chỉ cần bỏ lỡ việc xác nhận một lần nạp thêm trên Google Play, Google sẽ không chỉ hoàn tiền cho lần nạp thêm đó. Google thu hồi lần nạp thêm, thu hồi và hủy phần còn lại của gói trả trước của khách hàng, rồi hoàn tiền. Đó là điểm nguy hiểm nhất trong việc hoàn tiền gói trả trước trên Google Play, và bạn hoàn toàn kiểm soát được nó. Phần còn lại của bức tranh hoàn tiền cho gói trả trước khá giống gói đăng ký thông thường, chỉ có vài khác biệt ảnh hưởng đến cách bạn xây dựng hệ thống và những gì bạn mất.
Gói trả trước trên Google Play khác gói đăng ký tự động gia hạn như thế nào
Gói trả trước là một gói cơ bản bán quyền truy cập trong một kỳ thanh toán nhất định rồi dừng lại. Tài liệu trợ giúp Play Console của Google cho biết người dùng mua gói để có quyền sử dụng trong kỳ đó, rồi nạp thêm để lùi ngày kết thúc nếu muốn tiếp tục. Lần nạp thêm có thể là bất kỳ gói cơ bản trả trước nào trong cùng gói đăng ký, kể cả gói có thời lượng khác. Chính ví dụ của Google kéo dài một gói thêm một năm bằng lần nạp thêm $59.99.
Vì không có gì được gia hạn nên cũng không có gì để hủy. Tài liệu thanh toán của Google cho biết gói trả trước không thể hủy, và người dùng muốn dừng chỉ cần để gói chạy đến ngày hết hạn. Trạng thái gói đăng ký của gói trả trước chỉ có thể là ACTIVE, PENDING hoặc CANCELED, và expiryTime luôn có mặt.
Gói trả trước quan trọng nhất ở những nơi thanh toán định kỳ bị hạn chế. Hướng dẫn của RevenueCat nêu ví dụ Ấn Độ, nơi Google tạm ngừng cho khách hàng mới đăng ký các gói tự động gia hạn do quy định của Reserve Bank of India, và gọi gói trả trước là lựa chọn hiển nhiên cho những thị trường như vậy.
| Gói cơ bản tự động gia hạn | Gói cơ bản trả trước | |
|---|---|---|
| Tự gia hạn | Có | Không, người dùng mua lần nạp thêm |
| Người dùng có thể hủy không | Có | Không, chạy đến expiryTime |
| Dùng thử miễn phí và ưu đãi | Có | Không, ưu đãi chỉ dành cho gói cơ bản tự động gia hạn |
| Mã thông báo mua hàng mới | Khi nâng cấp, hạ cấp hoặc đăng ký lại | Mỗi lần nạp thêm |
| Xác nhận | Trong vòng 3 ngày sau mỗi giao dịch mua mới | 3 ngày cho gói từ một tuần trở lên, một nửa thời lượng cho gói ngắn hơn |
| Có thể tạm dừng | Có | Không |
Mỗi lần nạp thêm là một giao dịch mua riêng
Google cấp mã thông báo mua hàng mới cho mỗi lần nạp thêm và đặt mã thông báo trước đó vào linkedPurchaseToken của giao dịch mua mới. Google cũng gửi một thông báo dành cho nhà phát triển theo thời gian thực SUBSCRIPTION_PURCHASED cho mỗi lần. Các lần nạp thêm được cộng dồn. Nếu người dùng nạp thêm sớm, thời gian mới được cộng vào ngày hết hạn cũ chứ không phải tính từ hôm nay. Người dùng chỉ có thể giữ một lần nạp thêm chưa dùng tại một thời điểm, và prepaidPlan.allowExtendAfterTime cho bạn biết khi nào lần tiếp theo khả dụng.
Thời hạn xác nhận là nơi bắt đầu hoàn tiền gói trả trước
Bạn phải xác nhận mọi giao dịch mua trả trước, kể cả mọi lần nạp thêm, vì người dùng đi qua luồng mua hàng mỗi lần. Google cho gói từ một tuần trở lên 3 ngày. Gói ngắn hơn một tuần có một nửa thời lượng, nên gói ba ngày phải được xác nhận trong vòng 1,5 ngày và gói một ngày trong vòng 12 giờ.
Đó là lý do gói trả trước ngắn rủi ro hơn vẻ ngoài. Gói tự động gia hạn hằng tuần hoặc hằng tháng luôn cho bạn 3 ngày như nhau. Gói trả trước một ngày chỉ cho bạn 12 giờ, và một sự cố backend kéo dài hơn thế sẽ biến khách hàng trả tiền thành các khoản hoàn tiền tự động. Hướng dẫn của RevenueCat cũng nêu cùng quan điểm, cảnh báo rằng đơn hàng thứ hai phải được xác nhận nhanh khi gói cơ bản chỉ kéo dài 1 hoặc 3 ngày.
Ai quyết định hoàn tiền gói trả trước
Phần lớn các khoản hoàn tiền gói trả trước trên Google Play được quyết định mà không cần bạn. Chính sách hoàn tiền của Google cho biết người dùng có thể được hoàn tiền trong vòng 48 giờ sau khi mua hàng trong ứng dụng, kể cả gói đăng ký, tùy theo chi tiết. Sau 48 giờ, người dùng được hướng dẫn liên hệ nhà phát triển, bên có thể xử lý hoàn tiền theo chính sách riêng và luật hiện hành. Trang trợ giúp về gói đăng ký của Google thêm một dòng riêng cho gói trả trước: nếu gói chưa được sử dụng, người dùng có thể yêu cầu hoàn tiền cho gói đó.
| Hướng hoàn tiền | Ai quyết định | Bạn có thể phản hồi không | Thời hạn |
|---|---|---|---|
| Yêu cầu trong vòng 48 giờ sau khi mua hoặc nạp thêm | Không | Không có | |
| Yêu cầu sau 48 giờ | Bạn, theo chính sách của bạn và luật địa phương | Không áp dụng | Google không quy định |
| Giao dịch mua hoặc nạp thêm chưa xác nhận | Tự động | Không | 3 ngày, hoặc một nửa thời lượng gói nếu dưới một tuần |
| Bồi hoàn được gắn cờ để nhà phát triển xem xét | Google, sau đó là ngân hàng | Có, qua orders.reviewrefund | 24 giờ |
| Bồi hoàn không qua xem xét của nhà phát triển | Ngân hàng | Không | Không có |
Gói trả trước không thay đổi quy tắc bồi hoàn. Khi Google hỏi ý kiến của bạn về một tranh chấp, bạn có 24 giờ để trả lời qua orders.reviewrefund, và khi ngân hàng đã phán quyết thì quyết định là cuối cùng.
Lệnh gọi API nào hoàn tiền cho phần nào trên gói trả trước
Khi yêu cầu đến tay bạn, bạn có hai công cụ phía máy chủ, và chúng không hoàn tiền cho cùng một thứ.
orders.refund xử lý từng đơn hàng một
orders.refund hoàn tiền một gói đăng ký hoặc đơn hàng trong ứng dụng theo mã đơn hàng. Đặt revoke thành true và quyền truy cập kết thúc ngay lập tức. Google không hoàn tiền cho đơn hàng cũ hơn 3 năm. Vì mỗi lần nạp thêm là một giao dịch mua riêng, hoàn tiền đơn hàng đứng sau một lần nạp thêm là cách chính xác để chỉ hoàn tiền lần nạp thêm đó.
purchases.subscriptionsv2.revoke xử lý trên gói đăng ký
purchases.subscriptionsv2.revoke chấm dứt gói đăng ký và nhận một revocationContext. Google mô tả fullRefund là hoàn lại toàn bộ số tiền của khoản phí gần nhất trên mỗi mục, còn proratedRefund là hoàn lại số tiền theo tỷ lệ dựa trên thời gian còn lại. Với gói đã nạp thêm hai lần, khoản phí gần nhất là lần nạp thêm cuối cùng. Hãy tính đến điều này trước khi hứa trả lại toàn bộ số dư cho khách hàng.
Đừng lấy đi quyền truy cập mà khách hàng vẫn được hưởng
Tài liệu thanh toán của Google cảnh báo rằng việc xóa quyền truy cập vào gói đăng ký khi người dùng vẫn còn quyền hưởng là vi phạm chính sách gói đăng ký của Google Play. Với gói trả trước, thời gian đã trả tiền chính là quyền hưởng. Nếu bạn chỉ hoàn tiền lần nạp thêm gần nhất, hãy giữ cho thời gian đã trả trước đó tiếp tục chạy, trừ khi bạn cũng thu hồi và hoàn tiền phần đó.

Một khoản hoàn tiền gói trả trước khiến bạn tốn bao nhiêu
Khách hàng trả trước đã thanh toán trước cho một khoảng thời gian cố định, và bạn bắt đầu chi tiêu cho họ ngay khi họ có quyền truy cập. Khoản hoàn tiền trả lại tiền cho họ nhưng các chi phí đó vẫn còn nguyên.
- Tài nguyên tính toán: mọi phiên, lần đồng bộ hoặc tác vụ phía máy chủ mà khách hàng chạy trong kỳ đã thanh toán đều là năng lực bạn đã trả tiền.
- Lệnh gọi API: giọng nói, dịch thuật, bản đồ, suy luận mô hình hay bất kỳ dịch vụ bên thứ ba nào tính phí theo yêu cầu vẫn bị tính phí.
- Lưu trữ: tệp và lịch sử khách hàng tạo ra vẫn nằm trên hóa đơn lưu trữ của bạn cho đến khi bạn xóa chúng.
- Chi trả: chia sẻ doanh thu, tiền trả cho nhà sáng tạo và hoa hồng giới thiệu gắn với giao dịch mua đã rời khỏi tài khoản của bạn.
Trường hợp quên xác nhận là trường hợp tốn kém nhất. Xác nhận trễ một lần nạp thêm một năm $59.99 không chỉ đảo ngược $59.99. Google còn thu hồi phần còn lại của gói, nên khách hàng mất quyền truy cập mà họ đã trả tiền và nhận được hoàn tiền, trong khi mọi chi phí bạn bỏ ra để phục vụ họ vẫn đã tiêu.
Danh sách kiểm tra khi xây dựng gói trả trước
- Xác nhận mọi lần nạp thêm từ máy chủ của bạn, không chỉ giao dịch mua đầu tiên, và cảnh báo khi có giao dịch mua vẫn chưa được xác nhận sau vài giờ.
- Đặt cảnh báo riêng cho gói ngắn. Gói một ngày có 12 giờ và gói ba ngày có 1,5 ngày.
- Lưu mọi mã đơn hàng và mã thông báo mua hàng, và lần theo linkedPurchaseToken để thấy toàn bộ chuỗi nạp thêm của một khách hàng.
- Xử lý mã thông báo mua hàng sớm. Google cho biết mã thông báo chỉ còn hiệu lực đến 60 ngày sau khi hết hạn, sau đó Developer API sẽ không chấp nhận nữa.
- Hoàn tiền một lần nạp thêm bằng orders.refund trên đơn hàng của lần nạp thêm đó, và đừng mặc định rằng fullRefund bao gồm các lần nạp thêm trước.
- Ghi nhận mức sử dụng theo từng giao dịch mua, để việc xem xét bồi hoàn có câu trả lời thực sự trong khung 24 giờ của nó.
- Thu hồi quyền truy cập ngay khi nhận được SUBSCRIPTION_REVOKED, vì trạng thái của gói chuyển thành hết hạn.
Câu hỏi thường gặp
- Khách hàng có thể hủy gói trả trước trên Google Play không?
- Không. Google cho biết gói trả trước không thể hủy vì chúng không tự động gia hạn. Gói chạy đến ngày hết hạn và khách hàng giữ quyền truy cập cho đến lúc đó. Để ngừng trả tiền, họ chỉ cần không mua lần nạp thêm nào nữa.
- Khách hàng có thể được hoàn tiền gói trả trước trên Google Play không?
- Có. Trung tâm trợ giúp của Google cho biết gói trả trước chưa sử dụng có thể được hoàn tiền, và Google có thể hoàn tiền mọi giao dịch mua trong ứng dụng, kể cả gói đăng ký, nếu yêu cầu được gửi trong vòng 48 giờ. Sau 48 giờ, Google chuyển khách hàng đến nhà phát triển, bên hoàn tiền theo chính sách riêng và luật địa phương.
- Điều gì xảy ra nếu tôi không xác nhận một lần nạp thêm trả trước?
- Google thu hồi lần nạp thêm, thu hồi và hủy phần còn lại của gói đăng ký, rồi hoàn tiền cho người dùng. Gói từ một tuần trở lên phải được xác nhận trong vòng 3 ngày, còn gói ngắn hơn trong vòng một nửa thời lượng, nên gói ba ngày có 1,5 ngày.
- fullRefund trên gói trả trước có hoàn tiền mọi lần nạp thêm không?
- Không, theo mô tả của Google. Tùy chọn fullRefund của purchases.subscriptionsv2.revoke hoàn lại toàn bộ số tiền của khoản phí gần nhất trên mỗi mục. Mỗi lần nạp thêm là một giao dịch mua riêng với đơn hàng riêng, nên hãy dùng orders.refund trên một đơn hàng cụ thể khi bạn muốn hoàn tiền một lần nạp thêm cụ thể.
- Gói trả trước có hỗ trợ dùng thử miễn phí không?
- Không. Tài liệu trợ giúp Play Console của Google cho biết ưu đãi, bao gồm dùng thử miễn phí và giá giới thiệu, chỉ có thể được tạo cho các gói cơ bản tự động gia hạn. Gói trả trước được thanh toán đầy đủ khi mua và ở mỗi lần nạp thêm.
Nguồn và tài liệu đọc thêm
- Google Play Billing: Subscription lifecycle (prepaid plans, top-ups, acknowledgement)
- Play Console Help: Understanding subscriptions
- Google Play Help: Cancel, pause, or change a subscription on Google Play
- Google Play Help: Apps, games, and in-app purchases refund policies
- Google Play Developer API: orders.refund
- Google Play Developer API: purchases.subscriptionsv2.revoke
- Google Play Developer API: orders.reviewrefund
- Play Console Help: Updates to refund protection and chargeback cost responsibility
- RevenueCat: Google prepaid plans
RefundHalt
Chế độ tự động xử lý hoàn tiền cho App Store và Google Play
Đọc tiếp
Yêu cầu hoàn tiền quá mức có thể khiến bạn mất nhiều hơn chính khoản hoàn tiền, vì cả hai kho ứng dụng đều coi đó là tín hiệu chất lượng
Hướng dẫn 5.6.4 của Apple nêu rõ yêu cầu hoàn tiền quá mức là dấu hiệu ứng dụng không đạt chuẩn chất lượng, còn Thỏa thuận phân phối của Google cho phép gỡ ứng dụng của nhà phát triển mới dựa trên tỷ lệ hoàn tiền. Đây là những gì mỗi kho quy định, cái giá khi bị gỡ và cách tránh rủi ro.
Hãy xác minh thông báo máy chủ App Store trước khi xử lý hoàn tiền, vì bất kỳ ai cũng có thể gửi yêu cầu đến URL webhook của bạn
Một thông báo hoàn tiền chỉ là một yêu cầu HTTPS cho đến khi bạn kiểm tra chữ ký của nó. Bài viết này hướng dẫn cách xác minh thông báo máy chủ App Store và tin nhắn RTDN của Google Play, mỗi cửa hàng ký những gì, và một khoản hoàn tiền giả mạo hoặc bị từ chối nhầm khiến bạn tốn bao nhiêu.