Unity IAP packages 5.4.0 and 4.15.1 are now available

Unity IAP 1.9.1 is available.

Known Issues:

[1.9.1] - 2016-11-17

Added

  • [Beta] Codeless IAP — UI fields show title, price, and description downloaded from the platform store

Fixed

  • IAPButton component now updates product ID list as the IAP Catalog is being edited
  • IAP Catalog now includes a store ID field for the Cloud Moolah store
  • Fixed a problem with opening a project containing the Unity IAP plugin while IAP was disabled in the Services window
  • IAPButton inspector field for Product ID now works correctly with Undo
  • Set GooglePlay as default Android store AAR fileset. Excludes other store’s assets (Java, resource XML, localization), saving ~196kb in default APK. Creates Assets/Plugins/UnityPurchasing/Resources/BillingMode.json in Project. Configure manually with Window > Unity IAP > Android menu, or UnityPurchasingEditor.TargetAndroidStore(AndroidStore).
  • CloudMoolah - update Window > Unity IAP > Android menu checkmarks when CloudMoolah selected

[1.9.0] - 2016-10-31

Added

  • CloudMoolah support. CloudMoolah website here. Preliminary store guide available here. Preliminary configuration document available here.
  • [Beta] Codeless IAP tools. Implement IAP by adding IAP Buttons to your project (Window > Unity IAP > Create IAP Button) and configure your catalog of IAP products without writing a line of code (Window > Unity IAP > IAP Catalog). Preliminary documentation is available here.
  • [Beta] Google Play - Support for Daydream VR. Requires Unity 5.4+ “GVR” Technical Preview, enabling VR, and including the Daydream SDK. Additional details here.
  • Samsung Galaxy Store - Added support for receiving auto-recurring subscriptions
  • Highlights chosen Android store in menu Window > Unity IAP > Android

Fixed

  • Remove the menu item to select Android store at runtime
  • Fix an exception that occurred when parsing prices while culture was set to use commas as a decimal separator
2 Likes

Unity IAP 1.9.2 is available.

[1.9.2] - 2016-11-29

Fixed

  • GooglePlay - addresses warning about usage of WebViewClient.onReceivedSslError if CloudMoolah.aar is included
  • CloudMoolah - simplify Login API and rename LoginError enum to LoginResultState
  • Android - remove READ_PHONE_STATE permission from AndroidManifest.xml simplifying logic around CloudMoolah Register and Login by removing automatic SystemInfo.deviceUniqueIdentifier calls. Developers may now choose to include this permission using this API to collect a user identifer, or provide an alternate long-lived user identifier, in a CloudMoolah supporting game for the Register and Login API password parameter.
1 Like

@nicholasr Unity 5.5.0f3, latest Unity IAP, OSX Sierra
After updating unity and IAP package (via services panel) selecting “Unity IAP → Android → Target Google Play” seems to do nothing and keeps unchecking after android Build & Run. Permission com.sec.android.iap.permission.BILLING is now removed from build and I keep getting error “the item you requested is not available for purchase” in Google Play popup :frowning:

Hi @spav - I believe the first two of these behaviors, while unexpected, are not problematic. I hope these explanations help overall:

Expect ‘Target Android’ to: (1) update Assets/Plugins/UnityPurchasing/Resources/BillingMode.json, (2) impact the contents / size of a built APK, and (3) permit interaction with the chosen store (default GooglePlay) when ran on the appropriate device. Please see attached screenshot for reference.

Expect removal of com.sec.android.iap.permission.BILLING and more store-specific permissions on IAP 1.9.1+ since Samsung IAP and other non-selected Android stores are more aggressively excluded from builds, especially when building after restarting without first using the Unity IAP > Target Android menu. Edit BillingMode.json with value AndroidStore.NotSpecified to restore that advanced and now unsupported old multi-store behavior.

I speculate “not available for purchase” could indicate the test-device or test-account has a consumable transaction which has not been consumed with GooglePlay - a networking error or crash interrupted the last transaction, which in the best case is fixable by a relaunch of the app. This might also occur when non-consumable products are marked ‘PurchaseProcessingResult.Pending’ in the ProcessPurchase implementation and a purchase is retried. A stackoverflow contributor provided more avenues to explore here: android - the item you requested is not available for purchase - Stack Overflow and I feel this checklist is also worth viewing.

