Тестування покупок в Android-додатках
Last updated
Last updated
За допомогою набору API-інтерфейсів розробники можуть пропонувати два типи продуктів:
Керовані продукти в додатку (Managed in-app products): Як випливає з назви, цими продуктами управляє розробник, і вони поділяються на витрачаються та невитратні (consumable and non-consumable). Витратний продукт зазвичай носить тимчасовий характер, і після його використання його можна знову купити, в той час як невитрачений продукт - це одноразова перевага, яку користувач продовжуватиме отримувати у вашому додатку $
Підписки (Subscriptions): Ці продукти мають термін дії (дні, місяці, тижні, роки) та автоматично продовжуються наприкінці кожного платіжного циклу. Якщо передплата не продовжується, продукт перестає бути активним для користувача.
Офіційна документація дуже корисна, коли справа доходить до перших кроків додавання вбудованих продуктів до вашої програми. Зокрема, тренінг « » добре структурований і проведе вас через кожен необхідний крок:
Додавання бібліотеки Play Billing до програми (також ознайомтеся з Джо Берча);
Налаштування продуктів у консолі Google Play;
Тестування вбудованих продуктів у вашому додатку.
Згідно з документацією з тестування, у нас є два способи тестування покупок:
Статичні відповіді від Google Play: Використовуючи обмежений набір ID продуктів, ви можете запускати статичні відповіді з Google Play, щоб перевірити, чи правильно додаток обробляє всі можливі стани. Ви повинні використовувати це при інтеграції Play Billing Library до нашої програми або для інструментального тестування;
Тестові покупки: Аккаунт Google, внесений у білий список як license-test у Play Console, зможе здійснювати покупки без фактичної оплати. Ви можете використовувати це, коли програма відправляється в QA або для загального тестування.
Використовуючи так звану In-app Billing Sandbox, ми можемо дозволити доступ до тестових покупок. Це найближче до реальних покупок, за кількома помітними винятками:
З вас не стягується жодна сума за товар, який ви купуєте;
Якщо ви купуєте передплату, розрахунковий період повторюється щодня, незалежно від тривалості, налаштованої в Play Console;
У вас є ручне управління відгуком для кожної покупки.
Останній пункт особливо цікавий, тому що ми маємо два способи налаштування поведінки тестової покупки.
Перший метод дозволяє точно контролювати поведінку ліцензування для всіх тестувальників: наприклад, залишивши RESPOND_NORMALLY, ми отримаємо поведінку, схожу на реальну. Другий метод, з іншого боку, дозволяє грубо контролювати реакцію підробленої кредитної картки: ви можете вирішити, чи карта завжди схвалюватиме покупку або завжди відхиляти її. Інтуїтивно зрозуміло, що це другий метод може бути налаштований кожним тестувальником.
Щоб отримати право на пробну покупку, потрібно пройти кілька кроків:
Ваш APK повинен бути завантажений у Play Console (чернетки більше не підтримуються);
Додати license testers до Play Console;
Запросіть тестувальників приєднатися до групи альфа-/бета-тестування (якщо є);
Зачекайте 15 хвилин, а потім почніть тестування.
Звучить досить просто, правда? Документація також дуже обнадіює: "Легко налаштувати пробні покупки".
Ваша програма опублікована (тобто не знаходиться в чернетці);
APK має бути опублікований (робочий, альфа- або бета-канали);
APK, який ви завантажили, відповідає тому, який ви тестуєте, коли йдеться про код версії, ім'я версії та підпис сховища ключів (цей пункт, на мій досвід, не потрібен);
При тестуванні на пристрої ви використовуєте обліковий запис, відмінний від того, який прив'язаний до Play Console (тобто не обліковий запис розробника);
Інструкції чекати 15 хвилин занадто оптимістичні, оскільки поширення змін із Play Console може зайняти до 2 годин;
Двічі перевірте, чи відповідає артикул, який ви використовуєте у додатку, артикулу продукту, який було налаштовано у Play Console;
Двічі перевірте, чи не намагаєтеся придбати вже наявний продукт або вже активну передплату;
Двічі перевірте, чи активували ви свої продукти в Play Console: за замовчуванням продукти консолі деактивовані, і вам потрібно активувати їх вручну;
Якщо ви використовуєте альфа-/бета-канали, переконайтеся, що обліковий запис, який ви тестуєте, входить до групи тестування (тобто натиснула «Стати тестувальником» після переходу за URL-адресою підписки);
Якщо ви використовуєте різновиди ABI, такі як arm-v7, arm-v8 тощо, переконайтеся, що APK, який ви використовуєте для тестування, містить усі бібліотеки ABI;
Переконайтеся, що при отриманні Intent за допомогою getBuyIntent ви передаєте правильний тип продукту, тобто inapp, якщо ви купуєте керовані продукти в додатку, або підписки, якщо ви купуєте підписки;
Як бачите, пісочниця далеко не проста, коли справа доходить до реального використання, але принаймні тепер у нас є кілька додаткових підказок, щоб почати пошук рішення!
Використання license testers дає такі переваги:
Зазвичай Платіжна бібліотека Google Play блокується для програм, які не підписані (signed) та не завантажені в Google Play. Тестери ліцензій можуть обійти цю перевірку, що означає, що ви можете завантажувати програми для тестування, навіть для програм, що використовують налагоджувальні зборки з підписами налагодження, без необхідності завантаження в нову версію вашої програми. Зверніть увагу, що ім'я пакета має збігатися з іменем програми, налаштованої для Google Play, а обліковий запис Google має бути тестером ліцензії для облікового запису Google Play Console;
Тестувальники ліцензій мають доступ до тестових методів оплати, які дозволяють уникнути стягування з тестувальників реальних грошей за покупки. Ви також можете використовувати тестові способи оплати для імітації певних ситуацій, наприклад, відхилення платежу;
Тестувальники ліцензій можуть швидко протестувати функції передплати.
Ось деякі додаткові відомості про процес тестової покупки:
Для тестових покупок використовується той самий процес покупки додатків, що й реальних покупок;
Податки не розраховуються для пробних покупок;
Google Play вказує на пробну покупку, відображаючи повідомлення у центрі діалогового вікна покупки.
Ви можете підтвердити обліковий запис, який робить покупку, розгорнувши діалогове вікно покупки. Зверніть увагу на таке:
Тестові облікові записи повинні бути на Android-пристрою тестувальника;
Якщо на пристрої є більше одного облікового запису, покупка здійснюється з використанням облікового запису, з якого було завантажено програму;
Якщо жоден з облікових записів не завантажив програму, придбання здійснюється за допомогою першого облікового запису.
Примітка. Покупки користувачів у тестових версіях призводять до фактичного списання коштів з облікових записів користувачів, якщо користувач не є license tester.
Щоб протестувати інтеграцію з бібліотечною бібліотекою Google Play за допомогою тестових версій, виконайте такі дії:
Опублікуйте свою програму в test track. Зверніть увагу, що після публікації програми у версії для тестування може пройти кілька годин, перш ніж вона стане доступною для тестувальників.
Переконайтеся, що кожен випробувач підписався на тест вашої програми. На URL-адресі тесту ваші тестувальники побачать пояснення того, що означає бути тестувальником, а також посилання для реєстрації.
Примітка. Незважаючи на те, що тестери ліцензій рекомендуються для розробки та тестування, переконайтеся, що ви також тестуєте свою програму, використовуючи облікові записи, які не є тестувальниками ліцензій, час від часу або при внесенні великих змін. Неліцензійне тестування допомагає гарантувати, що додаток не покладається на тестування конкретної логіки, такої як тривалість продовження (renewal durations).
Примітка. Користувачі в testing tracks також можуть бути license testers для вашої програми.
Тестування одноразових продуктів
Тестування витратних матеріалів ( consumable products ):
Успішне придбання, коли користувач отримує товар. За допомогою license tester Test instrument ви можете налаштувати оплату як завжди успішну;
Купівля, за якої оплата була списана, і користувач повинен отримати товар. За допомогою license tester ви можете використовувати Test instrument, який завжди відхиляє оплату;
Переконайтеся, що продукти можна купувати кілька разів.
Тестування non-consumable products : слід тестувати так само, як і consumable products, але ви повинні переконатися, що елемент не можна купити знову у вашому додатку. Обов'язково перевірте підтвердження покупки як consumable products, так і non-consumable products (якщо застосовно), оскільки логіка обробки кожного з двох типів покупок різниться.
Примітка. Щоб зробити кілька тестових покупок одного і того ж non-consumable product, ви можете повернути кошти та відкликати покупки за допомогою Google Play Console.
Тестування функцій передплати
Флоу купівлі одноразових продуктів та підписок аналогічні, але підписки мають додаткові сценарії, такі як успішне або відхилене продовження підписки. Щоб протестувати продовження, ви можете використовувати Test instrument, будь-які approves and Test instrument, always declines payment methods, доступні для license testers. Використовуйте ці інструменти оплати для тестування сценаріїв, що виходять за межі успішного підписного сценарію.
Як і у випадку з одноразовими продуктами, ви також повинні переконатися, що покупки підтверджені належним чином, як описано в розділі "Обробка покупок". Для покупок у тестувальників ліцензій покупка буде повернута через 3 хвилини, якщо ваша програма не підтвердить покупку, і ви отримаєте електронного листа про скасування. Ви також можете перевірити вкладку "Замовлення" в Google Play Console, щоб дізнатися, чи було повернено замовлення через 3 хвилини.
Періоди продовження: Тестові передплати продовжуються швидше, ніж фактичні передплати, а тестові передплати можна продовжувати не більше шести разів. У наступній таблиці вказано час продовження тестування для передплат різної тривалості. Ці часи є приблизними. Ви можете побачити невеликі відхилення у точному часі події. Щоб компенсувати варіацію, викликайте API для перегляду поточного стану після кожної дати закінчення терміну дії передплати.
Термін реальної підписки ( Production subscription period )
Продовження тестової підписки ( Test subscription renewal )
1 тиждень
5 хвилин
1 місяць
5 хвилин
3 місяці
10 хвилин
6 місяців
15 хвилин
1 рік
30 хвилин
Функції підписки на основі часу, такі як безкоштовні пробні версії також скорочені для тестування. У наступній таблиці наведено періоди тестування, пов'язані з функціями передплати на основі часу:
Feature
Test period
Підтвердження покупки
5 хвилин
Безкоштовна пробна версія
3 хвилини
Початковий ціновий період (Introductory price period)
Те саме, що й subscription test period
Пільговий (Grace) період (3- та 7-денний)
5 хвилин
Account hold
10 хвилин
Пауза (1 місяць)
5 хвилин
Пауза (2 місяць)
10 хвилин
Пауза (3 місяць)
15 хвилин
Тестування промокодів (акцій)
Вам слід протестувати наступні сценарії погашення (Redemption) промокоду:
При введенні промокоду в діалоговому вікні придбання, запущеному у вашому додатку;
При активації промокоду у програмі Google Play Store;
У цих сценаріях ви повинні тестувати коди всіма можливими способами. Ми рекомендуємо виконати щонайменше такі тести:
Викуп до встановлення програми;
Викуп, поки програма працює на передньому плані. Зверніть увагу, що для цього тесту вам знадобиться інший пристрій для тестування за допомогою програми Google Play Store. Обов'язково протестуйте погашення з різних екранів у своїй програмі;
Погашення з багатовіконним режимом, в якому ваша програма та програма Google Play Store відображаються одночасно.
Для кожного тесту переконайтеся, що елемент правильно виявлено та що користувач повідомлений.
Джерела:
Дод. матеріал:
Тестування, відповідно до реального життя. Ви неухильно стежите за документацією, чекаєте 15 хвилин (про всяк випадок 30), запускаєте тестування і ... виникає помилка. Що тепер? Виявляється, документація досить оптимістично пояснює необхідні кроки для тестування вбудованих покупок. Відповідно до , яка, у свою чергу, є набором різних проб і помилок інших користувачів, а також мій особистий досвід, насправді існує більше 10 умов, які вам необхідно виконати або врахувати, перш ніж ви зможете правильно використовувати тестові продукти :
Якщо ви використовуєте відкритий ключ для підвищення безпеки, переконайтеся, що він збігається з ключем у Play Console, оскільки згодом може змінюватися (див. );
Переконайтеся, що сервіси Google Play оновлені на тестовому пристрої, перейшовши на сторінку у Play Store.
Отже, ви повинні тестувати свою інтеграцію Google Play Billing Library протягом усієї розробки. Для тестування на етапі розробки ми рекомендуємо використовувати тестувальники ліцензій (license testers) для виконання сценаріїв, описаних у цьому розділі. Відомості про налаштування license testers див. у розділі .
Перш ніж розповсюджувати свою програму, ви можете використовувати (test track) Google Play для додаткової перевірки. Наприклад, ви можете використовувати тестові версії, щоб ваша група контролю якості перевіряла новий випуск. За допомогою тестових версій користувачі можуть встановити вашу програму з Google Play і протестувати версію вашої програми, яка ще не є загальнодоступною. Користувачі можуть здійснювати реальні покупки за допомогою будь-якого зі своїх способів оплати в Google Play.
Ви можете протестувати інтеграцію на будь-якому апаратному пристрої з Android 1.6 або пізнішої версії. На Вашому пристрої має бути найновіша версія програми Google Play. Загальні відомості про те, як настроїти пристрій для використання у розробці програм для Android, див. у розділі .
Ви також повинні переконатися, що покупки підтверджені належним чином, як описано в розділі " ". Для покупок у license tester покупка буде повернута через 3 хвилини, якщо ваша програма не підтвердить покупку, і ви отримаєте електронного листа про скасування. Ви також можете перевірити вкладку "Замовлення" в консолі Google Play, щоб дізнатися, чи було відшкодовано замовлення через 3 хвилини.
Розгорніть , клацнувши Показати/Приховати, щоб відобразити сценарії тестування, які потрібно використовувати для перевірки інтеграції підписки.
Ви можете використовувати Google Play Console для . Майте на увазі, що ви можете створювати тільки 500 промокодів на квартал для всіх керованих продуктів у додатку.
При активації промокоду на сторінці за допомогою кнопки «Активувати» на навігаційній панелі зліва.