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

# Introdução ao PlayFab Economy Legacy, Unity IAP e Android

> Conecte o Unity IAP e a Android Billing API aos itens de catálogo do PlayFab Legacy Economy para ter um fluxo funcional de compras no aplicativo em dispositivos Android.

# Introdução ao PlayFab (Legacy Economy), Unity IAP e Android

<Info>
  As APIs do Economy v1 estão em modo de manutenção e não receberão novos recursos, apenas correções de bugs. **As APIs v1 serão mantidas no futuro próximo.** Consulte a [Visão geral do Economy v2](/pt-BR/services/playfab/economy-monetization/economy-v2/overview) para saber mais sobre a próxima versão do PlayFab Economy!
</Info>

Este tutorial mostra como configurar compras no aplicativo (IAP) usando o PlayFab, o serviço Unity + IAP e a Android Billing API.

## Antes de começar

Configurar IAP pode ser trabalhoso, especialmente se você não tiver certeza de como os diferentes serviços devem se integrar e cooperar.

A imagem a seguir ilustra como a Android Billing API e o PlayFab funcionam juntos para fornecer uma experiência de IAP sólida para o seu cliente.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/android-billing-playfab-integration-timeline.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=2cfdfdc464c84f8d3596177fdec2fda2" alt="Android Billing - PlayFab - linha do tempo da integração" width="732" height="743" data-path="images/playfab/economy-monetization/economy/tutorials/android-billing-playfab-integration-timeline.png" />

Comece configurando seus **Product IDs** e **Prices** por meio do PlayMarket. Inicialmente, todos os produtos são *sem identidade*: são entidades digitais que seu jogador pode comprar, mas não têm significado para os jogadores do PlayFab.

Para tornar essas entidades úteis, precisamos espelhá-las nos catálogos de itens do PlayFab. Isso transforma as entidades sem identidade em pacotes, contêineres e itens individuais.

Cada um tem sua própria identidade exclusiva, com:

* **Títulos**
* **Descrições**
* **Marcas**
* **Tipos**
* **Imagens**
* **Comportamentos**

Todos eles são vinculados aos produtos do mercado por meio do compartilhamento de IDs.

A melhor maneira de acessar os itens de dinheiro real disponíveis para compra é usar [GetCatalogItems](xref:titleid.playfabapi.com.client.title-widedatamanagement.getcatalogitems) e [GetStoreItems](xref:titleid.playfabapi.com.client.title-widedatamanagement.getstoreitems). Esses são os mesmos métodos de API usados pelas lojas de moeda gratuita, portanto o processo deve ser familiar.

O ID do item é o vínculo entre o PlayFab e qualquer sistema de IAP externo. Por isso, passamos o ID do item para o serviço de IAP.

Nesse ponto, o processo de compra começa. O jogador interage com a interface de IAP e, se a compra for bem-sucedida, você obtém um recibo.

O PlayFab então consegue validar o recibo e registrar a compra, concedendo ao jogador do PlayFab os itens que ele acabou de comprar.

Essa é uma ideia geral de como a integração de IAP funciona, e o exemplo a seguir mostra a maior parte dela em ação.

## Configurar um aplicativo cliente

Esta seção mostra como configurar um aplicativo bem simples para testar IAP usando o PlayFab, o UnityIAP e a Android Billing API.

Pré-requisitos:

* Um projeto do Unity.
* O SDK do PlayFab importado e configurado para funcionar com seu título.

Nossa primeira etapa é configurar o UnityIAP:

1. Navegue até **Services**.
2. Verifique se a guia **Services** está selecionada.
3. Selecione seu perfil ou organização de **Unity Services**.
4. Selecione o botão **Create**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/setting-up-unity-iap-service.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=f7c99c6de22172f0ee63c7e46b98e02f" alt="Configurar o serviço UnityIAP" width="570" height="693" data-path="images/playfab/economy-monetization/economy/tutorials/setting-up-unity-iap-service.png" />