1 Like

Thank you for clarifying things. My issue seems to caused by CloudMoolah security issue. After publishing in Google Play everything work as intended again.

1 Like

Hello,

I keep getting this error (Unity 5.5.0xf3 Linux, Ubuntu 14.04)

DirectoryNotFoundException: Could not find a part of the path “…/Assets/Plugins/UnityPurchasing/resources/BillingMode.json”

I don’t know why it’s looking for a folder “resources” because the right folder would be “Resources” and there is no BillingMode.json

Any advice on this please?

2 Likes

have same problem at win64 and linux versions

DirectoryNotFoundException: Could not find a part of the path "/media/disk2/work/prg/Assets/Plugins/UnityPurchasing/resources/BillingMode.json".
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/FileStream.cs:292)
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share)
(wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)
System.IO.StreamWriter..ctor (System.String path, Boolean append, System.Text.Encoding encoding, Int32 bufferSize) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/StreamWriter.cs:124)
System.IO.StreamWriter..ctor (System.String path, Boolean append, System.Text.Encoding encoding)
(wrapper remoting-invoke-with-check) System.IO.StreamWriter:.ctor (string,bool,System.Text.Encoding)
System.IO.File.WriteAllText (System.String path, System.String contents, System.Text.Encoding encoding) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/File.cs:626)
System.IO.File.WriteAllText (System.String path, System.String contents) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/File.cs:621)
UnityEngine.Purchasing.UnityPurchasingEditor.SaveAndroidStoreTarget (AndroidStore enabled)
UnityEngine.Purchasing.UnityPurchasingEditor.TargetAndroidStore (AndroidStore target)
UnityEngine.Purchasing.UnityPurchasingEditor.TargetGooglePlay ()
2 Likes

@tigres810 and @Seraphim-Whiteless thank you very much for reporting this string-casing issue. A fix is in QA scheduled for release with the next build of Unity IAP.

An untested workaround might be to symlink resources → Resources. On linux from the project root dir: ln -s Resources Assets/Plugins/UnityPurchasing/resources

2 Likes

Closing this thread from general posts, to encourage usage of new threads per-issue.

1 Like

Unity IAP 1.9.3 is available.

[1.9.3] - 2017-01-03

Added

  • Windows Store - support for UWP apps running while logged-out of Windows Store. Now fetches app’s product metadata if logged out, and requests user sign in to make purchase or to fetch user’s purchase history.
  • Editor - diagnostic log at build-time when IAP Service disabled: “Unity IAP plugin is installed, but Unity IAP is not enabled. Please enable Unity IAP in the Services window.” Fewer redundant errors.

Fixed

  • Editor - checkmarks refresh for Targeted Android Store after Editor Play/Stop
  • Editor - hides spurious Component MenuItems
  • Linux Editor - BillingMode.json path case-sensitivity
  • IAP Catalog - clearer text for Export button: “App Store Export”

Unity IAP 1.10.0 is available

Known Issue:

  • Unity 5.6.0b3 (beta release) iOS Store - Receipt data not forwarded to Analytics for verification. This will be fixed in a future Unity version.
  • Unity 5.6 - Displays multiple times the “Do you want to install Unity IAP” dialog. Subsequent dialogs can be safely cancelled; will not corrupt installation.

[1.10.0] - 2017-01-23

Added

  • Samsung Galaxy Apps - In-App Purchase SDK v4. Simplifies flow for first-time payment users. See Samsung Developer IAP Documentation for more.
  • Tizen Store - Add support for subscriptions
  • StandardPurchasingModule - Add bool useFakeStoreAlways property to override native stores with the local debug FakeStore for rapid prototyping. Will not connect to any App Store when enabled.
