On Apple, you need to call store.restore() and any previously purchased non-consumable items will be returned with a state of “restored”.
If you call store.purchase(), it’s assuming you are buying a new item and if you buy something already purchased, it will likely return an error (I think).
On Google, you need to call store.restore() to fetch any previously purchased non-consumables. They however come back with a state of purchased, not restored. Purchasing something a 2nd time (for non-consumables) will likely return an error.
Rob