1. Em seguida, navegue até o serviço **In-App Purchasing (IAP)**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/navigate-to-unity-iap-service.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=b7ce741867d904c67f83f2c03e1b0801" alt="Navegar até o serviço UnityIAP" width="500" height="862" data-path="images/playfab/economy-monetization/economy/tutorials/navigate-to-unity-iap-service.png" />

1. Certifique-se de habilitar o **Service**, ativando a opção **Simplify cross-platform IAP**.

2. Em seguida, selecione o botão **Continue**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/enable-unity-iap-service.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=9e6945111551b8ea041fa3c8d5d0fb2d" alt="Habilitar o serviço UnityIAP" width="428" height="325" data-path="images/playfab/economy-monetization/economy/tutorials/enable-unity-iap-service.png" />

Uma página com uma lista de plug-ins será exibida.

1. Selecione o botão **Import**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/import-plugins-unity-iap.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=88e2a91848d145b28b1c1b00bcff035c" alt="Serviço UnityIAP - Importar plug-ins" width="444" height="525" data-path="images/playfab/economy-monetization/economy/tutorials/import-plugins-unity-iap.png" />

Continue o procedimento de instalação e importação do Unity até o ponto em que todos os plug-ins tenham sido importados.

1. Verifique se os plug-ins estão no lugar.
2. Em seguida, crie um novo script chamado **AndroidIAPExample.cs**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/create-new-script-unity-iap.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=1325b19d6b69f62509ffd7fba5f10287" alt="UnityIAP - Criar novo script" width="407" height="330" data-path="images/playfab/economy-monetization/economy/tutorials/create-new-script-unity-iap.png" />

`AndroidIAPExample.cs` conterá o código mostrado abaixo (consulte os comentários do código para obter mais explicações).

