DeviceCheck від Apple пам'ятає телефон зловмисника, який зловживає поверненнями, навіть після реєстрації з новим акаунтом
Блокування акаунтів та ідентифікатори покупок перестають працювати, щойно зловмисник створює новий акаунт. DeviceCheck від Apple і функція пригадування пристрою (device recall) у Google Play зберігають кілька бітів для кожного пристрою на серверах магазину. Ось що вони зберігають, коли їх встановлювати і скільки вони вам заощаджують.

Головне
- DeviceCheck від Apple дозволяє вашому серверу встановлювати й запитувати два двійкові біти для кожного пристрою, які зберігаються на серверах Apple. Apple прямо називає позначення пристрою, який ви визнали шахрайським, одним із передбачених сценаріїв.
- Пригадування пристрою (device recall) у Google Play, бета-функція Play Integrity API, зберігає три власні біти для кожного пристрою на серверах Google. Вони зберігаються після перевстановлення застосунку і після скидання пристрою.
- Значення пригадування пристрою спільні для всіх застосунків в одному акаунті розробника Google Play і зберігаються 3 роки після останнього читання або запису.
- Токен Play Integrity можна використовувати для запису бітів пригадування пристрою протягом 14 днів після його перевірки. Це покриває 48-годинне вікно самостійного повернення коштів у Google Play.
- Ні сповіщення Apple про повернення коштів, ні скасовані покупки Google не містять ідентифікатора пристрою. Тому позначити пристрій може лише сервер, який заздалегідь пов'язав покупки з власними акаунтами.
- Позначки пристроїв не можуть зупинити повернення коштів. Вони визначають, що ваш застосунок дасть цьому пристрою далі: безкоштовні кредити, пробний період за ваш рахунок або промопропозицію, яку підписує ваш сервер.
- Лише два процеси повернення коштів дозволяють розробнику надати докази до рішення магазину: CONSUMPTION_REQUEST від Apple з відповіддю протягом 12 годин і перевірка чарджбеку в Google Play через orders.reviewrefund з відповіддю протягом 24 годин.
Блокування акаунта не зупиняє зловмисника, який знову реєструється на тому самому телефоні. DeviceCheck від Apple і пригадування пристрою (device recall) у Google Play існують саме для цієї прогалини. Кожен із них дозволяє вашому серверу прив'язати до фізичного пристрою кілька бітів зі значенням, яке визначаєте ви. Біти зберігаються на серверах магазину, тож позначка лишається на місці, коли та сама людина повертається з новою адресою електронної пошти. Жоден інструмент не дає вам ідентифікатора пристрою, і жоден не може зупинити повернення коштів. Вони лише повідомляють вам під час реєстрації або на екрані оплати, що цей пристрій уже завдавав вам збитків.
Нижче описано, що насправді зберігає кожен магазин, пастку з часом, яка вирішує, чи зможете ви взагалі встановити позначку, і скільки коштує повторний зловмисник, доки ви його не виявите.
Чому новий акаунт обходить будь-який захист на рівні акаунта
Більшість засобів захисту від повернень прив'язані до акаунта. appAccountToken від Apple пов'язує транзакцію з користувачем у вашій базі даних. obfuscated account ID у Google Play робить те саме на Android. Обидва варто встановлювати для кожної покупки, і обидва описують акаунт людини, а не пристрій у її руках. Видаліть акаунт, зареєструйтеся з новою поштою, і ваша історія про цю людину починається з нуля.
Магазини не закривають цю прогалину за вас. Сповіщення App Store про повернення коштів повідомляє, яку транзакцію повернуто. Скасована покупка Google Play дає токен покупки, ідентифікатор замовлення і voidedReason. Жодне з них не містить ідентифікатора пристрою. Розробник застосунку для знайомств описав наслідок у темі на Apple Developer Forums: шахрайські профілі раз у раз купували преміум-підписку, яку згодом повертали, а блокування їхніх пристроїв власним методом розробника не допомогло.
Чи скидає новий акаунт пробний період самого магазину?
Не в межах того самого Apple Account. Документація Apple каже, що вступні пропозиції, зокрема безкоштовні пробні періоди, надаються клієнтам, які ще не отримували такої пропозиції для цього продукту чи будь-якого продукту з тієї самої групи підписок. Тож новий вхід у вашому застосунку не дає другого пробного періоду Apple. Новий Apple Account дає, як і все, що ви роздаєте самі: кредити за реєстрацію, пробний період за рахунок сервера, реферальний бонус. Саме ці подарунки захищає позначка пристрою.
Що насправді зберігає DeviceCheck від Apple
DeviceCheck складається з двох частин. У застосунку клас DCDevice генерує тимчасовий токен, який ідентифікує пристрій. На вашому сервері ви надсилаєте цей токен в Apple разом із веб-токеном JSON, підписаним ключем з вашого акаунта розробника, і Apple дозволяє запитати або оновити два біти для цього пристрою. Відповідь на запит повертає bit0, bit1 і last_update_time у вигляді року та місяця. Власні приклади Apple: пристрій, який уже скористався промопропозицією, і пристрій, який ви визнали шахрайським.
Біти зберігає Apple, але значення визначаєте ви. Документація каже, що саме ви відповідаєте за облік того, що означають біти, і за рішення, коли їх скидати, а як приклад наводить проданий пристрій. Два біти дають чотири стани, тож проста схема така: один біт для повернення після інтенсивного використання, другий для пристрою, який уже отримав безкоштовні кредити.
- Токен одноразовий. Apple каже, що він дійсний достатньо довго, щоб повторити запит, але для кожного виклику слід генерувати новий.
- Збірки для розробки звертаються до api.development.devicecheck.apple.com. Продакшн має використовувати api.devicecheck.apple.com, інакше ваші позначки потраплять не туди.
- Apple описує DeviceCheck як один із вхідних даних для загальної оцінки ризику, а не як вирок. Вважайте встановлений біт приводом придивитися уважніше.
Що додає пригадування пристрою від Google на Android
Версія Google входить до Play Integrity API і досі перебуває в бета-версії, доступ надається через форму заявки. Після схвалення та ввімкнення в Play Console кожен вердикт цілісності містить три власні біти пристрою. Ви записуєте їх серверним викликом до кінцевої точки deviceRecall:write, використовуючи токен цілісності, який уже перевірили. Google каже, що дані зберігаються після перевстановлення застосунку і скидання пристрою, бо вони лежать на серверах Google.
Документація Google незвично пряма щодо сценаріїв використання. Вона називає пристрої з доказами серйозних зловживань, пристрої, які вже отримали цінну річ на кшталт безкоштовного пробного періоду, і пристрої, які раз у раз використовують для створення нових акаунтів зі зловмисною метою. Так само прямо вона говорить про межі: пригадування пристрою можна використовувати лише для захисту безпеки застосунку та боротьби зі зловживаннями, шахрайством і несанкціонованим доступом. Ніколи для створення відбитків чи відстеження окремих користувачів і ніколи для зберігання чутливих ознак, як-от вік, стать чи місцезнаходження.
| Питання | Apple DeviceCheck | Пригадування пристрою Google Play |
|---|---|---|
| Статус | Загальнодоступний | Бета, схвалення через форму заявки |
| Бітів на пристрій | 2 | 3 |
| Де зберігаються | Сервери Apple | Сервери Google |
| Переживають перевстановлення і скидання | Зберігаються на сервері, скидання Apple залишає вам | Так, обидва випадки, за даними Google |
| Спільні для ваших застосунків | Прив'язані до вашого акаунта розробника | Так, кожен застосунок в акаунті розробника |
| Мітка часу | Рік і місяць останнього оновлення | Дата запису для кожного біта |
| Термін зберігання | Доки ви їх не скинете | 3 роки після останнього читання або запису |
| Токен для запису | Новий одноразовий токен DCDevice | Перевірений токен цілісності, придатний 14 днів |
| Додаткові вимоги | App ID, зареєстрований у вашому акаунті | Свіжі Play Store і Play services, користувач із ліцензією Play, без емуляторів |
Проблема часу: повернення приходять, коли токена вже немає
Обидва інструменти потребують чогось від самого пристрою, перш ніж ви зможете його позначити. Apple потрібен новий токен DCDevice. Google потрібен токен цілісності з цього пристрою, не старший за 14 днів. Тим часом повернення коштів приходить на ваш сервер через сповіщення магазину, яке нічого не знає про пристрій. Тож питання не в тому, чи позначати пристрій. Питання в тому, чи матимете ви ще спосіб дістатися до нього, коли надійде повернення.
48-годинні повернення Google вміщаються в 14-денне вікно
Самостійні повернення в Google Play доступні лише протягом 48 годин після покупки, що значно менше за 14 днів, протягом яких токен цілісності придатний для запису. Запускайте перевірку цілісності в момент покупки, зберігайте перевірений токен поруч з ідентифікатором замовлення, і коли для цього замовлення надійде скасована покупка, ви одразу зможете записати біт. Чарджбеки складніші, бо банківський спір може надійти значно пізніше 14-го дня.
Повернення Apple вимагають, щоб пристрій повернувся
Повернення від Apple може надійти через тижні після покупки, а збережений токен DeviceCheck не призначений для повторного використання. Практичне рішення: спершу позначити акаунт, а потім пристрій. Коли надходить сповіщення про повернення, позначте акаунт у своїй базі даних. Наступного разу, коли цей акаунт відкриє застосунок, запросіть токен DeviceCheck і встановіть біт. Зловмисники, які залишають собі контент після повернення, зазвичай повертаються, бо саме користування ним і було метою.
- Під час покупки зареєструйте транзакцію на власний акаунт через appAccountToken або obfuscated account ID.
- Під час повернення або скасування позначте цей акаунт на своєму сервері.
- Під час наступного сеансу позначеного акаунта отримайте токен пристрою і встановіть свій біт.
- Під час кожної реєстрації запитуйте біти, перш ніж надати будь-що, що коштує вам грошей.
Скільки коштує повторний зловмисник, який зловживає поверненнями
Повернена ціна лише видима частина. Решта це все, що покупка вже запустила. Якщо ваш застосунок витрачає гроші на надання того, що продає, кожен цикл покупки, використання і повернення залишає ці гроші витраченими: час GPU на згенеровані зображення, платні виклики моделі чи API даних, сховище для експортів, які клієнт залишає собі, і виплати авторам, розраховані з продажу. Новий акаунт знову відкриває цикл, а ваш облік записує його як зовсім нового клієнта.
Безкоштовні подарунки витікають так само, навіть без жодного повернення. Пристрій, який збирає кредити за реєстрацію на десяти акаунтах, споживає вдесятеро більше обчислень, ніж ви закладали на один пробний період. У Google Play чарджбеки за замовленнями після 3 серпня 2026 року також коштують вам ціни покупки за вирахуванням сервісного збору Google, плюс банківські комісії. Тож людина, яка щоразу оскаржує платіж з нового акаунта, щоразу коштує вам повного спору знову.
| Стаття витрат | Без позначки пристрою | З позначкою пристрою |
|---|---|---|
| Кредити за реєстрацію або пробний період за ваш рахунок | Надаються знову з кожним новим акаунтом | Не надаються або зменшуються на позначеному пристрої |
| Обчислення і платні виклики API | Витрачаються знову в кожному циклі | Витрачаються один раз, потім обмежуються |
| Виплати авторам або партнерам | Сплачуються з продажів, що повертаються як повернення | Затримуються для перевірки на позначених пристроях |
| Чарджбеки Google Play після 3 серпня 2026 року | Ціна мінус сервісний збір, плюс банківські комісії, щоразу | Те саме за кожен спір, але менше повторних спорів |
| Рішення магазину щодо повернень | Вирішує магазин | Як і раніше вирішує магазин |

