購入 /Purchases
プレイヤーが購入した製品の購入情報を取得し、購入状態を判別します。
読み終わるまでの所要時間 1 分最終更新 8日前
Unity Iap はストアから購入情報を取得するため、アプリケーションはプレイヤーが購入したものを認識し、処理できます。これにより、ユーザーがアプリケーション外や別のデバイスでアイテムを購入した場合でも、購入履歴に基づいてゲームからユーザーにコンテンツやエンタイトルメントを配信できます。 購入は
OrderOrder購入の取得
ユーザーによる購入はストアから取得できます。ただし、消費型製品は、消費後にアプリケーションによって追跡される必要があります。これは、すでに満たされた消耗品はストアから返却されないためです。非消費型製品およびサブスクリプションの場合、ストアはFetchPurchasesCheckEntitlement購入状態の確認
購入の状態は、次の 2 つの方法で確認できます。- を使用して、
OrderがOrder、PendingOrder、ConfirmedOrder、DeferredOrderのいずれであるかを判別します。FailedOrder - を受け取るには
EntitlementStatusを使用します。CheckEntitlement、EntitledButNotFinished、EntitledUntilConsumed、FullyEntitled、またはNotEntitledを返します。Unknown
購入属性
属性 | 説明 |
|---|---|
| 購入の一意の識別子。 |
| 購入したプロダクト |
| 購入した製品の数量。 |
| ストアでの購入を検証するためのレシートデータ。 |
購入の状態
State | 説明 |
|---|---|
| 購入は支払われましたが、まだ履行されていません。 |
| 購入が完了し、承認されました。 |
| エラーにより購入が失敗しました。 |
| 購入は支払いを待っています。 |
購入の処理
OnPurchasePendingOnPurchasePendingOnPurchasePending// Handle restore on initializationprivate async void Start(){ // Setup, e.g. add listeners to your StoreController... m_StoreController.OnPurchasePending += OnPurchasePending; m_StoreController.OnPurchasesFetched += OnPurchasesFetched; await m_StoreController.Connect(); // Fetch previous purchases (includes confirmed orders) m_StoreController.FetchPurchases();}// Handle new purchases and pending transactionsprivate void OnPurchasePending(PendingOrder order){ ProcessPurchase(order);}// Handle fetched purchases (includes previously confirmed orders)private void OnPurchasesFetched(オーダーオーダー){ Foreach (var confirmedOrder in orders.ConfirmedOrders) { if (confirmedOrder.CartOrdered.Items().FirstOrDefault()?.Product.definition.type != ProductType.Consumable) { // Mark non-consumable and subscription products as entitled on fetch, as they only need to be granted once MarkAsEntitled(confirmedOrder.CartOrdered.Items().FirstOrDefault().Product); } }}// Your ProcessPurchase logicprivate void ProcessPurchase(PendingOrder order){ Foreach (var product in order.CartOrdered.Items()) { // Grant product GrantProduct(product); } // Confirm the order to finalize the transaction m_StoreController.ConfirmPurchase(order);}
購入確認と信頼性
Unity Iap では、ネットワークの停止やアプリケーションのクラッシュが発生した場合でも確実に購入が履行されるように、購入を明示的に確認する必要があります。課金は行われたが履行されなかった場合、Unity Iap は次回の初期化時にアプリケーションに課金を配信します。このプロセスにより、購入フローが中断されたとき、またはアプリケーションがオフラインの間に購入が完了したときに、購入が失われるのを防ぎます。 購入を正常に完了したら、関連するPendingOrderConfirmPurchase購入がクラウドに永続化されたことを確認する
消費型購入をクラウドに保存する場合は、購入が正常に維持されたときにConfirmPurchasePending