Habilitar compras de produtos no aplicativo

Seja seu app gratuito ou não, você pode vender conteúdo, outros apps ou uma nova funcionalidade do app (como o desbloqueio do próximo nível de um jogo) no próprio app. Consulte a seguir como habilitar esses produtos em seu aplicativo.

Importante

Este artigo demonstra como usar os membros do namespace Windows.ApplicationModel.Store para habilitar compras de produto no aplicativo. Esse namespace não está sendo atualizado com os novos recursos e recomendamos que você use o namespace Windows.Services.Store em vez disso. O namespace Windows.Services.Store dá suporte aos tipos de complemento mais recentes, como complementos e assinaturas consumíveis gerenciados pela Store, e foi projetado para ser compatível com os tipos futuros de produtos e recursos compatíveis com o Partner Center e a Store. O namespace Windows.Services.Store foi introduzido no Windows 10, versão 1607 e pode ser usada somente em projetos para Windows 10 Anniversary Edition (10.0; Compilação 14393) ou uma versão posterior no Visual Studio. Para obter informações sobre como habilitar as compras de produtos no aplicativo usando o namespace Windows.Services.Store, consulte este artigo.

Observação

Os produtos no aplicativo não podem ser oferecidos em uma versão de avaliação do aplicativo. Os clientes que usam uma versão de avaliação do aplicativo só poderão comprar um produto no aplicativo se comprarem a versão completa do seu aplicativo.

Pré-requisitos

  • Um aplicativo do Windows no qual devem ser adicionados os recursos que os clientes podem comprar.
  • Ao codificar e testar novos produtos no aplicativo pela primeira vez, você deve usar o objeto CurrentAppSimulator em vez do objeto CurrentApp. Dessa forma, é possível verificar a lógica do licenciamento usando chamadas simuladas ao servidor de licenças, em vez de chamar o servidor ativo. Para fazer isso, você precisa personalizar o arquivo chamado WindowsStoreProxy.xml em %userprofile%\AppData\local\packages\<package name>\LocalState\Microsoft\Windows Store\ApiData. O simulador do Microsoft Visual Studio cria esse arquivo quando você executa seu app pela primeira vez, mas também é possível carregar um arquivo personalizado em tempo de execução. Para obter mais informações, consulte Usando o arquivo WindowsStoreProxy.xml com CurrentAppSimulator.
  • Este tópico também faz referência a exemplos de código fornecidos no Exemplo da Loja. Este exemplo é uma ótima maneira de obter experiência prática com as diferentes opções de monetização fornecidas para os aplicativos UWP (Plataforma Universal do Windows).

Etapa 1: Inicie as informações de licença do aplicativo

Quando seu app estiver em processo de inicialização, obtenha o objeto LicenseInformation para seu app inicializando CurrentApp ou CurrentAppSimulator para habilitar compras de um produto no aplicativo.

void InitializeApp()
{
    // Some app initialization code...

    // Initialize the license info for use in the app that is uploaded to the Store.
    // Uncomment the following line in the release version of your app.
    //   licenseInformation = CurrentApp.LicenseInformation;

    // Initialize the license info for testing.
    // Comment the following line in the release version of your app.
    licenseInformation = CurrentAppSimulator.LicenseInformation;

    // Other app initialization code...
}

Etapa 2: Adicione as ofertas de produto no aplicativo ao seu app

Para cada recurso a ser disponibilizado por meio de uma transação de produto no aplicativo, crie uma oferta e adicione-a ao seu app.

Importante

Você deve adicionar todos os produtos no aplicativo que deseja apresentar para seus clientes antes de enviá-lo para a Loja. Para adicionar novos produtos no aplicativo depois, você deve atualizar o aplicativo e reenviar uma nova versão.

  1. Crie um token de oferta no aplicativo

    Você pode identificar cada produto no seu aplicativo por um token. Esse token é uma cadeia de caracteres que você define e usa no aplicativo e na Loja para identificar um produto no aplicativo específico. Dê (ao aplicativo) um nome exclusivo e significativo, para poder identificar o recurso correto que ele representa durante a codificação. Este são alguns exemplos de nomes:

    • "SpaceMissionLevel4"
    • "ContosoCloudSave"
    • "RainbowThemePack"

Observação

O token de oferta no aplicativo que você usa em seu código deve corresponder ao valor da ID do produto especificado quando você define o complemento correspondente para seu aplicativo no Partner Center.

  1. Codifique o recurso em um bloco de condições

    Coloque o código de cada recurso associado a um produto no aplicativo em um bloco de condições que testa se o cliente tem uma licença para usar esse recurso.

    Veja a seguir um exemplo que mostra como é possível codificar um recurso de produto chamado featureName em um bloco condicional específico da licença. A cadeia de caracteres featureName é o token que identifica esse produto de forma exclusiva no app, e também é usada para identificá-lo na Loja.

    if (licenseInformation.ProductLicenses["featureName"].IsActive)
    {
        // the customer can access this feature
    }
    else
    {
        // the customer can' t access this feature
    }
    
  2. Adicione a interface do usuário de compra para este recurso

    Seu app também deve permitir que os clientes comprem o produto ou o recurso proposto para produto no aplicativo. O jeito de comprá-los é diferente da maneira como os clientes compraram o aplicativo completo na Loja.

    Veja aqui como testar se o cliente já possui um produto no aplicativo e, se não tiver, se ele pode visualizar a caixa de diálogo para fazer a compra. Substitua o comentário "mostrar a caixa de diálogo de compra" pelo código personalizado da caixa de diálogo de compra (como uma página por um botão amigável "Compre este aplicativo!").

    async void BuyFeature()
    {
        if (!licenseInformation.ProductLicenses["featureName"].IsActive)
        {
            try
            {
                // The customer doesn't own this feature, so
                // show the purchase dialog.
                await CurrentAppSimulator.RequestProductPurchaseAsync("featureName", false);
    
                //Check the license state to determine if the in-app purchase was successful.
            }
            catch (Exception)
            {
                // The in-app purchase was not completed because
                // an error occurred.
            }
        }
        else
        {
            // The customer already owns this feature.
        }
    }
    

Etapa 3: Mude o código de teste para as chamadas finais

Esta etapa é fácil: basta mudar todas as referências a CurrentAppSimulator para CurrentApp no código do app. Não é mais preciso fornecer o arquivo WindowsStoreProxy.xml, então, remova-o do caminho do aplicativo (embora você possa salvá-lo para referência ao configurar a oferta no aplicativo, na próxima etapa).

Etapa 4: Configurar o produto no aplicativo na Loja

No Partner Center, navegue até seu aplicativo e crie um complemento que corresponda à sua oferta de produto no aplicativo. Defina a ID do produto, o tipo, o preço e outras propriedades para o complemento. Lembre-se de configurá-lo com a mesma configuração que você definiu no WindowsStoreProxy.xml durante o teste.

Observação

O token de oferta no aplicativo que você usa em seu código deve corresponder ao valor da ID do produto especificado para o complemento correspondente no Partner Center.

Comentários

Se você tiver interesse em fornecer aos seus clientes opções de compra de produtos no aplicativo (itens que poderão ser comprados, usados e comprados novamente se desejado), vá para o tópico Habilitar compras de produtos consumíveis no aplicativo.

Se você precisar usar recibos para verificar se o usuário fez uma compra no aplicativo, confira Usar recibos para verificar compras de produto.