Economy v2 现已正式发布。如需支持和反馈,请访问 PlayFab 论坛。
先决条件
- 一个 PlayFab 开发者账户。
- 在 Game Manager 中创建的 title。
- 至少一个已发布的目录物品和一种虚拟货币。
工作原理
当你在库存写入请求中包含IdempotencyId 时,PlayFab 会将该 ID 存储 14 天。如果具有相同 IdempotencyId 的另一个请求到达,PlayFab 将返回原始请求的结果,而不会再次处理操作。
支持的 API
所有库存写入 API 都支持IdempotencyId:
- AddInventoryItems
- SubtractInventoryItems
- PurchaseInventoryItems
- TransferInventoryItems
- DeleteInventoryItems
- UpdateInventoryItems
- ExecuteInventoryOperations
示例:带重试的安全购买
在此场景中,玩家购买了一把 Laser Sword。客户端在发送请求之前生成一个唯一的IdempotencyId(例如 GUID):
IdempotencyId 重试完全相同的请求。PlayFab 识别重复项并返回原始结果。玩家仅被收费一次。
最佳做法
- 每个逻辑操作生成一个唯一的 ID — 使用 GUID 或 UUID。不要为不同的操作重用相同的 ID。
- 在第一次尝试之前在客户端生成 ID — 此做法确保所有重试使用相同的 ID。
- 不要在重试之间更改请求正文 — 使用相同的
IdempotencyId但不同的请求正文会导致冲突错误。 - ID 在 14 天后过期 — 之后,相同的 ID 可以再次用于新的操作。
Redeem API 自动幂等
市场兑换 API(RedeemAppleAppStoreInventoryItems、RedeemGooglePlayInventoryItems、RedeemMicrosoftStoreInventoryItems、RedeemSteamInventoryItems)不需要 IdempotencyId。它们本质上是幂等的。每个市场收据或令牌只能兑换一次。使用相同收据的第二次调用返回成功,但不授予任何内容。
