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

# Canjear compras desde la aplicación del App Store de Apple

> Cree una compra desde la aplicación del App Store de Apple, asígnela a un lote del catálogo de PlayFab y guíe a los jugadores en el proceso de canje con las API de canje de Economy v2.

# Configurar una compra desde la aplicación con PlayFab y el App Store de Apple

En este tutorial se proporcionan instrucciones paso a paso sobre cómo crear un artículo de compra desde la aplicación (IAP) del App Store de Apple, agregarlo a su catálogo en Game Manager y guiar a los jugadores en el proceso de canje.

## 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 en PlayFab y el App Store de Apple](/services/playfab/economy-monetization/economy-v2/marketplace/marketplace-integrations/apple).
3. Acceso a [App Store Connect](https://appstoreconnect.apple.com/).
4. Una aplicación ya [creada](https://developer.apple.com/help/app-store-connect/create-an-app-record/add-a-new-app) en **App Store Connect**.
5. Una [compra desde la aplicación](https://developer.apple.com/help/app-store-connect/manage-in-app-purchases/create-consumable-or-non-consumable-in-app-purchases/) creada dentro de su **aplicación** en **App Store Connect**. La **compra desde la aplicación** debe incluir [precios](https://developer.apple.com/help/app-store-connect/manage-in-app-purchases/set-a-price-for-an-in-app-purchase) y [localización](https://developer.apple.com/documentation/appstoreconnectapi/app_store/in-app_purchase/in-app_purchase_localizations).
6. Una [cola de pagos](https://developer.apple.com/documentation/storekit/skpaymentqueue) con su correspondiente [observador de transacciones](https://developer.apple.com/documentation/storekit/in-app_purchase/original_api_for_in-app_purchase/setting_up_the_transaction_observer_for_the_payment_queue) que ya forme parte de su aplicación.

## Paso 1: Crear usuarios de prueba

Para poder probar correctamente una compra sin incurrir en pagos con dinero real, empiece por crear un usuario de prueba para su aplicación.

1. Vaya a [App Store Connect](https://appstoreconnect.apple.com/) > **Users and Access**.

2. Seleccione **Sandbox**.

   <img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/apple-redemption/sandbox-tab-option.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=3d00d1425e1b9adbaa9e7eefa6773510" alt="Opción de la pestaña Sandbox" width="804" height="76" data-path="images/playfab/economy-monetization/economy-v2/apple-redemption/sandbox-tab-option.png" />

3. Seleccione el botón del signo más (**+**) junto a **Test Accounts**.

4. Rellene el formulario y seleccione **Create**.

   <img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/apple-redemption/new-test-user-form.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=d8a84e3ec992c3a706d09bcb7c9221cb" alt="Formulario de nuevo usuario de prueba" width="465" height="354" data-path="images/playfab/economy-monetization/economy-v2/apple-redemption/new-test-user-form.png" />

## Paso 2: Crear un lote en Game Manager

<Note>
  Antes de crear un lote en **Game Manager**, asegúrese de que ya ha creado y publicado en su catálogo los artículos que quiere agregar al lote. En este tutorial, damos por hecho que ya ha creado una espada llamada **Super Awesome Sword**. Si necesita orientación sobre 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).
</Note>

Para habilitar una asignación de marketplace entre **Game Manager** y **App Store Connect**, debe crear un **lote** en Game Manager. Un lote puede contener varios artículos con distintas cantidades, y PlayFab los agregará al inventario del jugador una vez canjeado. Siga estos pasos para crear un nuevo **lote** en **Game Manager**:

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

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

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

4. Seleccione **New bundle**.

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

   <img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/apple-redemption/bundle-fields.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=186122634a38f2bb84d8eb1e59c8275f" alt="Opciones del lote" width="1270" height="662" data-path="images/playfab/economy-monetization/economy-v2/apple-redemption/bundle-fields.png" />

6. Desplácese hasta el final de la página y seleccione **Save and publish** si quiere que los jugadores puedan canjearlo de inmediato. Seleccione "Save as draft" si quiere publicarlo más adelante.

   <img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/apple-redemption/save-options.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=21ef08541f5c5d2009987d57741ff403" alt="Opciones de guardado" width="296" height="44" data-path="images/playfab/economy-monetization/economy-v2/apple-redemption/save-options.png" />

### Agregar un artículo 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.

Para agregar artículos al lote, siga estos pasos:

1. Vaya a la sección **Items** en modo de edición.
2. Seleccione **Add**. Aparece una ventana que muestra todos los artículos del catálogo.
3. Puede filtrar por tipo o buscar un artículo específico.
4. Busque nuestra **Super Awesome Sword** y seleccione **Add** junto a ella.
5. Por último, seleccione el botón **Add** de la parte inferior.

Esto agrega el artículo al lote.

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/apple-redemption/add-item-to-bundle.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=6d4ade52e0b6d0f01f77ebaf56b2ad0a" alt="Agregar artículos a un lote" width="812" height="522" data-path="images/playfab/economy-monetization/economy-v2/apple-redemption/add-item-to-bundle.png" />

## Paso 3: 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 la **asignación de marketplace** (Marketplace Mapping). Esto puede hacerse al crear el lote en Game Manager o volviendo al lote en **modo de edición** después de crearlo.

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, es **AppleAppStore**).
4. Para su **Marketplace ID**, asegúrese de usar el mismo que su **Product ID** en **App Store Connect**. En este tutorial, usamos **pf.commerce.ios.sas1**.
5. Para terminar, seleccione el **+** en el lado derecho de esa fila y **guarde** los cambios.

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

## Paso 4: Realizar una compra

<Tip>
  Para obtener más información sobre este tema, consulte [In-App Purchases](https://developer.apple.com/design/human-interface-guidelines/in-app-purchase). Para obtener información general sobre cómo configurar las compras desde la aplicación, consulte la [documentación para desarrolladores de Apple](https://developer.apple.com/help/app-store-connect/configure-in-app-purchase-settings/overview-for-configuring-in-app-purchases/).
</Tip>

Ahora ya tiene su **IAP** creada en **App Store Connect**, su **lote** configurado con **artículos** en **Game Manager** y la **asignación de marketplace** de su **lote** configurada. Pasemos a comprar la IAP desde su **aplicación**.

Una vez que tenga el artículo IAP expuesto y disponible para su compra desde la aplicación, puede usar el **usuario de prueba** que creamos en el [paso 1](#step-1-create-test-users) para comprar la IAP en su aplicación. Una vez completado, la API de Apple debería devolver un **recibo** que después debe usar con la API de canje de PlayFab para validar la compra y conceder al jugador los artículos del **lote**.

## Paso 5: Canjear la compra desde la aplicación

Una vez que obtenga el **recibo** de la API de Apple, debe usar la llamada a la API **RedeemAppleAppStoreInventoryItems** de PlayFab para canjear correctamente la IAP. En este caso, debería conceder nuestra **Super Awesome Sword** al jugador autenticado.

### Comprobar que ambos identificadores coinciden

Antes de realizar la llamada de canje, debe asegurarse de que el **identificador alternativo** que usó en **Game Manager** para la asignación de marketplace coincide con el **Product ID** de **App Store Connect**.

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/apple-redemption/marketplace-mapping.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=df47a8ad762edebe9ad4815f8fc60d14" alt="Asignación de marketplace" width="1270" height="199" data-path="images/playfab/economy-monetization/economy-v2/apple-redemption/marketplace-mapping.png" />

Desde [App Store Connect](https://appstoreconnect.apple.com/), vaya a **My Apps**, seleccione la aplicación que desee y, a continuación, vaya a **Features** > **In-App Purchases** en el menú de navegación izquierdo. Por último, seleccione su IAP y, en los metadatos de la IAP, verá el **Product ID**.

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/economy-monetization/economy-v2/apple-redemption/app-store-connect-product-id.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=975ebfa25d33ee63a869c1d0c485d18f" alt="Product ID de App Store Connect" width="383" height="178" data-path="images/playfab/economy-monetization/economy-v2/apple-redemption/app-store-connect-product-id.png" />

### Autenticar al jugador

Para canjear un artículo, use [RedeemAppleAppStoreInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/redeem-apple-app-store-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 se usa [LoginWithApple](https://learn.microsoft.com/en-us/rest/api/playfab/client/authentication/login-with-apple).

Después de una llamada a **LoginWithApple** correcta, la API de PlayFab devuelve un **EntityToken** que debe usar como parte de los encabezados de **RedeemAppleAppStoreInventoryItems** 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/apple-redemption/header-keys.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=7f4e1dc7fe1f3af28ea2a945fd5614b0" alt="Claves de encabezado de la plataforma de API" width="684" height="111" data-path="images/playfab/economy-monetization/economy-v2/apple-redemption/header-keys.png" />

### Realizar la llamada de canje

Con el jugador autenticado, ambos identificadores comprobados y coincidentes, y el **recibo** de la compra realizada por el jugador en la aplicación, ya está listo para realizar la llamada de canje. Para ello, use la llamada a la API **RedeemAppleAppStoreInventoryItems**.

```json theme={null}
{
    "Receipt": "{Your receipt}"
}
```

La llamada de canje tiene un único valor, que es el **recibo** devuelto por Apple después de una compra correcta de la IAP.

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

Después de ejecutar una llamada de canje correcta, debería poder ver una **Super Awesome Sword** en el inventario del jugador autenticado. Esto desencadena 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 del jugador en [Game Manager](https://developer.playfab.com/).

Junto con una nueva entrada de registro en el historial de transacciones del jugador, también se desencadena y registra un evento **PlayStream** `items_redeemed`. 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](https://developer.playfab.com/). 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**.

## Paso 6: Finalizar la transacción

Después de canjear correctamente los artículos comprados, debe asegurarse de finalizar correctamente la transacción para evitar que permanezca indefinidamente en la cola de compras. Es importante tener en cuenta que debe finalizar la transacción tanto si se realizó correctamente como si produjo un error.

Para finalizar correctamente la transacción, debe usar el método [`finishTransaction(_:)`](https://developer.apple.com/documentation/storekit/skpaymentqueue/1506003-finishtransaction) de **Apple**.

<Note>
  Puede encontrar más información sobre `finishTransaction(_:)` en la [documentación](https://developer.apple.com/documentation/storekit/in-app_purchase/original_api_for_in-app_purchase/finishing_a_transaction/) de **Apple**.
</Note>

## Consulte también

* [Cómo integrar correctamente una aplicación de Apple en Game Manager](/services/playfab/economy-monetization/economy-v2/marketplace/marketplace-integrations/apple)
* [Cómo integrar correctamente una aplicación de Google en Game Manager](/services/playfab/economy-monetization/economy-v2/marketplace/marketplace-integrations/google)
* [Configurar un lote de PlayFab que se pueda comprar en Google Play Store](/services/playfab/economy-monetization/economy-v2/marketplace/marketplace-redemption/google)
