> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Economy v2 での実際の通貨価格の追跡

> PlayFab Economy v2 バンドルに RealMoneyPriceDetails を設定し、marketplace_transaction_redeemed イベントを介して収益を追跡し、分析レポートを行います。

<Info>
  Economy v2 が一般提供 (GA) されました。サポートとフィードバックについては、[PlayFab フォーラム](https://community.playfab.com) を参照してください。
</Info>

プレイヤーが外部マーケットプレイス (Apple App Store、Google Play、Steam、Microsoft Store、Nintendo eShop、PlayStation Store) 経由でアイテムを購入する場合、取引には実世界のお金が関与します。カタログのバンドルに `RealMoneyPriceDetails` を構成することで、PlayFab は [marketplace\_transaction\_redeemed](/services/playfab/api-references/events/Inventory/marketplace-transaction-redeemed) イベントに収益額を記録し、収益分析とレポートを構築できるようにします。

このチュートリアルでは、エンドツーエンドのフローを説明します。バンドルに実際の通貨価格を設定し、購入を引き換え、イベントで収益データを表示します。

## 前提条件

* [PlayFab 開発者アカウント](https://developer.playfab.com/en-us/sign-up)。
* [Game Manager](https://developer.playfab.com/) で作成されたタイトル。
* すでに構成されたマーケットプレイス統合 (たとえば、[Google](/services/playfab/economy-monetization/economy-v2/marketplace/marketplace-integrations/google)、[Apple](/services/playfab/economy-monetization/economy-v2/marketplace/marketplace-integrations/apple)、または [Microsoft Store](/services/playfab/economy-monetization/economy-v2/marketplace/marketplace-integrations/microsoft))。
* マーケットプレイス製品にリンクする [マーケットプレイス マッピング](/services/playfab/economy-monetization/economy-v2/catalog/bundles) を持つ公開済みバンドル。

## ステップ 1: バンドルに実際の通貨価格を設定する

マーケットプレイス製品にリンクされているバンドルに `RealMoneyPriceDetails` を追加します。マーケットプレイスごとに **最小通貨単位** (たとえば USD の場合はセント) で価格を指定します。

### API

[UpdateDraftItem](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/update-draft-item) を使用して既存のバンドルに価格を追加し、公開します。

```json theme={null}
{
  "Item": {
    "Id": "{{StarterPackBundleID}}",
    "Type": "bundle",
    "Title": {
      "NEUTRAL": "Starter Pack"
    },
    "ItemReferences": [
      {
        "Id": "{{LaserSwordID}}",
        "Amount": 1
      },
      {
        "Id": "{{GoldCurrencyID}}",
        "Amount": 500
      }
    ],
    "RealMoneyPriceDetails": {
      "GooglePlayPrices": {
        "USD": 499
      },
      "AppleAppStorePrices": {
        "USD": 499
      },
      "MicrosoftStorePrices": {
        "USD": 499
      }
    },
    "AlternateIds": [
      {
        "Type": "GooglePlay",
        "Value": "com.mygame.starterpack"
      },
      {
        "Type": "AppleAppStore",
        "Value": "com.mygame.starterpack"
      },
      {
        "Type": "MicrosoftStore",
        "Value": "9NBLGGH42CFD"
      }
    ]
  },
  "Publish": true
}
```

### Game Manager

1. **Economy** > **Catalog (V2)** > **Bundles** に移動します。
2. 編集するバンドルを選択します。
3. **Prices** セクションで、バンドルが表示される各マーケットプレイスの実際の通貨価格を設定します。
4. **Marketplace Mapping** セクションで、各マーケットプレイスに正しい AlternateId があることを確認します。
5. **Save and publish** を選択します。

***

### 価格形式リファレンス

価格は最小通貨単位を使用します。現在は **USD** のみサポートされています。

| 実世界の価格  | ディクショナリ値        |
| ------- | --------------- |
| \$0.99  | `{"USD": 99}`   |
| \$1.39  | `{"USD": 139}`  |
| \$4.99  | `{"USD": 499}`  |
| \$9.99  | `{"USD": 999}`  |
| \$19.99 | `{"USD": 1999}` |

タイトルが使用するマーケットプレイスにのみ価格を設定します。サポートされているマーケットプレイス プロパティは次のとおりです。

* `AppleAppStorePrices`
* `GooglePlayPrices`
* `MicrosoftStorePrices`
* `NintendoEShopPrices`
* `PlayStationStorePrices`
* `SteamPrices`

### マーケットプレイスごとに異なる価格

ストアごとにゲームの価格が異なる場合、各マーケットプレイス プロパティを個別に設定します。

```json theme={null}
"RealMoneyPriceDetails": {
  "GooglePlayPrices": {
    "USD": 499
  },
  "AppleAppStorePrices": {
    "USD": 529
  },
  "SteamPrices": {
    "USD": 449
  }
}
```

## ステップ 2: プレイヤーが購入して引き換える

プレイヤーが外部マーケットプレイスからアイテムを購入した後、ゲームは適切な redeem API を呼び出します。

| マーケットプレイス         | Redeem API                                                                                                                                             |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Google Play       | [RedeemGooglePlayInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/redeem-google-play-inventory-items)              |
| Apple App Store   | [RedeemAppleAppStoreInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/redeem-apple-app-store-inventory-items)       |
| Microsoft Store   | [RedeemMicrosoftStoreInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/redeem-microsoft-store-inventory-items)      |
| Steam             | [RedeemSteamInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/redeem-steam-inventory-items)                         |
| Nintendo eShop    | [RedeemNintendoEShopInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/redeem-nintendo-e-shop-inventory-items)       |
| PlayStation Store | [RedeemPlayStationStoreInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/redeem-play-station-store-inventory-items) |

PlayFab は引き換えを処理する際、次を行います。

1. マーケットプレイスのレシートをバンドルの `AlternateId` と照合します。
2. バンドルの内容をプレイヤーのインベントリに付与します。
3. 一致するバンドルの `RealMoneyPrices` を含む `marketplace_transaction_redeemed` イベントを発行します。

## ステップ 3: イベントで収益を表示する

引き換えが成功すると、`marketplace_transaction_redeemed` イベントが発行され、実際の通貨価格データが含まれます。このイベントは Game Manager で確認するか、データ パイプラインを通じてクエリできます。

### Game Manager で表示する

1. **Data** > **Event History** に移動します (**Analyze** セクションの下)。
2. `marketplace_transaction_redeemed` イベント名を検索します。
3. イベントを選択して、`RealMoneyPrices` フィールドを含むその詳細を表示します。

### イベント ペイロードの例

Starter Pack (\$4.99 USD) の Google Play 引き換えは、次のようなイベントを生成します。

```json theme={null}
{
  "EventName": "marketplace_transaction_redeemed",
  "Marketplace": "GooglePlay",
  "MarketplaceTransctionId": "GPA.1234-5678-9012-34567",
  "MarketplaceAlternateId": "com.mygame.starterpack",
  "Amount": 1,
  "ItemId": "{{StarterPackBundleID}}",
  "ItemType": "bundle",
  "RealMoneyPrices": {
    "USD": 499
  }
}
```

同じバンドルを Apple App Store から引き換えた場合 (\$5.29 USD の価格) は次を生成します。

```json theme={null}
{
  "RealMoneyPrices": {
    "USD": 529
  }
}
```

PlayFab は、引き換えが発生した特定のマーケットプレイスの価格を使用します。

### 収益データをクエリする

イベント データはカスタム分析に使用できます。たとえば、一定期間の総収益を計算するには、すべての `marketplace_transaction_redeemed` イベントをクエリし、`RealMoneyPrices.USD` の値を合計します。

```text theme={null}
Total revenue = すべてのイベントにわたる (RealMoneyPrices.USD × Amount) の合計
```

<Note>
  `RealMoneyPrices` は、`RealMoneyPriceDetails` で構成した内容を反映し、マーケットプレイスによって実際に課金された金額ではありません。正確なレポートのために、マーケットプレイスのリストと価格を同期させておいてください。
</Note>

## ベスト プラクティス

* **マーケットプレイス バンドルには必ず `RealMoneyPriceDetails` を設定してください。** これがないと、引き換えイベントの `RealMoneyPrices` フィールドは空になり、収益の可視性が失われます。
* **最小通貨単位を使用してください。** USD の場合、価格をセント単位で指定します (たとえば \$4.99 の場合は `499`)。
* **使用するマーケットプレイスのみを設定してください。** すべてのマーケットプレイスに価格を設定する必要はありません。タイトルが公開されているものだけで十分です。
* **マーケットプレイスのリストと価格を同期してください。** 外部マーケットプレイスで価格を更新する際は、`RealMoneyPriceDetails` の対応するプロパティも更新して、正確なレポートを維持してください。
* **価格が異なる場合はマーケットプレイスごとに設定してください。** ストアごとにゲームの価格が異なる場合は、マーケットプレイスごとのプロパティを使用して、各プラットフォームの実際の価格を反映させます。

## 関連項目

* [実際の通貨価格リファレンス](/services/playfab/economy-monetization/economy-v2/catalog/real-money-prices)
* [Economy v2 バンドル](/services/playfab/economy-monetization/economy-v2/catalog/bundles)
* [不正防止のクイックスタート](/services/playfab/economy-monetization/economy-v2/fraud-prevention/quickstart)
* [マーケットプレイス統合](/services/playfab/economy-monetization/economy-v2/marketplace/marketplace-integrations/overview)
* [marketplace\_transaction\_redeemed イベント](/services/playfab/api-references/events/Inventory/marketplace-transaction-redeemed)


## Related topics

- [Economy v2 の実際の通貨価格](/ja-jp/services/playfab/economy-monetization/economy-v2/catalog/real-money-prices.md)
- [XR-036 タイトル内の価格情報](/ja-jp/publishing/certification/xr/xr-036.md)
- [PlayFab Inventory API](/ja-jp/services/playfab/economy-monetization/economy-v2/inventory/index.md)
- [Economy v2 カタログ コンテンツ タイプ、タグ、プロパティ](/ja-jp/services/playfab/economy-monetization/economy-v2/catalog/content-types-tags-and-properties.md)
- [Economy v2、Unity IAP、Android を使い始める](/ja-jp/services/playfab/economy-monetization/economy-v2/tutorials/getting-started-with-unity-and-android.md)
