Эти шаги основаны на моем опыте с версией: 2.0.2. Поскольку в версии: 2.2.0 нет критических изменений, то же самое относится к максимальному экстенту.
Для начала с BillingClient для покупок в приложении:
- Клиент для выставления счетов должен быть создан с использованием
BillingClient.Builder
.
billingClient = BillingClient.newBuilder(applicationContext)
.enablePendingPurchases()
.setListener(/* a PurchasesUpdatedListener object */)
.build()
enablePendingPurchase
метод должен быть вызван до build
, так как Google поддерживает ca sh платежи в будущем , иначе создание биллинга клиента не удастся. Обратный вызов будет вызван после создания метода PurchaseUpdateListener.onPurchasesUpdated
для обработки ожидающих покупок.
После создания billingClient запустите соединение billingClient.
billingClient.startConnection(/* a BillingClientStateListener object */)
BillingClientStateListener
имеет два метода; один срабатывает, когда соединение успешно установлено, а другой - когда соединение обрывается или отключается. Соединение billingClient всегда должно поддерживаться, а механизм повтора должен обрабатываться методом onBillingServiceDisconnected
.
После установления успешного соединения, позвоните с помощью метода
querySkuDetailsAsync
billingClient для получения подробностей 'sku'
асинхронно .
billingClient.querySkuDetailsAsync(skuDetailsParams, /* lambda or SkuDetailsResponseListener object*/)
Этот метод извлекает нам In -приобретаемые продукты, созданные нами в игровом магазине, чтобы отображать их в пользовательском интерфейсе или делать с ними все, что мы захотим.
(Необязательно) Позвоните с помощью метода
queryPurchases
billingClient для получения сведений о всех предметах, приобретенных в приложении.
vaultBillingClient.queryPurchases(/* BillingClient.SkuType.SUBS or BillingClient.SkuType.INAPP */)
'SUBS' для деталей покупки по подписке и 'INAPP' для одного время в приложении покупок.
Когда пользователь пытается приобрести продукт в приложении или подписке, проверьте, поддерживается ли продукт с использованием метода
isFeatureSupported(BillingClient.FeatureType./* SUBSCRIPTIONS or other */)
billngClient, и позвоните по методу
launchBillingFlow
billingClient.
billingClient.launchBillingFlow(activity, billingFlowParams)
billingFlowParams может быть построен с использованием метода BillingFlowParams
builder, передавая детали 'sku'. Системный интерфейс, т. Е. Будет показан нижний лист покупки. После того, как покупка будет завершена, вызов будет вызван методом PurchasesUpdatedListener.onPurchasesUpdated
, указанным для billingClient на шаге 1.
После успешной покупки пользователем необходимо
подтвердить немедленно, используя один из
consumeAsync
или
acknowledgePurchase
методов billingClient на основе типа покупки.
billingClient.acknowledgePurchase(acknowledgePurchaseParam)
cknowledgePurchaseParams создается с помощью метода AcknowledgePurchaseParams
builder, передавая «purchaseToken». Подтверждение должно быть сделано после проверки покупки .
Как только покупка подтверждена и подтверждена, billingClient может быть закрыт.
billingClient.endConnection()
Примечание: - Для всех упомянутых выше шагов соединение billingClient должно быть неповрежденными. Следовательно, повторите попытку механизма отключения. Лучше начать выставление счетов клиентскому подключению, как только приложение откроется, чтобы дать пользователю право на все его покупки. Кроме того, нет проблем с производительностью при постоянном поддержании соединения с клиентом для выставления счетов. Однако, это зависит от разработчика, как он предоставляет пользователю свои покупки; либо используя свой сервер, либо любым другим способом.
Для получения дополнительной информации см. документацию: https://developer.android.com/google/play/billing/billing_library_overview