Що робити з позначеним пристроєм
Позначка відповідає на одне питання: чи має цей пристрій знову отримати щось безкоштовно? Реагуйте пропорційно, бо встановлений біт це ознака, а не доказ. Телефони перепродають, родини ділять iPad, і Google саме з цієї причини прямо радить подумати про ігнорування або скидання старих даних.
- Не надавайте позначеному пристрою кредитів за реєстрацію, пробного періоду за рахунок сервера чи реферального бонусу, натомість запропонуйте платний план.
- Не підписуйте промопропозицію для позначеного пристрою. В App Store підпис, який відкриває промопропозицію, генерує ваш сервер, тож рішення за вами.
- Вимагайте завершення оплати перед наданням дорогих витратних покупок на позначеному пристрої.
- Використовуйте мітку часу. Позначка, встановлена минулого місяця, важить більше, ніж встановлена два роки тому.
- Дайте людям спосіб звернутися до підтримки. Покупець вживаного телефону, позначеного помилково, має отримати відповідь, а ви можете скинути біти.
Чи можна просто заблокувати пристрій?
Ви можете відмовити у власних безкоштовних бонусах, і саме тут позначки пристроїв окуповуються. Повне блокування ризикованіше. Людина, яка тримає телефон сьогодні, може бути не тією, хто ним зловживав, а власні умови Google обмежують пригадування пристрою запобіганням зловживанням, а не відстеженням людей. Обмежуйте те, що коштує вам грошей, і залишайте платний шлях відкритим.
А як щодо Keychain (Зв'язка ключів) або ідентифікатора пристрою?
Розробники часто питають, чи може позначка в Keychain або апаратний ідентифікатор виконати ту саму роботу. Позначка, яку ваш застосунок зберігає на телефоні, зникає після скидання пристрою, а Apple не дає застосункам стабільного апаратного ідентифікатора для цього. DeviceCheck і пригадування пристрою це відповіді, схвалені магазинами, саме тому, що біти зберігаються на серверах Apple і Google, а не на телефоні.
Де рішення досі ухвалює магазин
Позначки пристроїв змінюють те, що ваш застосунок роздає далі. Вони не впливають на повернення, яке перед вами. Лише два процеси повернення дозволяють надати докази до рішення магазину. Apple надсилає CONSUMPTION_REQUEST і просить дані про використання протягом 12 годин. Google Play відкриває перевірку чарджбеку, на яку ви відповідаєте протягом 24 годин через orders.reviewrefund. Усе інше, від 48-годинних повернень Google Play до повернень через підтримку та автоматичних повернень непідтверджених покупок, вирішується без вас. Чарджбеки остаточні, щойно банк ухвалить рішення.
RefundHalt відповідає на кожен CONSUMPTION_REQUEST і кожну перевірку чарджбеку в Google Play у межах їхнього вікна, використовуючи ваші реальні дані про використання, і пов'язує кожне повернення з акаунтом, який його зробив. Тож ваш сервер знає, який пристрій позначити, коли той наступного разу вийде на зв'язок.
Поширені запитання
- Для чого використовують DeviceCheck від Apple?
- DeviceCheck дозволяє вашому серверу зберігати й читати два біти для кожного пристрою на серверах Apple. Власні приклади Apple: позначити пристрій, який уже скористався промопропозицією, і позначити пристрій, який ви визнали шахрайським. Ви вирішуєте, що означають біти і коли їх скидати.
- Чи працює DeviceCheck після того, як користувач видалив застосунок або створив новий акаунт?
- Так. Біти належать пристрою і зберігаються на серверах Apple, а не у вашому застосунку чи акаунті користувача, тож нова реєстрація на тому самому пристрої після перевстановлення застосунку читає ті самі біти. Скидання Apple залишає вам, наприклад коли пристрій продають.
- Чи є аналог DeviceCheck на Android?
- Так, пригадування пристрою в Play Integrity API. Воно зберігає три власні біти для кожного пристрою на серверах Google, переживає перевстановлення і скидання пристрою, спільне для всіх застосунків у вашому акаунті розробника і зберігає дані 3 роки після останнього звернення. Функція в бета-версії і потребує схвалення.
- Чи може позначка пристрою завадити клієнту отримати повернення коштів?
- Ні. Apple і Google вирішують щодо повернень самі. Позначка пристрою контролює лише те, що ваш застосунок пропонує далі, як-от безкоштовні кредити чи промопропозицію. Ваші докази враховуються лише в CONSUMPTION_REQUEST від Apple з відповіддю протягом 12 годин і в перевірці чарджбеку Google Play з відповіддю протягом 24 годин.
- Чи дозволено блокувати пристрій за зловживання поверненнями?
- Google дозволяє пригадування пристрою лише для безпеки застосунку та запобігання зловживанням, шахрайству і несанкціонованому доступу, і забороняє використовувати його для створення відбитків чи відстеження користувачів. Оскільки пристрої перепродають і ними діляться, безпечніше не надавати позначеному пристрою безкоштовних бонусів, ніж закривати йому доступ до платних функцій.
Джерела та додаткове читання
- Apple Developer: DeviceCheck
- Apple Developer: Accessing and modifying per-device data
- Apple Developer: DCDevice
- Apple Developer: Implementing introductory offers in your app
- Android Developers: Detect repeat abuse using device recall (beta)
- Apple Developer Forums: Refund abuse
- Google Play Help: Apps, games, and in-app purchases refund policies
- Play Console Help: Updates to refund protection and chargeback cost responsibility
RefundHalt
Автопілот повернень для App Store і Google Play
Читайте далі
Збори Google Play за альтернативну оплату в США діють з 1 жовтня, а повернення коштів за цими продажами досі на вас
З 1 жовтня 2026 року Google Play стягує сервісний збір із покупок у США, здійснених через альтернативну оплату або зовнішні посилання на контент. Жодних повернень коштів Google при цьому не веде. Розбираємо, що кажуть таблиці зборів, як повідомляти Google про повернення і скільки вам коштує кожне з них.
Надмірні запити на повернення коштують дорожче за самі повернення: обидва магазини застосунків вважають їх сигналом якості
Правило 5.6.4 Apple прямо називає надмірні запити на повернення ознакою того, що застосунок не відповідає стандартам якості, а угода Google про розповсюдження дозволяє видаляти застосунки нових розробників через частку повернень. Розбираємо, що пише кожен магазин, скільки коштує видалення і як не потрапити під удар.