Version: 2019.3
Receipt validation
Cross-store installation issues with Android in-app purchase stores

Store Extensions

Stores may offer unique functionality that does not fit into the normal cross-platform purchase flow. This extended functionality is accessed via the IExtensionProvider which is provided to your application when Unity IAPAbbreviation of Unity In App Purchase
See in Glossary
initializes successfully.

It is not necessary to use platform-dependent compilation when using extensions; each extension comes with a fake no-op implementation which is used when running on a platform that does not offer the extended functionality.

For example, the following snippet accesses the RefreshReceipt mechanism Apple offers to fetch a refreshed App Receipt from Apple’s servers. It can be compiled on any Unity IAP platform, and if you were to run it on a non Apple platform such as Android it would have no effect; the supplied lambda would never be invoked.

/// <summary>
/// Called when Unity IAP is ready to make purchases.
/// </summary>
public void OnInitialized (IStoreController controller, IExtensionProvider extensions)
{
    extensions.GetExtension<IAppleExtensions> ().RefreshAppReceipt (result => {
        if (result) {
            // Refresh finished successfully.
        } else {
            // Refresh failed.
        }
    });
}
Receipt validation
Cross-store installation issues with Android in-app purchase stores