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 |
@interface |
BillingClient.FeatureType
Features/capabilities supported by |
@interface |
BillingClient.SkuType
Supported SKU types. |
Public constructors | |
---|---|
BillingClient()
|
Public methods | |
---|---|
abstract
void
|
acknowledgePurchase(AcknowledgePurchaseParams params, AcknowledgePurchaseResponseListener listener)
Acknowledges in-app purchases. |
abstract
void
|
consumeAsync(ConsumeParams consumeParams, ConsumeResponseListener listener)
Consumes a given in-app product. |
abstract
void
|
endConnection()
Closes the connection and releases all held resources such as service connections. |
abstract
BillingResult
|
isFeatureSupported(String feature)
Checks if the 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)
Initiates the billing flow for an in-app purchase or subscription. |
abstract
void
|
launchPriceChangeConfirmationFlow(Activity activity, PriceChangeFlowParams params, PriceChangeConfirmationListener listener)
Initiates a flow to confirm the change of price for an item subscribed by the user. |
static
BillingClient.Builder
|
newBuilder(Context context)
Constructs a new |
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)
Returns purchases details for currently owned items bought within your app. |
abstract
void
|
querySkuDetailsAsync(SkuDetailsParams params, SkuDetailsResponseListener listener)
Performs 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 | |
---|---|
![]()
java.lang.Object
|
Public constructors
BillingClient
BillingClient ()
Public methods
acknowledgePurchase
void acknowledgePurchase (AcknowledgePurchaseParams params, AcknowledgePurchaseResponseListener listener)
Acknowledges 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 consumeAsync(ConsumeParams, ConsumeResponseListener)
which acts as an implicit acknowledgement or you can explicitly acknowledge the
purchase via this method. For subscriptions use acknowledgePurchase(AcknowledgePurchaseParams, AcknowledgePurchaseResponseListener)
. Please refer to
the integration
guide for more details.
Parameters | |
---|---|
params |
AcknowledgePurchaseParams : Params specific to this acknowledge purchase request. |
listener |
AcknowledgePurchaseResponseListener : The listener for 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 acknowledgePurchase(AcknowledgePurchaseParams, AcknowledgePurchaseResponseListener)
. For subscriptions use acknowledgePurchase(AcknowledgePurchaseParams, AcknowledgePurchaseResponseListener)
. Please
refer to https://developer.android.com/google/play/billing/billing_library_overview#acknowledge
for more details.
Parameters | |
---|---|
consumeParams |
ConsumeParams : Params specific to consumimg a purchase. |
listener |
ConsumeResponseListener : The listener for the result of the consume operation returned asynchronously
through the callback with the purchase token and BillingClient.BillingResponseCode .
|
endConnection
void endConnection ()
Closes the connection and releases all held resources such as service connections.
Call this method once you are done with this BillingClient reference.
isFeatureSupported
BillingResult isFeatureSupported (String feature)
Checks if the specified feature or capability is supported by the Play Store.
Parameters | |
---|---|
feature |
String : One of the BillingClient.FeatureType constants. |
Returns | |
---|---|
BillingResult |
OK if the feature is supported or FEATURE_NOT_SUPPORTED 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)
Initiates 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 set by setListener(PurchasesUpdatedListener)
.
Parameters | |
---|---|
activity |
Activity : An activity reference from which the billing flow will be launched. |
params |
BillingFlowParams : Params specific to the launch billing flow request. |
Returns | |
---|---|
BillingResult |
The result of the launch billing flow operation. ITEM_ALREADY_OWNED if the user already owns the item being purchased,
ITEM_UNAVAILABLE if the item is not available to be purchased,
and USER_CANCELED if the user dismissed the purchase flow.
|
launchPriceChangeConfirmationFlow
void launchPriceChangeConfirmationFlow (Activity activity, PriceChangeFlowParams params, PriceChangeConfirmationListener listener)
Initiates 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 price change flow will be launched |
params |
PriceChangeFlowParams |
listener |
PriceChangeConfirmationListener : The listener for the result of the price change flow.
|
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 : The listener for the result of the query returned asynchronously through the
callback with the BillingResult and the list of PurchaseHistoryRecord .
|
queryPurchases
Purchase.PurchasesResult queryPurchases (String skuType)
Returns purchases details for currently owned items bought within your app. Only active subscriptions and non-consumed one-time purchases are returned. 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)
Performs a network query to get SKU details and return the result asynchronously.
Parameters | |
---|---|
params |
SkuDetailsParams : Params specific to this query request. |
listener |
SkuDetailsResponseListener : The listener for the result of the 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.
|
Annotations
Interfaces
Classes
- AccountIdentifiers
- AcknowledgePurchaseParams
- AcknowledgePurchaseParams.Builder
- BillingClient
- BillingClient.Builder
- BillingFlowParams
- BillingFlowParams.Builder
- BillingResult
- BillingResult.Builder
- ConsumeParams
- ConsumeParams.Builder
- PriceChangeFlowParams
- PriceChangeFlowParams.Builder
- ProxyBillingActivity
- Purchase
- Purchase.PurchasesResult
- PurchaseHistoryRecord
- SkuDetails
- SkuDetailsParams
- SkuDetailsParams.Builder
Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2020-11-25 UTC.