In my game I have a single IAP that unlocks the full version of the game. The purchase itself works, all the information (price, currency, name, etc.) is displayed correctly. I was also able to make it non-consumable thanks to this post:
The only problem I have is that I am not able to check in any way whether the user already owns this IAP. I am aware that Query for owned Purchases
and Restore in-app Purchases2
do not work, and I gave up on fixing either after a few days of trying (most changes I make just crash the app on launch).
If the user attempts to purchase an item he already owns, this window pops up:
So I figured that I would be able to get this information from the purchase itself.
in Engine → Plugins → Online → Android → OnlineSubsytemGooglePlay → Source → Java → BillingApiV2 → com → EpicGames → ue4 → GooglePlayStoreHelper.java there is even a response code for this case, BillingResponseCode.ITEM_ALREADY_OWNED
. So, whenever there is a call to nativePurchaseComplete()
I’m checking for this response code and calling nativePurchaseComplete()
as if the purchase was successful. However, the blueprint node still returns Failure
with an empty receipts structure.
TLDR
If someone knows how to check for owned IAPs, please help me. I am losing my mind.
If someone knows how to debug these java plugins (send any info from GooglePlayStoreHelper.java
in any form, anywhere) that would also help a lot. Currently I am not able to debug it because the only time this file is actually used is when I upload my app to a closed test track AND it gets REVIEWED, so each update takes a while…