Issue restoring purchases on launch


Some users of my game have been reporting that purchases aren’t restoring after the game is launched (v4.14.0). Unfortunately I’ve been unable to reproduce the issue myself. It’s a non-consumable purchase that unlocks the full game, so it’s sort of essential to have the flow working properly.

I haven’t been able to find much in the way of “best practices” for IAP flows, but this is how I’ve set it up:

-Every time the game launches it calls the Restore In-App Purchases node, after External Login UI has completed.
-Iterate over all purchases and check if the array contains the “unlock game” purchase.
-Store/access this unlock flag in the UGameInstance.

Is this the ‘right’ way to load the unlock state? The Match3 demo only calls Restore when an on-screen button is pressed, which seems a bit odd to me. I don’t want to store the unlock state in the save file, since that’s easily modifiable.

I don’t currently handle the Fail flow on the Restore IAP node, so I should probably handle something there. Is it somewhat common for it to fail and need to be called again?

Any advice on what might be going wrong here would be much appreciated!