Refund Saver
Bất cứ khi nào người dùng yêu cầu hoàn tiền, cửa hàng sẽ xem xét trước khi đưa ra quyết định. Để đánh giá liệu yêu cầu hoàn tiền có hợp lý hay không, cửa hàng sẽ hỏi nhà phát triển về hoạt động của người dùng đó. Nếu không có bằng chứng này, ngay cả một gói đăng ký đã được sử dụng nhiều cũng có khả năng bị hoàn tiền.
Refund Saver tự động xử lý các yêu cầu này, bảo vệ doanh thu của bạn và tăng khả năng từ chối các yêu cầu không hợp lệ. Tính năng này hoạt động trên cả App Store và Google Play, bao gồm mọi loại in-app purchase — gói đăng ký tự gia hạn, gói đăng ký một lần, consumable và non-consumable (kể cả sản phẩm trọn đời).
Giữ chân người dùng trước khi họ hủy. Retention Messaging hiển thị một thông điệp tùy chỉnh ngay trong màn hình Hủy gói đăng ký của Apple — lý do để ở lại, đúng lúc người dùng nhấn Hủy.
Refund Saver hoạt động như thế nào
-
Khi người dùng gửi yêu cầu hoàn tiền, cửa hàng sẽ gửi thông báo yêu cầu chi tiết giao dịch và mức độ sử dụng.
Nếu bạn bỏ qua hoặc trả lời chậm, cửa hàng thường sẽ chấp thuận yêu cầu hoàn tiền.
-
Adapty Refund Saver tự động trả lời các thông báo này và gửi đến cửa hàng những dữ liệu cần thiết.
Tính năng tự động hóa này giúp giảm thiểu các khoản hoàn tiền không cần thiết, đồng thời tiết kiệm thời gian và bảo vệ doanh thu của bạn.
-
Adapty ghi lại từng kết quả — đã hoàn tiền hay từ chối. Dữ liệu đó được sử dụng trong phân tích Refund Saver trên Dashboard.
Sự khác biệt giữa các cửa hàng
Refund Saver hoạt động trên cả hai cửa hàng, nhưng mỗi cửa hàng xử lý hoàn tiền theo cách riêng.
| App Store | Google Play | |
|---|---|---|
| Refund Saver phản hồi điều gì | Yêu cầu tiêu thụ cho một giao dịch | Xem xét hoàn tiền cho một đơn hàng. Ngân hàng của người dùng khởi tạo dưới dạng chargeback |
| Sự đồng ý của người dùng | Bắt buộc | Không cần thiết |
| Adapty biết kết quả như thế nào | App Store gửi thông báo | Adapty thăm dò trạng thái đơn hàng cho đến khi Google giải quyết xong |
Trên Google Play, người dùng có thể được hoàn tiền theo một trong hai cách. Google tự xử lý yêu cầu hoàn tiền mà không cần bạn can thiệp, vì vậy Refund Saver không bao giờ nhìn thấy nó. Chargeback thì khác: người dùng yêu cầu ngân hàng hoàn lại khoản thanh toán, Google hỏi ý kiến bạn trước khi giải quyết tranh chấp, và Refund Saver sẽ trả lời thay bạn. Nếu người dùng thắng chargeback, bạn sẽ mất cả phần tiền của mình từ giao dịch mua lẫn phí chargeback của ngân hàng.
Điều kiện tiên quyết theo cửa hàng
App Store
Khi người dùng yêu cầu hoàn tiền từ Apple, Apple sẽ tiến hành điều tra. Trước khi đưa ra quyết định, Apple sẽ gửi cho bạn một consumption request — yêu cầu cung cấp thông tin chi tiết về cách người dùng đã sử dụng giao dịch mua đó. Refund Saver phản hồi yêu cầu này với kết quả bạn mong muốn và dữ liệu tiêu thụ của người dùng.
Để sử dụng Refund Saver trên App Store, bạn cần:
- Bật App Store Server Notifications V2: Refund Saver không hoạt động với thông báo V1 — phiên bản mà Apple đã ngừng hỗ trợ.
- Thêm In-App Purchase key: Refund Saver ký phản hồi gửi về Apple bằng In-App Purchase key. Adapty cần Issuer ID, Key ID, file
.p8trong App settings → iOS SDK, cùng với Bundle ID — nếu thiếu bất kỳ thông tin nào trong số bốn thông tin này, hệ thống sẽ không thể trả lời yêu cầu consumption request. Xem Tạo In-App Purchase key. - Công bố việc sử dụng dữ liệu consumption trong Chính sách Bảo mật: Apple yêu cầu phải công bố điều này, và đây là trách nhiệm của bạn, không phải Adapty. Xem Chi tiết Quyền riêng tư ứng dụng của Apple để biết cần công bố những gì.
- Lấy sự đồng ý của người dùng cho việc chia sẻ dữ liệu: Đây cũng là trách nhiệm của bạn — Apple yêu cầu phải có sự đồng ý hợp lệ trước khi Adapty chia sẻ dữ liệu người dùng. Xem Lấy sự đồng ý của người dùng.
Google Play
Để sử dụng Refund Saver trên Google Play, hãy kết nối cửa hàng và bật RTDN — cả hai đều là một phần của tích hợp Google Play tiêu chuẩn: Cấu hình tích hợp Google Play Store và Bật thông báo nhà phát triển theo thời gian thực (RTDN). Google thông báo từng đánh giá hoàn tiền qua RTDN, vì vậy nếu không có RTDN, các đánh giá sẽ trôi qua mà không có phản hồi. Không cần sự đồng ý của người dùng — tranh chấp hoàn tiền không liên quan đến việc chia sẻ dữ liệu cá nhân.
Bật Refund Saver
Bạn chỉ cần bật Refund Saver một lần. Sau khi tính năng được bật, Adapty sẽ xử lý các yêu cầu hoàn tiền từ cả App Store lẫn Google Play, miễn là cả hai đã được kết nối đúng cách với Adapty và bạn đáp ứng các điều kiện tiên quyết theo từng cửa hàng.
- Mở mục Refund Saver trong Adapty Dashboard.
- Nhấn Turn on refund saver.
Cấu hình Refund Saver
Sau khi tính năng được bật, bạn có thể thiết lập Refund Saver. Cài đặt được áp dụng ở hai cấp độ:
- Mặc định cấp ứng dụng: Tùy chọn hoàn tiền cho từng cửa hàng, cộng với chính sách đồng ý mặc định — sự đồng ý mà Refund Saver giả định cho những người dùng chưa có giá trị đồng ý được ghi lại. Bạn đặt cả hai trong cửa sổ Edit Refund saver preferences.
- Ghi đè theo từng người dùng: Tùy chọn hoàn tiền và giá trị đồng ý cho một người dùng cụ thể. Khi được đặt, chúng sẽ được ưu tiên hơn các mặc định cấp ứng dụng. Đặt tùy chọn từ Dashboard, SDK, hoặc server-side API — cả ba đều ghi cùng một giá trị. Cập nhật đồng ý đến từ SDK hoặc API.
Đặt tùy chọn hoàn tiền cho từng cửa hàng
Tùy chọn hoàn tiền là điều Adapty đề xuất khi xử lý các yêu cầu hoàn tiền. Adapty áp dụng nó cho mọi yêu cầu trong cửa hàng đó, thay vì quyết định từng trường hợp một. Mỗi cửa hàng có tùy chọn riêng của mình. Tùy chọn này chỉ là khuyến nghị — cửa hàng mới là người đưa ra quyết định cuối cùng.
- Để thay đổi tùy chọn, trong phần Refund Saver, nhấp vào Refund Saver Settings.
- Trong cửa sổ Edit Refund saver preferences, chọn tab Apple hoặc Google.
- Chọn tùy chọn Default refund request preference của bạn:
| Tùy chọn | Mô tả |
|---|---|
| Decline first refund request, grant all next | (mặc định) Đối với mỗi giao dịch mà Refund Saver gặp, ban đầu nó sẽ yêu cầu cửa hàng từ chối hoàn tiền. Nếu cùng giao dịch đó xuất hiện lại, Refund Saver sẽ đề xuất chấp thuận hoàn tiền. Cách tiếp cận này giúp giảm sự bực bội của người dùng khi bị từ chối hoàn tiền không công bằng — người dùng có thể yêu cầu hoàn tiền lại và thường sẽ nhận được. |
| Always decline | Yêu cầu cửa hàng từ chối mọi yêu cầu hoàn tiền, kể cả các yêu cầu lặp lại cho cùng một giao dịch. |
| Always refund | Đề xuất cửa hàng chấp thuận mọi yêu cầu hoàn tiền. |
| Grant prorated refund | Đề xuất Apple chỉ hoàn tiền phần chưa sử dụng của giao dịch, giúp bạn giữ lại doanh thu cho phần người dùng đã dùng. Chỉ áp dụng cho App Store — tab Google không có tùy chọn này. |
| No preference | Không đưa ra bất kỳ khuyến nghị nào cho cửa hàng. Trong trường hợp này, cửa hàng sẽ tự quyết định kết quả hoàn tiền dựa trên chính sách nội bộ và lịch sử của người dùng, không bị ảnh hưởng bởi cài đặt của bạn. Đây là tùy chọn trung lập nhất. |
Chọn tùy chọn phù hợp
Từ chối mọi yêu cầu không đảm bảo giảm số lần hoàn tiền. Cửa hàng coi phản hồi của bạn chỉ là một gợi ý. Các nhà phát triển cho biết Apple có thể chấp thuận phần lớn các yêu cầu, ngay cả khi bạn yêu cầu từ chối tất cả. Việc liên tục từ chối cùng một giao dịch cũng tạo lý do để người dùng gửi lại yêu cầu. Đối với hầu hết các ứng dụng, Decline first refund request, grant all next giúp tận dụng lợi ích của việc từ chối yêu cầu đầu tiên mà không tạo ra vòng lặp từ chối lặp đi lặp lại.
Hoàn tiền theo tỷ lệ là lựa chọn ở giữa giữa từ chối và chấp nhận. Tính năng này chỉ hoạt động trên App Store. Bạn hoàn lại phần chưa sử dụng của giao dịch mua và giữ lại phần còn lại, thay vì đánh cược toàn bộ số tiền vào việc từ chối. Hoàn tiền theo tỷ lệ phù hợp với những giao dịch mua mà người dùng đã sử dụng một phần — chẳng hạn gói xu đã tiêu một nửa, hoặc gói năm bị hủy vào tháng thứ hai. Google chỉ chấp nhận từ chối, phê duyệt hoặc không có tùy chọn nào khi xem xét yêu cầu hoàn tiền, vì vậy Refund Saver không thể yêu cầu hoàn tiền một phần ở đó. Bạn vẫn có thể thực hiện thủ công từ phần quản lý đơn hàng trong Play Console.
Cách Adapty tính toán phần đã tiêu thụ
Hoàn tiền theo tỷ lệ sẽ hoàn lại phần chưa được sử dụng của một giao dịch mua, vì vậy Apple cần biết người dùng đã tiêu thụ bao nhiêu phần của giao dịch đó.
- Gói đăng ký tự gia hạn: Apple tự tính toán phần đã sử dụng và Adapty gửi yêu cầu đến Apple mà không kèm theo tỷ lệ tiêu thụ.
- Tất cả các loại sản phẩm khác: Adapty tính toán phần đã sử dụng và gửi cùng với yêu cầu đến Apple. Adapty lấy tỷ lệ này từ một trong hai nguồn:
- Tiền tệ ảo: Tỷ lệ đã chi tiêu của số dư tiền tệ ảo mà giao dịch mua cấp phát, tính trung bình trên tất cả các loại tiền tệ đã được cấp. Độ chính xác của tỷ lệ này phụ thuộc vào dữ liệu chi tiêu mà ứng dụng của bạn báo cáo qua server-side API.
- Thời gian truy cập: Tỷ lệ thời gian đã trôi qua trong kỳ hạn, được sử dụng khi giao dịch mua không cấp phát tiền tệ ảo nào.
Apple chỉ chấp nhận hoàn tiền theo tỷ lệ đối với sản phẩm đã sử dụng một phần. Adapty gửi phản hồi khác nhau cho các trường hợp còn lại:
- Đối với sản phẩm đã sử dụng hoàn toàn, Adapty yêu cầu Apple từ chối hoàn tiền.
- Đối với sản phẩm chưa sử dụng, Adapty yêu cầu Apple hoàn tiền toàn bộ.
- Đối với sản phẩm không có tiền tệ ảo lẫn thời gian truy cập, Adapty không có dữ liệu tiêu thụ để gửi và phản hồi Apple mà không kèm theo đề xuất. Consumable không cấp tiền tệ ảo sẽ thuộc trường hợp này.
Đặt chính sách đồng ý mặc định
Default consent policy áp dụng cho những người dùng chưa có giá trị đồng ý nào được ghi nhận — ứng dụng của bạn chưa báo cáo trạng thái đồng ý của họ thông qua SDK hoặc server-side API. Chính sách này xác định cách Refund Saver xử lý những người dùng đó. Hãy chọn tùy chọn phù hợp với cách tiếp cận đồng ý bạn đã chọn trong Obtain user consent: trong cửa sổ Edit Refund saver preferences, ở tab Apple, đặt tùy chọn Default consent policy.
| Tùy chọn | Mô tả |
|---|---|
| Opt-out | (mặc định) Nếu Adapty không biết trạng thái đồng ý của người dùng, hệ thống sẽ giả định rằng người dùng đã đồng ý và Refund Saver sẽ chia sẻ dữ liệu liên quan đến hoàn tiền với Apple. |
| Opt-in | (được Apple khuyến nghị) Nếu Adapty không biết trạng thái đồng ý của người dùng, hệ thống sẽ giả định rằng người dùng chưa đồng ý và Refund Saver sẽ không chia sẻ bất kỳ dữ liệu nào với Apple. |
Thiết lập hành vi hoàn tiền cho người dùng cụ thể trong dashboard
Bạn có thể muốn thiết lập tùy chọn riêng cho từng người dùng cụ thể. Mở hồ sơ người dùng của người dùng đó và tìm thẻ Refund saver settings ở cuối cột bên trái.
Tùy chọn theo từng người dùng là một giá trị áp dụng cho cả hai cửa hàng. Đặt Refund request preference thành Grant refund, Grant prorated refund, Decline refund, hoặc No preference. Adapty sẽ áp dụng giá trị này cho các yêu cầu hoàn tiền của người dùng trên cả App Store và Google Play. Grant prorated refund không có giá trị tương đương trên Google Play, nên Adapty sẽ gửi No preference trên Google Play.
Tùy chọn theo từng người dùng sẽ ghi đè mặc định ở cấp ứng dụng — bao gồm cả hành vi “Từ chối yêu cầu hoàn tiền đầu tiên, chấp nhận tất cả các yêu cầu tiếp theo”.
Lấy sự đồng ý của người dùng
Tính năng đồng ý chỉ áp dụng cho App Store — việc xem xét hoàn tiền trên Google Play không liên quan đến dữ liệu cá nhân và không cần xin sự đồng ý.
Cách bạn thu thập sự đồng ý của người dùng để chia sẻ dữ liệu là tùy bạn, nhưng Apple yêu cầu phải có sự đồng ý hợp lệ từ người dùng trước khi chia sẻ bất kỳ dữ liệu cá nhân nào với họ. Apple khuyến nghị sử dụng phương pháp opt-in, tức là hiển thị các thông báo trong ứng dụng giải thích cách dữ liệu sẽ được sử dụng và yêu cầu người dùng thực hiện hành động rõ ràng để đồng ý. Nếu người dùng bỏ qua hoặc từ chối thông báo, họ không được coi là đã đồng ý. Để biết thêm chi tiết, hãy tham khảo hướng dẫn của Apple.
Nếu việc lấy sự đồng ý rõ ràng không thực tế với ứng dụng của bạn, bạn có thể cân nhắc phương pháp opt-out. Cách này bao gồm việc đưa điều khoản chia sẻ dữ liệu vào Điều khoản Dịch vụ, giải thích rằng người dùng đồng ý chia sẻ dữ liệu khi chấp nhận các điều khoản. Hãy đảm bảo nêu rõ cách người dùng có thể thu hồi sự đồng ý của họ.
Dưới đây là ví dụ về điều khoản cho phương pháp opt-out, bao gồm các loại dữ liệu bạn có thể chia sẻ. Đây chỉ là mẫu để hướng dẫn bạn soạn thảo nội dung của riêng mình. Bạn có trách nhiệm đảm bảo phiên bản cuối cùng tuân thủ tất cả các luật áp dụng và yêu cầu của Apple.
“Nếu chúng tôi nhận được yêu cầu hoàn tiền cho một in-app purchase, chúng tôi có thể cung cấp cho Apple thông tin về hoạt động mua in-app purchase của người dùng. Điều này có thể bao gồm các thông tin như thời gian kể từ khi cài đặt ứng dụng, tổng thời gian sử dụng ứng dụng, mã định danh tài khoản ẩn danh, liệu in-app purchase đã được sử dụng hết chưa, liệu nó có bao gồm thời gian dùng thử không, tổng số tiền đã chi tiêu và tổng số tiền đã được hoàn lại.”
Sau khi bạn chọn một cách tiếp cận, hãy thiết lập chính sách đồng ý mặc định phù hợp trong Dashboard.
Kiểm tra sự đồng ý của người dùng
Xem lại trạng thái đồng ý của người dùng để xác nhận rằng lựa chọn của họ đã được ghi nhận trong Adapty. Trong Adapty Dashboard, mở hồ sơ người dùng và tìm cài đặt Allow data sharing trong thẻ Refund saver settings. Yes và No hiển thị lựa chọn đã được ghi nhận của người dùng; Not set có nghĩa là Refund Saver sẽ tuân theo chính sách đồng ý mặc định của bạn.
Bạn cũng có thể sử dụng Server-side API để lấy tùy chọn hoàn tiền và chia sẻ dữ liệu của từng người dùng.
Theo dõi khoản tiết kiệm từ yêu cầu hoàn tiền
Mục Refund Saver báo cáo số lượng yêu cầu hoàn tiền mà Adapty đã xử lý và kết quả của từng yêu cầu. Để xem số liệu của từng cửa hàng, chọn tab Apple hoặc Google ở đầu trang. All Platforms tổng hợp cả hai cửa hàng.
Google không thông báo cho Adapty khi giải quyết xong một yêu cầu hoàn tiền, vì vậy Adapty phải tự kiểm tra trạng thái đơn hàng cho đến khi quá trình xem xét kết thúc. Do đó, kết quả từ Google Play sẽ xuất hiện muộn hơn so với App Store.
Mục Refund Saver chỉ hiển thị các yêu cầu đã được chuyển đến Refund Saver. Để xem toàn bộ các khoản hoàn tiền trong ứng dụng của bạn — bao gồm cả những khoản do Google tự quyết định mà không cần đến bạn — hãy xem các biểu đồ Refund money và Refund events trong Analytics.
Quản lý Refund Saver từ code ứng dụng
Ứng dụng của bạn có thể ghi hai giá trị cho từng người dùng thông qua iOS SDK:
- Tùy chọn yêu cầu hoàn tiền: Adapty sẽ đề xuất gì khi trả lời các yêu cầu hoàn tiền của người dùng này. Giá trị này thuộc về hồ sơ người dùng chứ không gắn với bất kỳ nền tảng cụ thể nào, vì vậy tùy chọn yêu cầu hoàn tiền sẽ áp dụng cho cả App Store lẫn Google Play.
- Đồng ý chia sẻ dữ liệu: Liệu Adapty có thể gửi dữ liệu mua hàng của người dùng này cho Apple hay không. Sự đồng ý này chỉ áp dụng cho App Store.
Sử dụng SDK cho các lựa chọn mà người dùng thực hiện trong giao diện của bạn — một lời nhắc đồng ý, một nút chuyển đổi tùy chọn. Dashboard và API phía server ghi hai giá trị tương tự. Android không có các phương thức tương đương — các framework đa nền tảng chỉ ghi các giá trị này trên iOS.
Đặt tùy chọn hoàn tiền cho người dùng
Bạn có thể đặt tùy chọn hoàn tiền trong code ứng dụng của mình cho từng lần cài đặt riêng lẻ tùy theo các hành động của người dùng. Tùy chọn này áp dụng cho các yêu cầu hoàn tiền của người dùng trên cả hai cửa hàng. Sử dụng đoạn code bên dưới để đặt tùy chọn:
SDK chỉ chấp nhận các giá trị grant, decline và no-preference. Để đặt Grant prorated refund cho người dùng, hãy sử dụng Dashboard hoặc API phía máy chủ.
Cập nhật sự đồng ý của người dùng
Để thông báo cho Adapty về việc một người dùng cụ thể đã đồng ý hay chưa, hãy dùng phương thức updateCollectingRefundDataConsent. Sự đồng ý chỉ được gửi đến Apple: quy trình xem xét hoàn tiền trên Google Play hoàn toàn không có trường đồng ý nào. Giá trị này được lưu phía server theo hồ sơ người dùng, nên chỉ cần gọi một lần mỗi khi có thay đổi.