Ciclo de vida de compras únicas

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.

Figura 1: estados de ciclo de vida e eventos de transição para compras únicas.

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 das seguintes maneiras:

Depois de receber a nova compra, use o método getPurchaseState ou purchases.products.get in Play Developer API para determinar o estado de pagamento dela.

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 mensagem OneTimeProductNotification. Para atualizar o estado de compra do back-end, use o token fornecido no objeto OneTimeProductNotification para chamar o método purchases.products.get. Esse método fornece o status de compra e consumo mais recente, considerando um token de compra.

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 pode ocorrer se o usuário não concluir o pagamento no prazo 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 método purchases.products.get para conferir o estado mais recente da compra e atualize o back-end de acordo, incluindo os direitos do usuário.

Se uma compra de produto único no estado Purchased for reembolsada, você também será informado pela API Voided Purchases.

Processar compras de produtos únicos no back-end

Se você detectou uma nova compra com uma RTDN de ONE_TIME_PRODUCT_PURCHASED 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:

  1. Consulte o endpoint purchases.products.get para conferir o status mais recente da compra do produto único. Para chamar esse método para uma compra, você precisa do purchaseToken correspondente do seu app ou do RTDN ONE_TIME_PRODUCT_PURCHASED.
  2. Chame getPurchaseState() e verifique se o estado de compra é PURCHASED.
  3. Verifique a compra.
  4. Conceda ao usuário o acesso ao conteúdo. A conta de usuário associada à compra poderá ser identificada com o campo obfuscatedExternalAccountId de purchases.products.get se um código tiver sido definido usando setObfuscatedAccountId() quando a compra foi feita.
    1. Para compras de produtos que não são de consumo, confirme o envio do conteúdo chamando o método purchases.products.acknowledge. Confira se a compra não foi confirmada anteriormente verificando o campo acknowledgementState.
    2. Se o produto for de consumo, marque o item como consumido chamando o método purchases.products.consume. Assim, o usuário poderá comprar o item novamente depois de consumi-lo. Esse método também confirma a compra.

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.