- Recurso: ProductPurchaseV2
- PurchaseStateContext
- PurchaseState
- TestPurchaseContext
- FopType
- ProductLineItem
- ProductOfferDetails
- RentOfferDetails
- ConsumptionState
- AcknowledgementState
- Métodos
Recurso: ProductPurchaseV2
Un recurso ProductPurchaseV2 indica el estado de la compra que hace un usuario de un producto integrado en la aplicación.
| Representación JSON |
|---|
{ "productLineItem": [ { object ( |
| Campos | |
|---|---|
productLineItem[] |
Contiene información a nivel del elemento para un ProductPurchaseV2. |
kind |
Este tipo representa un objeto ProductPurchaseV2 en el servicio androidpublisher. |
purchaseStateContext |
Es información sobre el estado de compra de la compra. |
testPurchaseContext |
Es información relacionada con las compras de prueba. Este parámetro solo se establecerá para las compras de prueba. |
orderId |
Es el ID de pedido asociado con la compra del producto integrado en la aplicación. No se puede configurar si no hay un pedido asociado con la compra. |
obfuscatedExternalAccountId |
Es una versión ofuscada del ID que está asociado de forma única a la cuenta del usuario en tu app. Solo está presente si se especificó con https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid cuando se realizó la compra. |
obfuscatedExternalProfileId |
Es una versión ofuscada del ID que está asociado de forma única al perfil del usuario en tu app. Solo está presente si se especificó con https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid cuando se realizó la compra. |
regionCode |
Es el código regional de facturación (según ISO 3166-1 Alpha-2) del usuario en el momento en que se otorgó el producto. |
purchaseCompletionTime |
Fecha y hora en que se realizó la compra correctamente, es decir, cuando PurchaseState cambió a PURCHASED. Este campo no estará presente hasta que se complete el pago. Por ejemplo, si el usuario inició una transacción pendiente (https://developer.android.com/google/play/billing/integrate#pending), este campo no se completará hasta que el usuario complete correctamente los pasos necesarios para finalizar la transacción. Usa el formato RFC 3339, en el que el resultado generado siempre usará la normalización Z y los dígitos fraccionarios 0, 3, 6 o 9. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: |
acknowledgementState |
Solo salida. Es el estado de procesamiento de la compra. |
PurchaseStateContext
Es el contexto sobre el estado de la compra.
| Representación JSON |
|---|
{
"purchaseState": enum ( |
| Campos | |
|---|---|
purchaseState |
Solo salida. Es el estado de compra de la compra. |
PurchaseState
Son los estados de compra posibles.
| Enums | |
|---|---|
PURCHASE_STATE_UNSPECIFIED |
No se especificó el estado de la compra. Nunca se debe establecer este valor. |
PURCHASED |
Se compró correctamente. |
CANCELLED |
Compra cancelada. |
PENDING |
La compra está en estado pendiente y aún no se completó. Si quieres obtener más información para controlar las compras pendientes, consulta https://developer.android.com/google/play/billing/integrate#pending. |
TestPurchaseContext
Es el contexto sobre una compra de prueba.
| Representación JSON |
|---|
{
"fopType": enum ( |
| Campos | |
|---|---|
fopType |
Es el tipo de FOP de la compra de prueba. |
FopType
Son los tipos de FOP posibles.
| Enums | |
|---|---|
FOP_TYPE_UNSPECIFIED |
No se especificó el tipo de FOP. Nunca se debe establecer este valor. |
TEST |
La compra se realizó con una tarjeta de prueba. |
ProductLineItem
Contiene información a nivel del elemento para un ProductPurchaseV2.
| Representación JSON |
|---|
{
"productId": string,
"productOfferDetails": {
object ( |
| Campos | |
|---|---|
productId |
Es el ID del producto comprado (por ejemplo, "monthly001"). |
productOfferDetails |
Son los detalles de la oferta para este elemento. |
ProductOfferDetails
Es información detallada de una oferta relacionada con un concepto de la compra.
| Representación JSON |
|---|
{ "offerTags": [ string ], "offerId": string, "purchaseOptionId": string, "rentOfferDetails": { object ( |
| Campos | |
|---|---|
offerTags[] |
Son las etiquetas de oferta más recientes asociadas con la oferta. Incluye etiquetas heredadas de la opción de compra. |
offerId |
Es el ID de la oferta. Solo está presente para las ofertas. |
purchaseOptionId |
Es el ID de la opción de compra. |
rentOfferDetails |
Son los detalles de las ofertas de alquiler. Este parámetro solo se establecerá para las líneas de pedido de alquiler. |
offerToken |
Es el token de oferta por transacción que se usó para crear esta línea de pedido de compra. |
quantity |
Es la cantidad asociada con la compra del producto integrado en la aplicación. |
refundableQuantity |
Es la cantidad apta para reembolso, es decir, la cantidad que no se reembolsó. El valor refleja reembolsos parciales basados en cantidades y reembolsos totales. |
consumptionState |
Solo salida. Es el estado de consumo de la compra. |
RentOfferDetails
Este tipo no tiene campos.
Es información detallada de una oferta relacionada con un concepto de alquiler.
ConsumptionState
Son los estados de consumo posibles.
| Enums | |
|---|---|
CONSUMPTION_STATE_UNSPECIFIED |
No se especificó el estado de consumo. Nunca se debe establecer este valor. |
CONSUMPTION_STATE_YET_TO_BE_CONSUMED |
Aún no se consumió. |
CONSUMPTION_STATE_CONSUMED |
Ya se consumió. |
AcknowledgementState
Es el estado de procesamiento de compra del producto único.
| Enums | |
|---|---|
ACKNOWLEDGEMENT_STATE_UNSPECIFIED |
No se especificó el estado de la confirmación. |
ACKNOWLEDGEMENT_STATE_PENDING |
Aún no se procesó la compra. |
ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED |
Se procesó la compra. |
Métodos |
|
|---|---|
|
Verifica el estado del consumo y la compra de un elemento integrado en la app. |
Códigos de error
Las operaciones de este recurso devuelven los siguientes códigos de error HTTP:
| Código de error | Motivo | Descripción | Solución |
|---|---|---|---|
400 |
invalidPurchaseState |
La compra no tiene un estado válido para realizar la operación solicitada. Por ejemplo, es posible que intentes confirmar una compra ya consumida o cancelar una suscripción que no está activa. | Verifica el estado actual del recurso con la API de Get correspondiente antes de intentar la operación. Asegúrate de que el recurso se encuentre en un estado adecuado para la acción. |
400 |
invalidValue |
Se proporcionó un valor no válido en la solicitud. A menudo, se devuelve para un token de compra con formato incorrecto o no válido. | Corrige el valor del campo no válido en el cuerpo o los parámetros de la solicitud según la referencia de la API. |
400 |
productNotOwnedByUser |
El token de compra proporcionado es válido, pero el usuario no posee el producto actualmente. Esto puede suceder si la compra se reembolsó, revocó o venció antes de la confirmación. | Verifica el estado actual del recurso con la API de Get correspondiente antes de intentar la operación. Asegúrate de que el recurso se encuentre en un estado adecuado para la acción. |
400 |
purchaseTokenMismatch |
El token de compra proporcionado no coincide con la compra, el nombre del paquete, el ID de suscripción o el ID del producto. | Verifica que todos los detalles de la solicitud sean correctos y correspondan entre sí. |
400 |
required |
Falta un campo o parámetro obligatorio en la solicitud. | Consulta la documentación de la API para asegurarte de que se incluyan todos los campos y parámetros obligatorios. |
400 |
unsupportedIabType |
La operación no se admite para el tipo de facturación integrada en la aplicación especificado. | Asegúrate de que el método de la API sea compatible con el tipo de elemento que se administra. |
403 |
userInsufficientPermission |
El usuario no tiene permisos suficientes para realizar la operación solicitada. | Asegúrate de que el usuario autenticado tenga los permisos necesarios en Google Play Console. Consulta Cómo usar una cuenta de servicio para obtener más detalles. |
404 |
notFound |
No se encontró el recurso solicitado. | Verifica que los identificadores (p.ej., token de compra, nombre del paquete, ID de producto, ID de suscripción) sean correctos. |
409 |
concurrentUpdate |
Se intentó actualizar un objeto que se está actualizando de forma simultánea. | Vuelve a intentarlo con una retirada exponencial. Evita las modificaciones simultáneas en el mismo recurso. |
5xx |
Generic error |
Error genérico en el servidor de Google Play. | Vuelve a intentar enviar tu solicitud. Si el problema persiste, comunícate con tu administrador de cuentas de Google Play o envía una solicitud de asistencia. Considera consultar el Panel de estado de Play para ver si hay interrupciones conocidas. |