Как сделать покупки внутри приложения
Как мы все знаем, популярные игры устроены так, что со временем вы не сможете пройти ее без помощи разработчиков.
Они предлагают привилегии за «донат» (от англ. – пожертвование). Если платить нечем или не хочется, советуем прибегнуть к помощи специальных программ. Речь идет о эмуляторах покупок в играх Freedom, CreeHack и Lucky Patcher. Они выполняют практически одну задачу, но работают по-разному. Если кратко: Фридом и КриХак предназначены для бесплатной «покупки» вещей, а Лаки Патчер убирает рекламу и проверку лицензии. Рассмотрим каждую программу отдельно.
Freedom
Фридом долгое время времени находится на службе у пользвоателей. Суть программы состоит в том, что она якобы покупает что-то в играх за реальные деньги. Freedom «подчиняет» себе Google Play, отключает его и использует в своих целях. В основном, игры предлагают покупку привилегий через кошелек Google. Но кому хочется платить? Прога подменяет специальные файлы в маркете и в коде, тем самым устанавливая единую цену на все донатные вещички – $0.00.
Работает программа почти во многих приложениях, что делает ее востребованной среди юзеров. По ее поводу очень часто возникают вопросы, поэтому мы сразу ответим на самые популярные.
CreeHack
Данный взломщик выполняет ту же функцию, что и Фридом, только другим способом. Он ищет в файлах специальные конфигурации, которые отвечают за вывод окна для покупки, а потом заменяет из на свои. Таким образом вы покупаете привилегии уже у КриХак.
Работает взломщик не во всех приложениях, но это вопрос времени. Он постоянно дорабатывается и в скором времени, скорее всего, не будет уступать в мощности даже Фридом. О КриХаке мы даже писали отдельную подробную статью, в которой также есть ссылка на скачивание утилиты.
Lucky Patcher
Данная утилита давно находится на страже несправедливости у читеров. Основные задачи Лаки Патчера – очистка рекламы и удалении лицензий. Также у нее есть другие функции, но сейчас речь идет о взломе. Программа имеет множество шаблонов (патчей), под которые она подстраивает (пропатчивает) приложения.
Есть шаблоны на удаление лицензии – Lucky Patcher выполняет функции Freedom и CreeHack. При покупке в игре вы видите окошко программы и бесплатно все покупаете. Есть шаблоны на удаление рекламы – Lucky Patcher применяет различные действия, чтобы не было рекламы. Он ее скрывает, уменьшает, закрашивает и так далее – все для вашего блага.
Данная тройка взломщиков эмулирует покупки в играх и помогает обходить разные проверки. Выбрать лучшую не получится, потому что работают они по-разному.
В этой статье мы рассмотрим, как можно реализовать встроенные покупки на примере своего приложения Менеджер паролей от Wi-Fi сетей.
Встроенные покупки можно подключить для любого приложения, опубликованного в Google Play. Ничего особенного для этого не требуется, только аккаунт разработчика Google Play Console и аккаунт продавца Google Wallet. Android SDK также содержит пример приложения с реализованными встроенными покупками.
Ваше приложение обращается к сервису In-app Billing с помощью API, который предоставляется приложением Google Play, установленным на устройстве. Затем Google Play передает платежные запросы и ответы на запросы между вашим приложением и сервером Google Play. Таким образом, ваше приложение никогда напрямую не связывается с сервером Google Play. Вместо этого ваше приложение отправляет запросы в приложение Google Play через межпроцессную связь (IPC) и получает от него ответы, нет необходимости поддерживать какие-либо соединения между вашим приложением и сервером Google Play.
In-app Billing поддерживает широкую совместимость, он работает на устройствах под управлением Android 2.2 (API 8) или выше, на которых установлена последняя версия приложения Google Play.
API In-app Billing предоставляет следующие возможности:
- Ваше приложение отправляет запросы с помощью модернизированного API, который позволяет пользователям легко запрашивать информацию о продукте из Google Play и заказывать продукты в приложении. API быстро восстанавливает продукты на основе прав пользователя.
- API синхронно передает информацию о заказе на устройство при завершении покупки.
- Все покупки регулируемы, т.е. Google Play отслеживает права пользователя на продукты. Пользователь не может владеть несколькими экземплярами одного продукта в приложении; только один экземпляр может принадлежать пользователю в любой момент времени.
- Приобретённые продукты могут быть использованы. В таком случае они возвращаются в бесхозное состояние и могут быть куплены снова.
- API обеспечивает поддержку подписки.
Есть разные способы, как встроить в своё приложение In-app Billing: можно это делать как вручную, так и используя сторонние библиотеки. Одной из таких библиотек является Checkout, которая уже содержит в себе готовую к применению реализацию сервиса. Ею и воспользуемся.
Checkout решает общие проблемы, с которыми могут столкнуться разработчики при работе с покупками, например:
- Как отменить все запросы, когда активность уничтожена?
- Как запросить информацию о покупках в фоновом потоке?
- Как проверить покупку?
- Как загрузить все покупки с использованием данных continuationToken или SKU (уникальный идентификатор продукта)?
- Как добавить покупки с минимумом шаблонного кода?
Checkout может быть использован с любым фреймворком или без него. Он имеет четкое разграничение функциональности, доступной в разных контекстах: покупки могут быть сделаны только в активности, тогда как SKU может быть загружен в сервис или класс Application.
Перед началом работы библиотеку нужно добавить в проект. Для этого в файле build.gradle модуля приложения добавить зависимость в блок dependencies.
Для работы с покупками требуется специальное разрешение com.android.vending.BILLING, которое будет добавлено в AndroidManifest.xml автоматически с помощью Gradle. Вы также можете добавить его вручную, добавив в файл манифеста следующую строчку перед элементом <application>:
В этом классе нам нужно добавить следующий код:
Класс Billing это основной класс для работы с библиотекой, он отвечает за:
- подключение и отключение услуг биллинга;
- выполнение платежных запросов;
- кеширование результатов запросов;
- создание объектов Checkout;
- логирование;
Для того, чтобы избежать множественных подключений к службе In-app Billing, следует использовать только один экземпляр класса Billing, именно по этой причине мы и создаём его в классе Application.
Теперь в классе активности при её создании инициализируем экземпляр класса ActivityCheckout, который наследует от базового класса Checkout.
Класс Checkout это средний уровень библиотеки, он использует класс Billing в определённом контексте (в Application, активности или сервисе), проверяет, поддерживаются ли покупки на устройстве и выполняет запросы. ActivityCheckout это подкласс, который способен покупать различные предметы, для создания его экземпляра нужно вызвать метод Checkout.forActivity() и передать в параметры активность и экземпляр Billing.
Метод start() запускает созданный экземпляр и отправляет запрос, который проверяет, поддерживается ли биллинг на этом устройстве.
Метод createPurchaseFlow() создаёт постоянный поток для покупок со слушателем, который будет получать обновления данных о покупках. Код слушателя выглядит следующим образом:
Класс PurchaseListener наследует от EmptyRequestLisneter<Purchase>, который имеет методы onSuccess() и onError(). В данном случае, если пользователь купит отключение рекламы или сделает пожертвование, то слушатель получит данные о покупке и выполнит нужные операции.
Теперь нужно создать экземпляр класса Invertory.
Класс Invertory загружает данные о продуктах, SKU и покупках. Его жизненный цикл связан с жизненным циклом Checkout, в котором он был создан.
Метод makeInvertory() создаёт экземпляр Invertory и привязывает его к нужному объекту Checkout.
Метод load() отправляет запрос на получение данных о продуктах и асинхронно загружает результат в callback. В параметрах формируется запрос, какие именно продукты нужно получить (в данном случае, все имеющиеся, а именно донаты и отключение рекламы). Код коллбека, который принимает результат запроса, представлен ниже:
Метод onLoaded() вызывается, когда все данные загружены. В нём проверяются различные данные о продуктах. Например, можно проверить с помощью поля supported можно проверить, поддерживается ли продукт, а метод getSku() возвращает идентификатор продукта. Если нужно узнать стоимость продукта на основе локали устройства, то следует вызывать getSku(TYPE).price.
Метод isPurchased() проверяет, был ли продукт куплен пользователем. В случае с рекламой это будет означать, что её следует отключать.
Обработка кнопки отключения рекламы выглядит следующим образом:
С помощью данного метода формируется запрос на покупку продукта, результат которого будет получен коллбеком.
Аналогичным образом формируется запрос на донат.
Таким образом, с помощью библиотеки мы реализовали встроенные покупки в приложении без использования шаблонного кода.
Как добавить In-app Billing в приложение : 6 комментариев
А физ. лицо может зарегистрировать Google Wallet? Или нужно ИП открывать?
Может, в этом плене Google очень демократичная компания. Выплаты начнутся по достижении порога в 100$
А как тестировать покупки? Я прописал в play console тестового пользователя и через него покупаю например рекламу. Деньги не списываются но покупка числиться у него в google play.
Но в классе InventoryCallback mPurchases = 0.
Как правильно тестировать?
Здравствуйте! К сожалению, насчёт тестирования не получится что-либо подсказать, попробуйте написать автору библиотеки на гитхабе.
Механизм InApp purchase позволяет совершать покупки непосредственно внутри приложений для Android, не выходя и не закрывая их. В подавляющем большинстве случаев приобретаемый контент касается непосредственно той программы, в которой осуществляется его покупка. Так, например, в играх пользователи имеют возможность на платной основе получать обмундирование и очки опыта для своих персонажей, а также открывать дополнительные уровни и многое другое.
Модификатор Lucky Patcher позволяет получить доступ к платному содержимому некоторых приложений, в частности игр, без необходимости его приобретения. Для этого существует несколько способов, основной из которых заключается в использовании Modded Google Play.
Нижеприведенные методы срабатывают не всегда, однако обладают наибольшим шансом на успех. При этом каждый из них требует от пользователя наличия root-доступа.
Способ 1. Modded Google Play
Шаг 1
На первом этапе получите root-права на своем мобильном устройстве. Сделать это можно при помощи стороннего ПО. Далее запустите Lucky Patcher и щелкните по кнопке «Инструменты»:
Выберите пункт «Патчи Андроида»:
Если патчи «Проверка подписи всегда верна» и «Отключить проверку целостности apk» применены, можно приступать к установке Modded Google Play (Шаг 3). В противном случае отметьте их галочками и нажмите «Пропатчить»:
По завершении процесса, равно как с положительным, так и отрицательным результатом, обязательно перезагрузите мобильное устройство.
После загрузки устройства Android повторно запустите Lucky Patcher и перейдите в меню «Инструменты» -> «Патчи Андроида». Проверьте работу патчей:
Шаг 2
Если патчи Android применены, можно приступать к удалению «родного» Play Market. Для этого выберите его в перечне приложений Lucky Patcher и нажмите «Удалить приложение»:
По завершении процесса перезагрузите смартфон/планшет.
Внимание: стандартный магазин Google можно восстановить, опять-таки из меню Lucky Patcher.
Шаг 3
Далее приступайте к установке Modded Google Play. Для этого войдите в меню «Инструменты» модификатора и выберите пункт «Установить модифицированный Google Play»:
Укажите версию установщика в зависимости от версии вашей ОС.
Для большей безопасности установите Google Play как пользовательское приложение, для чего отметьте соответствующий пункт галочкой:
…после чего щелкните «Установить». По завершении процесса рекомендуется также перезагрузить мобильный телефон (планшет).
Шаг 4
Если же вы приобретаете все приложение целиком, дополнительно отметьте галочкой пункт «Сохранить для восстановления покупок».
Чтобы выключить эмуляцию покупок, перейдите в раздел «Переключатели» Lucky Patcher и передвиньте ползунок «Эмуляция Google Billing» в положение «Off»:
Способ 2. Использование Proxy
В случае если первый метод не сработал, попробуйте использовать другой вариант эмуляции покупок – с помощью Proxy-сервера. Для этого проверьте наличие установленного патча «Проверка подписи всегда верна» в разделе «Инструменты» -> «Патчи Андроида» модификатора. Поскольку данный патч был применен перед установкой Modded Google Play, повторная его установка более не требуется и можно сразу перейти к следующему шагу.
Щелкните «Переключатели» в главном окне Lucky Patcher, чтобы войти в свич-меню:
Выберите пункт «Proxy сервер для Google Play» и переведите его ползунок в положение «On»:
Помните: при включенной функции прокси-сервера приложение «магазин Google» работать не будет, что является главным недостатком данного подхода.
Далее запустите приложение и попробуйте повторить процедуру приобретения платного контента.
Поскольку вышеуказанный метод срабатывает далеко не всегда, на усмотрение пользователей предлагается еще один вариант.
Способ 3. Патч поддержки эмуляции
Запустите патчер и щелкните по названию приложения с платным контентом, чтобы отобразить список доступных опций. Выберите пункт «Меню патчей»:
Далее нажмите «Патч поддержки для InApp и LVL эмуляции»:
В открывшемся окне отметьте галочками два верхних пункта – «Патч поддержки для LVL эмуляции» и «Патч поддержки для InApp эмуляции»:
…после чего щелкните «Пропатчить» и дождитесь завершения процесса. В случае успешного окончания процедуры шаблоны N1 и N2 подсветятся зеленым цветом. После этого можно заново попытаться бесплатно получить желаемый контент приложения.
Если что-то в данной инструкции вам непонятно, у вас возникли вопросы, замечания или предложения – форма комментариев к вашим услугам. Ваше мнение важно нам и другим посетителям сайта.
Покупка из приложения — это фрагмент содержимого или функция, которую вы приобретаете в приложении, которое загружаете на мобильное устройство или компьютер. Используете ли вы Mac App Store, iOS App Store, Google Play или другого поставщика приложений для приобретения приложения, в конце концов, у вас есть возможность купить что-то во многих приложениях. У вас может возникнуть желание разблокировать дополнительные функции в игровом приложении, заплатить за возможность использовать приложение без рекламы или купить электронную книгу в другом.
Различные типы покупок в приложении
За последние несколько лет количество покупок в приложениях возросло. Игровая индустрия претерпела значительные изменения, поскольку покупки в приложениях распространены почти во всех сферах индустрии.
Хотя внутриигровые покупки всегда шли рука об руку с бесплатными приложениями и играми, сейчас они распространены во всех типах приложений, включая те, которые вы платите за скачивание. Существует несколько различных типов покупок в приложении, в том числе:
- Разблокируется . Покупки в приложении, которые разблокируют контент или функции, являются постоянными. Как только вы покупаете их, вам не нужно покупать их снова. Unlockables может включать в себя контент, такой как электронные книги, дополнение к игре, или такие функции, как возможность печати в текстовом процессоре.
- Неудержимые . Этот тип покупки в приложении в основном относится к бесплатным играм, которые (несмотря на название) не всегда бесплатны. Модель free-to-play устанавливает внутриигровую валюту, такую как золотые монеты или магические зелья, которую можно использовать для разблокировки функций или увеличения игрового времени. В большинстве этих игр вы можете накапливать эту валюту, играя в игру, но скорость ее приобретения может быть низкой. Это заставляет некоторых игроков покупать валюту в приложении, чтобы им не пришлось ждать. Это только один тип расходных материалов, но он, безусловно, самый популярный.
- Подписки . Подписки выходят за рамки журналов и кабельных станций премиум-класса. Apple и Google открыли подписки внутри приложений для разработчиков в целом, поэтому все больше приложений предлагают услуги подписки для использования приложения или использования расширенных функций в приложении.
Где найти покупки в приложении и как их купить
Покупки в приложении полностью контролируются приложением, поэтому вы не найдете ни единого места, где их можно найти. Некоторые приложения и игры имеют встроенный магазин приложений, в котором перечислены различные доступные покупки. Другие приложения запрашивают вас, когда вы пытаетесь использовать ограниченную функцию. Например, приложение, использующее камеру вашего смартфона, может приобрести приложение для печати в приложении, которое предлагается при попытке распечатать документ.
В то время как покупка предлагается приложением, именно магазин приложений управляет выставлением счетов за покупку. Покупки в приложении, которые разблокируют контент, являются постоянными. Если вам необходимо переустановить приложение или сменить телефон, покупка внутри приложения все еще остается, как и все приложения, которые вы купили, готовые к переходу на новое устройство.
Как определить приложения с покупками в приложении на iPhone и iPad
Все приложения, которые содержат внутриигровые покупки в App Store на iPhone и других устройствах iOS, имеют отказ от ответственности рядом с кнопкой покупки. Вы покупаете бесплатные приложения, нажав на ценник. Бесплатные приложения загружаются при нажатии кнопки « Получить» . Отказ от покупки в приложении находится справа от этих кнопок.
На странице сведений о приложении перечислены покупки в приложении. Это отличное место, чтобы убедиться, что приложение делает все, что вам нужно, без каких-либо дополнительных покупок в приложении.
На странице сведений о приложении в App Store перейдите к разделу « Информация ». Нажмите « Покупки в приложении», чтобы просмотреть список отдельных покупок в приложении.
Вы можете отключить покупки в приложении на iPhone или iPad, которые ваши дети используют, чтобы запретить совершать беспорядочные покупки в приложении «Настройки», выбрав « Общие» -> « Ограничения» или « Время экрана» , в зависимости от версии iOS.
Как обнаружить приложения с покупками в приложении в магазине Google Play
Каждое приложение в магазине Google Play, которое предлагает покупки в приложении, помечено отказом от покупок в приложении в верхней части списка под названием приложения, его разработчиком и возрастным рейтингом приложения.
Магазин Google Play не предоставляет подробный список всех покупок в приложении, но ценовой диапазон продуктов в приложении находится в разделе « Дополнительная информация» на странице сведений .
Если вы хотите защитить устройство Android от детей , вы можете просмотреть свои варианты, выбрав « Руководство для родителей» на левой панели веб-страницы Google Play.
Совместное использование не разрешено
Вы не можете делиться покупками в приложениях между семейными библиотеками, включая как программу Apple Family Sharing, так и семейную библиотеку Google Play. Это имеет значение, когда вы пытаетесь выбрать между бесплатным приложением с покупкой в приложении, чтобы разблокировать премиальные функции, и профессиональным приложением с уже разблокированными функциями. Если вы участвуете в семейном обмене, часто лучше купить профессиональное приложение, чем делать покупки в приложении в бесплатном приложении. Помните, что вы все еще можете скачать бесплатное приложение, чтобы увидеть, соответствует ли оно вашим потребностям!
Читайте также: