Register now for Android Dev Summit 2019!

BillingClient

public abstract class BillingClient
extends Object

java.lang.Object
   ↳ com.android.billingclient.api.BillingClient


Main interface for communication between the library and user application code.

It provides convenience methods for in-app billing. You can create one instance of this class for your application and use it to process in-app billing operations. It provides synchronous (blocking) and asynchronous (non-blocking) methods for many common in-app billing operations.

All methods are supposed to be called from the Ui thread and all the asynchronous callbacks will be returned on the Ui thread as well.

After instantiating, you must perform setup in order to start using the object. To perform setup, call the startConnection(BillingClientStateListener) method and provide a listener; that listener will be notified when setup is complete, after which (and not before) you may start calling other methods. After setup is complete, you will typically want to request an inventory of owned items and subscriptions. See queryPurchases(String) and querySkuDetailsAsync(SkuDetailsParams, SkuDetailsResponseListener).

When you are done with this object, don't forget to call endConnection() to ensure proper cleanup. This object holds a binding to the in-app billing service and the manager to handle broadcast events, which will leak unless you dispose it correctly. If you created the object inside the onCreate(Bundle) method, then the recommended place to dispose is the onDestroy() method.

To get library logs inside Android logcat, set corresponding logging level. E.g.: adb shell setprop log.tag.BillingClient VERBOSE

Summary

Nested classes

@interface BillingClient.BillingResponseCode

Possible response codes. 

class BillingClient.Builder

Builder to configure and create a BillingClient instance. 

@interface BillingClient.ChildDirected

Developers are able to specify whether you would like your app to be treated as child-directed for purposes of the Children’s Online Privacy Protection Act (COPPA) - http://business.ftc.gov/privacy-and-security/childrens-privacy

@interface BillingClient.FeatureType

Features/capabilities supported by isFeatureSupported(String)

@interface BillingClient.SkuType

Supported SKU types. 

@interface BillingClient.UnderAgeOfConsent

Developers are able to specify whether to mark your ad requests to receive treatment for users in the European Economic Area (EEA) under the age of consent. 

Public constructors

BillingClient()

Public methods

abstract void acknowledgePurchase(AcknowledgePurchaseParams params, AcknowledgePurchaseResponseListener listener)

Acknowledge in-app purchases.

abstract void consumeAsync(ConsumeParams consumeParams, ConsumeResponseListener listener)

Consumes a given in-app product.

abstract void endConnection()

Close the connection and release all held resources such as service connections.

abstract BillingResult isFeatureSupported(String feature)

Check if specified feature or capability is supported by the Play Store.

abstract boolean isReady()

Checks if the client is currently connected to the service, so that requests to other methods will succeed.

abstract BillingResult launchBillingFlow(Activity activity, BillingFlowParams params)

Initiate the billing flow for an in-app purchase or subscription.

abstract void launchPriceChangeConfirmationFlow(Activity activity, PriceChangeFlowParams params, PriceChangeConfirmationListener listener)

Initiate a flow to confirm the change of price for an item subscribed by the user.

abstract void loadRewardedSku(RewardLoadParams params, RewardResponseListener listener)

Loads a rewarded sku in the background and returns the result asynchronously.

static BillingClient.Builder newBuilder(Context context)

Constructs a new BillingClient.Builder instance.

abstract void queryPurchaseHistoryAsync(String skuType, PurchaseHistoryResponseListener listener)

Returns the most recent purchase made by the user for each SKU, even if that purchase is expired, canceled, or consumed.

abstract Purchase.PurchasesResult queryPurchases(String skuType)

Get purchases details for all the items bought within your app.

abstract void querySkuDetailsAsync(SkuDetailsParams params, SkuDetailsResponseListener listener)

Perform a network query to get SKU details and return the result asynchronously.

abstract void startConnection(BillingClientStateListener listener)

Starts up BillingClient setup process asynchronously.

Inherited methods

From class java.lang.Object

Public constructors

BillingClient

BillingClient ()

Public methods

acknowledgePurchase

void acknowledgePurchase (AcknowledgePurchaseParams params, 
                AcknowledgePurchaseResponseListener listener)

Acknowledge in-app purchases.

Developers are required to acknowledge that they have granted entitlement for all in-app purchases for their application.

