Tất cả bài viết
Deep diveĐọc trong 8 phút

Mỗi loại mua hàng trong ứng dụng hoàn tiền theo cách khác nhau, và chỉ hai loại từng hỏi đến phía bạn

Sản phẩm tiêu hao, sản phẩm không tiêu hao, gói đăng ký tự động gia hạn, và gói đăng ký không gia hạn mỗi loại hoàn tiền theo quy tắc riêng. Có loại khôi phục được, có loại biến mất ngay khi đã dùng, và chỉ yêu cầu sản phẩm tiêu hao cùng yêu cầu gói đăng ký mới từng đòi nhà phát triển đưa ra bằng chứng. Đây là cách loại mua hàng trong ứng dụng bạn bán thay đổi tác động của một khoản hoàn tiền đối với bạn.

Một chồng tiền xu, một ổ khóa móc, một cuốn lịch, và một tấm vé xếp thành hàng trên bàn có ánh sáng ấm, minh họa cách mỗi loại mua hàng trong ứng dụng hoàn tiền khác nhau

Điểm chính

  • Có bốn loại mua hàng trong ứng dụng trên App Store, gồm tiêu hao, không tiêu hao, gói đăng ký tự động gia hạn, và gói đăng ký không gia hạn, và mỗi loại hoàn tiền theo quy tắc khác nhau. Google Play sắp xếp cùng danh mục đó thành sản phẩm mua một lần và gói đăng ký.
  • Chỉ hai luồng của Apple từng đòi nhà phát triển đưa ra bằng chứng trước khi một khoản hoàn tiền được quyết định, đó là CONSUMPTION_REQUEST của sản phẩm tiêu hao và, kể từ WWDC24, CONSUMPTION_REQUEST của gói đăng ký tự động gia hạn. Sản phẩm không tiêu hao và gói đăng ký không gia hạn hầu như không bao giờ mở cửa sổ đó.
  • Sản phẩm tiêu hao mang rủi ro hoàn tiền lớn nhất. Chúng bị tiêu ngay khi giao, không thể khôi phục, và giá trị của chúng đã mất trước khi khoản hoàn tiền đến, chính vì vậy Apple hỏi dữ liệu tiêu thụ của bạn về chúng.
  • Sản phẩm không tiêu hao là vĩnh viễn và khôi phục được, nên một khoản hoàn tiền phải thu hồi quyền lợi mà tài khoản của khách vẫn còn nhớ. Trên Google Play, một giao dịch bạn không xác nhận trong vòng 72 hours sẽ tự động được hoàn tiền và quyền truy cập bị rút lại.
  • Gói đăng ký tự động gia hạn hoàn tiền theo đồng hồ. Apple tính mức đã tiêu thụ từ thời gian đã trôi qua, chứ không phải từ một con số bạn gửi, nên việc của bạn là một refundPreference trung thực và bằng chứng sử dụng đứng sau nó.
  • Trên App Store chỉ Apple mới có thể phát hành hoàn tiền cho một khoản mua hàng trong ứng dụng. Trên Google Play bạn có thể tự hoàn tiền một đơn hàng từ Play Console, điều này khiến loại sản phẩm bạn bán trở thành quyết định của chính bạn phải gánh vác.
  • Dù là loại nào, một khoản hoàn tiền trả lại hoa hồng của cửa hàng cho khách nhưng không bao giờ trả lại chi phí bạn đã bỏ ra. Phần tính toán, các lệnh gọi API, dung lượng lưu trữ, và các khoản chi trả mà một sản phẩm tiêu hao đã kích hoạt vẫn mất trắng.

Loại mua hàng trong ứng dụng bạn chọn trong App Store Connect hay Play Console quyết định nhiều hơn là cách sản phẩm được bán. Nó quyết định một khoản hoàn tiền hành xử ra sao khi ập đến, liệu khách có thể lấy lại món đồ miễn phí sau đó hay không, và liệu phía bạn có từng được hỏi đến trước khi tiền chuyển đi hay không. Một gói tiền xu, một lượt mở khóa trọn đời, một gói đăng ký hằng tháng, và một vé mùa dùng một lần là bốn đối tượng pháp lý và kỹ thuật khác nhau, và các quy tắc hoàn tiền đối xử với chúng đúng như vậy. Đa số nhà phát triển phát hành tất cả chúng qua cùng một đoạn mã mua hàng rồi thắc mắc tại sao các khoản hoàn tiền lại thấy thiếu nhất quán. Chúng không thiếu nhất quán. Chúng đặc thù theo loại.

