I am using in-app purchase. To see if user has bought the product, we need to connect to the store:
var listing = await CurrentApp.LoadListingInformationAsync();
then check the value. But I don't want to ask store every time user runs the app, so is it OK to save the purchase after a successful purchase in local, and after that, just check whether the user bought the product or not (for durable products).
Will this way happen some unexpected scenarios?
As a general rule it's safe to save knowledge of a successful IAP purchase.
Whether the purchase is of a consumable or a durable will have an impact on how your app should behave based on knowledge of that purchase.
Purchases ("In App" or otherwise) are related to an account, not a device, so if the item that is being purchased would have an impact if the user logged in on multiple devices then you should consider this in your application logic.
Similarly, users of your app may get new devices (repairs, replacements, upgrades, etc.) and want to continue their experience of your app on their new device without losing anything. Again you should consider this in your application logic too.