Economy v2 が一般提供 (GA) されました。サポートとフィードバックについては、PlayFab フォーラム を参照してください。
前提条件
- PlayFab 開発者アカウント。
- Game Manager で作成されたタイトル。
- 少なくとも 1 つの公開済みカタログ アイテムと 1 つの仮想通貨。
仕組み
インベントリ書き込みリクエストにIdempotencyId を含めると、PlayFab はその ID を 14 日間 保存します。同じ IdempotencyId を持つ別のリクエストが到着すると、PlayFab は元のリクエストの結果を返し、操作を再度処理することはありません。
サポートされている API
IdempotencyId はすべてのインベントリ書き込み API でサポートされています。
- AddInventoryItems
- SubtractInventoryItems
- PurchaseInventoryItems
- TransferInventoryItems
- DeleteInventoryItems
- UpdateInventoryItems
- ExecuteInventoryOperations
例: 再試行を伴う安全な購入
このシナリオでは、プレイヤーが Laser Sword を購入します。クライアントは、リクエストを送信する前に一意のIdempotencyId (たとえば GUID) を生成します。
IdempotencyId でまったく同じリクエストを安全に再試行できます。PlayFab は重複を認識し、元の結果を返します。プレイヤーには 1 回のみ課金されます。
ベスト プラクティス
- 論理操作ごとに一意の ID を生成します — GUID または UUID を使用します。異なる操作に対して同じ ID を再利用しないでください。
- 最初の試行の前にクライアント側で ID を生成します — これにより、すべての再試行で同じ ID が使用されます。
- 再試行の間にリクエストの本文を変更しないでください — 異なるリクエスト本文で同じ
IdempotencyIdを使用すると、競合エラーが発生します。 - ID は 14 日後に期限切れになります — その後、新しい操作に対して同じ ID を再度使用できます。
Redeem API は自動的にべき等です
マーケットプレイスの redeem API (RedeemAppleAppStoreInventoryItems、RedeemGooglePlayInventoryItems、RedeemMicrosoftStoreInventoryItems、RedeemSteamInventoryItems) には IdempotencyId は必要ありません。これらは本質的にべき等です。各マーケットプレイスのレシートまたはトークンは 1 回のみ引き換えることができます。同じレシートで 2 回目の呼び出しを行うと、成功を返しますが何も付与しません。