Đây là mỗi loại mua hàng trong ứng dụng là gì, một khoản hoàn tiền tác động lên nó ra sao, và tại sao chỉ hai trong bốn loại từng định tuyến quyết định qua máy chủ của bạn.

Bốn loại mua hàng trong ứng dụng, và tại sao hoàn tiền phân chia theo chúng

Apple định nghĩa bốn loại sản phẩm. Sản phẩm tiêu hao được dùng hết rồi mua lại: tiền trong game, gợi ý, nạp lại năng lượng. Sản phẩm không tiêu hao được mua một lần và giữ mãi mãi: mở khóa bản pro, nâng cấp gỡ quảng cáo, một gói màn chơi tải về được. Gói đăng ký tự động gia hạn tính phí theo chu kỳ lặp lại cho đến khi khách hủy. Gói đăng ký không gia hạn cấp quyền truy cập trong một khoảng thời gian cố định không tự gia hạn, như một mùa nội dung bán theo một kỳ hạn duy nhất.

Google Play sắp xếp cùng danh mục đó theo cách khác nhưng đi đến cùng một chỗ. Nó chia sản phẩm thành sản phẩm mua một lần và gói đăng ký, và một sản phẩm mua một lần được đánh dấu là tiêu hao hay không tùy theo việc ứng dụng của bạn có tiêu thụ nó sau khi mua hay không. Từ ngữ khác nhau. Hậu quả hoàn tiền thì không.

Loại mua hàng trong ứng dụngKhôi phục được sau hoàn tiềnGiá trị tại thời điểm hoàn tiềnApple có hỏi bằng chứng của bạn không
Tiêu haoKhông, không thể khôi phụcThường đã tiêuCó, CONSUMPTION_REQUEST
Không tiêu haoCó, gắn với tài khoảnVẫn được giữ, quyền lợi bị thu hồiHiếm khi
Gói đăng ký tự động gia hạnCó, khi còn hoạt độngChia theo tỷ lệ thời gian đã trôi quaCó, kể từ WWDC24
Gói đăng ký không gia hạnỨng dụng của bạn phải khôi phụcKỳ hạn đã trôi qua một phầnHiếm khi

Sản phẩm tiêu hao là loại mà gian lận hoàn tiền thực sự nhắm tới

Sản phẩm tiêu hao là ca hoàn tiền khó nhất bạn sẽ đối mặt, và không phải ngẫu nhiên đó là loại mà Apple đã xây dựng yêu cầu tiêu thụ quanh nó. Ngay khoảnh khắc một khách mua 10,000 xu và máy chủ của bạn cấp chúng, giá trị đã được giao. Nếu họ tiêu số xu đó rồi nộp đơn xin hoàn tiền, cửa hàng có thể trả lại tiền cho họ, nhưng xu đã mất và cả những gì bạn đã tốn để đáp ứng chúng cũng vậy. Chính công cụ của Apple phản ánh điều này: một sản phẩm tiêu hao rời khỏi bản ghi giao dịch sau khi hoàn tất và không bao giờ mang ngày hủy, vì chẳng có gì tồn tại lâu dài để hủy.

Đó là lý do sản phẩm tiêu hao là loại sản phẩm mà bằng chứng có giá trị. Khi một khách yêu cầu hoàn tiền cho một sản phẩm tiêu hao, Apple gửi cho máy chủ của bạn một CONSUMPTION_REQUEST và chờ tối đa 12 hours cho một lệnh gọi Send Consumption Information. Trong lệnh gọi đó bạn đặt một deliveryStatus và, khi đã giao, một consumptionPercentage. Phần trăm là một số nguyên tính bằng milliunits từ 0 đến 100,000, trong đó 100,000 nghĩa là khách đã dùng hết toàn bộ giao dịch mua. Một số dư tiền xu mà hồ sơ của bạn cho thấy đã tiêu hết là một con số 100,000 bạn có thể báo cáo, và đó là dữ kiện đơn lẻ mạnh nhất bạn có thể đưa ra trước một khiếu nại mua nhầm.

Sản phẩm tiêu hao không thể khôi phục, nên thời điểm là tất cả

Vì một sản phẩm tiêu hao không thể khôi phục, bạn không thể đòi nó về theo cách bạn có thể thu hồi một gói đăng ký. Một khi khoản hoàn tiền đã được cấp, sự bảo vệ duy nhất của bạn là bản ghi bạn đã giữ tại thời điểm bán. Nếu bạn không ghi lại việc giao và tiêu thụ khi nó diễn ra, bạn đang dựng lại nó dưới một chiếc đồng hồ 12 giờ, đó là thời điểm tệ nhất để đi tìm dữ liệu. Hãy ghi lại lúc vào, chứ không phải lúc ra.