// Enable the FakeStore for all IAP activity
var module = StandardPurchasingModule.Instance();
module.useFakeStoreAlways = true;
  • Editor Updater - Notify the developer when updates to Unity IAP are available with an actionable dialog. Periodically check the Asset Store version and prompt with an upgrade dialog capable of downloading the latest plugin.
  • Editor Installer - Simplify integration of Unity IAP into a Project, avoiding unexpected breakage of the scripting build environment after package installation. Detect and warn if Unity IAP Core Service is “Off” during installation.

Removed

  • Samsung Galaxy Apps - remove In-App Purchase SDK v3 and replaced with v4, above.

Fixed

  • GooglePlay - Fix a problem that occurred when suspending the application during a successful transaction. Previously a consumable product could get stuck in a state where it could not be purchased again until the Google Play cache was cleared.
1 Like

To address rejections by Google for Daydream VR and GooglePlay IAP screen-transitions showing title-bars, a custom build of Unity IAP is available here:

This fix will be incorporated into an upcoming Unity IAP release.

1 Like

Unity IAP 1.10.1 is now available.

[1.10.1] - 2017-03-29

Fixed

  • GooglePlay - Suspending and resuming from app-icon while purchase dialog displayed no longer generates both OnPurchaseFailed then ProcessPurchase messages, only whichever callback is correct.
  • Remove cloud JSON exporter that was erroneously showing in the IAP Catalog export list
  • Fixed a bug when parsing localized prices when the device’s localization does not match the number format rules for the currency
  • Resolved DLL name conflict by renaming Assets/Plugins/UnityPurchasing/Bin/Common.dll to Purchasing.Common.dll
  • Installer - Suppressed multiple redundant dialogs
1 Like

Unity IAP 1.11.0 is now available.

[1.11.0] - 2017-05-01

Added

  • FacebookStore - Facebook Gameroom Payments Lite support. Available on Unity 5.6+ when building for Facebook Platform on Gameroom (Windows) and WebGL. Preliminary documentation is available here
  • Apple platforms - Added experimental support for setting “simulatesAskToBuyInSandbox”. Please let us know how this impacts ask-to-buy testability for you.
extensions.GetExtension<IAppleExtensions>().simulateAskToBuy = true;
  • Apple platforms - Added support for setting “applicationUsername” field which will be added to every payment request to help the store detect fraud.
// Set the applicationUsername to help Apple detect fraud
extensions.GetExtension<IAppleExtensions>().SetApplicationUsername(hashedUsername);

Requirement

  • GooglePlay - “Android SDK API Level 24 (7.0)” (or higher) must now be installed. To upgrade, either perform the one-time step of setting the project’s “Android Player Settings > Other Settings > Minimum API Level” to 24, building an APK, then resetting to the project’s previous value. Or, run the android Android SDK Manager tool manually and install “Android 7.0 (API 24)”. Addresses build error messages: “Unable to merge android manifests.” and “Main manifest has <uses-sdk android:targetSdkVersion=‘23’> but library uses targetSdkVersion=‘24’”. Note the Minimum API Level support is unchanged; merely the installation of API 24 SDK is now required for Daydream VR.

Fixed

  • GooglePlay Daydream VR - Uses decoration-free Activity for purchasing
  • GooglePlay - Avoids sporadic price serialization exception
  • Apple App Stores - Improve handling of the situation where an attempt to finish a transaction fails (if the user is signed out of the store and cancels the sign in dialog, for example). The Apple store implementation will now remember that the transaction should be finished, and attempt to call finishTransaction again if the transaction is retrieved from the queue again. When this happens, the store will call OnPurchaseFailed with the reason “DuplicateTransaction”—this prevents a situation where a call to InitiatePurchase could result in no call to ProcessPurchase or OnPurchaseFailed.
  • Amazon - Fix for a crash when loading product metadata for subscription parent products
2 Likes

Unity IAP 1.11.1 is now available.

[1.11.1] - 2017-05-23

Fixed

  • GooglePlay - Fix regression seen during purchasing where GooglePlay Activity forces screen orientation to portrait and turns background black. Restores neutral orientation and transparent background behavior.
1 Like

Unity IAP 1.11.2 is now available.

[1.11.2] - 2017-05-30

Added

  • Apple platforms - Parse the app receipt when retrieving product information and attempt to set receipt fields on Product. With this change the hasReceipt field on Apple platforms will work more like it does on non-Apple platforms.

