1.2.4 - OpenIAP 1.3.17 Sync
This release syncs with OpenIAP v1.3.17, adding new types for Google Play Billing Library 5.0+ and 7.0+ features.
Android-specific updates
View All TagsThis release syncs with OpenIAP v1.3.17, adding new types for Google Play Billing Library 5.0+ and 7.0+ features.
This release syncs with OpenIAP v1.3.15 and simplifies field naming in Android input types.
You can now apply discount offers to one-time (in-app) purchases using offer_token:
# Get product with discount offers
var products = await iap.get_products(["premium_upgrade"], "inapp")
var product = products[0]
# Check for discount offers
if product.discount_offers.size() > 0:
var offer = product.discount_offers[0]
# Purchase with discount
var request = RequestPurchaseAndroidProps.new()
request.skus = ["premium_upgrade"]
request.offer_token = offer.offer_token_android
var result = await iap.request_purchase_android(request)
Fields inside platform-specific input types no longer require the _android suffix. The parent type name already indicates the platform context.
Why this change?
When you use RequestPurchaseAndroidProps, the type name already tells you this is Android-specific. Adding _android suffix to fields inside is redundant.
| Old Name | New Name |
|---|---|
obfuscated_account_id_android | obfuscated_account_id |
obfuscated_profile_id_android | obfuscated_profile_id |
purchase_token_android | purchase_token |
replacement_mode_android | replacement_mode |
Before:
var request = RequestSubscriptionAndroidProps.new()
request.skus = ["premium_monthly"]
request.obfuscated_account_id_android = "user_123"
request.purchase_token_android = old_token
request.replacement_mode_android = 2
After:
var request = RequestSubscriptionAndroidProps.new()
request.skus = ["premium_monthly"]
request.obfuscated_account_id = "user_123"
request.purchase_token = old_token
request.replacement_mode = 2
The suffix removal only applies to input types (request parameters). Response types still use suffixes because they're cross-platform:
# Response fields KEEP the _android suffix
var offer = product.discount_offers[0]
var token = offer.offer_token_android # Response field - keeps suffix
# Input fields DON'T have suffix
var request = RequestPurchaseAndroidProps.new()
request.offer_token = token # Input field - no suffix
| Package | Version |
|---|---|
| openiap-gql | 1.3.15 |
| openiap-google | 1.3.26 |
| openiap-apple | 1.3.13 |
For detailed changes, see the OpenIAP Release Notes.
Godot IAP 1.1.1 syncs with OpenIAP v1.3.14, bringing new enums, types, and subscription features for both Android and iOS platforms.
Godot IAP 1.1.0 adds macOS support and syncs with OpenIAP v1.3.12, bringing new features and improvements to both iOS and Android platforms.
We're excited to announce the first stable release of Godot IAP — a comprehensive in-app purchase plugin for Godot 4.x that conforms to the OpenIAP specification.