Google Play ストアから購入できる PlayFab バンドルを設定する
このチュートリアルでは、PlayFab バンドルを正常に作成し、プレイヤーが購入できるように Google Marketplace でゲームに追加する方法と、それに含まれるアイテムを引き換える方法について説明します。
前提条件
- PlayFab のゲーム マネージャーのタイトル。
- 選択したタイトルと目的のマーケットプレースの間の既存の統合。
- アプリは既に作成されており、Google Play で使用できます。
- アプリで Google Play Android Developer API が有効になっていることを確認します。
手順 1: バンドルを作成する
このチュートリアルでは、まず Google Play Console でバンドルを作成します。
Google Play Console を使用してバンドルを作成する
Google Play Console で目的のアプリを開きます。
左側のナビゲーション バーで、[収益化] セクションまで下にスクロールし、[アプリ内製品] を選択します。
右上の [製品の作成] を選択します。
バンドルに目的の製品 ID と名前を入力します。 このチュートリアルでは、製品 ID として warrior_bundle を使用します。 製品 ID は、ゲーム マネージャーをリンクするために使用されるため、覚えておいてください。
[価格] セクションまで下にスクロールし、[価格設定] を選択します。
バンドルに希望する価格 ($1.00 など) を追加し、右下にある [価格の適用] を選択します。
[保存] を選択して、バンドルに加えたすべての変更を保存します。 保存しても製品としてアクティブ化されないことに注意してください。 保存すると、アクティブ化オプションが表示されます。 Google Play Console のアプリでバンドルをアクティブにするには、右下にある [アクティブ化] ボタンを選択します。
ゲーム マネージャーを使用してバンドルを作成する
ゲーム マネージャーで新しいバンドルを作成するには、次の手順に従います。
[ゲーム マネージャー] に移動し、[タイトル] に移動します。
左側のナビゲーション メニューから [エンゲージメント]>[エコノミー] の順に選択します。
[バンドル] タブを選択します。
[新しいバンドル] を選択します。
アイテムや価格など、必要な情報を [バンドル] に追加します。このチュートリアルでは、名前として Warrior Bundle を使用します。
ページの最後まで下にスクロールし、すぐに公開したい場合は [保存して公開] を選択し、保存するものの、利用可能にしたくない場合は [下書きとして保存] を選択します。
バンドルにアイテムを追加する
バンドル自体はプレイヤーにアイテムを付与しません。まずバンドルにアイテムをリンクする必要があります。引き換えると、それらのアイテムが特定のプレイヤーに付与されます。
バンドルにアイテムを追加する前に、アイテムがすでに作成され、カタログに公開されていることを確認してください。 Fire Sword と呼ばれる剣と、Ice Shield と呼ばれる盾が既に用意されています。 アイテムを作成する方法がわからない場合は、この手順を参照してください。
今すぐバンドルに追加してください。 これを行うには、アイテムが既に作成されていることを前提として、バンドルを初めて作成するときに追加するか、バンドル アイテムを編集して後で追加することができます。
編集モードで、バンドルの [アイテム] セクションまで下にスクロールし、[追加] ボタンを選択します。これにより、カタログで利用可能なすべてのアイテムが表示されるウィンドウが表示されます。ここから、種類 (アイテムまたはユーザー生成コンテンツ (UGC) アイテム) でフィルター処理できます。または、特定のアイテムを検索します。 追加する各項目の横にある [追加] ボタンを選択し、最後にウィンドウの下部にある青い [追加] ボタンを選択します。
マーケットプレース マッピングを有効にする
プレイヤーがアプリからバンドルを購入したときに、ゲーム マネージャーで適切に購入および割り当てられるようにするには、マーケットプレース マッピングを構成する必要があります。 これは、ゲーム マネージャーでバンドルを作成しているとき、またはバンドルが作成された後に、編集モードでバンドルに戻ることで実行できます。
- 編集モードでバンドルに移動します。
- [マーケットプレース マッピング] セクションまで下にスクロールします。
- [マーケットプレース] ドロップダウンから、目的のマーケットプレースを選択します。 (このチュートリアルでは、GooglePlay になります)。
- マーケットプレース ID には、Google Play Console の製品 ID と同じものを使用してください。 このチュートリアルでは、Warrior_bundle を使用しました。
- 完了するには、その行の右側にある + を選択します。
手順 2: 購入トークンを生成する
注意
続行する前に前提条件 #3 が完了していることを確認してください。完了していない場合は、購入トークンを生成する実用的な方法はありません。
購入トークンは、レシート ID と同様に、購入ごとに Google Play の API によって生成されるトークンです。 Google のドキュメントによると、"購入トークンは、Google Play 上のアイテムに対する購入者の利用資格を示す文字列です。 特定のアイテムに対して Google ユーザーが支払いを行ったことを示します。"
実装では、Google Marketplace での購入を検証するために、PlayFab の API に送信する必要があるため、そのトークンを保存する必要があります。 これにより、PlayFab はプレイヤーの購入済みアイテムを引き換えて、プレイヤーのインベントリに付与することができます。
トークンを生成するには、Google Play とのアクティブな統合で実行されているアプリが既にある必要があります。 Google Play でのアプリの登録には、購入可能なアイテム (この場合はバンドル) も含まれている必要があります。 購入後にトークンが返されるように、コードの実装では Google Playの課金システムを使用する必要があります。
要約すると、アプリをコーディングするときは課金システムを使用する必要があります。その課金システムを使用すると、Google 側からバンドルを購入でき、購入トークンが返されます。 その後、トークンを PlayFab の Economy API で使用して購入を引き換え、バンドルアイテムをプレイヤーのインベントリに追加する必要があります。
ヒント
Google のシステムを使用する同様のプロジェクトの実装例については、この CodeLab を参照してください。
課金の詳細については、「Google の課金システムのドキュメント」を参照してください。
手順 3: バンドルを引き換える
ゲーム マネージャーと Google Play Console の両方でバンドルを作成したので、プレイヤーの 1 人とバンドルを引き換えることができます。 この例では、PlayFab の API、特に PlayFab の Economy API の一部である RedeemFabInventoryItems 呼び出しを使用してこれを実行することに焦点を当てます。
代替 ID を確認する
引き換えの呼び出しを行う前に、ゲーム マネージャーに正しい AlternateId があることを確認してください。これは、Google Play Console のものと同じである必要があります。
次のスクリーンショットは、ゲーム マネージャーのバンドル内にあるものです。Marketplace ID は、AlternateId と呼ばれるもので、基本的にはバンドルを識別する別の方法です。
Google Play Console から、[収益化] セクションのアプリ内製品画面に移動します。ここから、Warrior Bundle を含む、作成したすべての製品が表示されます。 製品 ID は 2 番目の列に表示されます。それがゲーム マネージャーの AlternateId と同じであることを確認し、そうでない場合は、ゲーム マネージャーを更新します。
プレイヤーを認証させる
アイテムを引き換えるには、RedeemFcPlayInventoryItems を使用します。 ただし、その前に、アイテムを引き換えるプレイヤーがアプリ内で適切に認証されていることを確認する必要があります。そのためには、LoginWithGoogleAccount を使用することになるでしょう。
注意
詳細な例については、「Unity での Google Play ゲームのサインインを使用して PlayFab 認証を設定する」を参照してください。
LoginWithGoogleAccount 呼び出しが成功すると、PlayFab の API は、X-EntityToken
キーを含む RedeemGooglePlayInventoryItems ヘッダーの一部として使用する必要があるエンティティ トークンを返します。 テストするために API プラットフォームを使用している場合は、次のようになります。
引き換え呼び出しを行う
プレイヤーが認証され、両方のバンドル インスタンスが作成され、代替 ID がチェックされ、購入トークンが作成されます。 引き換え呼び出しを行う準備ができました。 このためには、RedeemFcPlayInventoryItems API 呼び出しを使用します。
{
"Purchases": [
{
"ProductId": "warrior_bundle",
"Token": "{Your Google Purchase Token}"
}
]
}
呼び出しは簡単です。Product ID
(Google Play Console のものと一致する必要があります) と、Google Play 課金システムを呼び出したときに返される購入トークンに対応する Token
フィールドを含む Purchases
配列があります。
成功した応答には、タイムスタンプや MarketplaceTransactionId などのデータと共に 200 status code
が含まれます。
引き換えが成功した後、プレイヤーのインベントリに移動すると、バンドルにリンクされている両方のアイテムを表示できるようになります。
各引き換えアクションでは、プレイヤーのトランザクション履歴に対応するイベント ログもトリガーされます。このイベント ログは、指定されたプレイヤーの概要ページの [トランザクション履歴 (V2)] タブから取得できます。次のようになります。
プレイヤーのトランザクション履歴のレコードと共に、PlayStream イベントもトリガーされ、ログに記録されます。 ゲーム マネージャーの左側のナビゲーション バーの [分析] セクションの下にある [データ] ページ移動すると、タイトルのこれらのログにアクセスできます。 ここでは、クエリを編集して特定のレコードを検索したり、既定の設定で実行してすべてを取得したりできます。 items_redeemed というイベント名の下に、次のようなレコードが存在する必要があります。
2 つの異なる items_redeemed
PlayStream イベントがログに記録されていることがわかります。これは、1 つのバンドルだけを引き換えたにもかかわらず、そのバンドルには 2 つの異なるアイテムが含まれていたためです。
手順 4: 消費
購入した商品が正常に引き換えられたら、それがマーケットプレースで適切に消費されることを確認する必要があります。 これを行う方法は次のとおりです。
- Google Play Developer API の purchases.products.consume メソッド部分を使用します。
- Google の課金クライアントの BillingClient.consumeAsync メソッド部分使用します。
- または、Unity や Unreal で利用可能な組み込みプラグインのいずれかを使用します。
ただし、消費呼び出しを行う前に (または、Unity または Unreal プラグインでは、クライアントが購入の処理を完了したことを示す前に)、1 回以上の成功と 0 回の失敗を含む引き換えプロセスの後の 200
応答を受け取る必要があります。
202
応答または引き換えエラーが発生した場合は、しばらくしてから、もう一度消費呼び出しを再試行することをお勧めします。