Version: 2017.3
レシート検証
Android アプリ内課金 (IAP) ストアにおける、ストア間を横断してプロダクトをインストールする場合の問題

ストアの拡張

ストアでは、クロスプラットフォームに対応した通常の課金フローに組み込めない追加(独自)機能を提供することがあります。Unity IAP の初期化に成功すると、引数として得られる IExtensionProvider を介して拡張機能にアクセスすることができます。

拡張機能を使用するときは、プラットフォームに依存したコンパイルを行う必要はなく、各拡張機能の内部でどのプラットフォームでも動作するようにフェイクのノーオペレーション実装が行われています。

例えば、Apple が提供している Apple サーバーからアプリレシートをリフレッシュする RefreshReceipt には以下のコードでアクセスします。これはさまざまな Unity IAP プラットフォームでコンパイルすることができ、Android のような Apple のプラットフォーム以外では、Lambdaで書かれたコードは実行されないことを意味します。

/// <summary>
/// Unity IAP が購入可能なときに呼び出されます
/// </summary>
public void OnInitialized (IStoreController controller, IExtensionProvider extensions)
{
    extensions.GetExtension<IAppleExtensions> ().RefreshAppReceipt (result => {
        if (result) {
            // Refresh が問題なく終了しました。
        } else {
            // Refresh が失敗しました。
        }
    });
}

レシート検証
Android アプリ内課金 (IAP) ストアにおける、ストア間を横断してプロダクトをインストールする場合の問題