com.unity.purchasing 4.0.0

com.unity.purchasing

Notes: processedReleased July 28, 2021

Browse versions

PreviousNext

Unity Compatibility

Minimum Unity: 2019.4

Package Dependencies

Features

  • Codeless Listener method to access the store configuration after initialization.
  • - `CodelessIAPStoreListener.Instance.GetStoreConfiguration`
  • Several samples to the Package Manager Details view for com.unity.purchasing:
  • - Fetching additional products
  • - Integrating self-provided backend receipt validation
  • - Local receipt validation
  • - Google Play Store - Upgrade and downgrade subscriptions
  • - Google Play Store - Restoring Transactions
  • - Google Play Store - Confirming subscription price change
  • - Google Play Store - Handling Deferred Purchases
  • - Google Play Store - Fraud detection
  • - Apple App Store - Refreshing app receipts
  • Google Play - `GooglePlayProrationMode` enum that represent Google's proration modes and added `IGooglePlayStoreExtensions.UpgradeDowngradeSubscription` using the enum.

🔧 Bug Fixes

  • GooglePlay - Fixed Application Not Responding (ANR) error at `Product` initialization. The Google Play `SkuDetailsResponseListener.onSkuDetailsResponse` callback is now quickly handled.
  • Amazon - Fixed `Product.metadata.localizedPrice` incorrectly being `0.00` for certain price formats.
  • Apple, Mac App Store - Fixes Apple Silicon "arm64" support, missing from unitypurchasing bundle.

📈 Improvements

  • Reorganized and renamed APIs:
  • - `CodelessIAPStoreListener.Instance.ExtensionProvider.GetExtension` to `CodelessIAPStoreListener.Instance.GetStoreExtensions` to match the new `GetStoreConfiguration` API, above
  • - `IGooglePlayStoreExtensions.NotifyDeferredProrationUpgradeDowngradeSubscription` to `IGooglePlayConfiguration.NotifyDeferredProrationUpgradeDowngradeSubscription`
  • - `IGooglePlayStoreExtensions.NotifyDeferredPurchase` to `IGooglePlayConfiguration.NotifyDeferredPurchase`
  • - `IGooglePlayStoreExtensions.SetDeferredProrationUpgradeDowngradeSubscriptionListener` to `IGooglePlayConfiguration.SetDeferredProrationUpgradeDowngradeSubscriptionListener`
  • - `IGooglePlayStoreExtensions.SetDeferredPurchaseListener` to `IGooglePlayConfiguration.SetDeferredPurchaseListener`
  • - `IGooglePlayStoreExtensions.SetObfuscatedAccountId` to `IGooglePlayConfiguration.SetObfuscatedAccountId`
  • - `IGooglePlayStoreExtensions.SetObfuscatedProfileId` to `IGooglePlayConfiguration.SetObfuscatedProfileId`
  • Apple - Change the order of execution of the post-process build script, which adds the `StoreKitFramework` such that other post-process build scripts can run after it.
  • Changed the **Target Android** Menu app store selection feature to display a window under `Window > Unity IAP > Switch Store...`. To set the app store for the next build, first use **Build Settings** to activate the Android build target.
  • For the future Unity 2022
  • - Moved Unity IAP menu items from `Window > Unity IAP > ...` to `Services > In-App Purchasing > ...`
  • - Updated and added new functionnality to the `Services > In-App Purchasing` window in the `Project Settings`. The `Current Targeted Store` selector and `Receipt Obfuscator` settings are now accessible from this window.

API Changes

  • Samsung Galaxy - Removed Samsung Galaxy Store in-app purchasing support. Use the Unity Distribution Portal for the continued support of the Samsung Galaxy Store.
  • - All related classes and implementations have been removed including `AppStore.SamsungApps`.
  • Removed the following obsolete API:
  • - `CloudCatalogImpl`
  • - `CloudCatalogUploader`
  • - `CloudJSONProductCatalogExporter`
  • - `EventDestType`
  • - All `GooglePlayReceipt` constructors. Use `GooglePlayReceipt(string productID, string orderID, string packageName, string purchaseToken, DateTime purchaseTime, GooglePurchaseState purchaseState)` instead.
  • - `IAndroidStoreSelection.androidStore`
  • - `IDs.useCloudCatalog`
  • - `IGooglePlayConfiguration.SetPublicKey`
  • - `IGooglePlayConfiguration.UsePurchaseTokenForTransactionId`
  • - `IGooglePlayConfiguration.aggressivelyRecoverLostPurchases`
  • - `IGooglePlayStoreExtensionsMethod.FinishAdditionalTransaction`
  • - `IGooglePlayStoreExtensionsMethod.GetProductJSONDictionary`
  • - `IGooglePlayStoreExtensionsMethod.IsOwned`
  • - `IGooglePlayStoreExtensionsMethod.SetLogLevel`
  • - `IManagedStoreConfig`
  • - `IManagedStoreExtensions`
  • - `IStoreCallback.OnPurchasesRetrieved`. Use `IStoreCallback.OnAllPurchasesRetrieved` instead.
  • - `Promo`
  • - `StandardPurchasingModule.Instance(AndroidStore)`. Use `StandardPurchasingModule.Instance(AppStore)` instead.
  • - `StandardPurchasingModule.androidStore`. Use `StandardPurchasingModule.appStore` instead.
  • - `StandardPurchasingModule.useMockBillingSystem`. Use `IMicrosoftConfiguration` instead.
  • - `StoreTestMode`
  • - `UnityPurchasingEditor.TargetAndroidStore(AndroidStore)`. Use `TargetAndroidStore(AppStore)` instead.
  • - `WinRT` class. Use `WindowsStore` instead.
  • - `WindowsPhone8` class. Use `WindowsStore` instead.