Warning! All purchases require acknowledgement. Failure to acknowledge a purchase will result in that purchase being refunded. For one-time products ensure you are using {@link #consumeAsync) which acts as an implicit acknowledgement or you can explicitly acknowledge the purchase via this method. For subscriptions use {@link #acknowledgePurchase). Please refer to https://developer.android.com/google/play/billing/billing_library_overview#acknowledge for more details.

Parameters
params AcknowledgePurchaseParams: Params specific to this acknowledge purchase request AcknowledgePurchaseParams

listener AcknowledgePurchaseResponseListener: Implement it to get the result of the acknowledge operation returned asynchronously through the callback with the BillingClient.BillingResponseCode

consumeAsync

void consumeAsync (ConsumeParams consumeParams, 
                ConsumeResponseListener listener)

Consumes a given in-app product. Consuming can only be done on an item that's owned, and as a result of consumption, the user will no longer own it.

Consumption is done asynchronously and the listener receives the callback specified upon completion.

Warning! All purchases require acknowledgement. Failure to acknowledge a purchase will result in that purchase being refunded. For one-time products ensure you are using this method which acts as an implicit acknowledgement or you can explicitly acknowledge the purchase via {@link #acknowledgePurchase). For subscriptions use {@link #acknowledgePurchase). Please refer to https://developer.android.com/google/play/billing/billing_library_overview#acknowledge for more details.

Parameters
consumeParams ConsumeParams: Params specific to consume purchase.

listener ConsumeResponseListener: Implement it to get the result of your consume operation returned asynchronously through the callback with token and BillingClient.BillingResponseCode parameters.

endConnection

void endConnection ()

Close the connection and release all held resources such as service connections.

Call this method once you are done with this BillingClient reference.

isFeatureSupported

BillingResult isFeatureSupported (String feature)

Check if specified feature or capability is supported by the Play Store.

Parameters
feature String: One of BillingClient.FeatureType constants.

Returns
BillingResult BILLING_RESULT_OK if feature is supported and corresponding error code otherwise.

isReady

boolean isReady ()

Checks if the client is currently connected to the service, so that requests to other methods will succeed.

Returns true if the client is currently connected to the service, false otherwise.

Note: It also means that INAPP items are supported for purchasing, queries and all other actions. If you need to check support for SUBSCRIPTIONS or something different, use isFeatureSupported(String) method.

Returns
boolean

launchBillingFlow

BillingResult launchBillingFlow (Activity activity, 
                BillingFlowParams params)

Initiate the billing flow for an in-app purchase or subscription.

It will show the Google Play purchase screen. The result will be delivered via the PurchasesUpdatedListener interface implementation reported to the ERROR(/BillingClientImpl) constructor.

Parameters
activity Activity: An activity reference from which the billing flow will be launched.

params BillingFlowParams: Params specific to the request BillingFlowParams).

Returns
BillingResult int The response code (BillingClient.BillingResponseCode) of launch flow operation.

launchPriceChangeConfirmationFlow

void launchPriceChangeConfirmationFlow (Activity activity, 
                PriceChangeFlowParams params, 
                PriceChangeConfirmationListener listener)

Initiate a flow to confirm the change of price for an item subscribed by the user.

When the price of a user subscribed item has changed, launch this flow to take users to a screen with price change information. User can confirm the new price or cancel the flow.

Parameters
activity Activity: An activity reference from which the billing flow will be launched.

params PriceChangeFlowParams: Params specific to the request PriceChangeFlowParams).

listener PriceChangeConfirmationListener: Implement it to get the result of your price change flow.

loadRewardedSku

void loadRewardedSku (RewardLoadParams params, 
                RewardResponseListener listener)

Loads a rewarded sku in the background and returns the result asynchronously.

If the rewarded sku is available, the response will be BILLING_RESULT_OK. Otherwise the response will be ITEM_UNAVAILABLE. There is no guarantee that a rewarded sku will always be available. After a successful response, only then should the offer be given to a user to obtain a rewarded item and call launchBillingFlow.

Parameters
params RewardLoadParams: Params specific to this load request RewardLoadParams

listener RewardResponseListener: Implement it to get the result of the load operation returned asynchronously through the callback with the BillingClient.BillingResponseCode

newBuilder

BillingClient.Builder newBuilder (Context context)

Constructs a new BillingClient.Builder instance.

Parameters
context Context: It will be used to get an application context to bind to the in-app billing service.

Returns
BillingClient.Builder

queryPurchaseHistoryAsync

void queryPurchaseHistoryAsync (String skuType, 
                PurchaseHistoryResponseListener listener)

Returns the most recent purchase made by the user for each SKU, even if that purchase is expired, canceled, or consumed.

Parameters
skuType String: The type of SKU, either "inapp" or "subs" as in BillingClient.SkuType.

listener PurchaseHistoryResponseListener: Implement it to get the result of your query returned asynchronously through the callback with a Purchase.PurchasesResult parameter.

queryPurchases

Purchase.PurchasesResult queryPurchases (String skuType)

Get purchases details for all the items bought within your app. This method uses a cache of Google Play Store app without initiating a network request.

Note: It's recommended for security purposes to go through purchases verification on your backend (if you have one) by calling one of the following APIs: https://developers.google.com/android-publisher/api-ref/purchases/products/get https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/get

Parameters
skuType String: The type of SKU, either "inapp" or "subs" as in BillingClient.SkuType.

Returns
Purchase.PurchasesResult PurchasesResult The Purchase.PurchasesResult containing the list of purchases and the response code (BillingClient.BillingResponseCode

querySkuDetailsAsync

void querySkuDetailsAsync (SkuDetailsParams params, 
                SkuDetailsResponseListener listener)

Perform a network query to get SKU details and return the result asynchronously.

Parameters
params SkuDetailsParams: Params specific to this query request SkuDetailsParams.

listener SkuDetailsResponseListener: Implement it to get the result of your query operation returned asynchronously through the callback with the BillingClient.BillingResponseCode and the list of SkuDetails.

startConnection

void startConnection (BillingClientStateListener listener)

Starts up BillingClient setup process asynchronously. You will be notified through the BillingClientStateListener listener when the setup process is complete.

Parameters
listener BillingClientStateListener: The listener to notify when the setup process is complete.