When I call Read In-App Purchase Information in blueprints the price data (and maybe more) is sent back to me incorrectly. The prices returned are actual item prices but they’re being provided for the wrong product identifiers.
I compiled my project in 4.10 and the issue is gone, so this must be a 4.11(.1) engine related issue.
The screenshots I took are no longer on my system but you can view my forum post here to see my work.
Could you either create a full reproduction guide, or provide a small sample project that has the same functionality shown in it? I’d suggest it being on 4.10 so we can compare it to 4.11.
What device is this happening on, and have you checked on multiple versions of Android?
I’d also like for logs from the Android device to be sent, as it may help point to what’s occurring with Google or the game itself:
- Attach your phone to the computer
- Go here: C:\NVPACK\android-sdk-windows\tools
- Open up Monitor.bat
- Launch the program and save the logs
If you cannot get Monitor.bat to open, please go to:
- Open up Monitor.exe
- Follow the instructions above
I don’t believe Monitor will output any logs because adb isn’t seeing my phone; it hasn’t for awhile. Driver installation was being stubborn so I just haven’t been using adb lately.
Here’s some information to your other questions though.
This has been tested on two devices. The 4.10 cash purchase information works fine on both devices but the 4.11.1 compile does not. One device is a Moto X XT1095 the other is a LG G2 D800. Moto X on marshamallow, LG G2 on KitKat.
I do not have an exact copy of my project for both 4.10 and 4.11. I can however provide you a copy of my 4.11 backup, and an older 4.10 backup. The price gathering code is different in 4.11 vs the 4.10 because I was attempting to fix the issue, but the issue was present before I even changed the code. If anything I made improvements on error filtering. Also, I had not touched any code or settings related to price displaying prior to the bug being noticed.
Some more information…
The prices are actual prices, but when I receive an in-app purchase information the price doesn’t match up with the proper ID. For example: If I’m selling 100 gold for $1.00 I receive the 100 gold ID, but the price might reflect $3.00 – the price of 300 gold.
I’ll send you both projects - they’re quite small, under 20 mB each. I’ve sent you download links on the forum.
Finally got ADB up. Here you are. link text
I force closed my app, cleared the log, opened my app, opened shop to gather prices.
Thank you for providing us with this information. Could you tell me how many items you’re trying to purchase from the store, or how many items in general are in the store?
Could you provide me with the backup copies from your project? You can upload them to something like DropBox or Google Drive and send the hyperlink through a PM on the forums.
there are five items in my cash store. When I attempt to purchase an item the right price is reflected; purchases seem to do fine. It’s just the read in-app information prices are returning wrong when I request information about my items to display them.
I’ve PMd you two backups of my project. a 4.11 version, and a 4.10 version.
I also just wanted to clarify in case there was a misunderstanding. Purchases work just fine. Everything is accurate when I try to purchase an item, and it goes through. I receive inaccurate information when I request information about cash store items, using the “Read In-App Purchase Information” blueprint node.
I just wanted to give you an update and let you know that we’re still looking into this.
Thanks. I imagine you were able to see the same problem?
We believe we have a fix for this. I’ve attached a replacement for GooglePlayStoreHelper.java (goes in Engine/Build/Android/Java/src/com/epicgames/ue4). Just make a backup of the current one and replace with this one. Java is compiled during packaging so it will work with binary release of the engine, no need for github build to test it.
Please let me know if it works or not for you.link text
That did fix the issue. However, items seem to arrange in order of lowest to highest cost, despite the order in which I request to retrieve them. That’s not really a problem; just thought it would be worth mentioning.
Outside the file you provided me, issue is still present in 4.11.2.
It is now returned in the order of the response from store. This was actually what the problem was; the order didn’t match what was passed in so we now store the product id with the entry instead of assuming we get the queried order.
What’s unusual is that in 4.10 items did reply back in the order you requested them, regardless of price. Either way, it’s just fine now. Thank you very much.
I am experiencing the same problem here (4.11.1). The order of the results is different from the array order that I put in the “Read in App” node. I already tried the replacing the file “googleplaystorehelper.java” with the one you provided before but the problem still persist. Any new info? it has been solved in a later engine update?
As a workaround, Is it too bad for performance to replace 1 ReadInAppNode with 1 array, with several ReadInAppnodes, with only one product request on each?
Yes, I double check it and it is the right one
It is good to know is it fixed, but I am a little afraid to update because of third party plugins. I made a workaround using 1 ReadInApp node for each price. The prices appear in a cascade, one after another, but for me that is better than update (last time was a disaster).
Thanks for your answer!
In 4.12 the same problem persist to me… I made a workaround with a “SwitchOnString” node so now I only need one “Read IAP Purchase” and all prices appear at the same time. Maybe is useful for anyone with the same problem.
I apologize I was mistaken, this is NOT fixed in 4.12.5. The problem still very much exist.
Mine are coming back with the right prices per item, but not in the right order. Might just be coincidence though.
Samantha, the GooglePlayStoreHelper.java file resolves the issue with 4.11.1 but not 4.12.5; if we continue to use this file for future versions the entire Google Services could be compromised. Regardless, this solution is a band-aid, the problem needs to be fixed internally or it will come right back with every single update. Would you like me continue to comment on this question or make a new one for the latest engine version?