Усі статті
Глибокий аналіз8 хв читання

Перевірка зворотного платежу в Google Play дає тобі 24 години на захист, ось що надіслати

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

Смартфон із екраном платіжного спору поруч із банківською карткою та маленьким пісочним годинником на темному столі, що ілюструє 24-годинний таймер перевірки зворотного платежу в Google Play

Головне

  • Перевірка зворотного платежу в 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, поле за полем

Сповіщення невелике. Воно каже тобі, яке замовлення на перевірці, вручає токен, який ти маєш процитувати у відповідь, і називає причину. Ось кожне поле, яке воно несе.

ПолеТипЩо означає
versionstringВерсія сповіщення, починається з "1.0"
pendingRefundTokenstringТокен, що ідентифікує цю перевірку. Ти передаєш його назад у виклику ReviewRefund
orderIdstringЗамовлення на перевірці, наприклад GPA.1234-5678-9012-34567
refundReasonintЧому запросили повернення. Очікувана перевірка завжди несе лише CHARGEBACK, code 7
obfuscatedAccountIdstringІдентифікатор облікового запису, який ти встановив під час покупки, якщо встановив
obfuscatedProfileIdstringІдентифікатор профілю, який ти встановив під час покупки, якщо встановив

Лише зворотний платіж відкриває очікувану перевірку

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

Твій перший виклик є твоїм єдиним викликом

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 вирішує, чи оскаржувати його.

Джерела та додаткове читання

RefundHalt

Автопілот повернень для App Store і Google Play

Читайте далі

Наступний запит на повернення вже в дорозі.

Налаштуйте RefundHalt за час, потрібний, щоб прочитати черговий лист у підтримку про повернення, яке ви не встигли оскаржити.