1. Introdução
Neste codelab, você vai se concentrar em criar um produto único, definir a opção de compra, definir preços específicos para cada região e testar o fluxo de compra dos produtos únicos.
Público
Este codelab é destinado a desenvolvedores de apps Android que querem usar o Play Console para gerenciar o catálogo de produtos únicos.
O que você vai aprender…
- O modelo de objeto de produto único.
- Como navegar e usar o Google Play Console para gerenciar seu catálogo de produtos únicos.
- Como traduzir detalhes de produtos únicos para vários idiomas sem custo financeiro.
- Como configurar a disponibilidade e os preços regionais para produtos únicos.
- Como usar as APIs da Biblioteca Play Faturamento para consultar detalhes de produtos únicos.
- Como testar produtos únicos usando o Play Billing Lab.
O que é necessário…
- Acesso ao Google Play Console com uma conta de desenvolvedor. Se você não tiver uma conta de desenvolvedor, crie uma.
- Um app de exemplo para este codelab, que pode ser baixado do GitHub.
- Android Studio.
2. Estreia de produto único
O modelo de objeto de produto único oferece mais flexibilidade na forma de vender produtos e reduz a complexidade do gerenciamento deles. O modelo de objeto separa o que está sendo vendido de como a venda é feita, permitindo que o mesmo direito de acesso tenha várias faixas de preço e diferentes maneiras de ser comercializado para os usuários. O modelo de objeto tem três níveis de hierarquia:
- Produto único: um objeto de produto define o que o usuário está comprando.
- Opção de compra: define como o direito de acesso é concedido ao usuário, o preço e onde (região) o produto vai estar disponível. Um único produto pode ter várias opções de compra, que podem ter preços diferentes em cada região.
- Oferta: as ofertas podem afetar o preço da opção de compra a que estão vinculadas e ser usadas para modelar descontos ou uma pré-venda. Uma opção de compra pode ter várias ofertas.
O diagrama a seguir mostra o modelo de objeto de produto único.
Figura 1: modelo de objeto único.
Para mais informações, consulte a visão geral dos produtos únicos.
3. Criar o app de amostra
Este codelab usa um app Android de exemplo para mostrar como gerenciar produtos únicos. O app de exemplo foi projetado para ser um app Android totalmente funcional com o código-fonte completo que mostra os seguintes aspectos:
- Integrar o app com o PBL
- Busca de produtos únicos e das opções de compra relacionadas
- Executar fluxos de compra com preços regionais
O vídeo de demonstração a seguir mostra como o app de exemplo vai aparecer e se comportar depois de implantado e executado.
Se você já conhece os produtos únicos e a Biblioteca Play Faturamento (PBL), faça o download do app de exemplo e teste.
Pré-requisitos
Antes de criar e implantar o app de exemplo, faça o seguinte:
- Crie uma conta de desenvolvedor do Google Play Console. Se você já tiver uma conta de desenvolvedor, pule esta etapa.
- Crie um app no Play Console. Ao criar um app, você pode especificar qualquer nome para o app de exemplo.
- Instale o Android Studio.
Criar
O objetivo desta etapa de build é gerar um arquivo de Android App Bundle assinado do app de exemplo.
Para gerar o pacote de apps Android, siga estas etapas:
- Faça o download do app de exemplo no GitHub.
- Crie o app de exemplo. Antes de criar, mude o nome do pacote do app de exemplo e crie. Se você tiver pacotes de outros apps no Play Console, verifique se o nome do pacote fornecido para o app de exemplo é exclusivo.
Observação: a criação do app de exemplo gera apenas um arquivo APK que pode ser usado para testes locais. No entanto, a execução do app não busca produtos e preços porque eles não foram configurados no Play Console. - Gere um Android App Bundle assinado.
A próxima etapa é fazer upload do pacote de apps Android para o Google Play Console.
4. Criar um produto único no Play Console
Para criar produtos únicos no Google Play Console, você precisa ter um app no console. Crie um app no Play Console e faça upload do pacote de app assinado criado anteriormente.
Criar um app
Para criar um app:
- Faça login no Google Play Console usando sua conta de desenvolvedor.
- Clique em Criar app. Isso abre a página Criar app.
- Insira um nome de app, selecione o idioma padrão e outros detalhes relacionados ao app.
- Clique em Criar app. Isso cria um app no Google Play Console.
Agora você pode fazer upload do pacote de app assinado do app de exemplo.
Fazer upload do pacote de apps assinado
- Faça upload do pacote de app assinado para a faixa de teste interno do Google Play Console. Só depois do upload é possível configurar os recursos relacionados à monetização no Play Console.
- Clique em Testar e lançar > Teste > Versão interna > Criar versão.
- Insira um nome para a versão e faça upload do arquivo APK assinado.
- Clique em Próxima e em Salvar e publicar.
Agora você pode criar seus produtos únicos.
Criar um produto de aquisição única
Para criar um produto único:
- No Google Play Console, no menu de navegação à esquerda, acesse Monetizar com o Google Play > Produtos > Produtos únicos.
- Clique em Criar um produto único.
- Insira os seguintes detalhes do produto:
- ID do produto:insira um ID exclusivo. Por exemplo,
trending_movie_1. - (Opcional) Tags:adicione tags relevantes.
- Nome:insira um nome para o produto. Por exemplo,
Product Movie. - Descrição:insira uma descrição do produto. Por exemplo,
Product Description.
Por padrão, o nome e a descrição do produto estão no idioma inglês (Estados Unidos) – en-US. Você também pode inserir manualmente o nome e a descrição em outros idiomas. Para inserir os detalhes, clique em Gerenciar traduções, selecione os idiomas em que você quer inserir o texto traduzido e clique em Aplicar. A imagem a seguir mostra a opção Gerenciar traduções:
Figura 2: Gerenciar tradução.
Os idiomas selecionados vão aparecer no menu suspenso de idiomas. Selecione cada idioma e insira o nome e a descrição correspondentes. Você também pode traduzir o nome e a descrição do produto automaticamente sem custo financeiro. Para mais informações, consulte a seção Traduzir produtos únicos neste codelab.
Observação: para fins deste codelab, você pode pular a configuração do campo Ícone e da seção Tributos, conformidade e programas. - ID do produto:insira um ID exclusivo. Por exemplo,
- Clique em Próxima.
- Adicione uma opção de compra e configure a disponibilidade regional dela. Um produto único precisa de pelo menos uma opção de compra, que define como o direito de acesso é concedido, o preço e a disponibilidade regional. Para este codelab, vamos adicionar a opção padrão Comprar para o produto.
Na seção Opção de compra, insira os seguintes detalhes:- ID da opção de compra:insira um ID exclusivo. Por exemplo,
buy-movie. - Tipo de compra:selecione Comprar.
- (Opcional) Tags:adicione tags específicas para essa opção de compra.
- (Opcional) Clique em Opções avançadas para configurar as opções avançadas. Para os fins deste codelab, ignore a configuração das opções avançadas.
- ID da opção de compra:insira um ID exclusivo. Por exemplo,
- Em seguida, configure a disponibilidade e o preço regional para a opção de compra. Na disponibilidade regional, especifique as regiões em que seu produto está disponível, incluindo aquelas em que o app ainda não foi publicado. Por padrão, uma opção de compra fica disponível em todas as regiões.
Na seção Disponibilidade e preço, clique em Editar disponibilidade e acesso > Definir como indisponível. Todas as regiões são definidas como Disponível por padrão.- Selecione todos os países, exceto
France,SpaineUnited States, e clique em Definir como indisponível. - No menu suspenso Todas as regiões, selecione Países e regiões disponíveis. Isso mostra apenas os países que você selecionou na etapa anterior.
- Para cada um dos países disponíveis, clique no ícone de edição na coluna Preço. Uma caixa de diálogo para editar o preço vai aparecer. Insira e salve os seguintes preços:
- Para
France, insira 10 EUR - Para
Spain, insira 8 EUR - Para
United States, digite USD 13
- Para
- Selecione todos os países, exceto
- Clique em Ativar. Isso disponibiliza seu produto único com a opção de compra Comprar.
Observação: a moeda do preço regional fica visível com base na configuração de país do usuário no Google Play. Por exemplo, se o país do Google Play do usuário estiver definido como França, o preço do produto único será exibido em euros.
Vídeo sobre a criação de produtos únicos
O vídeo a seguir mostra as etapas de criação única de produtos descritas anteriormente.
Adicionar uma opção de compra "Alugar"
Agora, adicione uma opção de compra de aluguel ao produto único criado anteriormente.
- No Google Play Console, no menu de navegação à esquerda, acesse Monetizar com o Google Play > Produtos > Produtos únicos.
- Clique na seta para a direita do produto com o ID
trending_movie_1que você criou na etapa anterior. - Clique em Adicionar opção de compra.
- Na seção Opção de compra, insira os seguintes detalhes:
- ID da opção de compra:insira
rent-movie. - Tipo de compra:selecione Alugar.
- Período de locação:selecione 48 horas.
- Período de início da locação:selecione 24 horas.
- (Opcional) Tags:adicione tags específicas para essa opção de compra.
- (Opcional) Clique em Opções avançadas para configurar as opções avançadas. Para os fins deste codelab, ignore a configuração das opções avançadas.
- ID da opção de compra:insira
- Em seguida, configure a disponibilidade regional para a opção de compra de locação, assim como na opção de compra. Consulte as etapas 6 e 7 na seção anterior. Ao definir preços regionais, defina um preço diferente para aluguéis. Por exemplo:
France: EUR 5Spain: EUR 4United States: US$ 7.
5. Traduzir detalhes de produtos únicos
Você pode traduzir o nome e a descrição do produto sem custo extra usando o recurso de tradução automática disponível no Google Play Console.
Para traduzir o título e a descrição, faça o seguinte:
- No Google Play Console, no menu de navegação à esquerda, acesse Aumentar a base de usuários > Traduções > Produtos na loja e no app.
- Clique em Criar pedido.
- Selecione a opção Tradução automática sem custo financeiro e clique em Próxima.
- Em Traduzir para, selecione Francês - fr-FR e Espanhol - es-ES e clique em Próxima.
- Selecione Produtos únicos e assinaturas e clique em Traduzir e ver traduções. Isso mostra um banner de exoneração de responsabilidade. Confirme a exoneração de responsabilidade.
- Agora você vai ver a lista de idiomas traduzidos. Clique em Analisar e aplicar para um idioma. Revise o texto e clique em Aplicar todas as traduções. Repita essa etapa para todos os idiomas que você escolheu traduzir.
Depois da tradução, você pode editar o texto no Play Console. Para editar o texto traduzido:
- Abra a página Produtos únicos > [seu produto único] > Editar produto único > Editar detalhes do produto único.
- Selecione o idioma necessário no menu suspenso. Isso mostra o texto no idioma selecionado. A imagem a seguir mostra a seleção de um idioma para editar o texto traduzido:
Figura 3: editar texto traduzido. - Edite o texto conforme necessário e clique em Salvar alterações.
O texto traduzido fica visível para o usuário com base nas preferências de idioma do smartphone. Por exemplo, se o idioma do smartphone do usuário estiver definido como França, o título e a descrição do produto único serão exibidos em francês. A imagem de exemplo a seguir mostra como e onde o texto traduzido vai aparecer em diferentes idiomas.
Figura 4: texto traduzido no seu app.
Vídeo sobre a configuração de tradução
O vídeo a seguir mostra as etapas de configuração de tradução descritas anteriormente.
6. Integrar com o PBL
Para integrar seu app à Biblioteca Play Faturamento (PBL), siga estas etapas:
- Adicione a dependência da Biblioteca Google Play Faturamento ao app de exemplo.
dependencies { val billing_version = "8.0.0" implementation("com.android.billingclient:billing-ktx:$billing_version") } - Inicialize o BillingClient. O BillingClient é o SDK do cliente que reside no seu app e se comunica com a Biblioteca Google Play Faturamento. O snippet de código a seguir mostra como inicializar o cliente de faturamento.
private BillingClient createBillingClient() { return BillingClient.newBuilder(activity) .enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()) // For one-time products, add a listener to process and acknowledge the purchases. This will notify // Google the purchase was processed. // For client-only apps, use billingClient.acknowledgePurchase(). // If you have a secure backend, you must acknowledge purchases on your server using the // server-side API. // See https://developer.android.com/google/play/billing/security#acknowledge // In this sample snippet purchases aren't processed. You must // implement your business logic to process and acknowledge the purchases. .setListener((billingResult, purchases) -> {}) .enableAutoServiceReconnection() .build(); } - Conecte-se ao Google Play.O snippet de código a seguir mostra como fazer isso.
/** * Starts the billing connection with Google Play. This method should be called exactly once * before any other methods in this class. * * @param productList The list of products to query for after the connection is established. */ public void startBillingConnection(List<Product> productList) { billingClient.startConnection( new BillingClientStateListener() { @Override public void onBillingSetupFinished(BillingResult billingResult) { if (billingResult.getResponseCode() == BillingResponseCode.OK) { Log.d(TAG, "Billing Client Connection Successful"); queryProductDetails(productList); } else { Log.e(TAG, "Billing Client Connection Failed: " + billingResult.getDebugMessage()); listener.onBillingSetupFailed(billingResult); // Propagate the error to the listener to show a message to the user. } } @Override public void onBillingServiceDisconnected() { Log.e(TAG, "Billing Client Connection Lost"); listener.onBillingError("Billing Connection Lost"); } }); } - Extraia os detalhes do produto único.Depois de integrar o app com a PBL, você precisa extrair os detalhes do produto único para o app. O snippet de código a seguir mostra como fazer isso.
Ao buscar o produto único (private void queryProductDetails(List<Product> productList) { QueryProductDetailsParams queryProductDetailsParams = QueryProductDetailsParams.newBuilder().setProductList(productList).build(); billingClient.queryProductDetailsAsync( queryProductDetailsParams, new ProductDetailsResponseListener() { @Override public void onProductDetailsResponse( BillingResult billingResult, QueryProductDetailsResult productDetailsResponse) { if (billingResult.getResponseCode() == BillingResponseCode.OK) { List<ProductDetails> productDetailsList = productDetailsResponse.getProductDetailsList(); listener.onProductDetailsResponse(productDetailsList); } else { Log.e(TAG, "QueryProductDetailsAsync Failed: " + billingResult.getDebugMessage()); listener.onBillingError("Query Products Failed: " + billingResult.getResponseCode()); } } }); }trending_movie_1neste exemplo) emProductDetails, você recebe uma resposta semelhante a esta: As opções de compra e aluguel estão disponíveis no{ "productId": "trending_movie_1", "type": "inapp", "title": "Purrfect Mayhem: The Rewind Protocol (Movies All Day | Play Samples)", "name": "Purrfect Mayhem: The Rewind Protocol", "description": "Dr. Arid Thorne and a smart tiger named Yolo find a mysterious tape. It's a \"Rewind Protocol\" to fix time. A shadowy group, the Clockinator, hunts them to seize the tape's power.", "skuDetailsToken": "<---skuDetailsToken--->", "oneTimePurchaseOfferDetails": {}, "oneTimePurchaseOfferDetailsList": [ { "priceAmountMicros": 13000000, "priceCurrencyCode": "USD", "formattedPrice": "$13.00", "offerIdToken": "<---buy offerIdToken --->", "purchaseOptionId": "buy-option", "offerTags": [ "adventure", "mystery" ] }, { "priceAmountMicros": 7000000, "priceCurrencyCode": "USD", "formattedPrice": "$7.00", "offerIdToken": "<---rent offerIdToken--->", "purchaseOptionId": "rent-option", "offerTags": [ "adventure", "mystery" ], "rentalDetails": { "rentalPeriod": "P30D", "rentalExpirationPeriod": "PT24H" } } ] }oneTimePurchaseOfferDetailsList. Essa lista tem duas opções de compra (buy-option e rent-option) que foram configuradas no Play Console. É possível identificar cada opção de compra de forma exclusiva pelo offerIdToken. - Extraia os tokens das ofertas de aluguel e compra. Você precisa dos tokens de oferta para iniciar o fluxo de faturamento na etapa 6.
@Override public void onProductDetailsResponse(List<ProductDetails> productDetailsList) { if (productDetailsList != null && !productDetailsList.isEmpty()) { // Iterate over all details of the queried product in step 4. for (ProductDetails productDetails : productDetailsList) { // Get the list of all the offers associated with the product. List<ProductDetails.OneTimePurchaseOfferDetails> offerDetailsList = productDetails.getOneTimePurchaseOfferDetailsList(); // Iterate over the offer details for (ProductDetails.OneTimePurchaseOfferDetails offerDetails : offerDetailsList) { // For a Rent purchase option, the // offerDetails.getRentalDetails() method returns // the rent information. If this information is present, // the offer corresponds to a Rent purchsae option. if (offerDetails.getRentalDetails() != null) { rentFormattedPrice = offerDetails.getFormattedPrice(); // Get the offerIdToken for the Rent purchase option rentOfferToken = offerDetails.getOfferToken(); rentMovieTags = offerDetails.getOfferTags(); } // If the offerDetails.getRentalDetails() returns // null, the offer corresponds to a Buy purchsae option. else { buyFormattedPrice = offerDetails.getFormattedPrice(); // Get the offerIdToken for the Buy purchase option buyOfferToken = offerDetails.getOfferToken(); buyMovieTags = offerDetails.getOfferTags(); } } updateUIButtons(); return; } } else { Log.e(TAG, "No product details found for " + productId); } } - Inicie o fluxo de faturamento.
/** * Launches the billing flow for the product with the given offer token. * * @param activity The activity instance from which the billing flow will be launched. * @param productDetails The product details of the product to purchase. * @param offerToken The offer token of the product to purchase. * @return The result of the billing flow. */ public void launchPurchase(Activity activity, ProductDetails productDetails, String offerToken) { ImmutableList<BillingFlowParams.ProductDetailsParams> productDetailsParamsList = ImmutableList.of( BillingFlowParams.ProductDetailsParams.newBuilder() .setProductDetails(productDetails) .setOfferToken(offerToken) .build()); BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList(productDetailsParamsList) .build(); billingClient.launchBillingFlow(activity, billingFlowParams); }
Dica: você também pode configurar notificações do desenvolvedor em tempo real (RTDN) para implementar campanhas de recuperação e outras estratégias de gerenciamento do ciclo de vida de compras. Para entender como configurar as RTDNs e processar notificações com rastreamento e direitos precisos, recomendamos que você faça o codelab Maximize sua integração do Google Play Faturamento.
7. Testar opções de compra
Antes de disponibilizar os produtos únicos no app ativo, teste a integração da PBL usando testadores de licença e o Play Billing Lab.
Você vai aprender a testar a localização e a disponibilidade de preços em que o app está disponível apenas em algumas regiões com um preço diferente para cada uma delas.
Pré-requisitos
- Adicione um testador de licença no Google Play Console e ative o teste interno.
- Baixe e instale o app Google Play Billing Lab no smartphone ou emulador.
- Execute o app de exemplo que você criou antes no smartphone ou emulador.
Testar os preços regionais das opções de compra
Para testar os preços regionais das opções de compra, faça o seguinte:
- Abra o app Play Billing Lab e faça login como testador de licença.
- Em Configurações de configuração, clique em Editar, selecione o país
Francee clique em Aplicar. Aqui, selecionamos o país do Google Play, que determina a moeda mostrada no app. - Feche e reabra o app de exemplo. Agora ele vai mostrar a moeda de compra e aluguel para
Franceem euros.
Para testar em um país diferente, selecione Spain na etapa 2 e siga a etapa 3.
Vídeo de teste do Play Billing Lab
O vídeo a seguir mostra as etapas de teste de preços regionais usando o app de exemplo.
8. Próximas etapas
- Saiba como maximizar a integração do Play Faturamento.
- Saiba como analisar as desistências de compra de produtos.
- Não se esqueça de seguir as práticas recomendadas para verificar e processar compras no seu back-end seguro assim que os usuários começarem a comprar esses produtos.
Documentos de referência
9. Parabéns!
Parabéns! Você navegou com sucesso pelo Google Play Console para criar um novo produto único, configurou uma opção de compra e testou o fluxo de compra usando o laboratório do Google Play Faturamento. Agora você tem um entendimento mais profundo do catálogo de produtos flexível do Google Play para compras únicas.
Pesquisa
Seu feedback sobre este codelab é muito importante. Reserve alguns minutos para responder à nossa pesquisa.