Bạn có thể tự hoàn tiền một đơn hàng Google Play, và làm việc đó trước khi có chargeback giúp bạn tiết kiệm phí ngân hàng
Bạn có thể hoàn tiền bất kỳ đơn hàng Google Play nào dưới ba năm tuổi chỉ với một lệnh gọi API, có hoặc không thu hồi quyền truy cập. Tự làm việc đó trước khi một tranh chấp biến thành chargeback giúp bạn tiết kiệm khoản phí ngân hàng đổ lên nhà phát triển kể từ ngày 3 tháng 8 năm 2026. Đây là cách orders.refund hoạt động.

Điểm chính
- Endpoint `orders.refund` trong Google Play Developer API cho phép nhà phát triển hoàn tiền trực tiếp bất kỳ giao dịch mua một lần hoặc đơn hàng đăng ký nào, không cần xét duyệt, không cần lý do và không cần yêu cầu từ khách hàng.
- Hoàn tiền và thu hồi là hai hành động riêng biệt. `orders.refund` nhận một cờ `revoke` tùy chọn. Để tắt thì người mua giữ quyền truy cập, đặt thành true thì Google chấm dứt ngay quyền truy cập vào mục đó.
- Các đơn hàng cũ hơn ba năm không thể hoàn tiền qua Google Play Developer API. Một khi cửa sổ đó đóng lại, đơn hàng vĩnh viễn nằm ngoài tầm với.
- `orders.refund` chỉ phát hành hoàn tiền toàn phần. Một khoản hoàn tiền một phần theo tỷ lệ trên gói đăng ký cần đến endpoint `purchases.subscriptionsv2.revoke` mới hơn với ngữ cảnh `proratedRefund`.
- Hoàn tiền một đơn hàng đăng ký với `revoke` đặt thành true sẽ kích hoạt một Real-time Developer Notification `SUBSCRIPTION_REVOKED`, nhờ đó backend của bạn biết về việc thu hồi theo cùng cách nó biết về bất kỳ sự kiện đăng ký nào khác.
- Kể từ ngày 3 tháng 8 năm 2026, Google tính lại cho nhà phát triển giá mua cộng với phí ngân hàng của một chargeback. Khoản hoàn tiền bạn tự phát hành chỉ trả lại giá mua, nên hoàn tiền sớm một đơn hàng đáng ngờ có thể rẻ hơn là để nó trở thành một chargeback.
- Hoàn tiền do nhà phát triển khởi tạo là luồng hoàn tiền Google Play duy nhất mà bạn hoàn toàn kiểm soát. Hoàn tiền tự phục vụ 48 giờ, hoàn tiền qua bộ phận hỗ trợ và các giao dịch mua bị hủy đều được quyết định mà không có bạn.
Bạn không phải đợi khách hàng mở một tranh chấp. Nếu bạn muốn trả lại tiền, bạn có thể tự hoàn tiền một đơn hàng Google Play, trực tiếp, chỉ với một lệnh gọi API hoặc hai cú nhấp trong Play Console. Google sẽ không hỏi bạn lý do và sẽ không nghi ngờ quyết định của bạn. Đây là luồng hoàn tiền duy nhất mà bạn nắm giữ nút bấm, và dùng nó sớm, trước khi một tranh chấp cứng lại thành một chargeback ngân hàng, thường là lối thoát rẻ nhất.
Luồng hoàn tiền duy nhất mà bạn thực sự kiểm soát
Hầu hết các khoản hoàn tiền trên Google Play xảy ra với bạn, chứ không phải thông qua bạn. Một người mua yêu cầu Google trong vòng 48 giờ sẽ nhận được một khoản hoàn tiền tự phục vụ tự động mà không cần nhà phát triển can thiệp. Một nhân viên hỗ trợ có thể cấp một khoản hoàn tiền là cuối cùng ngay khi được phát hành. Một chargeback ngân hàng được quyết định giữa chủ thẻ và ngân hàng của họ. Trong tất cả những trường hợp đó, bạn là một khán giả chỉ biết được sau khi sự việc đã xảy ra.
Hoàn tiền của nhà phát triển là ngoại lệ. Ở đây bạn là người quyết định trả lại tiền, theo lịch trình của riêng bạn, vì lý do của riêng bạn. Đó là một công cụ thiện chí, một công cụ chăm sóc khách hàng, và một cách lặng lẽ, một công cụ kiểm soát chi phí. Biết chính xác nó hoạt động ra sao là điều biến nó từ một nút bấm hoảng loạn thành một lựa chọn có chủ ý.
orders.refund làm gì, trong một lệnh gọi
Phương thức orders.refund trong Google Play Developer API hoàn tiền một đơn hàng duy nhất, dù đơn hàng đó là một giao dịch mua trong ứng dụng một lần hay một khoản thanh toán đăng ký. Bạn gửi một POST rỗng đến đường dẫn hoàn tiền của đơn hàng, được xác thực bằng tài khoản dịch vụ của bạn, và một lệnh gọi thành công trả về một body rỗng. Đó là toàn bộ cơ chế.
Cờ revoke quyết định họ có giữ được quyền truy cập hay không
Lựa chọn duy nhất mà lệnh gọi này trao cho bạn là cờ truy vấn revoke. Tài liệu tham khảo của Google nói thẳng về những gì nó làm: nếu đặt thành true, quyền truy cập vào gói đăng ký hoặc mục trong ứng dụng sẽ bị chấm dứt ngay lập tức. Bỏ nó đi, và tiền được trả lại trong khi khách hàng vẫn giữ những gì họ đã mua. Một giá trị boolean duy nhất đó là sự khác biệt giữa một khoản hoàn tiền thân thiện và một sự hủy bỏ dứt khoát.
| Phần của lệnh gọi | Giá trị |
|---|---|
| Phương thức và đường dẫn | POST /androidpublisher/v3/applications/{packageName}/orders/{orderId}:refund |
packageName | ID ứng dụng của bạn, ví dụ com.acme.app |
orderId | ID đơn hàng hiển thị cho người mua khi mua |
revoke | Cờ truy vấn tùy chọn. true chấm dứt quyền truy cập ngay lập tức, bỏ nó đi để hoàn tiền mà vẫn giữ nguyên quyền truy cập |
| Nội dung yêu cầu | Rỗng |
| Phạm vi OAuth | https://www.googleapis.com/auth/androidpublisher |
Hoàn tiền toàn phần theo mặc định, theo tỷ lệ chỉ dành cho gói đăng ký
orders.refund trả lại toàn bộ giá trị đơn hàng. Nó không có trường cho một số tiền một phần. Nếu bạn cần trả lại một phần của gói đăng ký, hãy dùng đến endpoint purchases.subscriptionsv2.revoke mới hơn, vốn chấp nhận một ngữ cảnh thu hồi và có thể phát hành hoặc là hoàn tiền toàn phần hoặc theo tỷ lệ dựa trên thời gian còn lại trong kỳ. purchases.subscriptions.revoke cũ hơn chỉ hoàn tiền toàn phần, đó là lý do chính khiến phương thức v2 tồn tại. Đối với các đơn hàng một lần, hoàn tiền một phần khả dụng qua trang web Play Console cho các giao dịch mua thực hiện sau tháng 3 năm 2018, và không bao giờ dành cho ứng dụng trả phí.

