Methods🔗
This page documents all available methods of the BillingClient class.
acknowledge_purchase🔗
func acknowledge_purchase(purchase_token: String)
Acknowledges in-app purchases.
All purchases require acknowledgement. Failure to acknowledge a purchase will result in that purchase being refunded.
Consumable purchases do not need to be acknowledged manually because calling consume_purchase(...) already acknowledges them.
| Parameter | Description |
|---|---|
| purchase_token | Token identifying the purchase to acknowledge. This value is provided in purchase data returned by on_purchase_updated or query_purchases_response. |
Emits the acknowledge_purchase_response signal.
consume_purchase🔗
func consume_purchase(purchase_token: String)
Consumes a given in-app product.
Consumable products can be purchased multiple times. Consuming the purchase removes it from the user's owned purchases so it can be bought again.
Calling this method automatically acknowledges the purchase.
| Parameter | Description |
|---|---|
purchase_token |
Token identifying the purchase to consume. This token is included in purchase data received from on_purchase_updated or query_purchases_response. |
Emits the consume_purchase_response signal.
end_connection🔗
func end_connection() -> void
Ends the connection to the Google Play Billing service.
Once closed, the client should not be used again.
Emits the disconnected signal.
get_connection_state🔗
func get_connection_state() -> int
Returns the current connection state of the billing client.
Returns an int representing a value from ConnectionState.
Example
var state = billing_client.get_connection_state()
if state == BillingClient.ConnectionState.CONNECTED:
print("Billing ready")
is_ready🔗
func is_ready() -> bool
Returns true if the billing client is connected and ready for use.
open_subscriptions_page🔗
func open_subscriptions_page(product_id: String = "")
Opens the Google Play subscription management page.
| Parameter | Description |
|---|---|
product_id |
Optional subscription product ID. If provided, Google Play will open the management page for that specific subscription. |
Example
billing_client.open_subscriptions_page("my_subscription_product_id")
purchase🔗
func purchase(product_id: String, is_offer_personalized: bool = false) -> Dictionary
Starts the purchase flow for an in-app product.
Note
The product must first be fetched using query_product_details(...) before attempting to purchase.
| Parameter | Description |
|---|---|
product_id |
Identifier of the in-app product configured in the Google Play Console. |
is_offer_personalized |
Indicates whether the price is personalized for the user. |
Returns a Dictionary describing whether the billing flow launched successfully.
Final purchase results are delivered through the on_purchase_updated signal.
purchase_subscription🔗
func purchase_subscription(product_id: String, base_plan_id: String, offer_id: String = "", is_offer_personalized: bool = false) -> Dictionary
Starts the purchase flow for a subscription product.
Note
The product must first be fetched using query_product_details(...) before attempting to purchase.
Subscriptions require both a product ID and a base plan ID configured in the Play Console.
| Parameter | Description |
|---|---|
product_id |
Subscription product identifier defined in Google Play Console. |
base_plan_id |
Base plan ID configured for the subscription. |
offer_id |
Optional offer ID defined under the base plan. |
is_offer_personalized |
Indicates whether the price is personalized for the user. |
Returns a Dictionary describing whether the billing flow launched successfully.
Final purchase results are delivered through the on_purchase_updated signal.
query_product_details🔗
func query_product_details(product_list: PackedStringArray, product_type: ProductType)
Queries product information.
This must be called before attempting to purchase products.
| Parameter | Description |
|---|---|
product_list |
List of product IDs configured in Google Play Console. |
product_type |
ProductType enum value indicating the product type being queried. |
Emits the query_product_details_response signal.
Example
var product_ids = ["coins_100", "premium_potion"]
billing_client.query_product_details(products_ids, BillingClient.ProductType.INAPP)
query_purchases🔗
func query_purchases(product_type: ProductType)
Queries the user's currently owned purchases.
Only active subscriptions and unconsumed in-app purchases are returned.
| Parameter | Description |
|---|---|
product_type |
ProductType enum value indicating the product type being queried. |
Emits the query_purchases_response signal.
Example
billing_client.query_purchases(BillingClient.ProductType.INAPP)
set_obfuscated_account_id🔗
func set_obfuscated_account_id(account_id: String)
Sets an obfuscated account identifier for the current user.
Helps Google Play detect fraud and associate purchases with the correct user account.
| Parameter | Description |
|---|---|
account_id |
Obfuscated identifier representing the user's account in your system. |
Info
See the official Google Play Billing API reference: setObfuscatedAccountId.
set_obfuscated_profile_id🔗
func set_obfuscated_profile_id(profile_id: String)
Sets an obfuscated profile identifier.
Useful if your application supports multiple profiles under one account.
| Parameter | Description |
|---|---|
profile_id |
Obfuscated identifier representing the user's profile. |
Info
See the official Google Play Billing API reference: setObfuscatedProfileId.
start_connection🔗
func start_connection() -> void
Starts the connection to the Google Play Billing service.
The client must be connected before using any billing features.
Connection results are delivered through:
connectedsignalconnect_errorsignal
update_subscription🔗
func update_subscription(old_purchase_token: String, replacement_mode: ReplacementMode, new_product_id: String, base_plan_id: String, offer_id: String = "", is_offer_personalized: bool = false) -> Dictionary
Updates an existing subscription to a new subscription product or plan.
| Parameter | Description |
|---|---|
old_purchase_token |
Purchase token of the currently active subscription. This token is returned in purchase data from query_purchases_response. |
replacement_mode |
ReplacementMode enum value to define how the subscription replacement should behave. |
new_product_id |
Product ID of the subscription to switch to. |
base_plan_id |
Base plan ID of the new subscription. |
offer_id |
Optional offer ID configured under the base plan. |
is_offer_personalized |
Indicates whether the price is personalized for the user. |
Returns a Dictionary describing whether the update flow launched successfully.
Emits the on_purchase_updated signal.
Example
billing_client.update_subscription(old_purchase_token, BillingClient.ReplacementMode.WITH_TIME_PRORATION, "premium_sub", "monthly")