Gói đăng ký hoàn tiền theo một chiếc đồng hồ bạn không kiểm soát

Gói đăng ký tự động gia hạn là nơi phần lớn ứng dụng kiếm tiền, và bản cập nhật hoàn tiền tại WWDC24 cuối cùng đã định tuyến chúng qua cùng cửa sổ bằng chứng như sản phẩm tiêu hao. Kể từ App Store Server Notifications version 2.11, một yêu cầu hoàn tiền cho gói đăng ký tự động gia hạn cũng kích hoạt một CONSUMPTION_REQUEST. Vậy nên những khoản hoàn tiền gói đăng ký trước đây được quyết định hoàn toàn không có bạn thì nay đến kèm một cửa sổ 12 giờ.

Điểm mấu chốt là cách tiêu thụ được đo lường. Với một gói đăng ký tự động gia hạn, Apple không muốn bạn bịa ra một phần trăm sử dụng. Apple tự tính tiêu thụ từ thời gian đã trôi qua, nên một người đã dùng sáu tháng của một gói năm sẽ được đọc là khoảng nửa đã tiêu thụ dù bạn gửi gì đi nữa. Đòn bẩy của bạn không phải phần trăm. Mà là một refundPreference trung thực gồm GRANT_FULL, GRANT_PRORATED, hoặc DECLINE, được hậu thuẫn bởi bất kỳ tín hiệu sử dụng nào bạn thực sự nắm giữ. Hãy gửi lựa chọn mà bằng chứng ủng hộ và để Apple cân nhắc nó.

Gói đăng ký không gia hạn gần với một lượt mở khóa dùng một lần hơn

Một gói đăng ký không gia hạn là một kỳ hạn cố định mà khách mua một lần, và về mặt hoàn tiền nó hành xử giống một sản phẩm không tiêu hao hơn là một gói tự động gia hạn. Apple hiếm khi định tuyến một CONSUMPTION_REQUEST đến nó, và không có gia hạn tự động nào để chia theo tỷ lệ. Ứng dụng của bạn chịu trách nhiệm theo dõi kỳ hạn và khôi phục nó trên khắp các thiết bị của khách, nên một khoản hoàn tiền nghĩa là kết thúc một cửa sổ truy cập mà chính bạn đang quản lý, chứ không phải cửa sổ Apple đang bấm giờ hộ bạn.

Sản phẩm không tiêu hao là vĩnh viễn, điều đó có tính hai mặt

Một sản phẩm không tiêu hao là thứ sạch sẽ nhất để bán và một cái bẫy âm thầm khi hoàn tiền. Nó được mua một lần, nó gắn với tài khoản cửa hàng của khách mãi mãi, và cửa hàng có thể khôi phục nó về bất kỳ thiết bị nào theo yêu cầu. Tính vĩnh viễn đó là một tính năng cho đến khi một khoản hoàn tiền ập đến, vì giờ đây bạn phải thu hồi một quyền lợi mà tài khoản vẫn còn nhớ. Nếu logic thu hồi của bạn chỉ kiểm tra tại thời điểm mua và không bao giờ xác minh lại, một khách đã được hoàn tiền có thể khôi phục giao dịch mua và bước thẳng trở lại vào tính năng trả phí.

Google Play thêm một cạnh sắc ở đây khiến các nhà phát triển mới sập bẫy. Nếu ứng dụng của bạn không xác nhận một giao dịch mua trong vòng 72 hours, Google tự động hoàn tiền nó và thu hồi quyền lợi. Một sản phẩm không tiêu hao mà đoạn mã thanh toán của bạn quên xác nhận sẽ không nằm lơ lửng. Nó tự đảo ngược, và khách mất quyền truy cập vào thứ họ đã trả tiền, mà chẳng hề có yêu cầu nào từ phía họ.

Một chiếc điện thoại thông minh hiển thị xác nhận thanh toán bên cạnh một chồng tiền xu nhỏ với vài đồng bị gạt sang một bên, minh họa cách mỗi loại mua hàng trong ứng dụng hoàn tiền theo các quy tắc khác nhau

Ai thậm chí có thể phát hành hoàn tiền cũng thay đổi theo cửa hàng và loại

Trước khi bạn lên kế hoạch cho bất kỳ phản hồi hoàn tiền nào, hãy biết ai cầm bút. Trên App Store, chỉ Apple mới có thể phát hành hoàn tiền cho một khoản mua hàng trong ứng dụng, với mọi loại sản phẩm. Mã StoreKit của bạn không thể hoàn tiền một giao dịch mua, và bộ phận hỗ trợ của bạn cũng không thể. Bạn có thể gửi dữ liệu tiêu thụ để tác động đến quyết định của Apple trên hai loại có mở cửa sổ, và đó là toàn bộ quyền kiểm soát trực tiếp của bạn.

