Перевірка зворотного платежу в Google Play дає тобі 24 години на захист, ось що надіслати
Коли банк повертає платіж у Google Play, Google надсилає на твій сервер PendingRefundReviewNotification і запускає 24-годинний таймер. Відповідай через API ReviewRefund з перевагою щодо повернення та реальним доказом споживання, інакше спір вирішать без тебе. Ось увесь процес, поле за полем.

Головне
- Перевірка зворотного платежу в Google Play починається, коли банк клієнта скасовує платіж, а Google Play надсилає на твій сервер PendingRefundReviewNotification. Від цього сповіщення ти маєш 24 години на відповідь через API ReviewRefund.
- Перевірка зворотного платежу є єдиним процесом повернення в Android, який просить у розробника докази. Самообслуговуване повернення протягом 48 годин, повернення через підтримку та анульовані покупки вирішуються без тебе.
- Ти відповідаєш, викликаючи orders.reviewrefund з refundPreference зі значенням APPROVE, DECLINE або NEUTRAL, разом із доказами: значенням consumptionPercentageMilliunits та необовʼязковим списком подій споживання.
- Google Play записує лише твій перший виклик ReviewRefund для певного сповіщення. Кожен пізніший виклик ігнорується й усе одно повертає OK, тож твоя перша відповідь має бути повною та правильною.
- Сповіщення несе pendingRefundToken та orderId, а єдина причина повернення, яку підтримує очікувана перевірка, це CHARGEBACK, що надходить як code 7.
- consumptionPercentageMilliunits вимірюється в мілі-одиницях, тож 100000 означає, що клієнт використав 100 відсотків того, що купив. Так ти повідомляєш Google Play, що продукт доставлено повністю.
- Від 3 серпня 2026 розробники несуть за кожен програний спір ціну покупки за вирахуванням сервісного збору Play плюс збір за зворотний платіж, який стягує банк, тож перевірка зворотного платежу без відповіді є прямим списанням із твого власного доходу.
Коли банк клієнта повертає платіж у Google Play, Google Play не просто повертає гроші й рухається далі. Він надсилає на твій сервер PendingRefundReviewNotification і запускає 24-годинний таймер. Відповідай на це сповіщення через API ReviewRefund перевагою щодо повернення та доказом того, що клієнт насправді використав, і Google Play врахує твій внесок у те, як він оскаржує зворотний платіж. Мовчи, і спір вирішать без жодного слова від єдиної сторони, яка знає, як продукт було спожито.
Перевірка зворотного платежу в Google Play є єдиним процесом повернення в Android, який просить у тебе докази, прямий відповідник CONSUMPTION_REQUEST від Apple. Тепер це важливіше, ніж раніше. Від 3 серпня 2026 Google Play переносить вартість зворотних платежів на розробників, тож спір, на який ти не відповіси, виходить із твого рахунку, а не Google. Ось саме те, що несе сповіщення, що ти надсилаєш у відповідь, які поля складають твій доказ і де мовчання перетворюється на гроші.
Що таке перевірка зворотного платежу в Google Play насправді
Зворотний платіж не є запитом на повернення. Клієнт звертається до свого банку або карткової мережі й оскаржує платіж, а банк повертає кошти. Google Play обробляє більшість із них самостійно. Для частини він відкриває перевірку й питає спершу тебе, бо в тебе є інформація, якої немає в Google: чи було доставлено замовлення і скільки з нього клієнт спожив. Ця перевірка є процесом за API ReviewRefund.
Це єдине місце в системі повернень Android, де твій доказ змінює результат. Кожен інший шлях повернення в Google Play відбувається без тебе. Клієнт може самостійно отримати повернення протягом 48 годин після покупки, підтримка може його надати, а непідтверджена покупка повертається автоматично, і все вирішує Google. Перевірка зворотного платежу є винятком, і її варто розглядати як єдину розмову про повернення, до якої ти справді можеш долучитися.
Це андроїдна версія доказового вікна Apple
Два магазини, два процеси, що просять розробника про докази, і це весь список. Apple надсилає CONSUMPTION_REQUEST і дає тобі 12 годин на відповідь через Send Consumption Information. Google Play надсилає PendingRefundReviewNotification і дає тобі 24 години на відповідь через orders.reviewrefund. Механіка відрізняється, але урок ідентичний: коли магазин питає, що клієнт використав, точна відповідь є різницею між збереженням продажу та його поверненням.
Одна відмінність важлива на практиці. Дані споживання Apple складаються з пʼяти числових полів і нічого більше. Доказ Google Play багатший. Ти можеш надіслати відсоток споживання плюс список окремих подій використання, кожна з часовою позначкою, ідентифікатором облікового запису та навіть IP-адресою й приблизною location. Google Play дає тобі більше простору, щоб описати доставку, а це означає більше простору, щоб бути переконливим.
24-годинний таймер і як сповіщення до тебе доходить
Перевірка надходить як Real Time Developer Notification на твою тему Cloud Pub/Sub, той самий канал, що доставляє твої події підписок і покупок. Повідомлення є корисним вантажем, закодованим у base64, з обʼєктом pendingRefundReviewNotification усередині. Таймер запускається, коли це сповіщення публікується, а не коли ти випадково його читаєш, тож споживач, який опитує раз на день, пропускає спори.
PendingRefundReviewNotification, поле за полем
Сповіщення невелике. Воно каже тобі, яке замовлення на перевірці, вручає токен, який ти маєш процитувати у відповідь, і називає причину. Ось кожне поле, яке воно несе.
| Поле | Тип | Що означає |
|---|---|---|
| version | string | Версія сповіщення, починається з "1.0" |
| pendingRefundToken | string | Токен, що ідентифікує цю перевірку. Ти передаєш його назад у виклику ReviewRefund |
| orderId | string | Замовлення на перевірці, наприклад GPA.1234-5678-9012-34567 |
| refundReason | int | Чому запросили повернення. Очікувана перевірка завжди несе лише CHARGEBACK, code 7 |
| obfuscatedAccountId | string | Ідентифікатор облікового запису, який ти встановив під час покупки, якщо встановив |
| obfuscatedProfileId | string | Ідентифікатор профілю, який ти встановив під час покупки, якщо встановив |
Лише зворотний платіж відкриває очікувану перевірку
refundReason при очікуваній перевірці завжди дорівнює CHARGEBACK, доставлений як ціле число 7. У світі Google Play існують інші причини повернення, але вони не доходять до тебе цим процесом, бо ти не маєш у них голосу. Якщо ти бачиш PendingRefundReviewNotification, банк скасував платіж, і Google Play вирішує, чи оскаржувати його. Це єдиний тригер.
Що ти надсилаєш у відповідь через API ReviewRefund
Ти відповідаєш одним POST на orders.reviewrefund. Повний шлях: POST https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/orders/{orderId}:reviewrefund, авторизований областю https://www.googleapis.com/auth/androidpublisher, тією самою областю OAuth, яку вже використовує твоя інтеграція з Play Developer API. Успіх повертає порожнє тіло з HTTP 200.
У тілі живе твоя справа. Ти відлунюєш pendingRefundToken зі сповіщення, вказуєш перевагу щодо повернення й додаєш доказ споживання.
Твоя перевага щодо повернення є рекомендацією, а не вироком
Поле refundPreference приймає одне з трьох значень, і це порада для Google Play, а не остаточне рішення. Google все ще володіє результатом. Але це порада, підкріплена даними, які Google не може побачити самостійно, тож вона має вагу.
| refundPreference | Значення |
|---|---|
| APPROVE | Ти волієш, щоб Google Play надав повне повернення |
| DECLINE | Ти волієш, щоб Google Play відхилив повернення |
| NEUTRAL | У тебе немає переваги, і ти покладаєшся на Google Play |
| REFUND_PREFERENCE_UNSPECIFIED | Типова сторожова величина, не використовується в реальній відповіді |
Доказові поля, що підкріплюють DECLINE
Голе DECLINE є твердженням без доказу. Поля споживання є доказом. consumptionPercentageMilliunits є цілим числом у мілі-одиницях, тож 100000 каже, що клієнт спожив 100 відсотків того, що купив, а 50000 каже половину. consumptionUsageEvents є необовʼязковим масивом, де кожна подія може нести obfuscatedAccountId, obfuscatedProfileId, consumptionTime, ipAddress, consumptionItemDescription і приблизну location. sampleContentProvided є логічним значенням для випадку, коли ти дав клієнту безкоштовний зразок платного вмісту. Разом вони кажуть, у власній схемі Google Play, що продукт було доставлено й використано.

