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

# Início rápido de trocas

> Início rápido para trocas entre jogadores no PlayFab usando OpenTrade, AcceptTrade e APIs relacionadas para trocar itens de inventário entre dois jogadores.

<Note>
  Este início rápido pressupõe que você já esteja familiarizado com catálogos e itens de inventário. O jogador de exemplo já deve possuir os itens de inventário que deseja oferecer na troca.
</Note>

A primeira etapa é chamar a API `OpenTrade` para disponibilizar uma troca para outro jogador. Você precisará de um `playfabId` para identificar o destinatário do presente e do `ItemInstanceID` do jogador que atualmente tem o item em seu inventário.

`secondPlayerId`: esta é a cadeia de caracteres exclusiva que identifica o destinatário do presente (`PlayFabId`).

`myItemInstanceId`: esta é a cadeia de caracteres exclusiva que identifica uma instância de item pertencente ao jogador atual (`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>
  Todas as trocas são informações públicas. Qualquer jogador pode ver as trocas abertas de outro jogador, bem como o histórico de trocas de outro jogador (se souber o `playFabId` desse jogador).
</Note>

Neste trecho, o retorno de chamada `LogSuccess` também deve avaliar `result.Trade.TradeId` e transferir tanto o `firstPlayFabId` quanto o `tradeId` para o segundo jogador. Se eles não forem salvos, não será possível para o segundo jogador avaliar ou aceitar a troca.

<Note>
  Na versão prévia atual, você precisa garantir que suas trocas sejam thread-safe em relação a ações simultâneas. As opções thread-safe incluem servidores de jogos personalizados e chamadas de Webhook via CloudScript para um banco de dados/sistema externo. Opções não thread-safe podem ser criadas com CloudScript que modifica diretamente uma chave de dados do jogador (Player Data Key). Esta última opção tem problemas de simultaneidade, em que atualizações simultâneas da lista de trocas podem não ser processadas corretamente.
</Note>

Depois que o primeiro jogador tiver criado a troca e transferido seu `playFabId` e o `tradeId` para o segundo jogador, o segundo jogador poderá examinar os requisitos da troca (verificando se é um presente) fazendo uma solicitação `GetTradeStatus`.

<Note>
  Os valores de **TradeStatus** mais relevantes são **Open**, **Filled** e **Canceled**. Todos os outros estados são estados intermediários. As trocas podem permanecer nesses estados intermediários por um período perceptível entre as chamadas. Uma troca modificada recentemente pode não estar disponível imediatamente.
</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);
}
```

Após a conclusão, a função `AcceptGiftFrom` acima transferirá os itens presenteados do inventário do primeiro jogador para o do segundo.


## Related topics

- [Introdução aos anúncios recompensados.](/pt-BR/services/playfab/economy-monetization/rewarded-ads/quickstart.md)
- [Início rápido de matchmaking](/pt-BR/services/playfab/multiplayer/matchmaking/quickstart.md)
- [Início rápido de estatísticas](/pt-BR/services/playfab/player-progression/statistics/quickstart-statistics.md)
- [Início rápido de métricas](/pt-BR/services/playfab/data-analytics/learn-data/trends/trends-quickstart.md)
- [Início rápido de entidades](/pt-BR/services/playfab/live-service-management/game-configuration/entities/quickstart.md)
