ストアでは、通常のクロスプラットフォームの課金フローに組み込めない固有の機能が提供されている場合があります。拡張機能には、Unity IAP の初期化に成功すると引数として得られる IExtensionProvider を介してアクセスすることができます。
拡張機能を使用するときは、プラットフォームに依存したコンパイルを行う必要はなく、各拡張機能の内部でどのプラットフォームでも動作するようにフェイクのノーオペレーション実装が行われています。
例えば、以下のコードは Apple 提供の RefreshReceipt を利用して、Apple サーバーからアプリレシートをリフレッシュします。これは任意の Unity IAP プラットフォームでコンパイルすることができ、Android のような Apple 以外のプラットフォームではラムダ式は実行されません。
/// <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.
}
});
}