Wszystkie artykuły
Deep dive8 min czytania

Każdy typ zakupu w aplikacji jest zwracany inaczej, a tylko dwa z nich w ogóle pytają o twoją stronę

Produkty zużywalne, produkty niezużywalne, subskrypcje odnawialne automatycznie oraz subskrypcje nieodnawialne, każdy z nich jest zwracany według własnych zasad. Niektóre można przywrócić, niektóre znikają po zużyciu, a tylko żądanie dotyczące produktu zużywalnego i żądanie dotyczące subskrypcji kiedykolwiek proszą dewelopera o dowody. Oto jak typ zakupu w aplikacji, który sprzedajesz, zmienia to, co zwrot robi z tobą.

Stos monet, kłódka, kalendarz i bilet w rzędzie na ciepło oświetlonym biurku, ilustrujące, jak każdy typ zakupu w aplikacji jest zwracany inaczej

Najważniejsze wnioski

  • W App Store istnieją cztery typy zakupów w aplikacji, zużywalny, niezużywalny, subskrypcja odnawialna automatycznie i subskrypcja nieodnawialna, i każdy jest zwracany według innych zasad. Google Play porządkuje ten sam katalog na produkty jednorazowe i subskrypcje.
  • Tylko dwa procesy Apple kiedykolwiek proszą dewelopera o dowody przed podjęciem decyzji o zwrocie, CONSUMPTION_REQUEST dla produktu zużywalnego oraz, od WWDC24, CONSUMPTION_REQUEST dla subskrypcji odnawialnej automatycznie. Produkty niezużywalne i subskrypcje nieodnawialne rzadko w ogóle otwierają to okno.
  • Produkty zużywalne niosą największe ryzyko zwrotu. Są zużywane przy dostawie, nie można ich przywrócić, a ich wartość znika, zanim nadejdzie zwrot, co jest dokładnie powodem, dla którego Apple prosi o twoje dane o zużyciu w ich przypadku.
  • Produkty niezużywalne są trwałe i możliwe do przywrócenia, więc zwrot musi odebrać uprawnienie, które konto klienta wciąż pamięta. W Google Play zakup, którego nie potwierdzisz w ciągu 72 hours, jest automatycznie zwracany, a dostęp zostaje cofnięty.
  • Subskrypcje odnawialne automatycznie są zwracane według zegara. Apple oblicza, ile zostało zużyte, na podstawie upływającego czasu, a nie liczby, którą wysyłasz, więc twoim zadaniem jest uczciwe refundPreference i dowody zużycia za nim stojące.
  • W App Store tylko Apple może wydać zwrot za zakup w aplikacji. W Google Play możesz sam zwrócić zamówienie z poziomu Play Console, co sprawia, że typ produktu, który sprzedałeś, staje się twoją własną odpowiedzialnością.
  • Niezależnie od typu, zwrot oddaje klientowi prowizję sklepu, ale nigdy nie zwraca twoich wydatków. Moc obliczeniowa, wywołania API, przechowywanie i wypłaty, które produkt zużywalny już uruchomił, pozostają stracone.

Typ zakupu w aplikacji, który wybrałeś w App Store Connect lub Play Console, decyduje o czymś więcej niż tylko o tym, jak produkt jest sprzedawany. Decyduje, jak zachowuje się zwrot, gdy nadejdzie, czy klient może odzyskać przedmiot za darmo później, i czy kiedykolwiek zostaniesz zapytany o twoją stronę, zanim pieniądze się przesuną. Pakiet monet, dożywotnie odblokowanie, miesięczna subskrypcja i jednorazowy karnet sezonowy to cztery różne obiekty prawne i techniczne, a zasady zwrotu traktują je właśnie tak. Większość deweloperów wysyła je wszystkie przez ten sam kod zakupu, a potem zastanawia się, dlaczego zwroty wydają się niespójne. Nie są niespójne. Są specyficzne dla typu.

