Samsung in app purchase что такое

Это вторая статья из нашего цикла о реализации покупок на Android. В первой статье мы рассказывали о том, как создавать продукты в Google Play Console, сконфигурировать подписки и получить список продуктов в приложении.

В прошлой части мы создали класс-обертку для работы с Billing Library:

Класс-обертка для работы с Billing Library

Перейдем дальше к реализации покупки и дополним наш класс.

Создание экрана с подписками

В любом приложении, которое использует встроенные покупки, присутствует пейволл. Есть требования от Google, которые определяют минимальный набор необходимых элементов и поясняющих текстов для подобных экранов. Если коротко, на пейволле вы должны прозрачно показать пользователю условия, цену и длительность подписки и обязательна ли подписка для использования приложения. Нельзя принуждать пользователя к дополнительным действиям ради получения информации об условиях подписки.

На данном этапе для примера мы сделали упрощённый вариант пейволла:

Веб-семинар по покупкам в приложении Samsung

пример пейволла в приложении Google Play

Итак, на нашем пейволле располагаются следующие элементы:

Доработка кода для отображения информации о продуктах

В нашем примере четыре продукта:

  • две автовозобновляемые подписки («premium_sub_month» и «premium_sub_year»);
  • продукт, который нельзя купить повторно, — non-consumable (“unlock_feature”);
  • продукт, который можно покупать много раз, — consumable (“coin_pack_large”).

Для упрощения примера будем использовать Activity, в которую заинжектим BillingClientWrapper из предыдущей статьи, и layout с жестко заданным количеством кнопок для покупки.

Для удобства добавим словарь, где ключом является sku продукта, а значением — соответствующая кнопка на экране.

private val purchaseButtonsMap: Map by lazy(LazyThreadSafetyMode.NONE)

Объявим метод для отображения продуктов в UI, опираясь на логику из предыдущей статьи:

product.price — это уже отформатированная строка с указанием местной валюты для данного аккаунта, здесь никакое дополнительное форматирование не нужно; остальные поля в объекте класса SkuDetails также приходят уже с учетом локализации.

Запуск процесса покупки

Для проведения покупки необходимо вызвать метод launchBillingFlow() из главного потока приложения.

Добавим для этого метод purchase() в BillingClientWrapper :

fun purchase(activity: Activity, product: SkuDetails) < onConnected < activity.runOnUiThread < billingClient.launchBillingFlow( activity, BillingFlowParams.newBuilder().setSkuDetails(product).build() ) >> >

У метода launchBillingFlow() нет колбэка, ответ вернется в метод onPurchasesUpdated() . Помните, мы в прошлой статье его объявили, но оставили на потом? Вот сейчас он нам понадобится.

Метод onPurchasesUpdated() вызывается при каком-либо результате после взаимодействия пользователя с диалогом покупки. Это может быть успешная покупка, отмена покупки (пользователь закрыл диалог, в этом случае приходит код BillingResponseCode.USER_CANCELED) или же какая-то другая ошибка.

Cómo Usar el Samsung In-App Purchase SDK en sus Juegos Creados con Unity

По аналогии с интерфейсом OnQueryProductsListener из предыдущей статьи, объявим в классе BillingClientWrapper интерфейс OnPurchaseListener , с помощью которого будем получать либо покупку (объект класса Purchase — о кейсе, когда он может быть null даже в случае успеха, расскажем в следующей статье), либо ошибку, которую мы также объявляли в предыдущей статье:

interface OnPurchaseListener < fun onPurchaseSuccess(purchase: Purchase?) fun onPurchaseFailure(error: Error) >var onPurchaseListener: OnPurchaseListener? = null

И реализуем его в PaywallActivity:

Добавим логику в onPurchaseUpdated():

override fun onPurchasesUpdated( billingResult: BillingResult, purchaseList: MutableList? ) < when (billingResult.responseCode) < BillingClient.BillingResponseCode.OK -> < if (purchaseList == null) < //to be discussed in the next article onPurchaseListener?.onPurchaseSuccess(null) return >purchaseList.forEach(::processPurchase) //to be declared below > else -> < //error occured or user canceled onPurchaseListener?.onPurchaseFailure( BillingClientWrapper.Error( billingResult.responseCode, billingResult.debugMessage ) ) >> >

