> ## 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.

# 交易快速入門

> PlayFab 玩家對玩家交易快速入門，使用 OpenTrade、AcceptTrade 及相關 API 在兩位玩家之間交換庫存物品。

<Note>
  本快速入門假設您已熟悉目錄和庫存物品。範例玩家必須已擁有他們想要交易出去的庫存物品。
</Note>

第一步是呼叫 `OpenTrade` API，讓另一位玩家可以進行交易。您將需要 `playfabId` 來識別禮物接收者，以及目前庫存中擁有該物品之玩家的 `ItemInstanceID`。

`secondPlayerId`：這是識別禮物接收者的唯一字串 (`PlayFabId`)。

`myItemInstanceId`：這是識別目前玩家所擁有之物品執行個體的唯一字串 (`InstanceID`)。

```csharp theme={null}
void GiveItemTo(string secondPlayerId, string myItemInstanceId) {
    PlayFabClientAPI.OpenTrade(new OpenTradeRequest {
        AllowedPlayerIds = new List<string> { secondPlayerId }, // PlayFab ID for the friend who will receive your gift
        OfferedInventoryInstanceIds = new List<string> { myItemInstanceId } // The item instanceId fetched from GetUserInventory()
    }, LogSuccess, LogFailure);
}
```

<Note>
  所有交易都是公開資訊。任何玩家都可以查看另一位玩家的開啟交易，以及另一位玩家的交易歷程記錄 (如果他們知道該玩家的 `playFabId`)。
</Note>

在此程式碼片段中，`LogSuccess` 回呼也必須評估 `result.Trade.TradeId`，並將 `firstPlayFabId` 和 `tradeId` 都傳送給第二位玩家。如果未儲存，第二位玩家將無法評估或接受交易。

<Note>
  在目前的預覽版中，您必須確保您的交易在並行動作下是執行緒安全的。執行緒安全的選項包括自訂遊戲伺服器，以及透過 CloudScript 對外部資料庫/系統進行的 Webhook 呼叫。執行緒不安全的選項可以使用直接修改玩家資料索引鍵的 CloudScript 建置。後者有並行問題，同時進行的交易清單更新可能無法正確處理。
</Note>

第一位玩家建立交易，並將其 `playFabId` 和 `tradeId` 傳送給第二位玩家之後，第二位玩家可以透過發出 `GetTradeStatus` 要求來檢查交易需求 (確認這是一份禮物)。

<Note>
  最相關的 **TradeStatus** 值為 **Open**、**Filled** 和 **Canceled**。所有其他狀態都是中間狀態。在呼叫之間，交易可能會在這些中間狀態停留一段明顯的時間。最近修改的交易可能無法立即使用。
</Note>

```csharp theme={null}
void ExamineTrade(string firstPlayFabId, string tradeId) {
    PlayFabClientAPI.GetTradeStatus(new GetTradeStatusRequest {
        OfferingPlayerId = firstPlayFabId,
        TradeId = tradeId
    }, LogSuccess, LogFailure);
}

If the requirements of that trade are acceptable, the gift can be accepted using AcceptTrade
C# snip
void AcceptGiftFrom(string firstPlayFabId, string tradeId) {
    PlayFabClientAPI.AcceptTrade(new AcceptTradeRequest {
        OfferingPlayerId = firstPlayFabId,
        TradeId = tradeId
    }, LogSuccess, LogFailure);
}
```

完成後，上述 `AcceptGiftFrom` 函式會將贈送的物品從第一位玩家的庫存轉移到第二位玩家的庫存。


## Related topics

- [快速入門](/zh-TW/services/playfab/economy-monetization/economy-v2/quickstart.md)
- [統計資料快速入門](/zh-TW/services/playfab/player-progression/statistics/quickstart-statistics.md)
- [Economy (舊版) 快速入門](/zh-TW/services/playfab/economy-monetization/economy/quickstart.md)
- [Party 快速入門](/zh-TW/services/playfab/multiplayer/networking/quickstart.md)
- [Android 快速入門](/zh-TW/services/playfab/sdks/c/quickstart-android.md)