Oto czym jest każdy typ zakupu w aplikacji, jak trafia w niego zwrot i dlaczego tylko dwa z czterech kiedykolwiek kierują decyzję przez twój serwer.

Cztery typy zakupów w aplikacji, i dlaczego zwroty dzielą się według nich

Apple definiuje cztery typy produktów. Produkt zużywalny jest wykorzystywany i kupowany ponownie: waluta w grze, podpowiedzi, uzupełnienie energii. Produkt niezużywalny jest kupowany raz i zachowywany na zawsze: odblokowanie pro, ulepszenie usuwające reklamy, pakiet poziomów do pobrania. Subskrypcja odnawialna automatycznie jest rozliczana w powtarzającym się cyklu, dopóki klient nie anuluje. Subskrypcja nieodnawialna daje dostęp na stały okres, który nie odnawia się samodzielnie, jak sezon treści sprzedawany jako pojedynczy termin.

Google Play porządkuje ten sam katalog inaczej, ale ląduje w tym samym miejscu. Dzieli produkty na produkty jednorazowe i subskrypcje, a produkt jednorazowy jest oznaczony jako zużywalny lub nie w zależności od tego, czy twoja aplikacja zużywa go po zakupie. Słowa się różnią. Konsekwencje zwrotu nie.

Typ zakupu w aplikacjiMożliwość przywrócenia po zwrocieWartość w chwili zwrotuCzy Apple prosi o twoje dowody
ZużywalnyNie, nie można przywrócićZwykle już zużytyTak, CONSUMPTION_REQUEST
NiezużywalnyTak, powiązany z kontemWciąż posiadany, uprawnienie odebraneRzadko
Subskrypcja odnawialna automatycznieTak, gdy aktywnaProporcjonalnie do upływającego czasuTak, od WWDC24
Subskrypcja nieodnawialnaTwoja aplikacja musi ją przywrócićTermin częściowo upłynąłRzadko

Produkty zużywalne to typ, w który faktycznie celuje oszustwo związane ze zwrotami

Produkt zużywalny to najtrudniejszy przypadek zwrotu, z jakim się spotkasz, i nie przypadkiem to właśnie wokół niego Apple zbudowało żądanie zużycia. W chwili, gdy klient kupuje 10,000 monet, a twój serwer je przyznaje, wartość jest dostarczona. Jeśli wyda te monety, a potem złoży wniosek o zwrot, sklep może oddać jego pieniądze, ale monety zniknęły, a wraz z nimi to, co kosztowało cię ich uhonorowanie. Własne narzędzia Apple odzwierciedlają to: produkt zużywalny opuszcza rekord transakcji po zakończeniu i nigdy nie nosi daty anulowania, ponieważ nie ma niczego trwałego do anulowania.

Dlatego produkt zużywalny to typ produktu, w którym dowody się opłacają. Gdy klient żąda zwrotu za produkt zużywalny, Apple wysyła do twojego serwera CONSUMPTION_REQUEST i czeka do 12 hours na wywołanie Send Consumption Information. W tym wywołaniu ustawiasz deliveryStatus oraz, jeśli dostarczyłeś, consumptionPercentage. Procent jest liczbą całkowitą w milliunits od 0 do 100,000, gdzie 100,000 oznacza, że klient wykorzystał cały zakup. Saldo monet, które twoje zapisy pokazują jako w pełni wydane, to 100,000, które możesz zgłosić, i jest to najsilniejszy pojedynczy fakt, jaki możesz przedstawić wobec roszczenia o niezamierzony zakup.

Produktów zużywalnych nie można przywrócić, więc czas jest wszystkim

Ponieważ produktu zużywalnego nie można przywrócić, nie możesz go odzyskać tak, jak możesz odebrać subskrypcję. Gdy zwrot zostanie przyznany, twoją jedyną ochroną jest zapis, który prowadziłeś w chwili sprzedaży. Jeśli nie zarejestrowałeś dostawy i zużycia, gdy się to działo, odtwarzasz to pod zegarem 12 hours, co jest najgorszym momentem na szukanie danych. Zapisuj to na wejściu, a nie na wyjściu.

