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

# Inicio rápido de intercambio

> Inicio rápido del intercambio entre jugadores de PlayFab mediante OpenTrade, AcceptTrade y las API relacionadas para intercambiar artículos de inventario entre dos jugadores.

<Note>
  Este inicio rápido asume que ya está familiarizado tanto con los catálogos como con los artículos de inventario. El jugador de ejemplo ya debe poseer los artículos de inventario que desea intercambiar.
</Note>

El primer paso es llamar a la API `OpenTrade`, para que un intercambio esté disponible para otro jugador. Necesitará un `playfabId` para identificar al destinatario del regalo y el `ItemInstanceID` del jugador que actualmente tiene el artículo en su inventario.

`secondPlayerId`: es la cadena única que identifica al destinatario del regalo (`PlayFabId`).

`myItemInstanceId`: es la cadena única que identifica una instancia de artículo que posee el jugador actual (`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>
  Todos los intercambios son información pública. Cualquier jugador puede ver los intercambios abiertos de otro jugador, así como el historial de intercambios de otro jugador (si conoce el `playFabId` de ese jugador).
</Note>

En este fragmento, la devolución de llamada `LogSuccess` también debe evaluar `result.Trade.TradeId` y transferir tanto `firstPlayFabId` como el `tradeId` al segundo jugador. Si no se guardan, el segundo jugador no podrá evaluar ni aceptar el intercambio.

<Note>
  En la versión preliminar actual, debe asegurarse de que sus intercambios sean seguros para subprocesos frente a acciones simultáneas. Las opciones seguras para subprocesos incluyen servidores de juego personalizados y llamadas de webhook mediante CloudScript a una base de datos o un sistema externo. Las opciones no seguras para subprocesos se pueden crear con CloudScript que modifica directamente una clave de datos del jugador. Esta última opción tiene problemas de simultaneidad en los que las actualizaciones simultáneas de la lista de intercambios pueden no procesarse correctamente.
</Note>

Una vez que el primer jugador ha creado el intercambio y ha transferido su `playFabId` y el `tradeId` al segundo jugador, este puede examinar los requisitos del intercambio (verificando que es un regalo) mediante una solicitud `GetTradeStatus`.

<Note>
  Los valores de **TradeStatus** más relevantes son **Open**, **Filled** y **Canceled**. Todos los demás estados son estados intermedios. Los intercambios pueden permanecer en esos estados intermedios durante un período de tiempo apreciable entre llamadas. Un intercambio modificado recientemente puede no estar disponible de inmediato.
</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);
}
```

Una vez completada, la función `AcceptGiftFrom` anterior transferirá los artículos regalados del inventario del primer jugador al del segundo.


## Related topics

- [Inicio rápido de Economy (heredada)](/es/services/playfab/economy-monetization/economy/quickstart.md)
- [Inicio rápido de Linux](/es/services/playfab/sdks/c/quickstart-linux.md)
- [Inicio rápido de iOS](/es/services/playfab/sdks/c/quickstart-ios.md)
- [Inicio rápido de Win32](/es/services/playfab/sdks/c/quickstart-win32.md)
- [Inicio rápido de Android](/es/services/playfab/sdks/c/quickstart-android.md)
