Hi, we dropped relying on ProcessPurchase to restore user NonConsumables, and instead are checking against products with IsOwned every time the application is opened.
This solves two issues:
- Users having to re-install multiple times the app in case ProcessPurchase was not called when reinstalling
- Allows for the revocation of NonConsumables, mainly due to refunding.
This workflow seems to work without problems but there is a small bug that happens for a user that had previously owned a product, had it revoked and is now buying again.
- The user buys the full version of the game.
- Plays for a while.
- Get product revoked using the Google Play Console.
- No longer able to play the full version of the game.
- User tap BUY button inside the game
- Google purchase overlay appears
- User closes the game
- User opens the game
- He has full version, IsOwned is returning TRUE
If you close the game again and reopen, IsOwned will return FALSE, but it can be exploited by hitting buy, closing the game, and entering Airplane Mode to keep the cached variable inside the game TRUE forever. It can also be exploited by simply hitting buy, closing, and reopening, to enjoy the free full game experience whenever you want.
It is important that this only happens to a user that had previously owned a product and had it revoked.
Thank you.