Hello,
In my testing of promo codes on Google with Unity IAP implementation in 5.3.5f1, I have found that in-game non-consumable products obtained using promo codes do no always get a corresponding call to ProcessPurchase.
There are a few use-case for promo code:
a) use them instead of a credit card during normal IAP processing
b) use them on the google play store while the app is not running
c) use them on the google play store while the app is running
d) re-install the all after a user has obtained a product with a promo code.
Under the use-case a) everything is OK. However for all the other use case, in my testing, I was not receiving a call to ProcessPurchase.
The logcat clearly indicates that the products are owned:
05-25 09:55:44.680: I/UnityIAP(7531): Sku is owned: table_wildwest
05-25 09:55:44.681: I/UnityIAP(7531): Sku is owned: table_space
05-25 09:55:44.681: I/UnityIAP(7531): Sku is owned: table_baseball
05-25 09:55:44.681: I/UnityIAP(7531): Sku is owned: table_underwater
But only a single call to ProcessPurchase is made, for the one item I test-purchased with a credit card: table_baseball.
To better understand, in OnInitialized, I printed out some information about the available products:
(product name - hasReceipt - transactionId)
table_baseball - True - GPA.1359-0593-9694-53371
table_brix - False -
table_carnival - False -
table_space - True -
table_underwater - True -
table_wildwest - True -
As you can see, there is a difference between the one product purchased with a credit card and those obtained from a promo code: they are missing the transactionId. Is it possible that this prevents the Purchasing system from calling ProcessPurchase correctly?