Google Play thì ngược lại. Bạn có thể tự hoàn tiền một sản phẩm mua một lần hoặc một đơn hàng gói đăng ký từ Play Console hoặc từ Voided Purchases và các API hoàn tiền, toàn phần hoặc một phần. Sự tự do đó cũng là một trách nhiệm: một khoản hoàn tiền bạn phát hành cho một sản phẩm tiêu hao vẫn phải thu hồi món đồ trong backend của chính bạn, vì Google không biết tiền xu của bạn đã bị tiêu. Loại sản phẩm bạn chọn quyết định việc thu hồi đó sạch sẽ đến đâu.

Mỗi loại hoàn tiền thực sự tốn của bạn những gì

Giá được hoàn lại là dòng mà ai cũng để mắt tới và là phần nhỏ nhất của hóa đơn. Khi bất kỳ cửa hàng nào cấp một khoản hoàn tiền, nó đảo ngược cả hoa hồng của chính mình đi kèm, nên bạn mất phần thu ròng chứ không phải toàn bộ giá niêm yết. Đó là tin tốt, và nó dừng ở đó. Thứ cửa hàng trả lại là phần chiết khấu nó đã lấy. Thứ nó không bao giờ trả lại là những gì bạn đã tiêu để đáp ứng giao dịch bán, và con số đó thay đổi mạnh theo loại sản phẩm.

Sản phẩm tiêu hao là khoản hoàn tiền đắt đỏ

Một sản phẩm tiêu hao được hoàn tiền là loại có thể tốn hơn cả giá của nó. Giả sử một khách mua 5,000 tín dụng mà mỗi tín dụng kích hoạt một lệnh gọi suy luận trả phí, tiêu 4,000 trong số đó, rồi nộp đơn xin hoàn tiền. Cửa hàng trả lại giá và hoa hồng của nó, nhưng phần tính toán, hóa đơn API theo token, những hình ảnh bạn đã tạo, và bất kỳ khoản chi trả cho người sáng tạo nào mà số tín dụng đó tài trợ đều đã tiêu hết. Một khoản hoàn tiền sản phẩm không tiêu hao ít nhất kéo một quyền lợi trở lại quyền kiểm soát của bạn. Một khoản hoàn tiền sản phẩm tiêu hao kéo lại một giao dịch bán mà toàn bộ chi phí bạn đã trả.

Một khoản bồi hoàn là phiên bản nặng hơn của cùng hóa đơn đó

Một khoản hoàn tiền và một khoản bồi hoàn là hai sự kiện khác nhau, và khoảng cách giữa chúng nay đã có một ngày cụ thể. Khi một khách khiếu nại khoản phí với ngân hàng của họ thay vì hỏi cửa hàng, một khoản bồi hoàn đã hoàn tất là quyết định cuối cùng từ phía ngân hàng. Với các đơn hàng Google Play đặt vào hoặc sau ngày 3 tháng 8 năm 2026, một khoản bồi hoàn bị thua sẽ tính cho nhà phát triển giá mua trừ đi phí dịch vụ của Play, cộng với phí bồi hoàn của ngân hàng, một khoản phí cố định do mạng lưới thẻ ấn định. Google Play định tuyến một khoản bồi hoàn đến bạn để xem xét qua orders.reviewrefund với cửa sổ 24 giờ, luồng Google duy nhất hỏi bằng chứng của bạn, và nó có thể ập đến với bất kỳ loại sản phẩm nào.

Cách phản hồi khi loại sản phẩm quyết định luật chơi

Bạn không thể thay đổi loại sản phẩm mà một khoản hoàn tiền ập vào sau khi bán, nhưng bạn có thể ngừng xử lý cả bốn loại theo cùng một cách.

  • Ghi lại việc giao và tiêu thụ cho các sản phẩm tiêu hao ngay khoảnh khắc chúng diễn ra. Nhật ký đó là toàn bộ hàng phòng ngự của bạn trên loại duy nhất không thể khôi phục, và cửa sổ 12 giờ là quá ngắn để dựng nó lại từ đầu.
  • Xác minh lại quyền lợi cho các sản phẩm không tiêu hao sau một khoản hoàn tiền, chứ không chỉ tại thời điểm mua. Một lệnh gọi khôi phục phải kiểm tra trạng thái hiện tại, để một khách đã được hoàn tiền không thể bước trở lại vào tính năng trả phí.
  • Trả lời cả hai cửa sổ bằng chứng một cách tự động. Một yêu cầu tiêu thụ 12 giờ và một lượt xem xét bồi hoàn 24 giờ không thể chờ ai đó đọc hộp thư đến, và chúng không kéo dài thêm vì múi giờ.
  • Chỉ đánh giá hàng phòng ngự hoàn tiền của bạn trên hai loại có thể tranh biện. Số lượng hoàn tiền tăng lên trên những loại chưa bao giờ mở cửa sổ là một tín hiệu về sản phẩm hoặc giá cả, chứ không phải một thất bại của bằng chứng của bạn.