```csharp theme={null}
using PlayFab;
using PlayFab.ClientModels;
using PlayFab.Json;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Purchasing;

public class AndroidIAPExample : MonoBehaviour, IStoreListener {
    // Items list, configurable via inspector
    private List<CatalogItem> Catalog;

    // The Unity Purchasing system
    private static IStoreController m_StoreController;

    // Bootstrap the whole thing
    public void Start() {
        // Make PlayFab log in
        Login();
    }

    public void OnGUI() {
        // This line just scales the UI up for high-res devices
        // Comment it out if you find the UI too large.
        GUI.matrix = Matrix4x4.TRS(new Vector3(0, 0, 0), Quaternion.identity, new Vector3(3, 3, 3));

        // if we are not initialized, only draw a message
        if (!IsInitialized) {
            GUILayout.Label("Initializing IAP and logging in...");
            return;
        }

        // Draw menu to purchase items
        foreach (var item in Catalog) {
            if (GUILayout.Button("Buy " + item.DisplayName)) {
                // On button click buy a product
                BuyProductID(item.ItemId);
            }
        }
    }

    // This is invoked manually on Start to initiate login ops
    private void Login() {
        // Login with Android ID
        PlayFabClientAPI.LoginWithAndroidDeviceID(new LoginWithAndroidDeviceIDRequest() {
            CreateAccount = true,
            AndroidDeviceId = SystemInfo.deviceUniqueIdentifier
        }, result => {
            Debug.Log("Logged in");
            // Refresh available items
            RefreshIAPItems();
        }, error => Debug.LogError(error.GenerateErrorReport()));
    }

    private void RefreshIAPItems() {
        PlayFabClientAPI.GetCatalogItems(new GetCatalogItemsRequest(), result => {
            Catalog = result.Catalog;

            // Make UnityIAP initialize
            InitializePurchasing();
        }, error => Debug.LogError(error.GenerateErrorReport()));
    }

    // This is invoked manually on Start to initialize UnityIAP
    public void InitializePurchasing() {
        // If IAP is already initialized, return gently
        if (IsInitialized) return;

        // Create a builder for IAP service
        var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance(AppStore.GooglePlay));

        // Register each item from the catalog
        foreach (var item in Catalog) {
            builder.AddProduct(item.ItemId, ProductType.Consumable);
        }

        // Trigger IAP service initialization
        UnityPurchasing.Initialize(this, builder);
    }

    // We are initialized when StoreController and Extensions are set and we are logged in
    public bool IsInitialized {
        get {
            return m_StoreController != null && Catalog != null;
        }
    }

    // This is automatically invoked automatically when IAP service is initialized
    public void OnInitialized(IStoreController controller, IExtensionProvider extensions) {
        m_StoreController = controller;
    }

    // This is automatically invoked automatically when IAP service failed to initialized
    public void OnInitializeFailed(InitializationFailureReason error) {
        Debug.Log("OnInitializeFailed InitializationFailureReason:" + error);
    }

    // This is automatically invoked automatically when purchase failed
    public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason) {
        Debug.Log(string.Format("OnPurchaseFailed: FAIL. Product: '{0}', PurchaseFailureReason: {1}", product.definition.storeSpecificId, failureReason));
    }

    // This is invoked automatically when successful purchase is ready to be processed
    public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e) {
        // NOTE: this code does not account for purchases that were pending and are
        // delivered on application start.
        // Production code should account for such case:
        // More: https://docs.unity3d.com/ScriptReference/Purchasing.PurchaseProcessingResult.Pending.html

        if (!IsInitialized) {
            return PurchaseProcessingResult.Complete;
        }

        // Test edge case where product is unknown
        if (e.purchasedProduct == null) {
            Debug.LogWarning("Attempted to process purchase with unknown product. Ignoring");
            return PurchaseProcessingResult.Complete;
        }

        // Test edge case where purchase has no receipt
        if (string.IsNullOrEmpty(e.purchasedProduct.receipt)) {
            Debug.LogWarning("Attempted to process purchase with no receipt: ignoring");
            return PurchaseProcessingResult.Complete;
        }

        Debug.Log("Processing transaction: " + e.purchasedProduct.transactionID);

        // Deserialize receipt
        var googleReceipt = GooglePurchase.FromJson(e.purchasedProduct.receipt);

        // Invoke receipt validation
        // This will not only validate a receipt, but will also grant player corresponding items
        // only if receipt is valid.
        PlayFabClientAPI.ValidateGooglePlayPurchase(new ValidateGooglePlayPurchaseRequest() {
            // Pass in currency code in ISO format
            CurrencyCode = e.purchasedProduct.metadata.isoCurrencyCode,
            // Convert and set Purchase price
            PurchasePrice = (uint)(e.purchasedProduct.metadata.localizedPrice * 100),
            // Pass in the receipt
            ReceiptJson = googleReceipt.PayloadData.json,
            // Pass in the signature
            Signature = googleReceipt.PayloadData.signature
        }, result => Debug.Log("Validation successful!"),
           error => Debug.Log("Validation failed: " + error.GenerateErrorReport())
        );

        return PurchaseProcessingResult.Complete;
    }

    // This is invoked manually to initiate purchase
    void BuyProductID(string productId) {
        // If IAP service has not been initialized, fail hard
        if (!IsInitialized) throw new Exception("IAP Service is not initialized!");

        // Pass in the product id to initiate purchase
        m_StoreController.InitiatePurchase(productId);
    }
}

// The following classes are used to deserialize JSON results provided by IAP Service
// Please, note that JSON fields are case-sensitive and should remain fields to support Unity Deserialization via JsonUtilities
public class JsonData {
    // JSON Fields, ! Case-sensitive

    public string orderId;
    public string packageName;
    public string productId;
    public long purchaseTime;
    public int purchaseState;
    public string purchaseToken;
}

public class PayloadData {
    public JsonData JsonData;

    // JSON Fields, ! Case-sensitive
    public string signature;
    public string json;

    public static PayloadData FromJson(string json) {
        var payload = JsonUtility.FromJson<PayloadData>(json);
        payload.JsonData = JsonUtility.FromJson<JsonData>(payload.json);
        return payload;
    }
}

public class GooglePurchase {
    public PayloadData PayloadData;

    // JSON Fields, ! Case-sensitive
    public string Store;
    public string TransactionID;
    public string Payload;

    public static GooglePurchase FromJson(string json) {
        var purchase = JsonUtility.FromJson<GooglePurchase>(json);
        purchase.PayloadData = PayloadData.FromJson(purchase.Payload);
        return purchase;
    }
}
```