Еще по теме:  Как подключить Яндекс Станцию лайт к телефону через Wi-Fi Samsung

Если purchaseList не пустой, для начала для каждой покупки делаем проверку, что ее purchasedState равен PurchaseState.PURCHASED, потому что покупки также могут быть отложенными, и в этом случае флоу на данном этапе прекращается.

Далее, согласно документации, нужно сделать серверную верификацию покупки, о ней мы расскажем в следующих статьях. После этого надо предоставить пользователю доступ к контенту и сообщить об этом в Google. Если не сообщить, то через три дня покупка автоматически отменится. Интересно, что это характерно только для Google Play, в то время как на iOS такого нет. Сообщить о предоставлении доступа к контенту можно двумя способами:

  • с помощью acknowledgePurchase() со стороны клиента;
  • либо Purchases.Products.Acknowledge/Purchases.Subscriptions.Acknowledge со стороны бэка.

В случае с consumable-продуктом вместо него нужно вызвать метод consumeAsync() , который под капотом делает acknowledge, а заодно дает возможность покупать этот продукт повторно. Это можно сделать только с помощью Billing Library: Google Play Developer API почему-то не предоставляет возможность делать это на бэкенде. Любопытно, что, в отличие от Google Play, в App Store и в AppGallery свойство consumable за продуктом жестко определено на уровне App Store Connect и AppGallery Connect соответственно. Справедливости ради, замечу, что консьюмить такие продукты из AppGallery нужно всё-таки явно.

Напишем методы для acknowledge и consume, а также две версии метода processPurchase() — в случае, когда у нас есть свой бэкенд и когда его нет.

private fun acknowledgePurchase( purchase: Purchase, callback: AcknowledgePurchaseResponseListener ) < onConnected < billingClient.acknowledgePurchase( AcknowledgePurchaseParams.newBuilder().setPurchaseToken(purchase.purchaseToken) .build(), callback::onAcknowledgePurchaseResponse ) >> private fun consumePurchase(purchase: Purchase, callback: ConsumeResponseListener) < onConnected < billingClient.consumeAsync( ConsumeParams.newBuilder().setPurchaseToken(purchase.purchaseToken).build() ) < billingResult, purchaseToken ->callback.onConsumeResponse(billingResult, purchaseToken) > > >

Без серверной верификации:

private fun processPurchase(purchase: Purchase) < if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) < onPurchaseListener?.onPurchaseSuccess(purchase) if (purchase.skus.firstOrNull() == «coin_pack_large») < //consuming our only consumable product consumePurchase(purchase) < billingResult, purchaseToken ->if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) < //implement retry logic or try to consume again in onResume() >> > else if (!purchase.isAcknowledged) < acknowledgePurchase(purchase) < billingResult ->if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) < //implement retry logic or try to acknowledge again in onResume() >> > > >

С серверной верификацией:

private fun processPurchase(purchase: Purchase) < if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) < api.verifyPurchase(purchase.purchaseToken) < error ->if (error != null) < onPurchaseListener?.onPurchaseSuccess(purchase) if (purchase.skus.firstOrNull() == «coin_pack_large») < //consuming our only consumable product billingClient.consumeAsync( ConsumeParams.newBuilder().setPurchaseToken(purchase.purchaseToken) .build() ) < billingResult, purchaseToken ->if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) < //implement retry logic or try to consume again in onResume() >> > > else < //handle verification error >> > >

Подробнее о серверной верификации покупок мы расскажем в одной из следующих статей.

Во втором примере acknowledge, конечно, тоже можно было сделать на клиенте, но так как здесь у нас есть бэкенд, всё, что можно сделать на бэке, лучше отдать бэку. Что касается ошибок на acknowledge и consume, их нельзя игнорировать, потому что если ни одно из этих действий не произойдет в течение трёх дней после того, как покупка получила статус PurchaseState.PURCHASED, она отменится, а пользователю вернут средства. Поэтому, если мы не можем это сделать на бэкенде, и даже после нескольких повторных попыток всё еще получаем ошибку, самый надежный способ — получать текущие покупки пользователя в каком-нибудь методе жизненного цикла, например в onStart() или onResume(), и пытаться повторить в надежде, что пользователь в течение трёх дней зайдет в наше приложение при работающем интернете :).

