Skip to main content
Economy v2 が一般提供 (GA) されました。サポートとフィードバックについては、PlayFab フォーラム を参照してください。
ライブ ゲームでは、ネットワーク障害、タイムアウト、重複リクエストは避けられません。Economy v2 は重複取引を防ぐために IdempotencyId を提供します。この機能により、同じリクエストが複数回送信されても、操作は 1 回だけ処理されることが保証されます。 楽観的同時実行制御 (最後に読み取ってからインベントリが変更されていない場合にのみ書き込みが成功することを保証する) については、ETag と同時実行制御 を参照してください。

前提条件

仕組み

インベントリ書き込みリクエストに IdempotencyId を含めると、PlayFab はその ID を 14 日間 保存します。同じ IdempotencyId を持つ別のリクエストが到着すると、PlayFab は元のリクエストの結果を返し、操作を再度処理することはありません。

サポートされている API

IdempotencyId はすべてのインベントリ書き込み API でサポートされています。

例: 再試行を伴う安全な購入

このシナリオでは、プレイヤーが Laser Sword を購入します。クライアントは、リクエストを送信する前に一意の IdempotencyId (たとえば GUID) を生成します。
クライアントがレスポンスを受信しない場合 (たとえばネットワーク タイムアウト)、同じ IdempotencyId でまったく同じリクエストを安全に再試行できます。PlayFab は重複を認識し、元の結果を返します。プレイヤーには 1 回のみ課金されます。

ベスト プラクティス

  • 論理操作ごとに一意の ID を生成します — GUID または UUID を使用します。異なる操作に対して同じ ID を再利用しないでください。
  • 最初の試行の前にクライアント側で ID を生成します — これにより、すべての再試行で同じ ID が使用されます。
  • 再試行の間にリクエストの本文を変更しないでください — 異なるリクエスト本文で同じ IdempotencyId を使用すると、競合エラーが発生します。
  • ID は 14 日後に期限切れになります — その後、新しい操作に対して同じ ID を再度使用できます。

Redeem API は自動的にべき等です

マーケットプレイスの redeem API (RedeemAppleAppStoreInventoryItemsRedeemGooglePlayInventoryItemsRedeemMicrosoftStoreInventoryItemsRedeemSteamInventoryItems) には IdempotencyId は必要ありません。これらは本質的にべき等です。各マーケットプレイスのレシートまたはトークンは 1 回のみ引き換えることができます。同じレシートで 2 回目の呼び出しを行うと、成功を返しますが何も付与しません。

一般的なシナリオ

関連項目

最終更新日 2026年8月13日