1. Crie um novo objeto **Game** chamado **Code**.
2. Adicione o componente `AndroidIAPExample` a ele (processo de 2 etapas).
3. Adicione o componente `AndroidIAPExample` a ele.
4. Certifique-se de **salvar** a cena.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/create-example-game-object-unity-iap.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=2d349dbb61f312f892c80c074b69aca2" alt="UnityIAP - Criar objeto de jogo de exemplo" width="1105" height="757" data-path="images/playfab/economy-monetization/economy/tutorials/create-example-game-object-unity-iap.png" />

Por fim, navegue até **Build Settings**.

1. Verifique se sua cena foi adicionada à área **Scenes In Build**.
2. Certifique-se de que a plataforma **Android** esteja selecionada.
3. Vá para a área **Player Settings**.
4. Atribua seu **Package Name**.

<Note>
  Certifique-se de criar seu *próprio* nome de pacote para evitar conflitos no **PlayMarket**.
</Note>

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/add-example-game-object-unity-iap.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=90dba71d209e79e589478a360708ac62" alt="UnityIAP - Adicionar objeto de jogo de exemplo" width="1089" height="749" data-path="images/playfab/economy-monetization/economy/tutorials/add-example-game-object-unity-iap.png" />

Por fim, compile o aplicativo normalmente e verifique se você tem um APK pronto e funcionando.

Ainda não temos como testá-lo. Primeiro, precisamos configurar o PlayMarket e o PlayFab, o que é descrito nas seções a seguir.

## Configurar um aplicativo do PlayMarket para IAP

Esta seção descreve os detalhes de como habilitar IAP para seu aplicativo do PlayMarket.

<Note>
  A configuração do aplicativo em si está além do escopo deste tutorial. Presumimos que você já *tenha* um aplicativo e que ele esteja configurado para publicar pelo menos versões Alpha.
</Note>

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/enable-playmarket-application.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=cc45018b03e6850df4a466243f0885e8" alt="Habilitar o aplicativo do PlayMarket" width="608" height="157" data-path="images/playfab/economy-monetization/economy/tutorials/enable-playmarket-application.png" />

Observações úteis:

* Chegar a esse ponto exigirá que você tenha um APK carregado. Use o APK que criamos na seção anterior.
* Quando for solicitado a carregar o APK, você poderá carregá-lo como um aplicativo Alpha ou Beta para habilitar a área restrita de IAP.
* A configuração da **Content Rating** incluirá perguntas sobre como o IAP está habilitado no aplicativo.
* O PlayMarket *não* permite que os editores usem ou testem IAP; portanto, escolha *outra* conta do Google para fins de teste e adicione-a como testadora do seu build Alpha/Beta.

Depois de publicar o build do aplicativo:

1. Selecione **In-app products** no menu.
   * Se for solicitada uma **Merchant Account**, vincule ou crie uma.
2. Selecione o botão **Add New Product**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/playmarket-add-new-product.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=7d022273b16a1da75d7dafd3ac61b90a" alt="PlayMarket - Adicionar novo produto" width="1151" height="640" data-path="images/playfab/economy-monetization/economy/tutorials/playmarket-add-new-product.png" />

1. Na tela mostrada abaixo, selecione **Managed Product**.
2. Dê a ele um **Product ID** descritivo.
3. Selecione **Continue**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/playmarket-add-product-id.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=170fa7878a3d4a7ea8c31226c6d35dd2" alt="PlayMarket - Adicionar ID do produto" width="639" height="482" data-path="images/playfab/economy-monetization/economy/tutorials/playmarket-add-product-id.png" />

O PlayMarket exige que você preencha um **Title (1)** e uma **Description (2)**. No entanto, eles não são muito úteis no nosso caso.

Obteremos os dados de **Data Item** exclusivamente do serviço PlayFab e só precisaremos que os IDs correspondam.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/playmarket-add-product-title-description.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=8b3113e75c75ab24ba03ebb6ef23f766" alt="PlayMarket - Adicionar título e descrição do produto" width="852" height="511" data-path="images/playfab/economy-monetization/economy/tutorials/playmarket-add-product-title-description.png" />

