Một khoản hoàn tiền xuất hiện trên dashboard của bạn và bạn không biết vì sao. Khách hàng đã dùng ứng dụng trong hai tuần, rồi tiền bị hoàn lại nhưng quyền truy cập của họ vẫn còn. Bạn không có quyền quyết định. Đó là cách hầu hết các nhóm iOS tiếp xúc với quy trình hoàn tiền Apple, tức là sau khi mọi việc đã xảy ra và không có bối cảnh gì cả.
Hiểu cách Apple chấp thuận hoặc từ chối một yêu cầu hoàn tiền là điều quan trọng vì nó quyết định doanh thu thực tế của bạn. Apple nắm quyền quyết định cuối cùng, nhưng nhà phát triển có thể cung cấp dữ liệu để tác động đến quyết định đó, và hầu hết các nhóm chưa từng làm điều này. Nếu bạn muốn giảm thiểu những tổn thất có thể tránh được, hãy bắt đầu với hướng dẫn hoàn tiền Apple của chúng tôi, sau đó đọc tiếp để biết quyết định thực sự được đưa ra như thế nào.
Đây không phải là hướng dẫn giúp người mua hàng được hoàn tiền. Đây là cách cơ chế chấp thuận hoàn tiền của Apple hoạt động, và những gì bạn có thể tác động từ phía nhà phát triển.
Những Điểm Chính
• Apple, không phải nhà phát triển, là bên đưa ra quyết định hoàn tiền cuối cùng cho mọi giao dịch mua trên App Store.
• Apple vận hành một hệ thống Refund Decisioning System, cân nhắc chi tiết giao dịch, lịch sử mua hàng và lịch sử hoàn tiền.
• Đối với các giao dịch mua đủ điều kiện, Apple gửi một CONSUMPTION_REQUEST và cho bạn 12 giờ để phản hồi bằng dữ liệu sử dụng (consumption data).
• Nếu bạn không phản hồi kịp thời, Apple thường sẽ chấp thuận hoàn tiền theo mặc định.
• App Store Server Notifications cho bạn biết kết quả: REFUND khi được chấp thuận, REFUND_DECLINED khi bị từ chối.
• Bạn kiểm soát bằng chứng và tốc độ phản hồi của mình. Bạn không kiểm soát được quyết định cuối cùng.
• Thanh toán rõ ràng, chức năng hoạt động tốt và hỗ trợ nhanh chóng giúp giảm số yêu cầu hoàn tiền bạn nhận được ngay từ đầu.
Điều Gì Xảy Ra Khi Có Người Yêu Cầu Hoàn Tiền Apple?
Khi khách hàng yêu cầu hoàn tiền trên App Store, yêu cầu đó được gửi đến Apple, không phải đến bạn. Khách hàng sử dụng luồng "report a problem" riêng của Apple, và hệ thống của Apple sẽ mở một quy trình xét duyệt. Bạn không nằm trong luồng này trừ khi loại giao dịch mua đủ điều kiện để nhà phát triển cung cấp thông tin.
Apple xử lý toàn bộ quá trình tiếp nhận yêu cầu. Khách hàng chọn một lý do, chẳng hạn như "mua nhầm, không có ý định mua" hoặc "ứng dụng không hoạt động". Hệ thống của Apple ghi nhận lý do đó và bắt đầu đối chiếu với những gì họ đã biết về tài khoản và giao dịch.
Ví dụ. Một người dùng mua gói coin trị giá $9.99, chơi trong một giờ, rồi gửi yêu cầu hoàn tiền với lý do mua nhầm. Apple nhận yêu cầu này trước tiên. Việc bạn có biết đến yêu cầu đó hay không phụ thuộc vào loại sản phẩm và các tín hiệu riêng của Apple.
Cách Apple Xét Duyệt Yêu Cầu Hoàn Tiền
Apple xét duyệt các yêu cầu hoàn tiền thông qua một hệ thống tự động, cân nhắc giao dịch, lịch sử mua hàng của khách hàng và các lần hoàn tiền trước đó của họ. Apple đã công khai gọi đây là Refund Decisioning System. Hệ thống này xem xét các xu hướng, không chỉ riêng yêu cầu đang được xét.
Đối với các giao dịch mua tiêu hao (consumable) và một số loại khác, Apple cũng có thể yêu cầu bạn cung cấp thông tin trước khi đưa ra quyết định. Yêu cầu đó đến dưới dạng thông báo CONSUMPTION_REQUEST. Sau đó, bạn có một khoảng thời gian ngắn để gửi dữ liệu giúp Apple đánh giá yêu cầu.
Giai Đoạn Yêu Cầu Hoàn Tiền | Apple Làm Gì | Nhà Phát Triển Có Thể Làm Gì |
Khách hàng gửi yêu cầu | Ghi nhận lý do và mở quy trình xét duyệt | Chưa có gì, chưa có tín hiệu nào được gửi |
Kiểm tra giao dịch đủ điều kiện | Gửi CONSUMPTION_REQUEST nếu phù hợp | Nhận thông báo trên server của bạn |
Khung thời gian cung cấp bằng chứng | Chờ tối đa 12 giờ để nhận dữ liệu từ bạn | Gửi thông tin sử dụng qua API |
Quyết định | Cân nhắc lịch sử, bằng chứng và lý do | Không làm gì, Apple quyết định |
Gửi kết quả | Gửi REFUND hoặc REFUND_DECLINED | Cập nhật entitlements và hồ sơ |
Điều nhà phát triển cần ghi nhớ Apple đưa ra quyết định, nhưng CONSUMPTION_REQUEST là cơ hội duy nhất để bạn tác động đến quyết định đó. Nếu bỏ lỡ khung thời gian 12 giờ, bạn đã để Apple chỉ nghe một phía câu chuyện từ khách hàng. |
Các Yếu Tố Ảnh Hưởng Đến Việc Chấp Thuận Hoàn Tiền Của Apple
Việc chấp thuận hoàn tiền của Apple phụ thuộc vào lý do được nêu, lịch sử của khách hàng, mức độ sử dụng giao dịch mua, và việc nhà phát triển có gửi dữ liệu hỗ trợ hay không. Không có yếu tố nào tự nó quyết định kết quả. Apple cân nhắc tất cả các yếu tố này cùng nhau.
Dựa trên hướng dẫn chính thức của Apple và cách thiết kế CONSUMPTION_REQUEST, các tín hiệu sau đây có vai trò quan trọng:
• Lý do hoàn tiền mà khách hàng đã chọn.
• Lịch sử mua hàng và hoàn tiền của tài khoản, giúp đánh dấu những người thường xuyên yêu cầu hoàn tiền.
• Mức độ khách hàng đã sử dụng sản phẩm tiêu hao.
• Việc có sẵn bản mẫu miễn phí, bản thử nghiệm, hoặc chức năng rõ ràng trước khi mua hay không.
• Dữ liệu sử dụng mà nhà phát triển gửi trong khung thời gian 12 giờ.
Phân tích. Yếu tố lịch sử tài khoản là lý do vì sao một người mua lần đầu và một người thường xuyên hoàn tiền có thể nhận được kết quả khác nhau cho cùng một yêu cầu. Đây là cách diễn giải của người có kinh nghiệm về hệ thống, không phải một quy tắc được công bố chính thức, vì vậy hãy xem đó là một xu hướng thay vì một điều chắc chắn.
App Store Server Notifications Hỗ Trợ Nhà Phát Triển Như Thế Nào
App Store Server Notifications là các thông báo Apple gửi đến server của bạn về các sự kiện mua hàng, bao gồm cả hoàn tiền. Đây là cách bạn biết được một khoản hoàn tiền đã xảy ra, liệu nó có được chấp thuận hay không, và vì sao. Nếu không có các thông báo này, hoàn tiền sẽ hoàn toàn vô hình đối với backend của bạn.
Các thông báo phiên bản 2 gọn hơn vì mỗi thông báo chỉ chứa giao dịch tương ứng với sự kiện đó. Đối với hoàn tiền, các loại quan trọng gồm CONSUMPTION_REQUEST khi Apple muốn bạn cung cấp thông tin, REFUND khi một khoản hoàn tiền được chấp thuận, và REFUND_DECLINED khi yêu cầu bị từ chối. Payload của REFUND cũng chứa revocationReason và revocationDate.
Một khoản hoàn tiền thông thường cũng có thể âm thầm đảo ngược một giao dịch trong khi quyền truy cập vẫn còn hiệu lực, vì vậy các thông báo này chính là thứ giúp server của bạn có thể phản ứng kịp.
Ví dụ. Server của bạn nhận được một thông báo REFUND kèm revocationReason. Bạn đọc transaction ID ban đầu, thu hồi entitlement, và cập nhật hồ sơ. Nếu không có thông báo, không điều gì trong số đó xảy ra.
Những Gì Nhà Phát Triển Có Thể Và Không Thể Kiểm Soát
Nhà phát triển kiểm soát được tốc độ và chất lượng phản hồi của mình, mức độ rõ ràng trong thanh toán, và trải nghiệm sản phẩm. Nhà phát triển không kiểm soát được quyết định cuối cùng của Apple, lý do mà khách hàng đưa ra, hay cách Apple tính điểm nội bộ. Hiểu rõ sự phân chia này giúp bạn giữ kỳ vọng thực tế.
Hành Động Của Nhà Phát Triển | Xét Duyệt Của Apple | Kết Quả Cuối Cùng |
Gửi dữ liệu sử dụng đúng hạn | Cân nhắc cùng với các tín hiệu tài khoản | Có thể từ chối các yêu cầu thiếu căn cứ |
Không gửi gì | Chỉ dùng tín hiệu riêng của mình | Thường chấp thuận theo mặc định |
Điều khoản thử nghiệm và thanh toán rõ ràng | Thấy dấu hiệu nội dung mẫu | Ít yêu cầu kiểu "tôi không cho phép" hơn |
Hỗ trợ trong ứng dụng nhanh chóng | Apple không thấy trực tiếp | Ít yêu cầu đến được Apple hơn |
Các Lý Do Phổ Biến Khiến Apple Có Thể Từ Chối Hoàn Tiền
Apple có thể từ chối một yêu cầu hoàn tiền khi yêu cầu đó không khớp với bằng chứng, khi khách hàng có xu hướng thường xuyên hoàn tiền, hoặc khi dữ liệu sử dụng mạnh mẽ cho thấy giao dịch mua đã được sử dụng đúng mục đích. Thông báo REFUND_DECLINED báo hiệu các kết quả này đối với các yêu cầu được thực hiện qua StoreKit.
Yêu cầu có khả năng bị từ chối cao hơn khi:
• Khách hàng đã tiêu thụ phần lớn một giao dịch mua tiêu hao.
• Tài khoản cho thấy hoạt động hoàn tiền lặp lại trên nhiều giao dịch mua.
• Nhà phát triển đã gửi bằng chứng rõ ràng về việc sử dụng bình thường, đúng như kỳ vọng.
• Có bản mẫu hoặc bản thử nghiệm sẵn có, làm yếu đi lý do "không biết".
Ví dụ. Một người dùng yêu cầu hoàn tiền cho gói coin sau khi đã tiêu gần hết số coin đó. Nhà phát triển gửi dữ liệu sử dụng cho thấy số coin đã tiêu. Bằng chứng đó cho Apple một lý do rõ ràng để từ chối.
Các Thực Hành Tốt Nhất Cho Nhà Phát Triển
Thực hành tốt nhất rất đơn giản: nắm bắt mọi tín hiệu hoàn tiền, phản hồi CONSUMPTION_REQUEST nhanh chóng bằng dữ liệu thực, và giảm bớt những lý do khiến người dùng yêu cầu hoàn tiền. Bạn không thể "thắng" quyết định, nhưng bạn có thể định hình các dữ liệu đầu vào.
• Thiết lập App Store Server Notifications V2 và xử lý CONSUMPTION_REQUEST, REFUND, và REFUND_DECLINED.
• Tự động hóa phản hồi dữ liệu sử dụng để đảm bảo nó được gửi trong khung thời gian 12 giờ.
• Liên kết các giao dịch mua với người dùng bằng appAccountToken để bạn có thể phản hồi bằng hoạt động thực tế.
• Làm rõ điều khoản thanh toán và chi tiết bản thử nghiệm trước khi thanh toán.
• Thu hồi quyền truy cập khi một yêu cầu hoàn tiền được chấp thuận, vì Apple không tự xóa entitlements cho bạn.
Nếu khối lượng giao dịch của bạn lớn, việc xử lý thủ công sẽ không theo kịp. Các nhóm tự động hóa phản hồi CONSUMPTION_REQUEST giữ lại được doanh thu mà các nhóm im lặng đành phải trả lại theo mặc định.
Điều nhà phát triển cần ghi nhớ Bạn không thể kiểm soát quyết định của Apple, nhưng bạn kiểm soát được việc Apple có nghe thấy phía của bạn hay không. Phản hồi nhanh, có bằng chứng, và thanh toán rõ ràng là những yếu tố thực sự có thể thay đổi kết quả hoàn tiền. |
Lời Kết
Apple quyết định mọi khoản hoàn tiền trên App Store, và điều đó sẽ không thay đổi. Điều thay đổi các con số của bạn là việc server của bạn có phản hồi khi Apple yêu cầu thông tin hay không, và sản phẩm cùng hệ thống thanh toán của bạn rõ ràng đến mức nào trước khi có ai yêu cầu hoàn lại tiền.
Hãy xem luồng hoàn tiền như một hệ thống bạn cung cấp dữ liệu, không phải một bản án bạn chờ đợi. Hãy nắm bắt các thông báo, phản hồi CONSUMPTION_REQUEST bằng dữ liệu thực, và giữ entitlements luôn được đồng bộ. Các nhóm làm được điều này âm thầm bảo vệ phần doanh thu mà những nhóm khác không bao giờ nhận ra đã mất đi.
Câu hỏi thường gặp
Apple quyết định mọi khoản hoàn tiền, không phải nhà phát triển.
Nhà phát triển có 12 giờ để gửi dữ liệu sử dụng (consumption data).
Đây là một thông báo của Apple yêu cầu dữ liệu sử dụng cho một yêu cầu hoàn tiền đủ điều kiện.
Apple gửi một thông báo server REFUND hoặc REFUND_DECLINED.
Không. Nhà phát triển chỉ có thể cung cấp dữ liệu sử dụng để hỗ trợ quyết định của Apple.
Có. Mức độ sử dụng giao dịch mua là một trong những yếu tố Apple xem xét.
Có. Apple quyết định việc hoàn tiền cho các gói đăng ký và gửi thông báo hoàn tiền.
Server của bạn nên thu hồi quyền truy cập hoặc entitlement của khách hàng.



