Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Official Unity IAP package 4.11.0 is now available

Discussion in 'Unity IAP' started by nicholasr, Jul 12, 2016.

Thread Status:
Not open for further replies.
  1. laurenfr

    laurenfr

    Joined:
    Oct 19, 2017
    Posts:
    3
    Unity IAP 1.21.0 is available for developers needing access to the Unity Distribution Platform Beta

    Added
    UDP module, currently in closed beta. This release did not modify any other IAP functionality.
     
    rommel89 and makaka-org like this.
  2. thabang_unity

    thabang_unity

    Joined:
    Jan 9, 2018
    Posts:
    1
    Unity IAP 1.20.1 is now available

    1.20.1: Replaces IAP 1.21 as stable release for non-UDP IAP developers. Those requiring UDP support should remain on 1.21.

    Developers currently using Unity IAP 1.21 that do not need support for the Unity Distribution Platform (UDP) Beta on Android should transition to this release.

    Added
    • Added a callback function that allows developers to check the state of the upgrade/downgrade process of subscriptions on GooglePlay.
    Fixed
    • Google Daydream - Correctly Displays IAP Prompt in 3d VR version instead of native 2D.
    • Fixed issue where IAP catalog prevented deletion of Price under Google Configuration.
    • Amazon Store - Fixed bug where Amazon store could not correctly parse currencies for certain countries.
    • MacOS - Fixed bug that causes non-consumables to auto-restore on MacOS apps after re-install, instead of requiring the the Restore button to be clicked.
    • Updated Android Response Code to return correct message whenever an activity is cancelled.
    • Fixed Mono CIL linker error causing initialization failure in Unity 5.3
    • Fixed inefficient Apple Receipt Parser that was slowing down when a large number of transactions were parsed on auto-rest
     
    Last edited by a moderator: Oct 10, 2018
    rommel89 likes this.
  3. ap-unity

    ap-unity

    Unity Technologies

    Joined:
    Aug 3, 2016
    Posts:
    1,519
    UnityIAP 1.22.0 now available. You can install via the Asset store or the Services Window

    [1.22.0] - 2019-03-18
    Added

    - Added Unity Distribution Portal (UDP) module as an Android build target. Unity Distribution Portal streamlines your distribution process. UDP allows you to only build one version of your game, centralize the management of your marketing assets and metadata, and submit your content to multiple app stores, all in the same workflow. For more details, please refer to https://docs.unity3d.com/Packages/com.unity.purchasing.udp@1.0/manual/index.html.
    - Added extension function for Apple store to expose products’ sku details
    - Added support for developer to include accountId in getBuyIntentExtraParams, this data helps Google analyze fraud attempts and prevent fraudulent transactions.
    - Added GooglePlay store extension function to support restore purchases.
    - Added GooglePlay store extension function to support consume(finish transaction) a purchase manually.

    Fixed
    - Fixed UWP build errors.
    - Fixed errors when initializing with two purchasing modules on WebGL & Windows Standalone.
    - Fixed not “re-importing required assets” when switching build targets with IAP.
    - Re-enabled Facebook IAP implementation for non-Gameroom Canvas apps.
    - Fixed GooglePlay store consumable products already owned error due to network issues.
    - Fixed wrong product id when cancel a subscription product purchase.
     
    rommel89 and benbenmushi like this.
  4. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 1.23.0 is now available. Install via the Asset Store or the Services Window.

    Note 1.22.1 is also incorporated into 1.23.0.

    ## [1.23.0] - 2019-10-16
    ### Added
    - UDP - Upgrade to version 1.2.0: new installer to manage previously-installed versions in Project; new UI for UDP Settings window; injection of SDK version information into app manifest; premium game support; user permissions aligned between Unity editor and UDP console; improved security around the transmission of telemetry data (the data you see in your reporting dashboard) between the repacked games and the UDP backend.

    ### Changed
    - UnityChannel / Xiaomi - Please use Unity Distributation Platform (UDP) for Xiaomi functionality. Removed UnityChannel.unitypackage from installer. Disabled and deprecated related APIs: `UnityEngine.Store`, `IUnityChannelExtensions`, `IUnityChannelConfiguration`.
    - Tizen - NOTICE Tizen Store support will be removed in an upcoming release.

    ### Fixed
    - Improved installer compatibility with Unity 2018.4 and 2019.x

    ## [1.22.1] - 2019-08-13
    ### Fixed
    - GooglePlay - SubscriptionInfo.getSubscriptionInfo() KeyNotFoundException when parsing receipts which omit expected fields.
    - GooglePlay - IStoreListener.OnInitializeFailed / IStoreCallback.OnSetupFailed should return InitializationFailureReason.AppNotKnown error when user changes password off-device - user must login. Previously erroneously generated infinite error 6 codes when fetching purchase history after password change.
    - OverflowException when initializing if device locale used the comma (“,”) character as decimal separator.

    Sample for manual installer GUI dialog, seen in most Unity versions (excepting 5.6 .. 2018.3):
     
    Last edited: Oct 17, 2019
    rommel89 and Egil-Sandfeld like this.
  5. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 1.23.1 is now available. Install via the Asset Store or the Services Window.

    Note, this reverts a Google Play change impacting offline purchases and consumption.

    ## [1.23.1] - 2019-11-18
    ### Added
    - UWP - Additional logging during initialization to diagnose developer portal misconfigurations. See https://docs.microsoft.com/en-us/wi...w-to-use-product-ids-for-add-ons-in-your-code for a broad discussion of Windows.ApplicationModel.Store configuration.

    ### Fixed
    - GooglePlay - Fix offline purchases inconsistently generating OnPurchaseFailed callbacks. Changes 1.22.0 "Fixed GooglePlay store consumable products already owned error due to network issues." - developers may choose to handle the `PurchaseFailureReason.DuplicateTransaction` for a ProductType.Consumable by rewarding the user with the product, and presuming that Unity IAP will automatically complete the transaction.
    - Improved compatibility with Unity 5.3 and 5.4.
     
    rommel89 likes this.
  6. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 1.23.2 is now available. Install via the Asset Store or the Services Window.

    This improves Google Play stability around purchase-flow interruptions - e.g network, or closing the app while purchasing.

    COMPATIBILITY

    The 1.23.x series is the last version of the IAP SDK to be compatible with the 5.x Unity Editor.

    Also, IAP SDK will be removing the direct integration for the following app stores:
    CHANGES

    ## [1.23.2] - 2020-06-17
    ### Added
    - GooglePlay - Improves the chance of successfully purchasing a Consumable or NonConsumable when the _purchase flow_ is interrupted. Also addresses the dialog, "Your order is still being processed".
    - Unity IAP will now detect this _purchasing_ failure. It will call the `IStoreListener.OnPurchaseFailed` API, initially. Then it will query Google Play for purchase success during the current app session until network is restored, and it will continue querying in the next app session, after a restart. It will finally call the `IStoreListener.ProcessPurchase` API if it finds a successful, unaccounted purchase.
    - Addresses the case where (1) a consumable or nonconsumable purchase flow is started and (2) a network disruption occurs, or the app is sent to the background and the purchasing Activity is canceled, or the app is terminated.
    - GooglePlay - Improves the chance of successfully repurchasing a Consumable whose successful transaction failed however to be _completed_ during the current app session.
    - Unity IAP will now detect this _consumption_ failure. It will automatically retry completing the purchase until it succeeds. Note that `DuplicateTransaction` may still be reported while the retry is ongoing, until the user's product is repurchasable again. See below for new APIs to monitor the consumption flow.
    - Addresses the case where (1) a Consumable purchase calls `IStoreListener.ProcessPurchase`, then (2) the transaction is completed by returning `ProcessPurchaseResult.Complete` from `IStoreListener.ProcessPurchase` or by directly calling `IStoreController.ConfirmPendingPurchase` [internally this always records the transaction identifier to the TransactionLog], and finally (3) an interruption (network or exit) aborts the transaction consumption. Only restarting the app or refunding the purchase would reliably resolve this case.
    - GooglePlay - Adds an `"isOwned" : <boolean>` sub-entry to the `Product.receipt`'s `"Payload"` JSON entry in order to help developers understand this product's current ownership state.
    - Contains `true` if the product is owned by the user. And please note that `true` may also indicate that Unity IAP is actively retrying consumption. Its boolean value will be `false` if the product is available for repurchase, or if we do not yet know Google Play's current status for this product. To clarify the receipt structure, `"isOwned"` is located in the Google Play-specific escaped-JSON sub-document. Sample `Product.receipt`, abbreviated: `{"Payload":"{\"json\": ..., \"signature\": ..., \"isOwned\":true}}"`. See the Google Play section of the [Unity IAP Receipt receipt documentation](https://docs.unity3d.com/Manual/UnityIAPPurchaseReceipts.html) for more on the receipt JSON structure.
    - GooglePlay - Adds `boolean IGooglePlayStoreExtensions.IsOwned(Product)` API to conveniently extract the new ownership state, above, from the Google Play JSON receipt.
    - Returns `true` if the product is still owned by the user. Returns `false` if the product is available for repurchase. Example:
    ```extensionProvider.GetExtension<IGooglePlayStoreExtensions>()```
    ```.IsOwned(storeController.products.WithID("100.gold.coins"));```.
    - GooglePlay - Adds `void IGooglePlayStoreExtensions.SetLogLevel(int level)` API to reduce logging.
    - `level` defaults to the legacy value of `0` and configures the Google Play Java store integration to emit debug, info, warning, and error logs. Setting `1` will restrict logging to emit only warnings and errors. Example: `extensionProvider.GetExtension<IGooglePlayStoreExtensions>().SetLogLevel(1)`.

    ### Fixed
    - GooglePlay - After the purchasing dialog, "You already own this product" from Google Play is shown, the `IStoreListener.OnPurchaseFailed` API is calls with an error of `PurchaseFailureReason.DuplicateTransaction`.
    - Unity IAP now treats "You already own this product" as a successful purchase, and _also_ calls `IStoreListener.ProcessPurchase`. Note: This amends the related behavior introduced in 1.23.1.
    - Addresses the scenario where (1) a Consumable is purchased, and during purchasing (2) the Google Play store is interrupted by e.g. a network disruption. (3) Unity IAP correctly calls `IStoreListener.OnPurchaseFailed`, reporting the interruption as a purchase failure. (4) The user restores the network, attempts to re-purchase, Google Play shows "You already own this product", and Unity IAP reports the message as an error, calling `IStoreListener.OnPurchaseFailed` again. (4.1) Repeated re-purchase attempts fail, also potentially failing even after restarting the app.
     
  7. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 1.23.3 is now available. Install via the Asset Store or the Services Window.

    Some of 1.23.2's Google Play changes are now off by default; they are now opt-in. Developers who have access to a post-purchase transaction de-duplication game server may choose to reenable and opt-in to the historical purchase query reconciliation change.

    COMPATIBILITY (repeat)

    The 1.23.x series is the last version of the IAP SDK to be compatible with the 5.x Unity Editor.

    Also, IAP SDK will be removing the direct integration for the following app stores:
    CHANGES

    ## [1.23.3] - 2020-06-28
    ### Changed
    - GooglePlay - Default the failed-purchase recovery behavior to be disabled, which was introduced in `1.23.2`, to address players deleting their game's TransactionLog and receiving multiple products for a single purchase. Opt-in to the `1.23.2` behavior with `bool IGooglePlayConfiguration.aggressivelyRecoverLostPurchases = true;`, when also using a game server capable of validating each transaction and deduplicate based upon `Product.transactionID`, to reward players one time for a single purchase and support quickly recovering from interrupted-purchases.
    - When a Google Play purchase is made the transaction can become out of synchronization with the Google Play server, appearing to be both failed on the game, and contradictorily successful on the Google Play store — an email message indicating purchase success may be received by the player. This desynchronization occurs when a purchase is interrupted while the native purchasing dialog is displayed to the player. Enable this feature to more aggressively detect these lost purchases.
    - NOTICE: It is strongly recommended this feature be used with an off-device transaction de-duplication mechanism to avoid double-rewarding the player. An example is a game server which records Product.transactionID for each successful purchase and reports to the game whether a new transaction has already been processed for this player during a previous gameplay session. The scenario this occurs is when a player purchases a product, uninstalls and reinstalls their game — erasing Unity IAP’s on-device TransactionLog de-duplication database — and then the player attempts and aborts a re-purchase by cancelling it. The purchase cancellation is one trigger for this recovery feature which may result in recovering and notifying a duplicate success to the game for only the initial purchase. The game could then deny rewarding the player for this detected duplicate purchase.
    - KNOWN-ISSUE: CrossPlatformValidator may show these historically-restored transactions as invalid.
     
    rommel89 likes this.
  8. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 1.23.4 is now available. Install via the Asset Store or the Services Window.

    COMPATIBILITY (repeat)

    The 1.23.x series is the last version of the IAP SDK to be compatible with the 5.x Unity Editor.

    Also, IAP SDK will be removing the direct integration for the following app stores:
    CHANGES

    ## [1.23.4] - 2020-07-13
    ### Added
    - Security - Supports receipts from GooglePlay which omit `packageName`. These as are seen from v1.23.2's purchase-recovery features.
    - The purchasing receipt's `packageName` is omitted by a GooglePlay historical purchase query APIs used by v1.23.2. When the RSASSA-PKCS1-v1_5 signature is valid and the receipt's `packageName` is not included, the `appBundleId` / `googleBundleId` input into `UnityEngine.Purchasing.Security.CrossPlatformValidator` is ignored. To avoid replay attacks we encourage developers continue heuristically scrutinizing the returned `purchaseTime` and `productId` values found in decoded receipts.

    ### Removed
    - Analytics - For publication to Kids Category on Google Play and Apple App Store, removed `SystemInfo.deviceUniqueIdentifier` collection and sharing with `ecommerce.iap.unity3d.com` server.
     
  9. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 1.23.5 is now available. Install via the Asset Store or the Services Window.

    COMPATIBILITY (repeat)

    The 1.23.x series is the last version of the IAP SDK to be compatible with the 5.x Unity Editor.

    Also, IAP SDK will be removing the direct integration for the following app stores:
    CHANGES

    ## [1.23.5] - 2020-08-12
    ### Fixed
    - GooglePlay - Fixed `IGooglePlayConfiguration.aggressivelyRecoverLostPurchases == false` (default) to reward players for currently in-flight purchases only, and not historical purchases, when the player cleans their device's TransactionLog, starts and cancels a purchase, and restarts the app.
     
    rommel89 and makaka-org like this.
  10. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 2.0.0 is now available. Install via the Asset Store or the Services Window.

    This release removes supporting APIs and implementations for the built-in copy of the Unity Distribution Platform (UDP) app store abstraction layer — now available as a separate Unity Package, and also the custom Tizen, CloudMoolah, and Xiaomi app stores.

    CHANGES

    ## [2.0.0] - 2020-07-15
    ### Removed
    - UnityChannel / Xiaomi - Completed deprecation, removing related APIs: `UnityEngine.Store`, `IUnityChannelExtensions`, `IUnityChannelConfiguration`.
    - CloudMoolah - Removed.
    - Tizen - Removed.
    - UDP package is no longer installed as a prerequisite

    ### Added
    - UWP - Additional logging during initialization to diagnose developer portal misconfigurations. See https://docs.microsoft.com/en-us/wi...w-to-use-product-ids-for-add-ons-in-your-code for a broad discussion of Windows.ApplicationModel.Store configuration.
    - UDP - if not installed or up-to-date, a menu will prompt you to install or update it upon selecting UDP support features. (See below)

    ### Fixed
    - Reduced logging during initialization and purchasing
    - Amazon - Removed KeyNotFoundException after purchase failure
    - UDP - Removed one NullPointerException vulnerability
    - GooglePlay developerPayload spurious JSON parsing exception in log

    ### Changed
    - IAP Updater "Updater Settings..." button now reads "More Information..." to be more accurate
    - UDP store implementation is still available, but must be installed in a separate module, available in either Asset Store or Package manager. The UDP module will need to be updated manually. (See above)
    - Visibility of INativeStores is now public, mainly to support the new UDP package's needs
    - Resource files - The Product Catalog, Android Target Billing Mode, and Receipt Obfuscator Tangle files will be moved out of the plugins folder.

    ### Important upgrade note
    - **Upgrading from prior Unity IAP?** - Unity may generate a _bad Android build_ once, immediately after installing the upgrade to this version of Unity IAP. Unity will be misconfigured to incorrectly include multiple Andriod app store Java implementations. So **if a dialog appears asking permission to update e.g. the "SamsungApps.aar" file's metadata, during the first build after the upgrade to this version of Unity IAP,** then click Yes, cancel the build, and rebuild. This dialog undesirably defeats Unity IAP's system for including one Android app store (Window > Unity IAP > Android > Target {app store}), resulting in the inclusion of Android Java code for two app stores. Android app stores such as Google Play and Samsung Apps may block publication of an APK which is detected to include Java code for two app store. Restarting Unity after upgrading will also avoid this dialog.
     
    rommel89 and makaka-org like this.
  11. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 2.1.0 is now available. Install via the Asset Store or the Services Window.

    CHANGES


    ## [2.1.0] - 2020-10-14
    ### Future
    - GooglePlay - Transaction IDs for all Google Play transactions will be switched to use Google's Purchase Token in a future version of Unity IAP. Google's Order ID previously was used when possible. This version introduces a feature to switch to Purchase Token now, and also to automatically use Purchase Token if `aggressivelyRecoverLostPurchases = true`.

    ### Changed

    - GooglePlay - Live payments using `aggressivelyRecoverLostPurchases = true` - switched to Google's Purchase Token from using Google's Order ID to represent all transaction IDs. Automatically sets `Product.transactionID` to GooglePlay `purchaseToken` when `aggressivelyRecoverLostPurchases` is `true`. Continues to use `orderId`, otherwise. CLARIFICATION: To reinforce the preferred usage of `aggressivelyRecoverLostPurchases`, a de-duplicating backend purchase verification server is recommended to be added to a game's transaction verification pipeline when using this feature. Without such a server the recovered purchases may not be easily or safely de-duplicated by a client.
    - When upgrading from previous versions of Unity IAP, and if enabled `bool IGooglePlayConfiguration.aggressivelyRecoverLostPurchases`, any purchases your users have made will be processed again by Unity IAP; ProcessPurchase will be called for all these purchases.
    - Afterwards, for future purchases, this change reduces future duplicate processing calls; ProcessPurchase should no longer be called after an interrupted purchase for an item already purcahsed by the user.
    - Update purchase verification servers to treat orderId and purchaseToken as the same ID. Extract the purchaseToken from the JSON receipt, or fetch the orderId using a purchaseToken and the server API [`purchases.products` Google Play Developer API](https://developers.google.com/android-publisher/api-ref/rest/v3/purchases.products).
    - Override this behavior with `UsePurchaseTokenForTransactionId`, below.
    - GooglePlay Security - Add GooglePlayReceipt.orderID and obsolete GooglePlayReceipt.transactionID for the local receipt validator, for clarity.
    - GooglePlay - Reduce the frequency of double-processing when a purchase is canceled, if using `aggressivelyRecoverLostPurchases = true`. Always records purchaseToken in TransactionLog when a transaction is completed.

    ### Added
    - GooglePlay - Ability to override the `Product.transactionID` and use either Google's Purchase Token, or the legacy Order ID when possible, with `UsePurchaseTokenForTransactionId`.
    - Call `void IGooglePlayConfiguration.UsePurchaseTokenForTransactionId(bool usePurchaseToken)` to disable the default behavior
    - a) `false` to use the `orderId`, when possible; this is the legacy and non-unique transaction ID behavior. This must switch to the purchaseToken when the orderId is not available from Google, which is when `aggressivelyRecoverLostPurchases = true`.
    - b) `true` to always use the unique purchaseToken in transactionID. NOTE: this is the preferred option, and it will be the only behavior available in a future version of Unity IAP.
    - **Background:** The GooglePlay purchaseToken is the unique identifier for all GooglePlay purchases; it is always available for all purchase types and all purchase records. The GooglePlay orderId is not available for all purchase types, notably sandbox and promo code, and also is currently not available for those purchase records which are returned for `aggressivelyRecoverLostPurchases = true` recovered purchases: the Google Play Billing history API used by this feature does not return orderId and therefore cannot be set as the Product.transactionID at that time. Historically, Unity IAP chose to prefer orderId for transactionID in its original implementation. And when the orderId was missing from purchase records (sandbox test purchases, and other no-money purchases), Unity IAP would use the purchaseToken as the transactionID.
    - **Impact:** Since Unity IAP version 1.23.3 this resulted in non-unique transactionIDs for purchases made which were "aggressively" restored: two distinct ProcessPurchase calls for one purchase could be generated, where Product.transactionID would change between two values (orderId and purchaseToken) and be non-unique. With this version, Unity IAP is starting a transition to only using purchaseToken, and avoids the impact for any new purchases made by a user.

    ### Fixed
    - Receipt Validation Obfuscator - Compilation of `GoolgPlayTangle.cs` and `AppleTangle.cs` files. The generated files have been restored to their pre-2.0.0 location.
    - GooglePlay - 2020.2 support, removing usage of obsolete UnityEngine.VR.VRSettings API.
     
    rommel89 and makaka-org like this.
  12. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 2.1.1 is now available. Install via the Asset Store or the Services Window.

    CHANGES


    ## [2.1.1] - 2020-10-23

    ### Fixed
    - Amazon - Fix build failure caused by duplicate classes
    - Amazon - Fix ResponseReceiver flaw reported by Amazon APK audit caused by permission attribute location in AndroidManifest.xml
     
    rommel89 likes this.
  13. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 2.2.0 is now available. Install via the Asset Store or the Services Window.

    CHANGES

    ## [2.2.0] - 2020-11-06

    ### Changed
    - GooglePlay - Upgrades to Google Play Billing Library v3.0.1. This replaces the Google Play AIDL implementation.
    - The transaction identifier is always purchaseToken. This replaces the v2.1.0 orderId behavior. See `IGooglePlayConfiguration` changes below.
    - Adds new and deprecates `IGooglePlayStoreExtensions` APIs
    - Deprecated - disabled.
    - `IGooglePlayStoreExtensions.IsOwned`
    - `IGooglePlayStoreExtensions.SetLogLevel`
    - `IGooglePlayStoreExtensions.GetProductJSONDictionary` - use the `ProductMetadata` of `product.metadata` from `IStoreController.products`
    - Deprecated - will be removed in future release.
    - `IGooglePlayStoreExtensions.FinishAdditionalTransaction`
    - New variant (signature)
    - `IGooglePlayStoreExtensions.UpgradeDowngradeSubscription(string oldSku, string newSku, int desiredProrationMode)` - allow refined proration mode for subscription upgrade or downgrade as described in the [Google ProrationMode documentation](https://developer.android.com/refer...ingclient/api/BillingFlowParams.ProrationMode)
    - New methods
    - `IGooglePlayStoreExtensions.ConfirmSubscriptionPriceChange(string productId, Action<bool> callback)` - prompt users to confirm a price change for their subscription
    - `IGooglePlayStoreExtensions.SetDeferredPurchaseListener(Action<Product> action)` - listen for new pending out-of-app purchases, consider notifying users here
    - `IGooglePlayStoreExtensions.SetObfuscatedAccountId(string accountId)` - to help Google detect and reduce irregular activities when making a purchase
    - `IGooglePlayStoreExtensions.SetObfuscatedProfileId(string profileId)` - to help Google detect and reduce irregular activities when making a purchase
    - deprecates `IGooglePlayConfiguration` APIs
    - Deprecated - disabled.
    - `IGooglePlayConfiguration.SetPublicKey`
    - `IGooglePlayConfiguration.aggressivelyRecoverLostPurchases`
    - `IGooglePlayConfiguration.UsePurchaseTokenForTransactionId`

    ### Fixed
    - IAP Catalog - GooglePlay - pricing template when exporting to CSV, now sets autofill pricing to `false` instead of `true`
    - GooglePlay - Subscription receipts will update, e.g. after an upgrade or downgrade, whenever the player pauses or resumes their app. See this change reflected in the `product.receipt` of `IStoreController.products`.

    ### Added
    - Apple Macos - Support for building IL2CPP on MacOS
     
    rommel89 and edyakuto like this.
  14. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 2.2.1 is now available. Install via the Asset Store or the Services Window.

    Known Issues:
    GooglePlay - Missing Proguard option can result in build failure - Workaround discussion

    CHANGES

    ## [2.2.1] - 2020-11-13

    ### Fixed
    - GooglePlay - ProductMetadata.localizedPrice always `0`
    - GooglePlay - "Main" thread warning seen in IStoreListener.OnInitialized and related callbacks.

    ### Added
    - GooglePlay - Subscription metadata is now available in `GoogleProductMetadata` from `ProductMetadata.GetGoogleProductMetadata()` via `IStoreController.products`.
    - For example, use `GoogleProductMetadata googleMetadata = storeController.product.all[0].metadata.GetGoogleProductMetadata();` now instead of the deprecated, `IGooglePlayStoreExtensions.GetProductJSONDictionary`.
    - string originalJson - Note, a single SkuDetails JSON, instead of multiple from `GetProductJSONDictionary`
    - string subscriptionPeriod
    - string freeTrialPeriod
    - string introductoryPrice
    - string introductoryPricePeriod
    - int introductoryPriceCycles
     
  15. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    (Please also see important FUTURE information, below)

    Unity IAP - com.unity.purchasing 2.2.1 "Core" package - is now available. Install via the Package Manager or the Services Window.

    CHANGES
    • [2.2.1] - 2020-11-19
      • GooglePlay - Fixed exposure of function calls at runtime used by the Asset Store Package 2.2.0 and up.
    • [2.2.0] - 2020-10-22
      • For the Google Play Billing Library v3 the IStore.OnPurchaseReceived API has been added to improve Subscription update notification capabilities.
      • App store implementations can notify the Unity IAP core transaction logic when the app store detects that an existing receipt has been updated, such as is the case when a player decides to upgrade or downgrade a subscription and disowns a previously owned product. The Unity IAP 2.2.1 plugin's GooglePlay implementation takes advantage of this. It updates the Product.receipt value, through the IStoreController.products accessor, e.g. when the player returns their application to the foreground.
    • [2.1.2] - 2020-09-20
      • Fix migration tooling's obfuscator file destination path to target Scripts instead of Resources
    • [2.1.1] - 2020-08-25
      • Fix compilation compatibility with platforms that don't use Unity Analytics (ex: PS4)
      • Fix compilation compatibility with "Scripting Runtime Version" option set to ".Net 3.5 Equivalent (Deprecated)" in Unity 2018.4
    • [2.1.0] - 2020-06-29
      • Source Code provided instead of precompiled dlls.
      • Live vs Stub DLLs are now using asmdef files to differentiate their targeting via the Editor
      • Fixed errors regarding failing to find assemblies when toggling In-App Purchasing in the Service Window or Purchasing Service Settings
      • Fixed failure to find UI assemblies when updating the Editor version.
      • Added menu to support eventual migration to In-App Purchasing version 3.
    • [2.0.6] - 2019-02-18
      • Remove embedded prebuilt assemblies.
    • [2.0.5] - 2019-02-08
      • Fixed Unsupported platform error
    • [2.0.4] - 2019-01-20
      • Added editor and playmode testing.
    • [2.0.3] - 2018-06-14
      • Fixed issue related to 2.0.2 that caused new projects to not compile in the editor.
      • Engine dll is enabled for editor by default.
      • Removed meta data that disabled engine dll for windows store.
    • [2.0.2] - 2018-06-12
      • Fixed issue where TypeLoadException occured while using "UnityEngine.Purchasing" because SimpleJson was not found. fogbugzId: 1035663.
    • [2.0.1] - 2018-02-14
      • Fixed issue where importing the asset store package would fail due to importer settings.
    • [2.0.0] - 2018-02-07
      • Fixed issue with IAP_PURCHASING flag not set on project load.
    upload_2020-11-20_14-46-28.png

    FUTURE


    "Unified" Unity IAP 3.0.0 - Coming soon(*)
    1. The Unity IAP 2.2.1 plugin depends upon this com.unity.purchasing 2.2.1 package, currently.
      1. The com.unity.purchasing package contains definitions for core in-app purchasing concepts such as Product, IStoreListener, and the UnityPurchasing transaction processing logic, currently.
      2. The plugin contains app store implementations. E.g. Apple, Google, Samsung, Amazon, Windows, as well as the value-added features of the StandardPurchasingModule, and more are available from the plugin, currently.
    2. With the upcoming Unity IAP 3.0.0 release, estimated for publication during early 2021, the development team will publish a unified package merging the plugin into this com.unity.purchasing package.
      1. To reiterate, the com.unity.purchasing 3.0.0 package will contain both the Core API and the App Store implementation (e.g. StandardPurchasingModule, etc).
    3. The plugin releases will stop. The com.unity.purchasing package releases will continue and combine all changes.
      1. The Unity IAP releases will be delivered through the com.unity.purchasing package: normal bugfixes and features for all the Unity IAP services.
    (*) Early 2021 / January is an estimated release window for Unity IAP 3.0.0 and may change.

    Thank you for your patience and support as we transition. We are excited to move forward with this unified package. We have considered the usage and issue-reports from our users. We look forward to simplifying Unity IAP installation and updating, as well as internally taking advantage of new technical opportunities as a single package.

    NOTICE

    Unity IAP versions "plugin 2.2.1" and "com.unity.purchasing 2.2.1" have identical numbers. Thank you for understanding this coincidence is temporarily confusing. These two related product versions will change in the near future, and diverge appropriately.

    EDITS
    * ETA in January 2021, "soon"
     
    Last edited: Nov 21, 2020
    rommel89, makaka-org and saskenergy like this.
  16. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 2.2.2 is now available. Install via the Asset Store or the Services Window.

    CHANGES

    ## [2.2.2] - 2020-11-20

    ### Fixed
    - Mac App Store - Support for Apple Silicon, `arm64` slice added to binary
    - GooglePlay - ProductMetadata.localizedPrice no longer floors fractions, e.g. "$19.99" was "$19.00"
    - GooglePlay - Fix several purchasing-flow issues
    - OnPurchaseFailed not called after canceled purchase
    - Exceptions shown in logcat after normal purchase
    - Purchases of consumables left incomplete, resulting in "product already owned" errors
    - GooglePlay - Fix initialization when [Android] "Player Settings > Publishing Settings > Minification: Proguard" is enabled. "AndroidJavaException: java.lang.ClassNotFoundException: com.android.billingclient.api.PurchasesUpdatedListener"
     
    rommel89 and pixelnodrock like this.
  17. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 2.2.3 is now available. Install via the Asset Store or the Services Window.

    CHANGES

    ## [2.2.3] - 2020-12-01

    ### Fixed
    - GooglePlay - `IStoreListener.OnInitialized` is now called after all purchases have been fetched from the store.
    - GooglePlay - `IStoreListener.OnPurchaseFailed` would not be called in projects where the purchased product's ID differed from its Store Specific ID.
    - GooglePlay - All receipts were corrupt after a purchase of a Consumable, until the next Android `Activity.onResume` lifecycle event, if the user had previously bought a Subscription.
    - GooglePlay - Fix `MissingMethodException` seen in projects using `com.unity.purchasing@2.0.3` through `2.2.0` when a user launches their game after having previously purchased a Product.
     
    rommel89 and makaka-org like this.
  18. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 2.2.4 is now available. Install via the Asset Store or the Services Window.

    CHANGES

    ## [2.2.4] - 2020-12-03

    ### Fixed
    - GooglePlay - `IStoreListener.ProcessPurchase` called more than once for any purchase which is not consumed, i.e. when `ProcessPurchaseResult.Pending` is returned, by fixing a race-condition.

    ### Changed
    - GooglePlay - To receive `ProcessPurchase` calls after foregrounding the app, when a purchase is made outside the app (e.g. in the Play Store app), please upgrade the core package via the Package Manager to `com.unity.purchasing@2.2.1` or higher.
     
    rommel89 and makaka-org like this.
  19. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 2.2.5 is now available. Install via the Asset Store or the Services Window.

    CHANGES

    ## [2.2.5] - 2020-12-14

    ### Fixed
    - GooglePlay - Fails to initialize when the player has made no purchases
    - GooglePlay - Missing ProcessPurchase callback at app start when the transaction is (1) purchased, (2) processed by the app with a ProcessPurchaseResult.Pending result, (3) the app is terminated, and (4) the app is restarted
    - GooglePlay - NullReferenceException from "FillPurchases" (logged internal API) when returning from background, unpredictably
    - Apple - Unity IAP 2.2.2's Apple Silicon fix not included in release; continuous integration pipeline fixed
    - `StandardPurchasingModule.appStore` returns `AppStore.MacAppStore` for Mac App Store, `AppStore.AppleAppStore` for iOS App Store, and `AppStore.WinRT` for Windows Desktop. (No change to
    `AppStore.SamsungApps`, `AppStore.AmazonAppStore`, or `AppStore.GooglePlay`.)
     
    rommel89 and makaka-org like this.
  20. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 2.2.6 is now available. Install via the Asset Store or the Services Window.

    CHANGES

    ## [2.2.6] - 2020-01-14

    ### Changed
    - GooglePlay - OnSetupFailed called immediately when Unity IAP fails to connect to the underlying service. To handle users who are logged-out of Google Play we stop the initialization process quickly.

    ### Fixed
    - GooglePlay - ConfirmPendingPurchase failed to acknowledge purchases after purchase and app restart.
    - GooglePlay - ProcessPurchase unexpectely called when player backgrounded and foregrounded app before the initialization phase finished.
    - GooglePlay - Initialization incorrectly reported as failing, while race-condition returned fetched product metadata simultaneously.
    - Apple - "ArgumentOutOfRangeException: Not a valid calendar for the given culture" during Apple receipt validation (`CrossPlatformValidator.Validate` > `AppleValidator.Validate` > `AppleReceiptParser.Parse`) on devices set to Thai locale.
     
  21. John_Corbett

    John_Corbett

    Joined:
    May 17, 2019
    Posts:
    151
    Unity IAP - com.unity.purchasing 2.2.2 "Core" package - is now available. Install via the Package Manager or the Services Window.

    upload_2021-1-25_18-34-51.png

    • [2.2.2] - 2021-01-19
      • Fixed logs incorrectly formatted showing “purchases({0}): -id of product-”
      • Renamed method IStoreCallback.OnPurchasesRetrieved to IStoreCallback.OnAllPurchasesRetrieved, deprecated old method name. This is to fix a problem when refreshing receipts.
     
  22. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 2.2.7 is now available. Install via the Asset Store or the Services Window.

    CHANGES

    ## [2.2.7] - 2021-01-27

    ### Changed

    - Amazon - Include SDK version 2.0.76. Continuing to investigate sensitivity to slow-network conditions.

    ### Fixed
    - GooglePlay - Purchasing silently failing, showing `Failed to purchase unknown product {0}: System.Collections.Generic.List``1[UnityEngine.AndroidJavaObject]` in log, not calling `IStoreListener.OnPurchaseFailed`, after prior purchase when offline, after Initializing, until app has been restarted.
    - GooglePlay - `IStoreController.FetchAdditionalProducts` cleared receipts inappropriately.
    - Apple - Exception seen when purchasing and initializing with existing purchases (e.g. Non-Consumables) on devices set to Thai language. Internal logging of `DateTime` used `CurrentCulture` instead of `InvariantCulture`. Removed logs.
     
  23. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 3.0.1 is now available. Install via the Services Window and the Package Manager.

    Migration notes are available in the package manager and are copied here.

    CHANGES

    ## [3.0.1] - 2021-03-03
    ### Added
    GooglePlay - populate `Product.receipt` for `Action<Product>` parameter returned by `IGooglePlayStoreExtensions.SetDeferredPurchaseListener` callback

    ### Changed
    - WinRT - This feature is now shipped as C# code under assembly definitions instead of .dll files.
    - Security - This feature is now shipped as C# code under assembly definitions instead of .dll files.
    - Receipt Validation Obfuscator - The Tangle File Obfuscate function is now Editor-only and no longer part of the Runtime Security module.

    ### Fixed
    - Windows Standalone - launches FakeStore when detected by StandardPurchasingModule; disentangled from WinRT
    - Security - restored Receipt Validation Obfuscator Editor functionality
    - GooglePlay - fix regression, avoiding exception when using IGooglePlayConfiguration while running on a non-Google target

    ## [3.0.0-pre.6] - 2021-02-09
    ### Fixed
    - WinRT - There was a bad path being pointed to by the .dll's meta file, preventing compilation to this target.

    ## [3.0.0-pre.5] - 2021-01-12
    ### Added
    - Apple - Support for [auto-renewable subscription Offer Codes](https://developer.apple.com/documen...d_offers/implementing_offer_codes_in_your_app) on iOS and iPadOS 14 and later via `IAppleExtensions.PresentOfferRedemptionSheet()`. E.g.

    ```csharp
    public void ShowSubscriptionOfferRedemption(IExtensionProvider extensions)
    {
    var appleExtensions = extensions.GetExtension<IAppleExtensions>();
    appleExtensions.PresentOfferRedemptionSheet();
    }
    ```

    ### Fixed
    - Security and WinRT stub dlls and references to Analytics no longer break builds unsupported platforms like PS4, XboxOne, Switch and Lumin. These platforms are still unsupported but will no longer raise errors on build.

    ### Removed
    - Support for Facebook in-app purchasing is no longer provided. All classes and implementations have been removed.

    ## [3.0.0-pre.4] - 2020-10-09
    - Fix builds for UWP

    ## [3.0.0-pre.3] - 2020-10-09
    - First integration into Unity 2021
    - Includes changes listed in [CHANGELOG-ASSETSTORE.md](CHANGELOG-ASSETSTORE.md), starting from version 1, ending 2020-10-09
    - **This is the first release of the Unified *Unity In App Purchasing*, combining the old package and its Asset Store Components.**
     
  24. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 3.0.2 is now available. Install via the Services Window and the Package Manager.

    See this post for a breakdown of available documentation.

    CHANGES

    ## [3.0.2] - 2021-03-30
    ### Added
    Comprehensive manual and API documentation.
     
    Last edited: Apr 7, 2021
    rommel89, makaka-org and MaggerFabio like this.
  25. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 3.1.0 is now available. Install via the Services Window and the Package Manager.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@3.1/manual/index.html

    CHANGES: https://docs.unity3d.com/Packages/com.unity.purchasing@3.1/changelog/CHANGELOG.html

    ## [3.1.0] - 2021-04-15
    ### Added
    - GooglePlay - Google Play Billing Library version 3.0.3.
    - Fixes a broken purchase flow when user resumed their app through the Android Launcher after interrupting an ongoing purchase. Now `IStoreListener.OnPurchaseFailed(PurchaseFailureDescription.reason: PurchaseFailureReason.UserCancelled)` is called on resumption. E.g. first the user initiates a purchase, then sees the Google purchasing dialog, and sends their app to the background via the device's Home key. They tap the app's icon in the Launcher, see no dialog, and, finally, the app will now receive this callback.

    ### Changed
    - `string StandardPurchasingModule.k_PackageVersion` is obsolete and will incorrectly report `"3.0.1"`. Please use the new `string StandardPurchasingModule.Version` to read the correct current version of this package.
    - Reduced logging, and corrected the severity of several logs.

    ### Fixed
    - tvOS - build errors due to undesirable call to `[[SKPaymentQueue defaultQueue] presentCodeRedemptionSheet]` which will now only be used for iOS 14.
    - tvOS, macOS - Builds missing Xcode project In-App Purchasing capability and StoreKit.framework.
    - Security - Tangle files causing compilation errors on platforms not supported by Security: non-GooglePlay and non-Apple.
    - GooglePlay - Subscription upgrade/downgrade using proration mode [DEFERRED](https://developer.android.com/refer.../api/BillingFlowParams.ProrationMode#DEFERRED) (via `IGooglePlayStoreExtensions.UpgradeDowngradeSubscription(string oldSku, string newSku, int desiredProrationMode)`) reported `OnPurchaseFailed` with `PurchaseFailureReason.Unknown`, when the deferred subscription upgrade/downgrade succeeded. This subscription change generates no immediate transaction and no receipt. Now a custom `Action<Product>` can be called when the change succeeds, and is set by the new `SetDeferredProrationUpgradeDowngradeSubscriptionListener` API:
    - Adds `IGooglePlayStoreExtensions.SetDeferredProrationUpgradeDowngradeSubscriptionListener(Action<Product> action)`. Sets listener for deferred subscription change events. Deferred subscription changes only take effect at the renewal cycle and no transaction is done immediately, therefore there is no receipt nor token. The `Action<Product>` is the deferred subscription change event. No payout is granted here. Instead, notify the user that the subscription change will take effect at the next renewal cycle.
     
    rommel89 and NickLionStudios like this.
  26. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 2.2.8 is now available. Install via the Asset Store or the Services Window.

    Please Note this Asset Store SDK unitypackage is deprecated and will no longer be supported later in 2021. Please migrate to the com.unity.purchasing@3.1.0 package in a future game update.

    CHANGES

    ## [2.2.8] - 2021-04-20

    ### Added
    - GooglePlay - Google Play Billing Library version 3.0.3.
    - Fixes a broken purchase flow when user resumed their app through the Android Launcher after interrupting an ongoing purchase. Now `IStoreListener.OnPurchaseFailed(PurchaseFailureDescription.reason: PurchaseFailureReason.UserCancelled)` is called on resumption. E.g. first the user initiates a purchase, then sees the Google purchasing dialog, and sends their app to the background via the device's Home key. They tap the app's icon in the Launcher, see no dialog, and, finally, the app will now receive this callback.
     
    rommel89 and konsnos like this.
  27. John_Corbett

    John_Corbett

    Joined:
    May 17, 2019
    Posts:
    151
    Unity IAP 3.2.1 is now available. Install via the Services Window and the Package Manager.

    Please note that until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install 3.2.1 explicitly.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@3.2/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@3.2/changelog/CHANGELOG.html

    [3.2.1] - 2021-05-18
    Changed
    • Manual and API documentation updated.
    [3.2.0] - 2021-05-17
    Added
    • GooglePlay - Automatic resumption of initialization when a user's device initially does not have a Google account, and they correct that Android setting without killing the app, then they resume the app. NOTE this does not impact Unity IAP's behavior when a user removes their Google account after initialization.
    • GooglePlay - API IGooglePlayConfiguration.SetServiceDisconnectAtInitializeListener(Action) called when Unity IAP fails to connect to the underlying Google Play Billing service. The Action may be called multiple times after UnityPurchasing.Initialize if a user does not have a Google account added to their Android device. Initialization of Unity IAP will remain paused until this is corrected. Inform the user they must add a Google account in order to be able to purchase. See documentation "Store Guides" > "Google Play" for a sample usage.
    • GooglePlay - It is now possible to check if a purchased product is pending or not by calling IsPurchasedProductDeferred() from GooglePlayStoreExtensions.
    • UDP - RegisterPurchaseDeferredListener in IUDPExtensions can be used to assign a callback for pending purchases.
    Fixed
    • GooglePlay - Receipts for Pending purchases are now UnifiedReceipts and not raw Google receipts. Any parsers you have for these can extract the raw receipt json by parsing the "Payload" field.
    • Editor - The Fake Store UI used in Play Mode in the Editor, as well as some unsupported platforms has been restored. A null reference exception when trying to make a purchase no longer occurs.
    • UDP - Added a null check when comparing Store-Specific IDs
    Changed:
    • Samsung Galaxy - Support is being deprecated when not using Unity Distribution Portal as a target. The feature will be removed soon. Please use the Unity Distribution Portal package with IAP for full Samsung Galaxy support.
     
    rommel89 likes this.
  28. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Update to Asset Store version, for 2018 LTS projects: Unity IAP 2.3.0 is now available. Install via the Asset Store or the Services Window.

    PLEASE NOTE the other Package Manager version 3 of Unity IAP, also released today as 3.2.1, supersedes this Asset Store version.

    [2.3.0] - 2021-05-17

    Note
    • Future updates - The In-App Purchasing SDK is fully available in the Unity Package Manager. Please see our migration instructions.
    • GooglePlay - This SDK 2.3.0 version matches the Google Play Billing functionality found in com.unity.purchasing@3.2.0, which is the preferred version of Unity IAP and is available for Unity 2019 and higher.
    Added
    • GooglePlay - Automatic resumption of initialization when a user's device initially does not have a Google account, and they correct that Android setting without killing the app, then they resume the app. NOTE this does not impact Unity IAP's behavior when a user removes their Google account after initialization.
    • GooglePlay - API IGooglePlayConfiguration.SetServiceDisconnectAtInitializeListener(Action) called when Unity IAP fails to connect to the underlying Google Play Billing service. The Action may be called multiple times after UnityPurchasing.Initialize if a user does not have a Google account added to their Android device. Initialization of Unity IAP will remain paused until this is corrected. Inform the user they must add a Google account in order to be able to purchase. See documentation "Store Guides" > "Google Play" for a sample usage.
    • GooglePlay - It is now possible to check if a purchased product is pending or not by calling IsPurchasedProductDeferred() from IGooglePlayStoreExtensions.
    Fixed
    • GooglePlay - Receipts for Pending purchases are now UnifiedReceipts and not raw Google receipts. Any parsers you have for these can extract the raw receipt json by parsing the "Payload" field.
    • GooglePlay - Subscription upgrade/downgrade using proration mode DEFERRED (via IGooglePlayStoreExtensions.UpgradeDowngradeSubscription(string oldSku, string newSku, int desiredProrationMode)) reported OnPurchaseFailed with PurchaseFailureReason.Unknown, when the deferred subscription upgrade/downgrade succeeded. This subscription change generates no immediate transaction and no receipt. Now a custom Action<Product> can be called when the change succeeds, and is set by the new SetDeferredProrationUpgradeDowngradeSubscriptionListener API:
      • Adds IGooglePlayStoreExtensions.SetDeferredProrationUpgradeDowngradeSubscriptionListener(Action<Product> action). Sets listener for deferred subscription change events. Deferred subscription changes only take effect at the renewal cycle and no transaction is done immediately, therefore there is no receipt nor token. The Action<Product> is the deferred subscription change event. No payout is granted here. Instead, notify the user that the subscription change will take effect at the next renewal cycle.
     
    rommel89 likes this.
  29. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 3.2.2 is now available. Install via the Services Window and the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 3.2.2.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@3.2/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@3.2/changelog/CHANGELOG.html

    [3.2.2] - 2021-06-02
    Fixed
    • WebGL - While WebGL is not supported with an included app store implementation, the WebGL Player will no longer crash when the StandardPurchasingModule.Initialize API is called if Project Settings > Player > WebGL > Publishing Settings > Enable Exceptions > "Explicitly Thrown Exceptions Only" or "None" are set.
    • Amazon - Better support for Android R8 compiler. Added minification (Project Settings > Player > Publishing Settings > Minify) "keep" ProGuard rules.
     
    rommel89, makaka-org and JeffDUnity3D like this.
  30. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 3.2.3 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered “verified” for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > “+” > Add package by name ... > com.unity.purchasing > 3.2.3.


    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@3.2/manual/index.html

    Changes:
    https://docs.unity3d.com/Packages/com.unity.purchasing@3.2/changelog/CHANGELOG.html

    [3.2.3] - 2021-07-08

    Fixed
    - GooglePlay - Fix `DuplicateTransaction` errors seen during purchase, after a purchase had previously been Acknowledged with Google.
    - GooglePlay - Fix `DuplicateTransaction` errors seen after a user starts a purchase on a game with Unity IAP 1.x or 2.x, quits their game, upgrades their game to include a version of Unity IAP 3.x, and tries to finish consuming / completing that old purchase.
     
    rommel89 and makaka-org like this.
  31. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 4.0.0 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.0.0.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.0/manual/index.html (NOTE: planned to be uploaded later this week, thanks in advance for your patience, please see the Changelog in the mean-time)

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.0/changelog/CHANGELOG.html

    [4.0.0] - 2021-07-19
    Added

    - Codeless Listener method to access the store configuration after initialization.
    - `CodelessIAPStoreListener.Instance.GetStoreConfiguration`
    - Several samples to the [Package Manager Details view](https://docs.unity3d.com/Manual/upm-ui-details.html) 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.

    Fixed

    - GooglePlay - Fixed [Application Not Responding (ANR)](https://developer.android.com/topic/performance/vitals/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.

    Changed

    - 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.
    Removed
    - Samsung Galaxy - Removed Samsung Galaxy Store in-app purchasing support. Use the [Unity Distribution Portal](https://unity.com/products/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.
     
    rommel89 and NickLionStudios like this.
  32. nicholasr

    nicholasr

    Joined:
    Aug 15, 2015
    Posts:
    183
    Unity IAP 4.0.3 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.0.0. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.0/manual/index.html (NOTE: planned to be uploaded later this week, thanks in advance for your patience, please see the Changelog in the mean-time)

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.0/changelog/CHANGELOG.html

    ## [4.0.3] - 2021-08-18
    ### Added
    - Added samples to the [Package Manager Details view](https://docs.unity3d.com/Manual/upm-ui-details.html):
    - Apple Sample - Restoring Transactions
    - Apple Sample - Handling Deferred Purchases

    ### Fixed
    - GooglePlay - Fixed issue that led to purchases failing with a ProductUnavailable error when fetching additional products multiple times in quick succession.
    - GooglePlay - Fixed issue that led to purchases failing with a ProductUnavailable error when a game had been running for some time.
    - GooglePlay - Fixed issue that led to initialization failing with a NoProductsAvailable error when the network is interrupted while initializing, requiring the user to restart the app. Now Unity IAP handle initialization with poor network
    connectivity by retrying periodically. This retry behavior is consistent with our Apple App Store’s, and with the previous version of our Google Play Store’s implementations.

    ### Changed

    - Restructured [Manual documentation](https://docs.unity3d.com/Packages/com.unity.purchasing@4.0/manual/index.html) to improve readability.
     
    rommel89 and JeffDUnity3D like this.
  33. John_Corbett

    John_Corbett

    Joined:
    May 17, 2019
    Posts:
    151
    Unity IAP 4.1.0 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.1.0. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.1/manual/index.html (NOTE: planned to be uploaded later this week, thanks in advance for your patience, please see the Changelog in the mean-time)

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.1/changelog/CHANGELOG.html

    ## [4.1.0] - 2021-09-20

    ### Added
    - Apple - Add support for receipt validation with [StoreKit Test](https://developer.apple.com/documentation/Xcode/setting-up-storekit-testing-in-xcode). See the [Receipt Validation Obfuscator manual](https://docs.unity3d.com/Packages/com.unity.purchasing@4.0/manual/UnityIAPValidatingReceipts.html) for a usage recommendation. See also the [sample](https://docs.unity3d.com/Packages/com.unity.purchasing@4.0/manual/Overview.html#learn-more) "05 Local Receipt Validation" for an example.
    - GooglePlay - Add support for controlling automatic fetching of purchases at initialization, with `IGooglePlayConfiguration.SetFetchPurchasesAtInitialize(bool)`. Use to help distinguish previously seen purchases from new purchases. Then to fetch previously seen purchases use `IGooglePlayExtensions.RestorePurchases(Action<bool>)`.

    ### Changed
    - Menu items for this package were renamed from *Unity IAP -> In-App Purchasing* and have been moved from *Window > Unity IAP* to *Services > In-App Purchasing*.
    - Choosing an Android app store target before building the Android Build Target is now required. A build error will be emitted otherwise. Set this with the Store Selector window (*Services > In-App Purchasing > Switch Store ...*) or the API (`UnityPurchasingEditor.TargetAndroidStore()`). The default Android app store is now AppStore.NotSpecified and is visible in the window as `<Select a targeted store>`. Previously the default app store was the Google Play Store for the Android Build Target. See the [Store Selector documentation](https://docs.unity3d.com/Packages/com.unity.purchasing@4.1/manual/StoreSelector.html) for more
    - Apple - Workaround rare crash seen if `nil` `NSLocaleCurrencyCode` is received when extracting localized currency code from `[SKProduct priceLocale]` when fetching products. Substitutes [ISO Unknown Currency code "XXX"](https://en.wikipedia.org/wiki/ISO_4217#X_currencies) into `ProductMetadata.isoCurrencyCode`.
    - Removed warning log `Already recorded transaction`.
    - Codeless - The default setting for enabling Codeless Auto Initialization in new projects' catalogs is now true instead of false. (As seen in the Catalog Editor as "Automatically initialize UnityPurchasing (recommended)").

    ### Fixed
    - Fixed warning, missing await for async call in ExponentialRetryPolicy.cs

    ### Removed
    - Removed the original and complex Unity IAP sample known as "Example", or "IAP Demo". Please use the recently added [samples](https://docs.unity3d.com/Packages/com.unity.purchasing@4.0/manual/Overview.html#learn-more) for a granular introduction to In-App Purchasing features.
     
    Last edited: Oct 18, 2021
    rommel89 and JeffDUnity3D like this.
  34. SashaM

    SashaM

    Joined:
    Jul 20, 2021
    Posts:
    1
    Unity IAP 4.1.1 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.1.1. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.1/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.1/changelog/CHANGELOG.html

    ## [4.1.1] - 2021-10-28
    ### Changed

    - A default store will be selected for each platform. For Android the default store will be Google. All other platforms already had default stores.
     
    rommel89 and nicholasr like this.
  35. John_Corbett

    John_Corbett

    Joined:
    May 17, 2019
    Posts:
    151
    Unity IAP 4.1.2 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.1.2. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.1/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.1/changelog/CHANGELOG.html

    ## [4.1.2] - 2021-11-29
    ### Fixed

    - Various internal obsolete warnings have been removed, allowing the project to be compiled with errors as warnings enabled.

    Side note:

    There are also some fixes made for the beta versions of Unity Editor that didn't appear here because the versions are not released yet. This update may help users working with early access or future releases.

    Those being:
    • Adding an IAPButton GameObject to the scene from the GameObject menu now works again
    • The service settings (in the project settings UI) now retrieves and retains the public GooglePlay key stored on our backend
     
    Last edited: Dec 1, 2021
    rommel89 likes this.
  36. John_Corbett

    John_Corbett

    Joined:
    May 17, 2019
    Posts:
    151
    Unity IAP 4.1.3 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.1.3. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.1/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.1/changelog/CHANGELOG.html

    ## [4.1.3] - 2022-01-11

    ### Fixed
    - Removed deprecated UnityWebRequest calls, updating them to use safer ones. This avoids compiler warnings that may occur.
    - Fixed edge case where Apple StoreKit receipt parsing would fail, preventing validation.
     
    rommel89 likes this.
  37. John_Corbett

    John_Corbett

    Joined:
    May 17, 2019
    Posts:
    151
    Unity IAP 4.1.4 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.1.3. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.1/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.1/changelog/CHANGELOG.html

    ## [4.1.4] - 2022-03-30

    ### Fixed
    • GooglePlay - Fixed issue where if an app is backgrounded while a purchase is being processed, an OnPurchaseFailed would be called with the purchase failure reason UserCancelled, even if the purchase was successful.
     
    rommel89 and makaka-org like this.
  38. WilliamOD

    WilliamOD

    Unity Technologies

    Joined:
    May 31, 2021
    Posts:
    16
    Unity IAP 4.2.0-pre.1 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, since this version is a "preview",you will need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > "com.unity.purchasing" > "4.2.0-pre.1".
    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.2/manual/index.html

    Important note: From this version onwards, the minimum Unity Editor version supported by the In-App Purchasing package is 2020.3.

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.2/changelog/CHANGELOG.html

    ### Added
    - Support for the new Unity Analytics transaction event.
    - The package will now send telemetry diagnostic and metric events to help improve the long-term reliability and performance of the package.

    ### Changed
    - The minimum Unity Editor version supported is 2020.3.
    - The In-App Purchasing service window now links to the new Unity Dashboard for Unity Editors 2022 and up.

    ### Fixed
    - GooglePlay - Fixed OnInitializeFailed never called if GooglePlay BillingClient is not ready during initialization.
    - GooglePlay - GoogleBilling is allowed to initialize correctly even if the user's Google account is logged out, so long as it is linked. The user will need to log in to their account to continue making purchases.
    - Fixed a build error `DirectoryNotFoundException` that occurred when the build platform was iOS or tvOS and the build target was another platform.
     
    rommel89 likes this.
  39. WilliamOD

    WilliamOD

    Unity Technologies

    Joined:
    May 31, 2021
    Posts:
    16
    Unity IAP 4.2.0-pre.2 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, since this version is a "preview",you will need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > "com.unity.purchasing" > "4.2.0-pre.2".
    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.2/manual/index.html

    Important note: From this version onwards, the minimum Unity Editor version supported by the In-App Purchasing package is 2020.3.

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.2/changelog/CHANGELOG.html

    ## [4.2.0-pre.2] - 2022-04-28

    ### Added
    - Support for Unity Analytics TransactionFailed event.
    - Sample showcasing how to initialize Unity Gaming Services using the Services Core API

    ### Changed
    - The Analytics notice in the In-App Purchasing service window has been removed for Unity Editors 2022 and up.
     
    rommel89 likes this.
  40. WilliamOD

    WilliamOD

    Unity Technologies

    Joined:
    May 31, 2021
    Posts:
    16
    Unity IAP 4.1.5 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.1.5. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.1/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.1/changelog/CHANGELOG.html

    ## [4.1.5] - 2022-05-17
    ### Fixed
    - GooglePlay - Fixed a null reference exception introduced in Unity IAP 4.1.4 that could happen when canceling an in-app purchase.
     
  41. John_Corbett

    John_Corbett

    Joined:
    May 17, 2019
    Posts:
    151
    This was posted late. We apologize for the delay in this announcement.

    Unity IAP 4.2.1 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.2.1. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.2/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.2/changelog/CHANGELOG.html

    ## [4.2.1] - 2022-06-14
    ### Fixed
    - Downgrade `com.unity.services.core` from 1.4.1 to 1.3.1 due to a new bug found in 1.4.1

    ## [4.2.0] - 2022-06-13

    ### Added
    - Feature to automatically initialize **Unity Gaming Services** through the catalog UI. Please see the [documentation](https://docs.unity3d.com/Packages/c...al/UnityIAPInitializeUnityGamingServices.html) for more details.

    ### Changed
    - The In-App Purchasing package now requires **Unity Gaming Services** to have been initialized before it can be used.
    For the time being **IAP** will continue working as usual, but will log a warning if **Unity Gaming Services** has not been initialized.
    In future releases of this package, initializing **Unity Gaming Services** will be mandatory. Please see the [documentation](https://docs.unity3d.com/Packages/c...al/UnityIAPInitializeUnityGamingServices.html) for more details.

    ## [4.2.0-pre.2] - 2022-04-28

    ### Added
    - Support for Unity Analytics TransactionFailed event.
    - Sample showcasing how to initialize [Unity Gaming Services](https://unity.com/solutions/gaming-services) using the [Services Core API](https://docs.unity.com/ugs-overview/services-core-api.html)

    ### Changed
    - The Analytics notice in the In-App Purchasing service window has been removed for Unity Editors 2022 and up.

    ## [4.2.0-pre.1] - 2022-04-07

    ### Added
    - Support for the [new Unity Analytics](https://unity.com/products/unity-analytics) [transaction event](https://docs.unity.com/analytics/AnalyticsSDKAPI.html#Transaction).
    - The package will now send telemetry diagnostic and metric events to help improve the long-term reliability and performance of the package.

    ### Changed
    - The minimum Unity Editor version supported is 2020.3.
    - The In-App Purchasing service window now links to the [new Unity Dashboard](https://dashboard.unity3d.com/) for Unity Editors 2022 and up.

    ### Fixed
    - GooglePlay - Fixed OnInitializeFailed never called if GooglePlay BillingClient is not ready during initialization.
    - GooglePlay - GoogleBilling is allowed to initialize correctly even if the user's Google account is logged out, so long as it is linked. The user will need to log in to their account to continue making purchases.
    - Fixed a build error `DirectoryNotFoundException` that occurred when the build platform was iOS or tvOS and the build target was another platform.
     
    rommel89 likes this.
  42. John_Corbett

    John_Corbett

    Joined:
    May 17, 2019
    Posts:
    151
    Unity IAP 4.3.0 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.3.0. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.3/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.3/changelog/CHANGELOG.html

    ## [4.3.0] - 2022-06-16
    ### Added
    - GooglePlay - API `IGooglePlayConfiguration.SetQueryProductDetailsFailedListener(Action<int>)` called when Unity IAP fails to query product details. The `Action` will be called on each query product details failure with the retry count. See documentation "Store Guides" > "Google Play" for a sample usage.
     
    rommel89 and makaka-org like this.
  43. Yannick_D

    Yannick_D

    Unity Technologies

    Joined:
    Feb 21, 2022
    Posts:
    226
    Unity IAP 4.4.0 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.4.0. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.4/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.4/changelog/CHANGELOG.html

    ## [4.4.0] - 2022-07-11
    ### Added
    - GooglePlay - Google Play Billing Library version 4.0.0.
    - The Multi-quantity feature is not yet supported by the IAP package and will come in a future update. **Do not enable `Multi-quantity` in the Google Play Console.**
    - Add support for the IMMEDIATE_AND_CHARGE_FULL_PRICE proration mode. Use `GooglePlayProrationMode.ImmediateAndChargeFullPrice` for easy access.
    - The `"skuDetails"` in the receipt json is now an array of the old structure, not just one object. It will only have one element in most cases, so if this is being parsed in your app, treat it like an array and get the first element by default. (This is missing from the changelog and was added in 4.5.1, after users noticed it. Adding it here for readers.)


    ### Fixed
    - GooglePlay - Fix `IGooglePlayConfiguration.SetDeferredPurchaseListener` and `IGooglePlayConfiguration.SetDeferredProrationUpgradeDowngradeSubscriptionListener` callbacks sometimes not being called from the main thread.
    - GooglePlay - When configuring `IGooglePlayConfiguration.SetQueryProductDetailsFailedListener(Action<int> retryCount)`, the action will be invoked with retryCount starting at 1 instead of 0.
    - GooglePlay - Added a validation when upgrading/downgrading a subscription that calls `IStoreListener.OnPurchaseFailed` with `PurchaseFailureReason.ProductUnavailable` when the old transaction id is empty or null. This can occur when attempting to upgrade/downgrade a subscription that the user doesn't own.
     
    Last edited by a moderator: Oct 19, 2022
  44. aVerrecchia

    aVerrecchia

    Unity Technologies

    Joined:
    Jun 28, 2022
    Posts:
    34
    Unity IAP 4.4.1 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.4.0. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.4/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.4/changelog/CHANGELOG.html


    [4.4.1] - 2022-08-11
    Fixed
    • GooglePlay - Fixed NullReferenceException and ArgumentException that would rarely occur due to a concurrency issue introduced in Unity IAP 4.2.0
    • Amazon - Set android:export to true to support Android API level 31+
     
  45. WilliamOD

    WilliamOD

    Unity Technologies

    Joined:
    May 31, 2021
    Posts:
    16
    Unity IAP 4.5.0 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.5.0. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.5/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.5/changelog/CHANGELOG.html

    ## [4.5.0] - 2022-09-23
    ### Added
    - Apple - Add support for [Family Sharing](https://developer.apple.com/app-store/subscriptions/#family-sharing).
    - API `IAppleConfiguration.SetEntitlementsRevokedListener(Action<List<Product>>` called when entitlement to a products are revoked. The `Action` will be called with the list of revoked products. See documentation "Store Guides" > "iOS & Mac App Stores" for a sample usage.
    - API - Product metadata is now available in `AppleProductMetadata` from `ProductMetadata.GetAppleProductMetadata()` via `IStoreController.products`.
    - API `AppleProductMetadata.isFamilyShareable` indicated if the product is family shareable.
    - `Apple App Store - 11 Family Sharing` sample that showcases how to use Unity IAP to manage family shared purchases.

    ### Fixed
    - GooglePlay - Processing out-of-app purchases such as Promo codes no longer requires the app to be restarted. The
    purchase will be processed the next time the app is foregrounded. Technical limitation: In the case of promo codes, if
    the app is opened while the code is redeemed, you might receive an additional call
    to `IStoreListener.OnPurchaseFailed` with `PurchaseFailureReason.Unknown`. This can be safely ignored.
    - GooglePlay - Fixed a `NullReferenceException` that would rarely occur when retrieving products due to a concurrency issue introduced in Unity IAP 4.2.0.
     
  46. aVerrecchia

    aVerrecchia

    Unity Technologies

    Joined:
    Jun 28, 2022
    Posts:
    34
    Unity IAP 4.5.1 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.5.0. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.5/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.5/changelog/CHANGELOG.html

    ## [4.5.0] - 2022-09-23
    Fixed
    • GooglePlay - Fixed deferred purchases being processed when the app is foregrounded. Issue introduced in Unity IAP 4.5.0.
    • GooglePlay - Fixed a NullReferenceException in DequeueQueryProducts happening when launching the app. Issue introduced in Unity IAP 4.2.0.
    • Analytics - Fixed a NullReferenceException when reporting failed transactions of purchase unavailable products. Issue introduced in Unity IAP 4.2.0.
    • Analytics - Legacy Analytics will no longer report events in custom UGS environments, which would cause misreported live sales figures. Issue introduced in Unity IAP 4.2.0.
     
    rommel89, Rachan and makaka-org like this.
  47. John_Corbett

    John_Corbett

    Joined:
    May 17, 2019
    Posts:
    151
    Unity IAP 4.5.2 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.5.2. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.5/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.5/changelog/CHANGELOG.html

    ## [4.5.2] - 2022-10-28
    ### Fixed
    - Removed unused exception variable causing a compiler warning CS0168.
    - Telemetry - Calls to telemetry reporting were occasionally tripping a `NullReferenceException`, `IndexOutOfRangeException` or `KeyNotFoundException`, for some users. These exceptions are now caught safely and logged. These failures are also mitigated by moving all Telemetry calls to the main thread. Issue noticed in IAP 4.4.1, but may be older.
    - Apple - Optimized memory usage when processing transactions to prevent out of memory crash when processing transactions on launch.
    - Batch Mode - Calls to `UnityPurchasingEditor.TargetAndroidStore` to select UDP will now successfully check UDP package installation and log an error instead of throwing a blocking popup when executed as part of a Batch Mode command.
    - Analytics - Removed escape characters for receipt JSON which was causing parsing issues in the backend.
    - GooglePlay - Fixed a bug causing a crash when retrying to finish a transaction while disconnected
     
  48. John_Corbett

    John_Corbett

    Joined:
    May 17, 2019
    Posts:
    151
    Unity IAP 4.6.0 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.6.0. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.6/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.6/changelog/CHANGELOG.html


    Added
    • Added a new restore transaction callback `RestoreTransactions(Action<bool, string> callback)` to obtain the error string when RestoreTransactions is not successful (`IAppleExtensions` and `IGooglePlayStoreExtensions`).
    • Added a new initialize failed callback `IStoreListener.OnInitializeFailed(InitializationFailureReason, string)` to obtain the error string when OnInitializeFailed is invoked.
    • Added a new setup failed callback `IStoreCallback.OnSetupFailed(InitializationFailureReason, string)` to obtain the error string when OnSetupFailed is invoked.
    • Added a new FetchAdditionalProducts. The failCallback contains an error string. `IStoreController.FetchAdditionalProducts(HashSet<ProductDefinition>, Action, Action<InitializationFailureReason, string>)`
    • Apple - `Product.appleOriginalTransactionId` : Returns the original transaction ID. This field is only available when the purchase was made in the active session.
    • Apple - `Product.appleProductIsRestored` : Indicates whether the product has been restored.
    • GooglePlay - `IGooglePlayConfiguration.SetFetchPurchasesExcludeDeferred(bool exclude)` has been added to revert to the previous behaviour. This is not recommended and should only be used if `Deferred` purchases are handled in your `IStoreListener.ProcessPurchase`.
    • GooglePlay - `IGooglePlayStoreExtensions.GetPurchaseState(Product product)` has been added to obtain the `GooglePurchaseState` of a product.
    • GooglePlay - Added missing values to `GoogleBillingResponseCode` in order to output it in `PurchaseFailureDescription`'s message when available.
    • Codeless - Added to the [IAP Button](https://docs.unity3d.com/Packages/com.unity.purchasing@4.6/manual/IAPButton.html) the option to add a script for the On Transactions Restored: `void OnTransactionsRestored(bool success, string? error)`

    Changed
    • Upgraded `com.unity.services.core` from 1.3.1 to 1.5.2
    • Upgraded `com.unity.services.analytics` from 4.0.1 to 4.2.0
    • The old OnInitializeFailed `OnInitializeFailed(InitializationFailureReason error)` was marked `Obsolete`
    • The old OnSetupFailed `OnSetupFailed(InitializationFailureReason reason)` was marked `Obsolete`
    • The old FetchAdditionalProducts `FetchAdditionalProducts(HashSet<ProductDefinition> additionalProducts, Action successCallback, Action<InitializationFailureReason> failCallback)` was marked `Obsolete`
    • The old restore transaction callback `RestoreTransactions(Action<bool> callback)` was marked `Obsolete` (`IAppleExtensions` and `IGooglePlayStoreExtensions`).
    • Apple - Transactions received from Apple that are invalid (where the product is not entitled) will no longer output the `Finishing transaction` log. This only affects transactions that never reached the `ProcessPurchase`.
    • GooglePlay - The enum `GooglePurchaseState` now recognizes `4` as `Deferred`.

    Fixed
    • Analytics - A ServicesInitializationException introduced in Analytics 4.3.0 is now handled properly.
    • Analytics - Fixed an issue where transactions events were invalidated when there was no localization data for a product.
    • GooglePlay - Fixed a `NullReferenceException` when querying sku details while the BillingClient is not ready.
    • GooglePlay - Fixed [Application Not Responding (ANR)](https://developer.android.com/topic/performance/vitals/anr) when foregrounding the application while disconnected from the Google Play Store.
    • GooglePlay - Limited the occurence of `PurchasingUnavailable` errors when retrieving products while in a disconnected state to once per connection.
    • GooglePlay - `Deferred` purchases are, by default, no longer sent to `IStoreListener.ProcessPurchase` when fetching purchases. This avoids the possibility of granting products that were not paid for. These purchases will only be processed once they become `Purchased`. This can be reverted with `IGooglePlayConfiguration.SetFetchPurchasesExcludeDeferred(bool exclude)` to not exclude them, but `Deferred` purchases will need to be handled in `IStoreListener.ProcessPurchase`.
     
  49. John_Corbett

    John_Corbett

    Joined:
    May 17, 2019
    Posts:
    151
    Unity IAP 4.7.0 is now available. Install via the Package Manager.

    Please note that for Unity 2021+, until this package is considered "verified" for your version of the Unity Editor, you may need to specify the version manually to install it explicitly. Unity 2021 Package Manager > "+" > Add package by name ... > com.unity.purchasing > 4.7.0. Also note that this is a fully supported package, regardless of our "verified" flag.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.7/manual/index.html

    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.7/changelog/CHANGELOG.html

    Analytics FAQ: https://forum.unity.com/threads/imp...nalytics-changed-as-of-version-4-7-0.1301283/

    Added
    • Added `storeSpecificErrorCode` to `PurchaseFailureDescription.message` when available.

    Fixed
    • Unity IAP will consider the call to `UnityPurchasing.initialize` completed before invoking the correct callback `IStoreListener.OnInitialized` or `IStoreListener.OnInitializeFailed`. This prevents these callbacks from being invoked more than once per initialization.
    • GooglePlay - Fixed `No such proxy method` exception in our representation of `BillingClientStateListener.onBillingServiceDisconnected()` introduced by Unity IAP 4.6.0
    • Apple - Fixed a `NullReferenceException` happening when the receipt isn't found.

    Changed
    • Removed `com.unity.services.analytics` from the IAP SDK dependencies
     
    Last edited: Mar 15, 2023
  50. Arnaud_Gorain

    Arnaud_Gorain

    Unity Technologies

    Joined:
    Jun 28, 2022
    Posts:
    178
    Unity IAP 4.8.0 is now available. Install via the Package Manager.

    See documentation: https://docs.unity3d.com/Packages/com.unity.purchasing@4.8/manual/index.html
    Changes: https://docs.unity3d.com/Packages/com.unity.purchasing@4.8/changelog/CHANGELOG.html

    Added
    • Added new IAP Button in the editor. This new button allows for more UI customization. The new button will no longer update the button fields by default.
    • Added a new event OnProductFetched(Product) to the IAP Listener and to the IAP Button it is called after fetching products from the app stores.
    • Added a new OnPurchaseFailed(Product, PurchaseFailureDescription) callback containing more information on the failed purchase in IDetailedStoreListener : IStoreListener
    Changed
    • IAP Button is now obsolete.
    • Google Play - Billing Library update from version 4.0.0 to 5.1.0 Google Release Notes. New Google Billing features are not supported yet, they will be included in a future major update.
    • Removed the nullable operator ? from public interfaces and classes.
    • IStoreListener.OnPurchaseFailed is now obsolete.
    • When present, Analytics 4.4.0 and above will now use the new interface IAnalyticsStandardEventComponent from Services Cores 1.8.1.
    • Upgraded com.unity.services.core from 1.5.2 to 1.8.1.
    Fixed
    • Samples - Some samples had IAP 4.6.0 IStoreListener changes not completely implemented causing compilation errors.
     
Thread Status:
Not open for further replies.