UNITY IAP Testing for iOS

Hello,

I hope to better understand what is happening.

Context:

I have a published app, working IAP, subscriptions great on Android, now I am porting to iOS, and have a successful build and upload.

Everything works (firebase auth, analytics, database, storage, google mobile ads, google sign in) except my IAP on iOS, I’m not getting any prompt.

the product code I used for google and apple are exactly the same; I have also checked this extensively, I am able to fetch their prices as well, I can confirm this as I have set different prices on iOS from Android.

Is the implementation in unity different codewise?

my “paid app agreement” is active but pending user info. yellow light. - I have read somewhere that this might be a possible cause, I am not sure though.

I have not created a sandbox test account yet, as I have not reached the sign-in prompt for it yet, even after signing out of my app store account on my testing device.

Also, I might prefer TestFlight for testing IAP, since I’m technically running a parallel build from my android app. no significant change will be made that has not been tested on android first.

I hope to better understand what is happening.

The log I am receiving from Xcode run is is this,

Purchasing product asychronously: 'com.WorkingProductIdHere'

InAppPurchaser:BuyProductID(String)

UnityEngine.Events.UnityEvent:Invoke()

UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)

UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchPress(PointerEventData, Boolean, Boolean)

UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchEvents()

UnityEngine.EventSystems.StandaloneInputModule:Process()

(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

2020-06-24 12:15:40.356458+0800 ProjectTitleHere [1879:671666] UnityIAP: PurchaseProduct: com.WorkingProductIdHere

2020-06-24 12:15:40.365514+0800 ProjectTitleHere [1879:671666] UnityIAP: PurchaseProduct: IAP Disabled

purchase({0}): com.WorkingProductIdHere

UnityEngine.Events.UnityEvent:Invoke()

UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)

UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchPress(PointerEventData, Boolean, Boolean)

UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchEvents()

UnityEngine.EventSystems.StandaloneInputModule:Process()

(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

onPurchaseFailedEvent({0}): com.WorkingProductIdHere

UnityEngine.Purchasing.PurchasingManager:OnPurchaseFailed(PurchaseFailureDescription)

UnityEngine.Purchasing.JSONStore:OnPurchaseFailed(PurchaseFailureDescription, String)

UnityEngine.Purchasing.Extension.UnityUtil:Update()

(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

OnPurchaseFailed: FAIL. Product: 'com.WorkingProductIdHere', PurchaseFailureReason: PurchasingUnavailable

InAppPurchaser:OnPurchaseFailed(Product, PurchaseFailureReason)

UnityEngine.Purchasing.JSONStore:OnPurchaseFailed(PurchaseFailureDescription, String)

UnityEngine.Purchasing.Extension.UnityUtil:Update()

It says Purchasing Unavailable. You must clear up all the Red and Yellow flag notices on your Apple developer dashboard and ensure to fill out the Business Tax Info, even if you are just testing. Make sure to follow the steps here Unity - Manual: Configuring for Apple App Store and Mac App Store

Hi Jeff,

Thank you very much for the clarification, Yes I have followed the steps in the tutorial you’ve linked extensively. My build is also accessible and testable for TestFlight at the moment. That leaves the agreement notice to be the reason. I will be waiting for the green light then.

I will give an update on this thread on the development. Hopefully, it helps others as well.

You’ve been great Jeff, Thank you.