Fixed

  • FacebookStore - Better error handling for cases where store configuration changes after purchases have already been made.
  • General - Better momentary memory performance for local receipt validation and other JSON parsing situations.
  • Editor menus - Targeted Android store menu checkmark are set and valid more often.
  • Installer - Fix error seen during install, ReflectionTypeLoadException[...]UnityEditor.Purchasing.UnityIAPInstaller.<k_Purchasing>.
1 Like

Unity IAP 1.11.3 is now available.

[1.11.3] - 2017-06-20

Fixed

  • Amazon - Purchase attempts for owned non-consumable products are now treated as successful purchases.

KNOWN ISSUES

  • Apple platforms - a blocking bug exists when building from Unity 5.3.

Fix will be in 1.11.4.

2 Likes

Unity IAP 1.11.4 is now available.

[1.11.4] - 2017-06-21

Fixed

  • Apple platforms - Fix a blocking bug when building from Unity 5.3.
2 Likes

Unity IAP 1.12.0 is now available.

[1.12.0] - 2017-07-25

Added

  • XiaomiMiPay - Add Xiaomi Mi Game Pay app store purchasing for Android devices in China. Add the “Unity Channel” support library and service. Unity Channel helps non-China developers access the Unity-supported Chinese app store market by featuring app store user login and payment management. Use Unity Channel directly for login to Xiaomi. Unity IAP internally uses Unity Channel for Xiaomi payment. Preliminary documentation is available. See also Xiaomi’s portal and Unity’s partner guide.

Fixed

  • FacebookStore - Fix login and initialization corner-case abnormally calling RetrieveProducts internally
  • Tizen Store - Fix purchasing regression introduced after 1.11.1
  • Mac App Store - Fixes “libmono.0.dylib not found” errors at launch if built via Unity 2017.1. See also Known Issues, below.

Known Issues

  • Mac App Store - Incompatible with Unity 2017.1.0f3: exception will be thrown during purchasing. Fixed in Unity 2017.1.0p1.
1 Like

Unity IAP 1.13.0 is now available.

[1.13.0] - 2017-07-31

Added

  • iOS and tvOS - Added support for purchases initiated from the App Store using the new API in iOS 11 and tvOS 11. For more information about this feature, watch the “What’s New in StoreKit” video from WWDC 2017. If you intend to support this feature in your app, it is important that you initialize Unity Purchasing and be prepared to handle purchases as soon as possible when your app is launched.
  • Apple platforms - The IAP Catalog tool will now export translations when exporting to the Apple Application Loader format.
  • Apple platforms - Add support for controlling promoted items in the App Store through IAppleExtensions. This feature is available on iOS and tvOS 11. Set the order of promoted items in the App Store with IAppleExtensions.SetStorePromotionOrder, or control visiblility with IAppleExtensions.SetStorePromotionVisibility.
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
   // Set the order of the promoted items
   var appleExtensions = extensions.GetExtension<IAppleExtensions>();
   appleExtensions.SetStorePromotionOrder(new List<Product>{
       controller.products.WithID("sword"),
       controller.products.WithID("subscription")
   });
}
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
   // Set the visibility of promoted items
   var appleExtensions = extensions.GetExtension<IAppleExtensions>();
   appleExtensions.SetStorePromotionVisibility(controller.products.WithID("subscription"), AppleStorePromotionVisibility.Hide);
   appleExtensions.SetStorePromotionVisibility(controller.products.WithID("100.gold.coins"), AppleStorePromotionVisibility.Default);
}

Changed

  • AndroidStore enum - Obsoleted by superset AppStore enum. Cleans up logging mentioning Android on non-Android platforms.
  • Codeless IAP - IAP Button notifies just one purchase button for purchase failure, logging additional detail.

Fixed

  • Apple platforms - Catch NullReferenceException thrown during initialization when the app receipt cannot be correctly parsed.
  • IAP Catalog - Fix GUI slowdown when typing details for large number of products on Windows.
  • Fix internal MiniJSON namespace exposure, regression introduced in 1.11.2.
1 Like