Version: 5.4 beta (switch to 5.3)
Handling purchase failures
Purchase Receipts

Restoring Transactions

When a user reinstalls your application they should be granted any Non-Consumable or Subscription products they already own. App stores maintain a permanent record of each user’s Non-Consumable and Subscription products which Unity IAP can retrieve.

On platforms that support it (e.g. Google Play and Universal Windows Applications) Unity IAP automatically restores any products the user owns during the first initialization following reinstallation; the ProcessPurchase method of your IStoreListener will be called for each owned item.

On Apple platforms users must enter their password to retrieve previous transactions so your application must provide users with a button letting them do so. During this process the ProcessPurchase method of your IStoreListener will be invoked for any items the user already owns.

/// <summary>
/// Your IStoreListener implementation of OnInitialized.
/// </summary>
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
    extensions.GetExtension<IAppleExtensions> ().RestoreTransactions (result => {
        if (result) {
            // This does not mean anything was restored,
            // merely that the restoration process succeeded.
        } else {
            // Restoration failed.
        }
    });
}
Handling purchase failures
Purchase Receipts