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

# Démarrage rapide des échanges

> Démarrage rapide pour les échanges entre joueurs PlayFab à l'aide d'OpenTrade, d'AcceptTrade et des API associées afin d'échanger des objets d'inventaire entre deux joueurs.

<Note>
  Ce démarrage rapide suppose que vous connaissez déjà les catalogues et les objets d'inventaire. Le joueur de l'exemple doit déjà posséder les objets d'inventaire qu'il souhaite céder.
</Note>

La première étape consiste à appeler l'API `OpenTrade` pour mettre un échange à la disposition d'un autre joueur. Vous aurez besoin d'un `playfabId` pour identifier le destinataire du cadeau, et de l'`ItemInstanceID` du joueur qui possède actuellement l'objet dans son inventaire.

`secondPlayerId` : chaîne unique qui identifie le destinataire du cadeau (`PlayFabId`).

`myItemInstanceId` : chaîne unique qui identifie une instance d'objet possédée par le joueur actuel (`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>
  Tous les échanges sont des informations publiques. N'importe quel joueur peut consulter les échanges ouverts d'un autre joueur, ainsi que son historique d'échanges (s'il connaît le `playFabId` de ce joueur).
</Note>

Dans cet extrait, le rappel `LogSuccess` doit également évaluer `result.Trade.TradeId` et transmettre à la fois `firstPlayFabId` et le `tradeId` au second joueur. S'ils ne sont pas enregistrés, le second joueur ne pourra ni évaluer ni accepter l'échange.

<Note>
  Dans la préversion actuelle, vous devez vous assurer que vos échanges sont thread-safe vis-à-vis des actions simultanées. Les options thread-safe incluent les serveurs de jeu personnalisés et les appels Webhook via CloudScript vers une base de données ou un système externe. Les options non thread-safe peuvent être créées avec CloudScript en modifiant directement une clé de données de joueur. Cette dernière option présente des problèmes de concurrence : des mises à jour simultanées de la liste d'échanges peuvent ne pas être traitées correctement.
</Note>

Une fois que le premier joueur a créé l'échange et transmis son `playFabId` et le `tradeId` au second joueur, ce dernier peut examiner les conditions de l'échange (en vérifiant qu'il s'agit d'un cadeau) en effectuant une requête `GetTradeStatus`.

<Note>
  Les valeurs **TradeStatus** les plus pertinentes sont **Open**, **Filled** et **Canceled**. Tous les autres états sont des états intermédiaires. Les échanges peuvent rester dans ces états intermédiaires pendant une durée notable entre les appels. Un échange récemment modifié peut ne pas être disponible immédiatement.
</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);
}
```

Une fois terminée, la fonction `AcceptGiftFrom` ci-dessus transfère les objets offerts de l'inventaire du premier joueur vers celui du second.


## Related topics

- [Démarrage rapide des statistiques](/fr/services/playfab/player-progression/statistics/quickstart-statistics.md)
- [Démarrage rapide des rapports](/fr/services/playfab/data-analytics/learn-data/reports/quickstart.md)
- [Démarrage rapide des classements](/fr/services/playfab/community/leaderboards/quickstart-leaderboards.md)
- [Démarrage rapide des expériences](/fr/services/playfab/live-service-management/game-configuration/experiments/quickstart.md)
- [Démarrage rapide des entités](/fr/services/playfab/live-service-management/game-configuration/entities/quickstart.md)