Subskrypcje są zwracane według zegara, którego nie kontrolujesz

Subskrypcje odnawialne automatycznie to miejsce, w którym większość aplikacji zarabia pieniądze, a aktualizacja zwrotów z WWDC24 w końcu skierowała je przez to samo okno dowodowe co produkty zużywalne. Od App Store Server Notifications version 2.11 żądanie zwrotu dla subskrypcji odnawialnej automatycznie również wywołuje CONSUMPTION_REQUEST. Więc zwroty subskrypcji, które kiedyś były rozstrzygane całkowicie bez ciebie, teraz przychodzą z dołączonym oknem 12 hours.

Haczyk tkwi w tym, jak mierzone jest zużycie. W przypadku subskrypcji odnawialnej automatycznie Apple nie chce, byś wymyślał procent wykorzystania. Oblicza zużycie samodzielnie na podstawie upływającego czasu, więc ktoś, kto jest sześć miesięcy w rocznym planie, odczytywany jest jako mniej więcej w połowie zużyty, niezależnie od tego, co wyślesz. Twoją dźwignią nie jest procent. To uczciwe refundPreference o wartości GRANT_FULL, GRANT_PRORATED lub DECLINE, poparte jakimkolwiek sygnałem zużycia, który faktycznie posiadasz. Wyślij preferencję, którą wspierają dowody, i pozwól Apple ją zważyć.

Subskrypcje nieodnawialne są bliższe jednorazowemu odblokowaniu

Subskrypcja nieodnawialna to stały termin, który klient kupuje raz, i pod względem zwrotów zachowuje się bardziej jak produkt niezużywalny niż jak plan odnawialny automatycznie. Apple rzadko kieruje do niej CONSUMPTION_REQUEST, i nie ma automatycznego odnowienia, wobec którego można by naliczyć proporcję. Twoja aplikacja odpowiada za śledzenie terminu i przywracanie go na urządzeniach klienta, więc zwrot oznacza zakończenie okna dostępu, którym sam zarządzałeś, a nie takiego, które Apple odmierzało za ciebie.

Produkty niezużywalne są trwałe, co tnie w obie strony

Produkt niezużywalny to najczystsza rzecz do sprzedania i cicha pułapka przy zwrocie. Jest kupowany raz, jest powiązany z kontem sklepowym klienta na zawsze, a sklep może przywrócić go na dowolne urządzenie na żądanie. Ta trwałość jest zaletą, dopóki nie nadejdzie zwrot, ponieważ teraz musisz odebrać uprawnienie, które konto wciąż pamięta. Jeśli twoja logika odbierania sprawdza tylko w chwili zakupu i nigdy nie weryfikuje ponownie, klient po zwrocie może przywrócić zakupy i wejść z powrotem prosto w płatną funkcję.

Google Play dodaje tu jedną twardą krawędź, która łapie nowych deweloperów. Jeśli twoja aplikacja nie potwierdzi zakupu w ciągu 72 hours, Google automatycznie go zwraca i odbiera uprawnienie. Produkt niezużywalny, którego twój kod rozliczeniowy zapomniał potwierdzić, nie zostaje w zawieszeniu. Odwraca się sam, a klient traci dostęp do czegoś, za co zapłacił, bez własnego wniosku.

Smartfon pokazujący potwierdzenie płatności obok małego stosu monet, z których kilka jest odsuniętych na bok, ilustrujący, jak każdy typ zakupu w aplikacji jest zwracany według innych zasad

To, kto w ogóle może wydać zwrot, zmienia się w zależności od sklepu i typu