Таким образом, текущая версия класса BillingClientWrapper будет выглядеть так:

Вы могли задаться вопросом, почему кнопки активны для всех продуктов, независимо от того, покупал их пользователь или нет. Или что будет, если купить обе подписки: заменит ли вторая первую или они обе будут сосуществовать. Всё это в следующих статьях 🙂

Еще по теме:  Самсунг incallui что такое

Источник: temofeev.ru

Samsung In-App Purchase мод APK

Samsung In-App Purchase мод является модифицированной версией Samsung In-App Purchase разработано . Вы можете скачать последнюю версию мода или оригинальную версию Samsung In-App Purchase 3.06.00020160613 с HappyMod. HappyMod это лучший загрузчик модов для 100% рабочих модов. Нажмите здесь, чтобы узнать как использовать HappyMod для загрузки и установки всех типов файлов:xapk, bapk, apks.

Имя приложения Samsung In-App Purchase мод APK
Обновление включено 1970-01-01
Скачать в Google Play Samsung In-App Purchase
Скачать оригинальный apk Samsung In-App Purchase (0.79 MB)
Ссылки для скачивания:

Samsung In-App Purchase мод APK

Используйте приложение HappyMod для более быстрой загрузки!

* Все apks мода загружены пользователями. Если есть какие-либо нарушения, пожалуйста, отправьте Связаться с нами удалить.

Источник: www.happymodapk.ru

Что такое покупки в приложении и как их отключить? [MakeUseOf Объясняет]

Что такое покупки в приложении и как их отключить? [MakeUseOf Объясняет]

« Я не могу в это поверить!» — сказала мне однажды моя двоюродная сестра. « Кто-то только что купил 10-долларовую покупку в приложении на телефоне моей матери, и она даже не знает, о чем я говорю! «. Звучит знакомо? Как насчет вашей 2-летней племянницы, которая, как известно, постучала в «Говорящего Тома» и купила себе новую акцию за 1,99 доллара? Покупки внутри приложений быстро становятся очень популярной моделью, и чем чаще они становятся, тем больше проблема, которую они создают. Особенно учитывая то, как работают современные магазины мобильных приложений.

Чтобы покупать приложения, а в случае Apple даже загружать бесплатные приложения, вы должны ввести действительный номер кредитной карты. Этот номер хранится в вашей учетной записи и может использоваться снова и снова для покупки приложений и надстроек приложений. Хотя вам может потребоваться также знать пароль учетной записи, во многих случаях это не представляет большой проблемы, учитывая, что это вы или ваши дети / nieces / nephews / partner / friends / etc. кто совершает покупку Так что же такое покупки в приложении? Что вы должны знать о них? И как вы можете защитить себя от потери денег?

Что такое покупки в приложении?

Хотя я уверен, что большинство из вас знает, о чем я говорю, я дам краткое объяснение. Покупки в приложении — это любые дополнительные уровни, действия, предметы и подписки, которые можно купить в мобильном приложении. Приложение может быть совершенно бесплатным, но для полноценной работы требуется покупка из приложения. Приложение также может быть совершенно бесплатным, но соблазняет вас покупками внутри приложения, чтобы получить больше золотых монет, суперспособностей, уровней или любого другого контента, который вам может понадобиться.

покупки в приложении

Не поймите меня неправильно, покупки в приложении могут быть отличными; если все сделано правильно, они могут дать вам возможность выбрать именно тот контент, за который вы хотите платить, и получить его только после того, как опробуете приложение и убедитесь, что это действительно то, что вам нужно. С другой стороны, покупки в приложении могут быть легко совершены по ошибке, но кто-то еще использует ваш телефон или даже вас в момент слабости, о котором вы позже пожалеете.

Все ли покупки внутри приложения похожи?

Краткий ответ на этот вопрос — нет. На самом деле есть несколько видов покупок в приложении, и важно точно знать, в какую из них вы получаете себя (или уже получили).

Единовременные покупки

Невозможно пополнить на iOS / Управляется для учетной записи пользователя на Android

