Skip to main content
Economy v2 现已正式发布。如需支持和反馈,请访问 PlayFab 论坛
网络故障、超时和重复请求在实时游戏中是不可避免的。Economy v2 提供 IdempotencyId 以防止重复交易。此功能确保即使同一请求发送多次,操作也只被处理一次。 有关乐观并发控制(确保只有当自你上次读取库存以来库存未更改时写入才成功),请参见 ETag 和并发控制

先决条件

工作原理

当你在库存写入请求中包含 IdempotencyId 时,PlayFab 会将该 ID 存储 14 天。如果具有相同 IdempotencyId 的另一个请求到达,PlayFab 将返回原始请求的结果,而不会再次处理操作。

支持的 API

所有库存写入 API 都支持 IdempotencyId

示例:带重试的安全购买

在此场景中,玩家购买了一把 Laser Sword。客户端在发送请求之前生成一个唯一的 IdempotencyId(例如 GUID):
如果客户端没有收到响应(例如网络超时),它可以安全地使用相同的 IdempotencyId 重试完全相同的请求。PlayFab 识别重复项并返回原始结果。玩家仅被收费一次。

最佳做法

  • 每个逻辑操作生成一个唯一的 ID — 使用 GUID 或 UUID。不要为不同的操作重用相同的 ID。
  • 在第一次尝试之前在客户端生成 ID — 此做法确保所有重试使用相同的 ID。
  • 不要在重试之间更改请求正文 — 使用相同的 IdempotencyId 但不同的请求正文会导致冲突错误。
  • ID 在 14 天后过期 — 之后,相同的 ID 可以再次用于新的操作。

Redeem API 自动幂等

市场兑换 API(RedeemAppleAppStoreInventoryItemsRedeemGooglePlayInventoryItemsRedeemMicrosoftStoreInventoryItemsRedeemSteamInventoryItems)不需要 IdempotencyId。它们本质上是幂等的。每个市场收据或令牌只能兑换一次。使用相同收据的第二次调用返回成功,但不授予任何内容。

常见场景

另请参阅

最后修改于 2026年8月13日