Tất cả những điều này không phải là để thắng cửa hàng. Nó là để khớp phản hồi của bạn với đối tượng thực sự được bán ra. RefundHalt trả lời CONSUMPTION_REQUEST của sản phẩm tiêu hao và gói đăng ký cùng lượt xem xét Google Play orders.reviewrefund một cách tự động, bên trong cửa sổ, với bằng chứng giao hàng và sử dụng mà bạn đã ghi lại tại thời điểm bán, và nó giữ những khoản hoàn tiền mà không cửa sổ nào từng cho bạn tranh biện trong sổ cái riêng của chúng, để con số bạn dùng để tự đánh giá mình vẫn trung thực.

Câu hỏi thường gặp

Tôi có thể tự hoàn tiền một khoản mua hàng trong ứng dụng không?
Điều đó tùy thuộc vào cửa hàng. Trên App Store, chỉ Apple mới có thể phát hành hoàn tiền cho một khoản mua hàng trong ứng dụng, với mọi loại sản phẩm, nên ảnh hưởng duy nhất của bạn là dữ liệu tiêu thụ bạn gửi trên hai luồng có hỏi đến nó. Trên Google Play bạn có thể tự hoàn tiền một sản phẩm mua một lần hoặc một đơn hàng gói đăng ký từ Play Console hoặc từ các API hoàn tiền, toàn phần hoặc một phần.
Loại mua hàng trong ứng dụng nào có rủi ro hoàn tiền cao nhất?
Sản phẩm tiêu hao. Một sản phẩm tiêu hao bị tiêu ngay khi giao, không thể khôi phục, và giá trị của nó thường đã mất trước khi yêu cầu hoàn tiền đến. Đó chính là lý do Apple gửi một CONSUMPTION_REQUEST cho các sản phẩm tiêu hao và hỏi dữ liệu tiêu thụ của bạn, và là lý do chi phí tính toán hay API đứng sau một sản phẩm tiêu hao có thể khiến khoản hoàn tiền của nó tốn hơn cả giá bán.
Apple có gửi một yêu cầu tiêu thụ cho mọi loại mua hàng không?
Không. Apple gửi một CONSUMPTION_REQUEST cho các sản phẩm tiêu hao và, kể từ bản cập nhật WWDC24, cho các gói đăng ký tự động gia hạn. Sản phẩm không tiêu hao và gói đăng ký không gia hạn hiếm khi mở cửa sổ bằng chứng đó. Với mọi loại, bản thân khoản hoàn tiền vẫn do Apple quyết định, chứ không phải bạn.
Một khách có thể khôi phục một sản phẩm tiêu hao sau khi hoàn tiền không?
Không. Sản phẩm tiêu hao không thể khôi phục, đó là điều khiến khoản hoàn tiền của chúng là cuối cùng đối với bạn. Sản phẩm không tiêu hao và các gói đăng ký đang hoạt động gắn với tài khoản cửa hàng của khách và có thể được khôi phục, nên một khoản hoàn tiền trên các loại đó phải thu hồi một quyền lợi mà backend của bạn nên xác minh lại thay vì tin tưởng từ thời điểm mua.
Hoàn tiền gói đăng ký được tính khác nhau như thế nào?
Với một gói đăng ký tự động gia hạn, Apple tính mức đã tiêu thụ từ thời gian đã trôi qua thay vì từ một phần trăm bạn gửi, nên nửa kỳ hạn được đọc là khoảng nửa đã tiêu thụ. Vai trò của bạn là một refundPreference trung thực gồm GRANT_FULL, GRANT_PRORATED, hoặc DECLINE, được hậu thuẫn bởi bằng chứng sử dụng bạn nắm giữ, chứ không phải một con số tiêu thụ bịa ra.

Nguồn và tài liệu đọc thêm

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 tiếp theo đã đang trên đường đến.

Thiết lập RefundHalt trong khoảng thời gian bạn cần để đọc thêm một email hỗ trợ về khoản hoàn tiền mà mình chưa kịp phản biện.