Os produtos de compra única têm um ciclo de vida mais simples do que os por assinatura, mas ainda há vários estados e eventos de transição que o back-end precisa para processar corretamente.
Novas compras de produtos únicos
Depois que o usuário conclui o fluxo de faturamento, o app pode acessar informações sobre a nova compra de uma destas maneiras:
- Configure
Real-time developer notificationse ative a opçãoGet all notifications for subscriptions and one-time productspara receber atualizações sobre o status das compras. - Implemente a
PurchasesUpdatedListenerinterface doBillingClientpara receber atualizações de compra automaticamente. - Chame o
BillingClient.queryPurchasesAsync()método.
Depois de receber a nova compra, use o
getPurchaseState método ou
purchases.productsv2.getproductpurchasev2 in Play Developer API
para determinar o estado de pagamento da nova compra.
Notificações do desenvolvedor em tempo real
Quando um usuário compra ou cancela a compra de um produto único, o Google Play
envia uma OneTimeProductNotification mensagem.
Para atualizar o estado de compra do back-end, use o token fornecido no
OneTimeProductNotification objeto para chamar o
purchases.productsv2.getproductpurchasev2
método. Esse método fornece o status de compra e consumo mais recente, considerando um token de compra.
Quando uma pré-encomenda é atendida e o estado da compra muda para COMPRADO, uma RTDN é enviada ao cliente. Depois de receber a RTDN, processe a compra de pré-encomenda conforme descrito em Processar compras de produtos únicos no back-end.
Processe os RTDNs relacionados a transações no back-end seguro.
Processar transações concluídas
Quando um usuário conclui uma compra de produto único, o Google Play envia uma mensagem OneTimeProductNotification com o tipo ONE_TIME_PRODUCT_PURCHASED.
Quando você receber esse RTDN, processe a compra conforme descrito em Processar
compras de produtos únicos no back-end.
Processar transações canceladas
Quando uma compra de produto único é cancelada, o Google Play envia uma mensagem OneTimeProductNotification com o tipo ONE_TIME_PRODUCT_CANCELED se você tiver configurado para receber notificações do desenvolvedor em tempo real. Por exemplo, isso poderá ocorrer se o usuário não concluir o pagamento dentro do período necessário ou se a compra for revogada pelo desenvolvedor ou por solicitação do cliente. Quando o servidor de back-end receber essa notificação, chame o
purchases.productsv2.getproductpurchasev2
método para conferir o estado mais recente da compra e atualize o back-end de acordo com ele,
incluindo os direitos do usuário.
Se uma compra de produto único no estado Purchased for reembolsada, você também
vai receber uma notificação usando a API Voided Purchases.
Processar compras de produtos únicos no back-end
Se você detectou uma nova compra usando uma ONE_TIME_PRODUCT_PURCHASED
RTDN
ou recebeu um aviso no app usando
PurchasesUpdatedListener ou buscando manualmente
compras no método onResume() do app, será preciso processar
a nova compra. Recomendamos processar as compras no back-end para maior segurança.
Siga estas etapas para processar uma nova compra única:
- Consulte o
purchases.productsv2.getproductpurchasev2endpoint para conferir o status mais recente da compra do produto único. Para chamar esse método para uma compra, você precisa dopurchaseTokencorrespondente do seu app ou do RTDNONE_TIME_PRODUCT_PURCHASED. - Chame
getPurchaseState()e verifique se o estado da compra éPURCHASED. - Verifique a compra.
- Conceda ao usuário o acesso ao conteúdo. A conta de usuário associada à
compra poderá ser identificada com o
obfuscatedExternalAccountIdcampo depurchases.productsv2.getproductpurchasev2, se um código tiver sido definido usandosetObfuscatedAccountId()quando a compra foi feita.- Para compras de produtos que não são de consumo, confirme o envio do
conteúdo chamando o
purchases.products.acknowledgemétodo. Verifique se a compra não foi confirmada anteriormente verificando o campoacknowledgementState. - Se o produto for de consumo, marque o item como consumido chamando o
purchases.products.consumemétodo. Assim, o usuário poderá comprar o item novamente depois de consumi-lo. Esse método também confirma a compra.
- Para compras de produtos que não são de consumo, confirme o envio do
conteúdo chamando o
A Biblioteca Play Faturamento também tem disponíveis confirmações de compra e métodos de consumo que permitem processar compras no seu app, mas recomendamos processá-la no back-end, se você tiver um, para ter uma implementação mais segura.