1. Role mais para baixo e selecione o botão **Add a price**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/playmarket-add-product-price.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=c7a46554f992a8240064bd6a917aa7b5" alt="PlayMarket - Adicionar preço do produto" width="850" height="378" data-path="images/playfab/economy-monetization/economy/tutorials/playmarket-add-product-price.png" />

1. Insira um preço válido (observe como o preço é convertido para cada país/região de forma independente).
2. Selecione o botão **Apply**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/playmarket-add-product-apply-local-prices.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=9ee22e8d365c6d6ad29292f09498eb50" alt="PlayMarket - Aplicar preços locais do produto" width="897" height="779" data-path="images/playfab/economy-monetization/economy/tutorials/playmarket-add-product-apply-local-prices.png" />

1. Por fim, role de volta para o topo da tela e altere o status do item para **Active**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/playmarket-make-product-active.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=f0c6ddef32d4675defcf9a9b4675ec93" alt="PlayMarket - Ativar produto" width="671" height="417" data-path="images/playfab/economy-monetization/economy/tutorials/playmarket-make-product-active.png" />

Embora isso conclua a configuração do aplicativo, precisamos de mais alguns ajustes. Primeiro, vamos salvar a **Licensing Key** (ela será útil para vincular o PlayFab ao PlayMarket.

1. Navegue até **Services & APIs** no menu.
2. Em seguida, localize e salve a versão **Base64** da **Key**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/playmarket-save-product-licensing-key.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=cfae62d21bab00b296eb256eb28da54c" alt="PlayMarket - Salvar chave de licenciamento do produto" width="717" height="350" data-path="images/playfab/economy-monetization/economy/tutorials/playmarket-save-product-licensing-key.png" />

A próxima etapa é habilitar o teste de IAP. Embora a área restrita seja habilitada automaticamente para builds Alpha e Beta, precisamos configurar as contas autorizadas a testar o aplicativo:

1. Navegue até **Home**.
2. Localize e selecione **Account details** no menu à esquerda.
3. Localize a área **License Testing**.
4. Verifique se suas **Test Accounts** estão na lista.
5. Certifique-se de que a **License Test Response** esteja definida como **RESPOND\_NORMALLY**.

Não se esqueça de aplicar as configurações!

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/playmarket-enable-iap-testing.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=d6bbc6076951455aa67d1e800ee3b277" alt="PlayMarket - Habilitar teste de IAP" width="562" height="657" data-path="images/playfab/economy-monetization/economy/tutorials/playmarket-enable-iap-testing.png" />

O lado do Play Market da integração deve estar configurado neste ponto.

## Configurar um título do PlayFab

Nossa última etapa é configurar um título do PlayFab para refletir nossos produtos e integrá-lo à Google Billing API.

1. Selecione **Add-ons**.
2. Em seguida, selecione o complemento **Google**.

<img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-html5/open-google-add-on.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=1b0af874b0d7e46cf30337e322f0004a" alt="PlayFab - Abrir o complemento Google" width="1589" height="1043" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-html5/open-google-add-on.png" />

1. Preencha seu **Package ID**.
2. Preencha a **Google App License Key** que você obteve na seção anterior.
3. Confirme suas alterações selecionando o botão **Install Google**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/playfab-install-google-add-on.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=dcb2067bdecc2bae9c727cd3390e7b6a" alt="PlayFab - Instalar o complemento Google" width="885" height="746" data-path="images/playfab/economy-monetization/economy/tutorials/playfab-install-google-add-on.png" />

Nossa próxima etapa é refletir nosso item Golden Sword no PlayFab:

1. Selecione **Economy**.
2. Verifique se a subguia **Catalogs** está selecionada.
3. Selecione **New Catalog**.
4. Forneça um nome para **Catalog version**.
5. Selecione **Save Catalog**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/playfab-save-catalog.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=3e71d9d8a32668186f14b8eb11f887d9" alt="PlayFab - Salvar catálogo" width="1280" height="2000" data-path="images/playfab/economy-monetization/economy/tutorials/playfab-save-catalog.png" />

Se o catálogo não tiver itens, ele será removido *automaticamente*. É por isso que qualquer novo catálogo vem com um item pré-adicionado chamado **One**.

*Sempre* podemos criar um item *novo*, mas, para manter tudo organizado, vamos modificar o item **One** existente.

1. Selecione o item para editar o **Item ID** de modo que corresponda ao ID no PlayMarket.
2. Agora, edite o **Display name** e adicione uma **Description**.

<Note>
  Lembre-se de que esses dados *não têm nada a ver* com o **Play Market Item Title** e a **Description**; eles são *totalmente* independentes.
</Note>

1. Atribua um **Price** ao seu **Item**.
2. Selecione **Save Item** para confirmar suas alterações.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/playfab-edit-save-catalog-item.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=9cdea8a38dd47fb818fb148afa566980" alt="PlayFab - Editar e salvar item de catálogo" width="1280" height="1100" data-path="images/playfab/economy-monetization/economy/tutorials/playfab-edit-save-catalog-item.png" />

<Note>
  Neste tutorial, IAP se refere principalmente a compras com dinheiro real. É por isso que usamos **RM**, a moeda especial de dinheiro real (Real Money). O valor no PlayFab é definido em centavos de dólar americano.
</Note>

1. Observe seu item na lista **Item ID**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/playfab-catalog-items-list.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=9ce9b9a0a1ac7c11f1b99b7ae9a54f16" alt="PlayFab - Lista de itens de catálogo" width="492" height="171" data-path="images/playfab/economy-monetization/economy/tutorials/playfab-catalog-items-list.png" />

Isso conclui a configuração do seu título do PlayFab.

## Testes

Para fins de teste, baixe o aplicativo usando a versão Alpha/Beta.

* Certifique-se de usar uma conta de teste e um dispositivo Android real.
* Ao iniciar o aplicativo, você deverá ver o IAP inicializado e *um botão* representando seu item.
* Selecione esse botão.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/test-app-buy-golden-sword-button.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=27aced0ef41267149932357510f0cb5b" alt="Aplicativo de teste - Botão Buy Golden Sword" width="540" height="398" data-path="images/playfab/economy-monetization/economy/tutorials/test-app-buy-golden-sword-button.png" />

A compra por IAP será iniciada. Siga as instruções do Google Play até o ponto em que a compra seja bem-sucedida.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/test-app-google-play-payment-successful.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=fb0a7c99260ffae0364381f5bd9fb60a" alt="Aplicativo de teste - Google Play - pagamento bem-sucedido" width="428" height="290" data-path="images/playfab/economy-monetization/economy/tutorials/test-app-google-play-payment-successful.png" />

Por fim, navegue até seu título no painel do **Game Manager** do PlayFab e localize **New Events**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/game-manager-dashboard-new-events.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=35aa1bb8b03ea84218165af67220a620" alt="Painel do Game Manager - novos eventos" width="499" height="314" data-path="images/playfab/economy-monetization/economy/tutorials/game-manager-dashboard-new-events.png" />

Isso significa que a compra foi fornecida, validada e encaminhada com sucesso para o ecossistema do PlayFab.

Neste ponto, você integrou com sucesso o UnityIAP e a Android Billing API ao seu aplicativo do PlayFab.


## Related topics

- [Introdução ao Economy v2, Unity IAP e Android](/pt-BR/services/playfab/economy-monetization/economy-v2/tutorials/getting-started-with-unity-and-android.md)
- [Introdução ao Multiplayer para Android](/pt-BR/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/android-specific-requirements.md)
- [Introdução ao PlayFab Multiplayer para Unity](/pt-BR/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/multiplayer-unity-sdk-getting-started.md)
- [Início rápido do Economy (Legado)](/pt-BR/services/playfab/economy-monetization/economy/quickstart.md)
- [Introdução ao Android](/pt-BR/services/playfab/multiplayer/networking/android-specific-requirements.md)
