購入の開始
購入失敗したときの処理

購入処理

購入が完了するときには、ストアリスナーの ProcessPurchase 関数が呼び出されます。アプリではユーザーが購入した物に関するすべてを遂行する必要があります。例えば、ローカルコンテンツをアンロックしたり、レシートをサーバーに送ってサーバー側のゲームモデルを更新するなどです。

戻り値は、課金処理が終了したかどうかを返します。

結果 説明
PurchaseProcessingResult.Complete 購入処理が終了し、再度通知する必要はありません。
PurchaseProcessingResult.Pending まだ購入処理中で、IStoreControllerConfirmPendingPurchase 関数が呼び出されない限り、次にアプリを起動したときに ProcessPurchase が再度呼び出されます。

このメソッドは非同期なため、初期化が成功した後のどこかのタイミングで呼び出されます。ProcessPurchase ハンドラの実行中にアプリがクラッシュし Unity IAP の初期化が次に実行される場合は、情報のコピーを実装することもできます。

信頼性

Unity IAP では、ネットワーク停止やアプリケーションクラッシュ時に、購入が確実に遂行さえたことを確認するために明示的な承認が必要です。アプリケーションがオフラインのときに行われた購入は、次に初期化するときにアプリケーションに送信されます。

購入を即座に完了

PurchaseProcessingResult.Complete が返されると、Unity IAP はトランザクションを即座に終了します(下図参照)。

消費型プロダクトを売っていてサーバーから処理を行っているとき (例えば、オンラインゲームで金貨を提供するときなど)は PurchaseProcessingResult.Complete を返しては いけません

PurchaseProcessingResult.Complete を返してしまうと、クラウドで保存される前にアプリケーションがアンインストールされた場合に、消費型購入品が失われてしまうことがあります。

即座に完了
即座に完了

購入処理をクラウドに保存

消費型購入処理をクラウドに保存する場合は PurchaseProcessingResult.Pending を返す 必要があり、購入処理を問題なく完了した場合のみ ConfirmPendingPurchase を呼び出します。

Pending を返すときは、Unity IAP は、処理が確認されるまで対象ストアでトランザクションを終了しないで維持し、この状態にある間はユーザーがアプリケーションを再インストールしても消費型の購入品が失われないようにします。

購入品の保留
購入品の保留
購入の開始
購入失敗したときの処理