Zanim zaplanujesz jakąkolwiek reakcję na zwrot, wiedz, kto trzyma pióro. W App Store tylko Apple może wydać zwrot za zakup w aplikacji, dla każdego typu produktu. Twój kod StoreKit nie może zwrócić zakupu, i twój dział wsparcia też nie. Możesz wysłać dane o zużyciu, by wpłynąć na decyzję Apple dla dwóch typów, które otwierają okno, i to cała twoja bezpośrednia kontrola.

Google Play jest odwrotnością. Możesz zwrócić produkt jednorazowy lub zamówienie subskrypcji sam z poziomu Play Console lub interfejsów Voided Purchases i zwrotów, w całości lub częściowo. Ta swoboda jest też odpowiedzialnością: zwrot, który wydajesz na produkt zużywalny, wciąż musi odebrać przedmiot w twoim własnym backendzie, ponieważ Google nie wie, że twoje monety zostały wydane. Typ produktu, który wybrałeś, decyduje, jak czyste jest to odebranie.

Ile faktycznie kosztuje cię każdy typ zwrotu

Zwrócona cena to pozycja, którą wszyscy obserwują, i najmniejsza część rachunku. Gdy jakikolwiek sklep przyznaje zwrot, odwraca wraz z nim swoją własną prowizję, więc tracisz swój przychód netto, a nie pełną cenę katalogową. To dobra wiadomość, i na tym się kończy. To, co sklep zwraca, to część, którą wziął. To, czego nigdy nie zwraca, to to, co już wydałeś, by zrealizować sprzedaż, a ta liczba zmienia się gwałtownie w zależności od typu produktu.

Produkt zużywalny to drogi zwrot

Zwrócony produkt zużywalny to ten, który może kosztować więcej niż jego cena. Powiedzmy, że klient kupuje 5,000 kredytów, z których każdy uruchamia płatne wywołanie inferencji, wydaje 4,000 z nich, a potem składa wniosek o zwrot. Sklep oddaje cenę i swoją prowizję, ale moc obliczeniowa, rachunek API za token, obrazy, które wygenerowałeś, i każda wypłata dla twórcy, którą te kredyty sfinansowały, są wszystkie wydane. Zwrot produktu niezużywalnego przynajmniej odzyskuje uprawnienie z powrotem pod twoją kontrolę. Zwrot produktu zużywalnego odzyskuje sprzedaż, której cały koszt już zapłaciłeś.

Chargeback to cięższa wersja tego samego rachunku

Zwrot i chargeback to różne zdarzenia, a przerwa między nimi ma teraz datę. Gdy klient kwestionuje obciążenie w swoim banku zamiast prosić sklep, zakończony chargeback jest ostateczny na poziomie banku. Dla zamówień Google Play złożonych w dniu August 3 2026 lub po nim, przegrany chargeback obciąża dewelopera ceną zakupu pomniejszoną o opłatę serwisową Play, plus opłatą za chargeback banku, stałą opłatą ustalaną przez sieć kart. Google Play kieruje chargeback do ciebie do przeglądu przez orders.reviewrefund z oknem 24 hours, jedynym procesem Google, który prosi o twoje dowody, i może on trafić w każdy typ produktu.

Jak reagować, gdy typ decyduje o zasadach

Nie możesz zmienić, na jaki typ produktu trafi zwrot po sprzedaży, ale możesz przestać obsługiwać wszystkie cztery w ten sam sposób.

  • Rejestruj dostawę i zużycie produktów zużywalnych w chwili, gdy się dzieją. Ten dziennik to cała twoja obrona przy jedynym typie, którego nie można przywrócić, a okno 12 hours jest o wiele za krótkie, by budować go od zera.
  • Weryfikuj ponownie uprawnienia produktów niezużywalnych po zwrocie, a nie tylko przy zakupie. Wywołanie przywracania powinno sprawdzać bieżący status, tak aby klient po zwrocie nie mógł wejść z powrotem w płatną funkcję.
  • Odpowiadaj na oba okna dowodowe automatycznie. Żądanie zużycia trwające 12 hours i przegląd chargebacku trwający 24 hours nie mogą czekać, aż ktoś przeczyta skrzynkę odbiorczą, i nie przedłużają się ze względu na strefy czasowe.
  • Oceniaj swoją obronę zwrotów tylko na dwóch spornych typach. Rosnąca liczba zwrotów na typach, które nigdy nie otworzyły okna, to sygnał produktowy lub cenowy, a nie porażka twoich dowodów.