Твій перший виклик є твоїм єдиним викликом
Google Play записує перший виклик ReviewRefund, який ти робиш щодо сповіщення, і ігнорує кожен виклик після нього, усе ще повертаючи статус OK. Немає ані чернетки, ані виправлення. Якщо твоя перша відповідь є поспішним NEUTRAL без доказів, бо твій конвеєр не був готовий, то саме ця відповідь потрапляє в записи, а пізніший виклик із повною історією споживання мовчки відкидається. Побудуй повну відповідь, перш ніж щось надсилати.
Скільки перевірка коштує тобі в грошах
Роками програний зворотний платіж у Google Play коштував розробнику продажу й мало чого ще, бо Google Play покривав подальші збори. Це закінчується 3 серпня 2026. Для замовлень, розміщених після цієї дати, Google Play ділить вартість зворотного платежу з розробниками, а частка розробника є ціною покупки за вирахуванням сервісного збору Play, плюс повʼязаний збір за зворотний платіж, який стягує фінансова установа. Google Play продовжує покривати частину сервісного збору. Банківський збір є новою вагою на твоєму боці балансу.
Повернення ніколи не є справжнім числом
Спір повертає платіж клієнта, але платіж ніколи не був твоєю єдиною витратою. Згенероване відео, партія викликів API моделі, виплата творцю, сховище, яке ти виділив, усі ці гроші покинули твій рахунок тієї миті, коли замовлення було доставлено, і нічого з цього не повертається зі зворотним платежем. Тепер додай зверху банківський збір за зворотний платіж. Ти оплачуєш рахунок постачальника, повертаєш продаж і покриваєш збір за спір, три витрати за одне замовлення, яке ти мав докази захистити.
Масштаб, з яким бореться Google
Google Play каже, що у 2025 заблокував US$3.4B шахрайства й зловживань і додає виявлення шахрайства протягом 2026. Зміна розподілу витрат є частиною того самого поштовху: дати розробникам причину подавати докази в систему, і система оскаржить більше незаконних спорів. API ReviewRefund є тим, як твій доказ потрапляє всередину. Порожня відповідь є голосом за те, щоб зворотний платіж типу friendly fraud устояв твоїм коштом.
Як бути готовим, перш ніж сповіщення надійде
Вікно 24 годин не є проблемою. Проблема в тому, що доказ, який тобі потрібен, має існувати до спору, зафіксований під час покупки та споживання, а не відтворений після появи токена. Команда, яка починає збирати дані, коли надходить сповіщення, уже програла.
Прикріплюй ідентичність під час покупки
Установлюй obfuscatedAccountId за допомогою setObfuscatedAccountId при кожній покупці, щоб ідентифікатор облікового запису зі сповіщення напряму зіставлявся з користувачем у твоїй системі. Тримай його хешем, 64 символи або менше, ніколи не електронною поштою у відкритому вигляді чи іншими персональними даними, бо ідентифікатори у відкритому вигляді призводять до блокування покупок. Без цього звʼязку ти не поєднаєш pendingRefundToken із реальною історією використання, і за твоїм DECLINE нічого немає.
Логуй споживання, поки воно відбувається
Записуй, що доставило платне замовлення, коли й кому, у формі, яку ти на вимогу перетвориш на consumptionPercentageMilliunits і consumptionUsageEvents.
- Познач часовою позначкою кожну одиницю споживання, щоб consumptionTime при кожній події було справжнім, а не оціненим.
- Відстежуй доставку відносно покупки, щоб упевнено вказати відсоток споживання, а не гадати.
- Тримай ідентифікатори облікового запису й профілю поруч із використанням, щоб подія складалася в одному запиті, коли надійде токен.
- Фіксуй IP запиту та приблизну location, якщо вони в тебе є, оскільки Google Play приймає обидва як поля події.
Відповідай у межах вікна, автоматично
Вікно 24 годин комфортне для машини й нещадне для людини, яка має бути притомною й уважною. Відповідь має бути автоматичною: сповіщення надходить, обліковий запис знайдено, споживання зібрано, один виклик ReviewRefund виходить, і все без людини в циклі. Це та частина, яку RefundHalt виконує за тебе. Ми слухаємо PendingRefundReviewNotification, зіставляємо замовлення з використанням, яке ми вже відстежуємо для цього облікового запису, і відповідаємо orders.reviewrefund у межах вікна перевагою щодо повернення та реальним доказом споживання. Токен є ниткою, а доказ є справою. Май обидва готовими, і єдина розмова про повернення, до якої ти можеш долучитися, буде тією, яку ти можеш виграти.
Поширені запитання
- Що таке перевірка зворотного платежу в Google Play?
- Перевірка зворотного платежу в Google Play є процесом, який Google Play використовує, щоб попросити в розробника докази, перш ніж вирішити оскаржений платіж. Коли банк клієнта скасовує платіж, Google Play може надіслати на твій сервер PendingRefundReviewNotification і дати тобі 24 години на відповідь через API ReviewRefund, надавши перевагу щодо повернення та доказ того, скільки клієнт спожив. Це єдиний шлях повернення в Android, де твій внесок впливає на результат.
- Скільки часу я маю на відповідь на сповіщення про зворотний платіж у Google Play?
- 24 години. Google Play надсилає PendingRefundReviewNotification як Real Time Developer Notification, і ти маєш викликати API ReviewRefund протягом 24 годин від цього сповіщення. Таймер запускається, коли сповіщення публікується на твою тему Cloud Pub/Sub, тож твій споживач має слухати в реальному часі, а не опитувати за розкладом.
- Що дозволяє мені надіслати API orders.reviewrefund?
- Ти надсилаєш pendingRefundToken зі сповіщення, refundPreference зі значенням APPROVE, DECLINE або NEUTRAL і доказ споживання. Доказові поля: consumptionPercentageMilliunits, ціле число в мілі-одиницях, де 100000 означає 100 відсотків спожито, необовʼязковий масив consumptionUsageEvents із часовою позначкою, ідентифікатором облікового запису, IP-адресою, описом і location для кожної події, та логічне значення sampleContentProvided. Успішний виклик повертає порожнє тіло з HTTP 200.
- Чи можу я оновити свою відповідь ReviewRefund після її надсилання?
- Ні. Google Play записує твій перший виклик ReviewRefund для певного сповіщення й ігнорує кожен пізніший виклик, усе ще повертаючи статус OK. Немає ані чернетки, ані виправлення, тож твоя перша відповідь має бути повною. Збери перевагу щодо повернення й увесь доказ споживання, перш ніж зробити єдиний виклик.
- Скільки коштує програний зворотний платіж у Google Play після 3 серпня 2026?
- Для замовлень, розміщених після 3 серпня 2026, розробник несе ціну покупки за вирахуванням сервісного збору Play, плюс збір за зворотний платіж, який стягує фінансова установа. Google Play продовжує покривати частину сервісного збору. Це на додачу до обчислень, викликів API, сховища та виплат, які ти вже витратив на доставку замовлення й нічого з чого повернення не повертає.
- Які причини повернення запускають сповіщення про очікувану перевірку?
- Лише CHARGEBACK, який надходить у сповіщенні як refundReason code 7. Інші повернення в Google Play, як-от 48-годинне вікно самообслуговування, повернення через підтримку та анульовані покупки, вирішуються без розробника й не відкривають очікувану перевірку. Якщо ти отримуєш PendingRefundReviewNotification, банк скасував платіж, і Google Play вирішує, чи оскаржувати його.
Джерела та додаткове читання
- Android Developers: Help Google dispute chargebacks
- Google Play Developer API: orders.reviewrefund
- Android Developers: Real-time developer notifications reference
- Play Console Help: Updates to refund protection and chargeback cost responsibility
- Google Play Help: Refund policies for apps, games, and in-app purchases
RefundHalt
Автопілот повернень для App Store і Google Play
Читайте далі
Прикріплюйте appAccountToken до кожної покупки в App Store, інакше ви не зможете захистити повернення
Apple надсилає вашому серверу CONSUMPTION_REQUEST, коли клієнт просить повернення, але в транзакції немає даних про те, хто він. appAccountToken це UUID, який пов'язує покупку з вашим користувачем. Встановіть його, і ви зможете відповісти Apple реальними даними. Пропустіть, і вам залишиться лише гадати.
Якщо не підтвердити покупку в Google Play протягом трьох днів, Google поверне за неї гроші, і ось скільки це вам коштує
Google Play автоматично повертає гроші й скасовує будь-яку покупку, яку ваш сервер не підтвердив протягом трьох днів. Це помилка інтеграції, а не рішення клієнта, і її цілком можна запобігти. Ось точне правило, чому воно спрацьовує і скільки насправді коштує вам кожен втрачений продаж.