so I have my game rolled out in alpha testing, approved, a separate google account as my tester, who is also added as a license tester, and even with the build off the google play store that now shows up, AND, all my IAPs show active, yet I keep getting this “Unity: Purchasing failed to initialize. Reason: NoProductsAvailable” after it goes through all of them and checks them… I can’t get my iaps to work… anyone else have this issue on android? Am I missing a step?
it goes through each approved IAP with the correct ids and returns each one unavailable, but they are all active, all approved in alpha, all being access by a license tester
Please share the device logs which will confirm the spelling of your ProductIDs as defined in your game, compared to the ProductIDs as defined on your Google Play developer dashboard, and share a screenshot. Did your user accept the testing invite (on the device) and browse to the Google Play app as directed to download your game? How To - Capturing Device Logs on Android

2020-11-29 22:53:06.012 4364-7563/? I/Unity: Initializing UnityPurchasing via Codeless IAP
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Purchasing.CodelessIAPStoreListener:CreateCodelessIAPStoreListenerInstance()
(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
2020-11-29 22:53:06.030 4364-7563/? I/Unity: UnityIAP Version: 2.2.2
UnityEngine.Logger:Log(Object)
UnityEngine.Purchasing.StandardPurchasingModule:Instance(AppStore)
UnityEngine.Purchasing.CodelessIAPStoreListener:InitializePurchasing()
(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
2020-11-29 22:53:06.414 4047-5969/? V/WindowManager: Relayout Window{5f9a8a9 u0 com.mrheathclose.idlearcadetycoon/com.unity3d.player.UnityPlayerActivity}: viewVisibility=0 req=1200x1920
2020-11-29 22:53:06.424 4364-4364/? D/ViewRootImpl@4cdab33[UnityPlayerActivity]: Relayout returned: old=(0,0,1200,1920) new=(0,0,1200,1920) req=(1200,1920)0 dur=11 res=0x1 s={true 3202084864} ch=false
2020-11-29 22:53:06.658 4364-7563/? W/Unity: Unavailable product 500Tokens.IdleArcadeTycoon -500.tokens_idle.arcade.tycoon
UnityEngine.Logger:LogFormat(LogType, String, Object[ ])
UnityEngine.Purchasing.PurchasingManager:CheckForInitialization()
UnityEngine.Purchasing.PurchasingManager:OnProductsRetrieved(List`1)
System.Action:Invoke()
UnityEngine.Purchasing.Extension.UnityUtil:Update()
(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
2020-11-29 22:53:06.658 4364-7563/? W/Unity: Unavailable product 2000Tokens.IdleArcadeTycoon -2000.tokens_idle.arcade.tycoon
UnityEngine.Logger:LogFormat(LogType, String, Object[ ])
UnityEngine.Purchasing.PurchasingManager:CheckForInitialization()
UnityEngine.Purchasing.PurchasingManager:OnProductsRetrieved(List`1)
System.Action:Invoke()
UnityEngine.Purchasing.Extension.UnityUtil:Update()
(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
2020-11-29 22:53:06.658 4364-7563/? W/Unity: Unavailable product 5000Tokens.IdleArcadeTycoon -5000.tokens_idle.arcade.tycoon
UnityEngine.Logger:LogFormat(LogType, String, Object[ ])
UnityEngine.Purchasing.PurchasingManager:CheckForInitialization()
UnityEngine.Purchasing.PurchasingManager:OnProductsRetrieved(List`1)
System.Action:Invoke()
UnityEngine.Purchasing.Extension.UnityUtil:Update()
(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
2020-11-29 22:53:06.659 4364-7563/? W/Unity: Unavailable product PermaboostMachine.IdleArcadeTycoon -permaboost.machine_idle.arcade.tycoon
UnityEngine.Logger:LogFormat(LogType, String, Object[ ])
UnityEngine.Purchasing.PurchasingManager:CheckForInitialization()
UnityEngine.Purchasing.PurchasingManager:OnProductsRetrieved(List`1)
System.Action:Invoke()
UnityEngine.Purchasing.Extension.UnityUtil:Update()
(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
2020-11-29 22:53:06.661 4364-7563/? W/Unity: Unavailable product PermaboostManager.IdleArcadeTycoon -permaboost.manager_idle.arcade.tycoon
UnityEngine.Logger:LogFormat(LogType, String, Object[ ])
UnityEngine.Purchasing.PurchasingManager:CheckForInitialization()
UnityEngine.Purchasing.PurchasingManager:OnProductsRetrieved(List`1)
System.Action:Invoke()
UnityEngine.Purchasing.Extension.UnityUtil:Update()
(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
2020-11-29 22:53:06.662 4364-7563/? W/Unity: Unavailable product PermaboostCar.IdleArcadeTycoon -permaboost.car_idle.arcade.tycoon
UnityEngine.Logger:LogFormat(LogType, String, Object[ ])
UnityEngine.Purchasing.PurchasingManager:CheckForInitialization()
UnityEngine.Purchasing.PurchasingManager:OnProductsRetrieved(List`1)
System.Action:Invoke()
UnityEngine.Purchasing.Extension.UnityUtil:Update()
(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
2020-11-29 22:53:06.662 4047-6027/? V/WindowManager: Relayout Window{5f9a8a9 u0 com.mrheathclose.idlearcadetycoon/com.unity3d.player.UnityPlayerActivity}: viewVisibility=0 req=1200x1920
2020-11-29 22:53:06.662 4364-7563/? W/Unity: Unavailable product PrestigeBoost.IdleArcadeTycoon -prestige.boost_idle.arcade.tycoon
UnityEngine.Logger:LogFormat(LogType, String, Object[ ])
UnityEngine.Purchasing.PurchasingManager:CheckForInitialization()
UnityEngine.Purchasing.PurchasingManager:OnProductsRetrieved(List`1)
System.Action:Invoke()
UnityEngine.Purchasing.Extension.UnityUtil:Update()
(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
2020-11-29 22:53:06.662 4364-7563/? W/Unity: Unavailable product SkipAdsForever103build2.IdleArcadeTycoon -skip.ads.forever_idle.arcade.tycoon
UnityEngine.Logger:LogFormat(LogType, String, Object[ ])
UnityEngine.Purchasing.PurchasingManager:CheckForInitialization()
UnityEngine.Purchasing.PurchasingManager:OnProductsRetrieved(List`1)
System.Action:Invoke()
UnityEngine.Purchasing.Extension.UnityUtil:Update()
(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
2020-11-29 22:53:06.663 4364-7563/? W/Unity: Unavailable product 10000Tickets.IdleArcadeTycoon -10000.tickets_idle.arcade.tycoon
UnityEngine.Logger:LogFormat(LogType, String, Object[ ])
UnityEngine.Purchasing.PurchasingManager:CheckForInitialization()
UnityEngine.Purchasing.PurchasingManager:OnProductsRetrieved(List`1)
System.Action:Invoke()
UnityEngine.Purchasing.Extension.UnityUtil:Update()
(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
2020-11-29 22:53:06.664 4364-7563/? E/Unity: Purchasing failed to initialize. Reason: NoProductsAvailable
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Purchasing.CodelessIAPStoreListener:OnInitializeFailed(InitializationFailureReason)
UnityEngine.Purchasing.PurchasingManager:CheckForInitialization()
UnityEngine.Purchasing.PurchasingManager:OnProductsRetrieved(List`1)
System.Action:Invoke()
UnityEngine.Purchasing.Extension.UnityUtil:Update()
yes, the user is a tester, as well as a license tester, and the game was downloaded from store, and is the version in the alpha track, so it was reviewed, approved, and published to the track, and as you can see above, all IAPs are active.

Your product definitions in your code do not match the exact spellings on your Dashboard and use - instead of _
are you saying that the identical google play id overrides from unity iap that are listed after the dashes in the errors don’t match the screenshot? They are copy and paste identical. Am I misunderstanding?
that would cause a product to be unavailable? it’s an allowed character in the iap naming
Please post a screenshot of your product definitions in your IAP Catalog in the Unity Editor to confirm the spelling.


Got it. For testing, what if you didn’t use the store overrides and used the Google productID directly?
I will try that, get it uploaded, reviewed, approved, and installed… I’ll get back to you when that process is complete.
Probably no need to go through that whole process, just directly side-load the app via USB and test directly if you’ve already done that step once.
I was under the impression that you can’t test IAPs unless it comes from the play store version that has the approved app in that track. That’s something I came across in my research trying to make this work.
That is correct. The first time you test, you need to go through the whole process. But after that, you can side-load to test updates directly, I do it every day in my testing, including today.
unless I misunderstand, there hasn’t been a first time for me yet, it still doesn’t work… about to test it now, though, as the build has been approved
hmmm even after 12 hours the latest version isn’t the one on the store, will try to side load and see.
This works. I swapped out the apple product into the override and put the google override as the main id, switched it in my purchase code, and it works. (in the side load, that version isn’t live in the track after over 12 hours after being approved now, but I’m sure it will work as well… why would it take that long to be live for testers?)
- Thank you so much for your help.
- That’s a bug, right?
Yes, it does sound like a bug, but we would need to test and confirm here. Also, we don’t have any control over the Google review process, I’m glad it’s working for you now.
of course not, I was just asking because it sounded like you had experience with google and I don’t.