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

# Canje con el marketplace de Google

> Cree productos desde la aplicación de Google Play, asígnelos a lotes de PlayFab Economy v2 y canjee las compras en el inventario del jugador con la API de canje.

# Configurar un lote de PlayFab que se pueda comprar en Google Play Store

En este tutorial se muestra cómo crear correctamente un lote de PlayFab, agregarlo a su juego en el marketplace de Google para que los jugadores lo compren y cómo canjear los artículos que contiene.

## Requisitos previos

1. Un título en [Game Manager](https://developer.playfab.com/) de PlayFab.
2. Una integración existente entre el título seleccionado y el marketplace que desee.
3. Una aplicación ya creada y disponible en [Google Play](https://play.google.com/console/developers).
   1. Asegúrese de que la aplicación tiene habilitada la [API Google Play Android Developer](https://console.cloud.google.com/apis/library/androidpublisher.googleapis.com).

## Paso 1: Crear un lote

En este tutorial, empezamos creando el **lote** en **Google Play Console**.

### Crear un lote con Google Play Console

1. Abra la **aplicación** que desee en [Google Play Console](https://play.google.com/console/developers).

2. En la barra de navegación izquierda, desplácese hacia abajo hasta la sección **Monetize** y seleccione **In-app products**.

   <img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/in-app-products-menu-option.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=92b9e2190985623fa3dde381d41ba772" alt="Opción de menú de productos desde la aplicación" width="268" height="174" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/in-app-products-menu-option.png" />

3. Seleccione **Create product** en la parte superior derecha.

   <img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/create-product-button.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=b41920daf7ccfa83fa1dac7fe6c92079" alt="Botón para crear el producto" width="167" height="49" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/create-product-button.png" />

4. Escriba el **Product ID** y el **nombre** que desee para el lote. En este tutorial, use **warrior\_bundle** como **Product ID**. Recuerde el **Product ID**, porque se usará para la vinculación con **Game Manager**.

   <img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/create-new-product-fields.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=be23718de59d1064702dbbef9785639a" alt="Campos de creación de un nuevo producto" width="925" height="747" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/create-new-product-fields.png" />

5. Desplácese hacia abajo hasta la sección **Price** y seleccione **Set price**.

   <img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/set-price-option.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=fb05ce5fabf21d5eab166866748c66f5" alt="Opción para establecer el precio" width="616" height="134" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/set-price-option.png" />

6. Agregue el precio que quiera que tenga el lote, por ejemplo 1,00 USD, y seleccione **Apply prices** en la parte inferior derecha.

   <img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/set-price-screen.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=5a568d7b4c64c2cd991194e08d4c917f" alt="Pantalla para establecer el precio" width="369" height="263" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/set-price-screen.png" />

7. Seleccione **Save** para guardar todos los cambios que acaba de realizar en el lote. Tenga en cuenta que guardarlo no lo activa como producto. Una vez guardado, aparece la opción de activación. Para activar el lote en su aplicación en **Google Play Console**, seleccione el botón **Activate** en la parte inferior derecha.

   <img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/activate-bundle-button.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=c43485d79a2f0e4263d0bd45f8275f3a" alt="Botón para activar el lote" width="237" height="60" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/activate-bundle-button.png" />

### Crear un lote con Game Manager

Para crear un nuevo **lote** en **Game Manager**, siga estos pasos:

1. Vaya a [Game Manager](https://developer.playfab.com/) y navegue hasta su **título**.

2. En el menú de navegación izquierdo, elija **Engage** > **Economy**.

   <img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/economy-menu-location.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=8bf748433b2bf5b630a720f8875f54d8" alt="Ubicación del menú Economy" width="146" height="29" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/economy-menu-location.png" />

3. Seleccione la pestaña **Bundles**.

   <img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/bundles-tab.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=171855d0a8a8d1f179c4a0a1ff099a79" alt="Pestaña Bundles" width="513" height="46" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/bundles-tab.png" />

4. Seleccione **New bundle**.

   <img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/new-bundle-button.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=47c50c417bbaf9666116c4c57a6b8fc4" alt="Botón New bundle" width="658" height="161" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/new-bundle-button.png" />

5. Agregue al **lote** la información que desee, como artículos y precios. En este tutorial, use **Warrior Bundle** como nombre.

   <img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/bundle-options.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=418ff8e0ea29852ceb78367fb3abda80" alt="Opciones del lote" width="1563" height="781" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/bundle-options.png" />

6. Desplácese hasta el final de la página y seleccione **Save and publish** si quiere que se publique de inmediato, o **Save as draft** si quiere guardarlo pero aún no quiere que esté disponible.

   <img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/save-options.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=eeabd76a32bdcaf3b2047d248eb3d698" alt="Opción de guardado" width="302" height="42" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/save-options.png" />

### Agregar artículos al lote

Un lote por sí solo no concede ningún artículo a un jugador; primero debemos vincularle artículos y, una vez canjeado, concede esos artículos a ese jugador específico.

Antes de agregar artículos a un lote, asegúrese de que ya los ha creado y publicado en su catálogo. Nosotros ya tenemos una espada llamada **Fire Sword** y un escudo llamado **Ice Shield**. Si no sabe cómo crear un artículo, consulte [este paso](/services/playfab/economy-monetization/economy-v2/tutorials/craftingGame/crafting-game-game-manager#step-4---create-your-first-item).

¡Ahora, agréguelos al lote! Para ello, puede agregarlos mientras crea el lote por primera vez, siempre que los artículos ya estén creados, o puede agregarlos más adelante editando el lote.

En el modo de edición, desplácese hacia abajo hasta la sección **Items** del lote y seleccione el botón **Add**; esto muestra una ventana con todos los artículos disponibles en el catálogo, desde la cual puede filtrar por tipo (Items o artículos de contenido generado por el usuario (UGC)) o buscar un artículo específico. Seleccionamos el botón **Add** junto a cada uno de los artículos que queremos agregar y, por último, el botón azul **Add** de la parte inferior de la ventana.

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/add-bundle-items.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=5555fac96752cb10974c4d251ab9a10d" alt="Agregar artículos a un lote" width="1156" height="648" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/add-bundle-items.png" />

#### Habilitar la asignación de marketplace

Para garantizar que, cuando un jugador compre un lote desde su aplicación, la compra se realice y se asigne correctamente en Game Manager, debe configurar su **asignación de marketplace** (Marketplace Mapping). Esto puede hacerse al crear el lote en Game Manager o después de crearlo, volviendo al lote en **modo de edición**.

1. Vaya a su lote en modo de edición.
2. Desplácese hasta la sección **Marketplace Mapping**.
3. En el menú desplegable **Marketplace**, seleccione el marketplace que desee. (Para este tutorial, será **GooglePlay**).
4. Para su **Marketplace ID**, asegúrese de usar el mismo que su **Product ID** en Google Play Console. En este tutorial, usamos **Warrior\_bundle**.
5. Para terminar, seleccione el **+** en el lado derecho de esa fila.

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/marketplace-mapping.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=4c95bc354ae66871f9aa1d502063351a" alt="Asignación de marketplace" width="867" height="145" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/marketplace-mapping.png" />

## Paso 2: Generar un token de compra

<Note>
  Asegúrese de haber completado el **requisito previo n.º 3** antes de continuar; de lo contrario, no hay forma práctica de generar un **token de compra**.
</Note>

Un **token de compra** es un token que las API de Google Play generan en cada compra, similar a un identificador de recibo. Según la documentación de Google, "un **token de compra** es una cadena que representa el derecho de un comprador a un producto en Google Play. Indica que un usuario de Google pagó por un producto específico".

En su implementación, debe guardar ese token, ya que debe enviarse a la API de PlayFab para validar la compra con el marketplace de Google. Permite a PlayFab canjear los artículos comprados por el jugador y concederlos en el inventario del jugador.

Para generar el token, ya debe tener una aplicación en ejecución con una integración activa con Google Play. El registro de la aplicación en Google Play también debe tener artículos (o, en este caso, un lote) disponibles para su compra. La implementación del código debe usar el sistema de facturación de Google Play para que se devuelva un token una vez realizada la compra.

En resumen, el sistema de facturación debe usarse al programar la aplicación; a través de ese sistema de facturación puede comprar el lote desde el lado de Google, lo que devolverá el **token de compra**. Después, el token debe usarse con la [API de Economy](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/redeem-google-play-inventory-items) de PlayFab para canjear la compra y agregar los artículos del lote al inventario del jugador.

<Tip>
  Para ver ejemplos de implementación de un proyecto similar con los sistemas de Google, consulte este [CodeLab](https://codelabs.developers.google.com/play-billing-codelab#0). Para obtener más información sobre la facturación, consulte la [documentación del sistema de facturación de Google](https://developer.android.com/google/play/billing).
</Tip>

## Paso 3: Canjear un lote

Ahora que tiene el lote creado tanto en **Game Manager** como en **Google Play Console**, puede canjear el lote para uno de sus jugadores. En este ejemplo, nos centramos en hacerlo con la API de PlayFab, en concreto, la llamada **RedeemGooglePlayInventoryItems**, que forma parte de la **API de Economy** de PlayFab.

### Comprobar los AlternateIDs

Antes de realizar la llamada de canje, asegúrese de que tiene el **AlternateId** correcto en **Game Manager**; debe ser el mismo que en **Google Play Console**.

La captura de pantalla siguiente procede de su lote en **Game Manager**; el **Marketplace ID** es lo que llamamos **AlternateId**; básicamente, es otra forma de identificar el lote.

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/marketplace-mapping.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=4c95bc354ae66871f9aa1d502063351a" alt="Asignación de marketplace" width="867" height="145" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/marketplace-mapping.png" />

Desde **Google Play Console**, vaya a la pantalla **In-app products** de la sección **Monetize**; desde aquí verá todos los productos creados, incluido el **Warrior Bundle**. El **Product ID** puede verse en la segunda columna; debe asegurarse de que es el mismo que su **AlternateId** en **Game Manager** y, si no lo es, actualice **Game Manager**.

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/google-product-id.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=540fdae0f4ec818e566dcaff96fb82de" alt="Product ID de Google Play Console" width="506" height="102" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/google-product-id.png" />

### Autenticar al jugador

Para canjear un artículo, use [RedeemGooglePlayInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/redeem-google-play-inventory-items). Pero antes, debemos asegurarnos de que el jugador que quiere canjear los artículos se autentica correctamente en la aplicación, para lo cual probablemente use [LoginWithGoogleAccount](https://learn.microsoft.com/en-us/rest/api/playfab/client/authentication/login-with-google-account).

<Note>
  Para ver un ejemplo más detallado, consulte [Configuración de la autenticación de PlayFab con el inicio de sesión de Google Play Juegos en Unity](/services/playfab/identity/player-identity/platform-specific-authentication/google-sign-in-unity).
</Note>

Después de una llamada a **LoginWithGoogleAccount** correcta, la API de PlayFab devuelve un **EntityToken** que debe usar como parte de los encabezados de **RedeemGooglePlayInventoryItems** con una clave `X-EntityToken`. Tendría este aspecto si usa una plataforma de API para realizar pruebas.

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/header-keys.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=f0198070ec5ca0f935b5aaf5b87c4da0" alt="Claves de encabezado de la plataforma de API" width="684" height="111" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/header-keys.png" />

### Realizar la llamada de canje

Con el jugador autenticado, ambas instancias del lote creadas y sus **identificadores alternativos** comprobados, y su **token de compra**, ya está listo para realizar la llamada de canje. Para ello, usamos la llamada a la API **RedeemGooglePlayInventoryItems**.

```json theme={null}
{
    "Purchases": [
        {
            "ProductId": "warrior_bundle",
            "Token": "{Your Google Purchase Token}"
        }
    ]
}
```

La llamada es sencilla: tiene una matriz `Purchases`, que contiene el `Product ID` (que debe coincidir con el de **Google Play Console**) y un campo `Token` que corresponde al **token de compra** devuelto al llamar al **sistema de facturación de Google Play**.

Una respuesta correcta incluye un `código de estado 200` junto con datos como una **marca de tiempo** y un **MarketplaceTransactionId**.

Después de realizar un canje correcto, si accede al inventario del jugador, debería poder ver los dos artículos vinculados al lote.

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/inventory-after-redemption.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=e86cd91ff9c2e5da81f315ae071a3072" alt="Inventario después del canje" width="843" height="197" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/inventory-after-redemption.png" />

Cada acción de canje también desencadena el registro de un evento correspondiente en el historial de transacciones del jugador, que puede consultarse en la pestaña **Transaction History (V2)** de la página de información general de un jugador específico, y tiene un aspecto similar a este:

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/transaction-history.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=45757726c6c89bbd6c364effc9387162" alt="Historial de transacciones" width="1423" height="521" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/transaction-history.png" />

Junto con el registro en el historial de transacciones del jugador, también se desencadena y registra un evento de PlayStream. Puede acceder a estos registros de su título desde la página **Data**, en la sección **Analyze** de la barra de navegación izquierda de **Game Manager**. Aquí puede editar consultas para buscar registros específicos o ejecutarlas con la configuración predeterminada para obtenerlo todo. Debería haber un registro con el **nombre de evento** **items\_redeemed**, como el siguiente:

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/google-redemption/playstream-event-log.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=a510550be545cce753c637ea1bcdb842" alt="Registro de eventos de PlayStream" width="778" height="192" data-path="images/playfab/economy-monetization/economy-v2/google-redemption/playstream-event-log.png" />

Observará que se registran dos eventos `items_redeemed` de PlayStream distintos; esto se debe a que, aunque canjeamos un solo lote, el lote contenía dos artículos diferentes.

## Paso 4: Consumo

Después de canjear correctamente la compra, debe asegurarse de que se **consume** correctamente en el marketplace. Las formas de hacerlo son:

* Con el método **purchases.products.consume**, que forma parte de la [API Google Play Developer](https://developers.google.com/android-publisher/api-ref/rest/v3/purchases.products/consume).
* Con el método **BillingClient.consumeAsync**, que forma parte del [cliente de facturación de Google](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#consumeAsync\(com.android.billingclient.api.ConsumeParams,%20com.android.billingclient.api.ConsumeResponseListener\)).
* O bien con uno de los complementos integrados, como los disponibles en **Unity** y **Unreal**.

No obstante, antes de realizar la llamada de consumo (o, en los complementos de Unity o Unreal, antes de que el cliente indique que terminó de procesar la compra), debe recibir una respuesta `200` después del proceso de canje con 1 o más resultados correctos y **0 errores**. Si recibe una respuesta `202` o un error de canje, se recomienda reintentar la llamada de consumo una vez más pasado un tiempo.

## Consulte también

* [Introducción a Economy v2, Unity y Android](/services/playfab/economy-monetization/economy-v2/tutorials/getting-started-with-unity-and-android)

* [Inicio rápido de prevención de fraude](/services/playfab/economy-monetization/economy-v2/fraud-prevention/quickstart)


## Related topics

- [Canje de marketplace: Información general](/es/services/playfab/economy-monetization/economy-v2/marketplace/marketplace-redemption/overview.md)
- [Canje con el marketplace de Microsoft Store](/es/services/playfab/economy-monetization/economy-v2/marketplace/marketplace-redemption/microsoft.md)
- [Canje con el marketplace de Steam](/es/services/playfab/economy-monetization/economy-v2/marketplace/marketplace-redemption/steam.md)
- [Seguimiento de precios en dinero real en Economy v2](/es/services/playfab/economy-monetization/economy-v2/tutorials/real-money-price-tracking.md)
- [Transacciones idempotentes y patrones de reintento en Economy v2](/es/services/playfab/economy-monetization/economy-v2/tutorials/idempotent-transactions-and-retries.md)