Nic z tego nie dotyczy pokonania sklepu. Chodzi o dopasowanie twojej reakcji do obiektu, który faktycznie został sprzedany. RefundHalt odpowiada na CONSUMPTION_REQUEST dla produktu zużywalnego i subskrypcji oraz na przegląd Google Play orders.reviewrefund automatycznie, wewnątrz okna, za pomocą dowodów dostawy i zużycia, które zarejestrowałeś w chwili sprzedaży, i zachowuje zwroty, których żadne okno nigdy nie pozwoliło ci zakwestionować, we własnej księdze, tak aby liczba, którą się mierzysz, pozostała uczciwa.

Często zadawane pytania

Czy mogę sam zwrócić zakup w aplikacji?
To zależy od sklepu. W App Store tylko Apple może wydać zwrot za zakup w aplikacji, dla każdego typu produktu, więc twoim jedynym wpływem są dane o zużyciu, które wysyłasz w dwóch procesach, które o nie proszą. W Google Play możesz sam zwrócić produkt jednorazowy lub zamówienie subskrypcji z poziomu Play Console lub interfejsów zwrotów, w całości lub częściowo.
Który typ zakupu w aplikacji ma najwyższe ryzyko zwrotu?
Produkty zużywalne. Produkt zużywalny jest zużywany przy dostawie, nie można go przywrócić, a jego wartość zwykle znika, zanim nadejdzie wniosek o zwrot. To dokładnie dlatego Apple wysyła CONSUMPTION_REQUEST dla produktów zużywalnych i prosi o twoje dane o zużyciu, i dlaczego koszt mocy obliczeniowej lub API stojący za produktem zużywalnym może sprawić, że jego zwrot będzie kosztował więcej niż sprzedaż.
Czy Apple wysyła żądanie zużycia dla każdego typu zakupu?
Nie. Apple wysyła CONSUMPTION_REQUEST dla produktów zużywalnych oraz, od aktualizacji WWDC24, dla subskrypcji odnawialnych automatycznie. Produkty niezużywalne i subskrypcje nieodnawialne rzadko otwierają to okno dowodowe. Dla każdego typu sam zwrot wciąż jest rozstrzygany przez Apple, a nie przez ciebie.
Czy klient może przywrócić produkt zużywalny po zwrocie?
Nie. Produktów zużywalnych nie można przywrócić, co czyni ich zwroty ostatecznymi dla ciebie. Produkty niezużywalne i aktywne subskrypcje są powiązane z kontem sklepowym klienta i można je przywrócić, więc zwrot ich dotyczący musi odebrać uprawnienie, które twój backend powinien ponownie zweryfikować, a nie ufać mu z chwili zakupu.
Jak zwroty subskrypcji są obliczane inaczej?
W przypadku subskrypcji odnawialnej automatycznie Apple oblicza, ile zostało zużyte, na podstawie upływającego czasu, a nie na podstawie procentu, który wysyłasz, więc pół terminu odczytywane jest jako mniej więcej w połowie zużyte. Twoją rolą jest uczciwe refundPreference o wartości GRANT_FULL, GRANT_PRORATED lub DECLINE, poparte dowodami zużycia, które posiadasz, a nie wymyślona liczba zużycia.

Źródła i materiały dodatkowe

RefundHalt

Autopilot zwrotów dla App Store i Google Play

Czytaj dalej

Kolejny wniosek o zwrot jest już w drodze.

Skonfiguruj RefundHalt w czasie potrzebnym na przeczytanie kolejnej wiadomości od pomocy technicznej o zwrocie, którego nie udało Ci się zakwestionować.