Bức tường ba năm và các giới hạn khác
Ranh giới cứng là tuổi. Google nêu rõ rằng các đơn hàng cũ hơn ba năm không thể hoàn tiền. Không có khiếu nại và không có ghi đè một khi một đơn hàng vượt qua lằn ranh đó, nên hoàn tiền là một quyết định có ngày hết hạn. Một vài giới hạn khác định hình những gì lệnh gọi có thể và không thể làm.
| Giới hạn | Ý nghĩa |
|---|---|
| Giới hạn tuổi ba năm | Các đơn hàng cũ hơn ba năm không thể hoàn tiền qua API |
| Chỉ toàn bộ số tiền | orders.refund trả lại toàn bộ giá trị đơn hàng, không bao giờ là một số tiền một phần |
| Hoàn tiền một phần | Khả dụng cho gói đăng ký qua purchases.subscriptionsv2.revoke, hoặc qua Play Console cho các đơn hàng một lần thực hiện sau tháng 3 năm 2018, không bao giờ dành cho ứng dụng trả phí |
| Không thể đảo ngược | Một khi bạn phát hành một khoản hoàn tiền thì không thể hoàn tác |
Điều này giúp bạn tiết kiệm gì về tiền bạc
Mọi khoản hoàn tiền đều đã là một khoản lỗ trước cả khi bạn chạm vào nút bấm, vì số tiền bạn đã chi để phục vụ giao dịch mua đó không quay lại cùng với nó. Nếu người mua đã tạo hình ảnh, chạy các lệnh gọi API tới mô hình của bạn, tiêu tốn dung lượng lưu trữ, hoặc kích hoạt một khoản chi trả cho bên thứ ba, những chi phí đó đã tiêu và vẫn tiêu. Việc hoàn tiền chỉ quyết định ai gánh giá bán bên trên khoản đó.
Lý do để tự mình hoàn tiền là điều xảy ra nếu bạn không làm. Tài liệu của Google nói rõ: kể từ ngày 3 tháng 8 năm 2026, khi một khách hàng tranh chấp một khoản phí với ngân hàng của họ, Google chuyển giá mua và phí chargeback của ngân hàng cho nhà phát triển. Một khoản hoàn tiền bạn phát hành qua orders.refund chỉ trả lại giá mua. Vậy nên với một đơn hàng mà bạn vốn đã dự đoán sẽ mất, một khoản hoàn tiền tự phát hành rẻ hơn chargeback đúng bằng phí ngân hàng, và nó đóng lại vụ việc trước khi nó có thể leo thang.
Vị trí của việc tự hoàn tiền giữa các luồng hoàn tiền khác
Sẽ hữu ích khi nhìn khoản hoàn tiền của nhà phát triển bên cạnh mọi thứ khác có thể rút tiền ra khỏi tài khoản của bạn. Chỉ hai trong số các luồng này từng hỏi ý kiến của bạn, và chỉ một trong số đó cho phép bạn tự khởi tạo khoản hoàn tiền.
| Luồng hoàn tiền | Ai quyết định | Quyền kiểm soát của bạn |
|---|---|---|
Hoàn tiền của nhà phát triển (orders.refund) | Bạn | Toàn quyền. Bạn chọn có hay không và khi nào |
| Hoàn tiền tự phục vụ 48 giờ | Không có. Google hoàn tiền tự động | |
| Hoàn tiền qua nhân viên hỗ trợ | Bộ phận hỗ trợ của Google hoặc Apple | Không có. Cuối cùng ngay khi được cấp |
Xét duyệt chargeback (orders.reviewrefund) | Google, dựa trên bằng chứng của bạn | Chỉ một cửa sổ nhập liệu 24 giờ |
| Voided Purchases API | Không ai cả, nó chỉ đọc | Không có. Bạn chỉ đọc những gì đã xảy ra |
Cách hoàn tiền một đơn hàng Google Play, từ đầu đến cuối
Từ Play Console
- Mở Play Console và chọn Order management ở menu bên trái.
- Tìm đơn hàng theo ID đơn hàng hoặc địa chỉ email đầy đủ của người mua.
- Bên dưới giá, chọn Refund và chọn một lý do hoàn tiền. Hãy dùng trang web, không phải ứng dụng di động, nếu bạn cần một khoản hoàn tiền một phần.
Từ API
- Xác thực một tài khoản dịch vụ có phạm vi
androidpublishervà các quyền tài chính trong Play Console. - Gửi một POST rỗng đến đường dẫn hoàn tiền của đơn hàng, chỉ thêm
revoke=truenếu bạn cũng muốn cắt quyền truy cập. - Xử lý phản hồi thành công rỗng, và nếu bạn đã thu hồi một gói đăng ký, hãy chờ một thông báo
SUBSCRIPTION_REVOKEDđến backend của bạn.
Hoàn tiền của nhà phát triển là một công cụ nhỏ và sắc bén. Nó cho bạn một cách gọn gàng để làm hài lòng khách hàng, và một lối thoát rẻ hơn chargeback trên một đơn hàng mà đằng nào bạn cũng sẽ mất. Quy tắc duy nhất là dùng nó một cách có chủ ý, với cờ revoke được đặt đúng như điều bạn thực sự muốn.
Câu hỏi thường gặp
- Tôi có thể hoàn tiền một đơn hàng Google Play mà không hủy quyền truy cập của khách hàng không?
- Có. Gọi `orders.refund` và để cờ `revoke` tắt. Người mua nhận lại tiền và giữ quyền truy cập vào mục đó. Chỉ đặt `revoke` thành true khi bạn cũng muốn chấm dứt quyền truy cập vào giao dịch mua ngay lập tức.
- Tôi có thể hoàn tiền một đơn hàng trên Google Play xa đến mức nào về trước?
- Lên đến ba năm kể từ ngày mua. Google Play Developer API nêu rằng các đơn hàng cũ hơn ba năm không thể hoàn tiền, và không có ghi đè một khi cửa sổ đó đóng lại.
- orders.refund có hỗ trợ hoàn tiền một phần không?
- Không. `orders.refund` chỉ phát hành toàn bộ số tiền đơn hàng. Đối với một khoản hoàn tiền một phần hoặc theo tỷ lệ trên gói đăng ký, hãy dùng `purchases.subscriptionsv2.revoke` với ngữ cảnh `proratedRefund`, hoặc phát hành một khoản hoàn tiền một phần qua Play Console cho các đơn hàng một lần đủ điều kiện.
- Backend của tôi có biết khi tôi thu hồi một gói đăng ký kèm hoàn tiền không?
- Có. Hoàn tiền một đơn hàng đăng ký với `revoke` đặt thành true sẽ kích hoạt một Real-time Developer Notification `SUBSCRIPTION_REVOKED`, nhờ đó máy chủ của bạn có thể cập nhật quyền lợi theo cùng cách nó xử lý bất kỳ sự kiện đăng ký nào khác.
- Tự hoàn tiền một đơn hàng có tốt hơn là để nó trở thành một chargeback không?
- Thường là vậy, xét thuần túy về chi phí. Kể từ ngày 3 tháng 8 năm 2026 một chargeback khiến nhà phát triển mất giá mua cộng phí ngân hàng, trong khi một khoản hoàn tiền bạn phát hành chỉ trả lại giá mua. Nếu một đơn hàng rõ ràng đang hướng tới một tranh chấp, hoàn tiền nó sớm sẽ tránh được khoản phí ngân hàng thêm vào.
Nguồn và tài liệu đọc thêm
- Google Play Developer API: Method orders.refund
- Android Developers: Manage subscriptions and one-time purchases
- Play Console Help: Manage your app's orders and issue refunds
- Google Play Developer API: Method purchases.subscriptionsv2.revoke
- Google Play Console Help: refund protection and chargeback cost responsibility
- Google Play Help: Learn about Google Play refund policies
RefundHalt
Chế độ tự động xử lý hoàn tiền cho App Store và Google Play
Đọc tiếp
Send Consumption Information của Apple giờ yêu cầu năm trường, không phải mười hai, và đây là từng trường một
Khi một khách hàng yêu cầu Apple hoàn tiền, payload Send Consumption Information là câu trả lời của bạn. Apple đã cắt nó từ mười hai trường xuống còn năm, ba bắt buộc và hai tùy chọn. Đây là từng trường, các giá trị mỗi trường chấp nhận, và cửa sổ 12 giờ để bạn gửi nó.
Có một endpoint trả về toàn bộ lịch sử hoàn tiền App Store của một khách hàng, và đây là những gì nó đưa lại
Endpoint Get Refund History của Apple trả về toàn bộ lịch sử hoàn tiền App Store của một khách hàng dưới dạng các giao dịch đã ký. Đây là từng trường, cách token revision phân trang, tại sao dữ liệu là theo khách hàng chứ không theo ứng dụng, và một lần hoàn tiền bạn bỏ lỡ khiến bạn tốn bao nhiêu.