> ## 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 des échanges entre joueurs PlayFab à l'aide d'OpenTrade, d'AcceptTrade et des API connexes pour échanger des articles d'inventaire entre deux joueurs.

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

La première étape consiste à appeler l'API `OpenTrade` pour rendre un échange accessible à 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'article dans son inventaire.

`secondPlayerId` : il s'agit de la chaîne unique qui identifie le destinataire du cadeau (`PlayFabId`).

`myItemInstanceId` : il s'agit de la chaîne unique qui identifie une instance d'article 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 renseignements publics. N'importe quel joueur peut consulter les échanges ouverts d'un autre joueur, ainsi que l'historique des échanges d'un autre joueur (s'il connaît le `playFabId` de ce joueur).
</Note>

Dans cet extrait, le rappel `LogSuccess` doit également évaluer `result.Trade.TradeId` et transférer à la fois `firstPlayFabId` et `tradeId` au deuxième joueur. Si ces valeurs ne sont pas enregistrées, le deuxième joueur ne pourra pas évaluer ni accepter l'échange.

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

Une fois que le premier joueur a créé l'échange et transféré son `playFabId` et le `tradeId` au deuxième 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 période notable entre les appels. Un échange récemment modifié pourrait 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 articles offerts de l'inventaire du premier joueur à celui du deuxième.


## Related topics

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