Это покупки контента, которые вы должны совершить только один раз, и они могут включать в себя игровые уровни, карты, новые функции и т. Д. Когда вы совершаете такую ​​покупку, вам не нужно делать ее снова, даже если вы удаляете приложение. Если вы попытаетесь сделать это снова, его следует скачать бесплатно.

Еще по теме:  Приложение Whatsapp остановлено в Samsung что делать

Скоропортящиеся закупки

Пополняемый на iOS / Неуправляемый на Android

Это покупки, которые вам, вероятно, придется совершать снова и снова. Хорошим примером являются дополнительные монеты, боеприпасы, здоровье и т. Д. Для игр и другие услуги, которые могут быть потрачены впустую или истекли. Это предметы, которые вы можете использовать, и когда они ушли, они ушли. Кроме того, если вы удалите приложение, оно не будет восстановлено, и вам необходимо загрузить его снова. Это особенно опасно, так как их можно делать снова и снова, без ограничений.

в приложении советы по покупке

Подписки

Это покупки, которые выставляются ежемесячно или еженедельно. Они могут быть автоматически обновлены или нет. Они могут включать в себя подписку на газеты в журналах, подписку на услуги определения местоположения и даже подписку на игры.

Как я могу ограничить покупки в приложении?

Если у вас возникли проблемы с этими покупками, или вы хотите избежать проблем в будущем, вы можете быть уверены, что никто, включая вас, не сможет легко совершить эти покупки в приложении с вашего устройства.

На iOS:

Перейдите в « Настройки» -> «Основные» -> «Ограничения» и нажмите «Включить ограничения ». Если вы делаете это впервые, вам нужно будет ввести новый PIN-код, введя его дважды. С этого момента, когда вы снова получите доступ к своим ограничениям, вам нужно будет нажать на этот код, поэтому убедитесь, что вы его помните.

Далее, прокрутите вниз и найдите « In App Purchase » и переведите переключатель в положение «OFF». Вот и все, вы отключили покупки в приложении на своем устройстве.

в приложении советы по покупке

На Android:

Откройте приложение Google Play Store, откройте меню и выберите «Настройки ». Прокрутите вниз до элементов управления пользователя и выберите « Установить или изменить ПИН ». Введите ПИН-код, который вы запомните, а затем установите флажок « Использовать ПИН-код для покупок ». Это не полное отключение, как в iOS, но добавляет еще один уровень безопасности. Теперь вам просто нужно убедиться, что никто, кроме вас, не знает этот PIN-код!

в приложении-андроид-выключение

Кто-то уже сделал подписку в приложении на моем устройстве! Как я могу отменить?

Прежде всего, не паникуйте. Подписки в приложении можно легко отменить, поэтому, если вы поймали их вовремя и еще не сделали несколько платежей, вы можете избежать относительно невредимых.

На iOS:

Откройте приложение App Store на своем устройстве и нажмите « Избранное » в нижней части экрана. Нажмите кнопку Apple ID — вам нужно будет ввести свой пароль или войти, если вы еще не вошли в систему — и нажать кнопку « Просмотреть Apple ID ». Прокрутите вниз и найдите кнопку « Управление подписками приложений », которая откроет ваш менеджер подписок. Отсюда вы можете выбрать подписку преступника и переключить опцию Auto-Renewal на OFF.

покупки в приложении

Обратите внимание, что если у вас нет подписок, эта кнопка не будет отображаться.

На Android:

Откройте приложение Google Play Store, откройте меню и выберите « Мои приложения ». Найдите свои подписки и коснитесь приложения, для которого вы хотите отменить подписку. Нажмите на страницу сведений о приложении, а затем нажмите « Отмена ». Если по какой-либо причине вы не видите эту опцию, вам придется связаться с разработчиком, чтобы отменить подписку.

Вывод

Покупки в приложении могут быть отличными, но, как и во всем, вам нужно быть в курсе событий и защитить себя от ненужной траты денег. Если у вас есть дети или случайные люди, играющие с вашим устройством, ограничение покупок в приложении, вероятно, является лучшим вариантом из всех. Вы всегда можете снять ограничение, если действительно хотите купить дополнительные уровни Angry Birds.

У вас есть интересные / забавные / трагические истории покупок в приложении? Знаете другие способы борьбы с ними? Поделитесь в комментариях!

Источник: gadgetshelp.com

Оцените статью
Добавить комментарий