REST Resource: purchases.products

Recurso: ProductPurchase

Um recurso ProductPurchase indica o status da compra de um produto no app feita por um usuário.

Representação JSON
{
  "kind": string,
  "purchaseTimeMillis": string,
  "purchaseState": integer,
  "consumptionState": integer,
  "developerPayload": string,
  "orderId": string,
  "purchaseType": integer,
  "acknowledgementState": integer,
  "purchaseToken": string,
  "productId": string,
  "quantity": integer,
  "obfuscatedExternalAccountId": string,
  "obfuscatedExternalProfileId": string,
  "regionCode": string,
  "refundableQuantity": integer
}
Campos
kind

string

Esse tipo representa um objeto inappPurchase no serviço androidpublisher.

purchaseTimeMillis

string (int64 format)

A hora em que o produto foi comprado, em milissegundos desde a época (1º de janeiro de 1970).

purchaseState

integer

O estado de compra do pedido. Os valores possíveis são: 0. Comprado: 1. Cancelado: 2. Pendente

consumptionState

integer

O estado de consumo do produto no app. Os valores possíveis são: 0. Ainda vai ser consumido: 1. Consumiu

developerPayload

string

Uma string especificada pelo desenvolvedor que contém informações complementares sobre um pedido.

orderId

string

O ID do pedido associado à compra do produto no app.

purchaseType

integer

O tipo de compra do produto no app. Este campo só é definido se a compra não foi feita usando o fluxo de faturamento no app padrão. Os valores possíveis são: 0. Teste (compra feita com uma conta de teste de licença), 1. Promoção (compra feita com um código promocional). Não inclui compras do Play Points. 2. Prêmio (adquirido ao ver um anúncio em vídeo, e não pagando).

acknowledgementState

integer

O estado de confirmação do produto no app. Os valores possíveis são: 0. Ainda não foi confirmado; 1. Reconhecido

purchaseToken

string

O token gerado para identificar esta compra. Pode não estar presente.

productId

string

O SKU do produto no app. Pode não estar presente.

quantity

integer

A quantidade associada à compra do produto no app. Caso não esteja presente, a quantidade é 1.

obfuscatedExternalAccountId

string

Uma versão ofuscada do ID que é exclusivamente associado à conta do usuário no seu app. Presente apenas se especificada usando https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid quando a compra foi feita.

obfuscatedExternalProfileId

string

Uma versão ofuscada do ID que é exclusivamente associado ao perfil do usuário no seu app. Presente apenas se especificada usando https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid quando a compra foi feita.

regionCode

string

Código regional de faturamento do usuário no momento em que o produto foi concedido, no formato ISO 3166-1 alpha-2.

refundableQuantity

integer

A quantidade qualificada para reembolso, ou seja, a quantidade que não foi reembolsada. O valor reflete reembolsos parciais e totais com base em quantidade.

Métodos

acknowledge

Confirma a compra de um item no app.

consume

Consome a compra de um item no app.

get

Verifica o status de compra e consumo de um item no app.

Códigos de erro

As operações desse recurso retornam os seguintes códigos de erro HTTP:

Código do erro Motivo Descrição Resolução
400 invalidPurchaseState A compra não está em um estado válido para realizar a operação solicitada. Por exemplo, você pode estar tentando confirmar uma compra já consumida ou cancelar uma assinatura inativa. Verifique o estado atual do recurso usando a API Get correspondente antes de tentar a operação. Verifique se o recurso está em um estado adequado para a ação.
400 invalidValue Um valor inválido foi fornecido na solicitação. Geralmente, isso é retornado para um token de compra malformado ou inválido. Corrija o valor do campo inválido no corpo ou nos parâmetros da solicitação com base na referência da API.
400 productNotOwnedByUser O token de compra fornecido é válido, mas o usuário não tem o produto. Isso pode acontecer se a compra for reembolsada, revogada ou expirar antes da confirmação. Verifique o estado atual do recurso usando a API Get correspondente antes de tentar a operação. Verifique se o recurso está em um estado adequado para a ação.
400 purchaseTokenMismatch O token de compra fornecido não corresponde à compra, ao nome do pacote, ao ID da assinatura ou ao ID do produto. Verifique se todos os detalhes na solicitação estão corretos e correspondem entre si.
400 required Um campo ou parâmetro obrigatório está faltando na solicitação. Consulte a documentação da API para garantir que todos os campos e parâmetros obrigatórios estejam incluídos.
400 unsupportedIabType A operação não é compatível com o tipo de faturamento em app especificado. Verifique se o método da API é compatível com o tipo de item que está sendo gerenciado.
403 userInsufficientPermission O usuário não tem permissão suficiente para realizar a operação solicitada. Confira se o usuário autenticado tem as permissões necessárias no Google Play Console. Consulte Como usar uma conta de serviço para mais detalhes.
404 notFound Não foi possível encontrar o recurso solicitado. Verifique se os identificadores (por exemplo, token de compra, nome do pacote, ID do produto, ID da assinatura) estão corretos.
409 concurrentUpdate Houve uma tentativa de atualizar um objeto que está sendo atualizado simultaneamente. Tente de novo com uma espera exponencial. Evite modificações simultâneas no mesmo recurso.
5xx Generic error Erro genérico no servidor do Google Play. Tente fazer a solicitação novamente.

Se o problema persistir, entre em contato com seu gerente de contas do Google Play ou envie uma solicitação de suporte. Confira o Painel de status do Google Play para saber se há falhas conhecidas.