"Test mode" is provided by the App/Play store here, if believe it requires registering a specific account to use for testing ( been quite awhile since I've needed to test it ). Then it will provide fake purchase flows for you. It requires more setup, but there isn't an equivalent setting for us just enable testing mode like admob.
Scirra doesn't ever see purchase information, and it certainly isn't stored on our server. The App/Play store on the device keeps track of user purchases. Both stores are capable of telling you if the user "owns" a product, and if the product is available for purchase.
On Android all products are "consumable". Users can only own one of each product, once a product has been consumed the user no longer owns the product. This is why you cannot check consumables and you must keep track of them.
Admittedly they could probably change how this works, so that developers do not need to run a separate system for tracking purchases. But the developer doesn't really need to keep track of the consumable purchase, but what it represented ( gems, coins, power ups, etc. ). Hence it would need to be a more complicated system that allows the storage of something more generic and isn't necessarily tied to the store anymore.
You can store that information any way you like, but there's a few questions you should ask before choosing somewhere to put it.
1. If the user deletes the app, will their items persist?
2. If the user has multiple devices with the app, will it work correctly?
3. Can the user modify the data, possibly getting items for free or deleting other users items?
As users will be paying for these goods, you should treat them like actual money. Any risk of them vanishing, or being copied is not good! I haven't used the Play Games Snapshot system, but it might work for you. You might have issues keeping data synced if an awkward user plays your game on 2 devices at the same time, as both devices can modify the items without the other knowing ( creating, using, exchanging items ). Even if you check before using an item, there's a chance that it will have been modified between your check and update ( look up "Atomic commit" ). There's a chance that the Snapshot feature has a solution to this built in, but I haven't looked through the documentation.