REST Resource: purchases.subscriptions

Recurso: SubscriptionPurchase

Un recurso SubscriptionPurchase indica el estado de la compra de una suscripción del usuario.

Representación JSON
{
  "kind": string,
  "startTimeMillis": string,
  "expiryTimeMillis": string,
  "autoResumeTimeMillis": string,
  "autoRenewing": boolean,
  "priceCurrencyCode": string,
  "priceAmountMicros": string,
  "introductoryPriceInfo": {
    object (IntroductoryPriceInfo)
  },
  "countryCode": string,
  "developerPayload": string,
  "paymentState": integer,
  "cancelReason": integer,
  "userCancellationTimeMillis": string,
  "cancelSurveyResult": {
    object (SubscriptionCancelSurveyResult)
  },
  "orderId": string,
  "linkedPurchaseToken": string,
  "purchaseType": integer,
  "priceChange": {
    object (SubscriptionPriceChange)
  },
  "profileName": string,
  "emailAddress": string,
  "givenName": string,
  "familyName": string,
  "profileId": string,
  "acknowledgementState": integer,
  "externalAccountId": string,
  "promotionType": integer,
  "promotionCode": string,
  "obfuscatedExternalAccountId": string,
  "obfuscatedExternalProfileId": string
}
Campos
kind

string

Este tipo representa un objeto subscriptionPurchase en el servicio androidpublisher.

startTimeMillis

string (int64 format)

Hora en la que se otorgó la suscripción, expresada en milisegundos desde la época.

expiryTimeMillis

string (int64 format)

Hora en la que vencerá la suscripción, expresada en milisegundos desde la época.

autoResumeTimeMillis

string (int64 format)

Hora en la que se reanudará automáticamente la suscripción, expresada en milisegundos desde la época. Solo se encuentra presente si el usuario solicitó pausar la suscripción.

autoRenewing

boolean

Indica si la suscripción se renovará automáticamente cuando llegue la hora de vencimiento actual.

priceCurrencyCode

string

Es el código de moneda según ISO 4217 para el precio de la suscripción. Por ejemplo, si el precio se especifica en libras esterlinas británicas, el valor de priceCurrencyCode es "GBP".

priceAmountMicros

string (int64 format)

Precio de la suscripción. No incluye impuestos en los países donde los precios se expresan sin impuestos incluidos. Sí incluye impuestos en los países donde los precios se expresan con impuestos incluidos. El precio se expresa en microunidades; 1,000,000 de microunidades representa una unidad de la moneda. Por ejemplo, si el precio de la suscripción es EUR 1.99, el valor de priceAmountMicros es 1990000.

introductoryPriceInfo

object (IntroductoryPriceInfo)

Es la información del precio de lanzamiento de la suscripción. Solo se encuentra presente cuando la suscripción se compra con un precio de lanzamiento.

Este campo no indica si la suscripción se encuentra en el período de precio de lanzamiento.

countryCode

string

Es el código regional o de país de facturación (según ISO 3166-1 alpha-2) del usuario en el momento en que se otorgó la suscripción.

developerPayload

string

Es la cadena especificada por el desarrollador que contiene información adicional sobre un pedido.

paymentState

integer

Es el estado del pago de la suscripción. Los valores posibles son los siguientes: 0. Pago pendiente 1. Pago recibido 2. Prueba gratuita 3. Proceso diferido de actualización o cambio a una versión inferior que se encuentra pendiente

No se encuentra presente en el caso de suscripciones canceladas o vencidas.

cancelReason

integer

Es el motivo por el que se canceló una suscripción o no se renovó automáticamente. Los valores posibles son los siguientes: 0. El usuario canceló la suscripción 1. El sistema canceló la suscripción, por ejemplo, debido a un problema de facturación 2. La suscripción se reemplazó con una suscripción nueva 3. El desarrollador canceló la suscripción

userCancellationTimeMillis

string (int64 format)

Hora en que el usuario canceló la suscripción, expresada en milisegundos desde la época. Solo se encuentra presente si el valor de cancelReason es 0.

cancelSurveyResult

object (SubscriptionCancelSurveyResult)

Es la información que proporciona el usuario cuando completa el flujo de cancelación de la suscripción (encuesta sobre el motivo de la cancelación).

orderId

string

Es el ID del pedido recurrente más reciente asociado a la compra de la suscripción. Si la suscripción se cancela porque se rechaza el pago, este será el ID del pedido con el pago rechazado.

linkedPurchaseToken

string

Es el token de la compra original si esta suscripción corresponde a una de las siguientes opciones: 0. Nuevo registro de una suscripción cancelada, pero no vencida 1. Actualización o cambio a una versión inferior de una suscripción anterior

Por ejemplo, supongamos que un usuario realiza el registro original, y recibes el token de compra X. Luego, el usuario cancela la operación y lleva a cabo el flujo de un nuevo registro (antes de que venza la suscripción), y recibes el token de compra Y. Finalmente, el usuario actualiza la suscripción, y recibes el token de compra Z. Si llamas a esta API con el token de compra Z, este campo se establecerá en Y. Si llamas a esta API con el token de compra Y, este campo se establecerá en X. Si llamas a esta API con el token de compra X, este campo no se establecerá.

purchaseType

integer

Es el tipo de compra de la suscripción. Este campo solo se configura si esta compra no se realizó a través del flujo de facturación integrada estándar. Los valores posibles son los siguientes: 0. Prueba (es decir, se compró desde una cuenta de prueba de licencia) 1. Promoción (es decir, se compró usando un código promocional)

priceChange

object (SubscriptionPriceChange)

Es la información de cambio de precio más reciente disponible. Este campo está presente solo cuando se establece para la suscripción un cambio de precio próximo que aún no se aplica.

Una vez que la suscripción se renueve con el precio nuevo o que se cancele, no se devolverá ninguna información de cambio de precio.

profileName

string

Es el nombre de perfil del usuario en el momento de la compra de la suscripción. Solo se encuentra presente para compras realizadas con "Suscríbete con Google".

emailAddress

string

Es la dirección de correo electrónico del usuario en el momento de la compra de la suscripción. Solo se encuentra presente para compras realizadas con "Suscríbete con Google".

givenName

string

Es el nombre de pila del usuario en el momento de la compra de la suscripción. Solo se encuentra presente para compras realizadas con "Suscríbete con Google".

familyName

string

Es el apellido del usuario en el momento de la compra de la suscripción. Solo se encuentra presente para compras realizadas con "Suscríbete con Google".

profileId

string

Es el ID del perfil de Google del usuario en el momento de la compra de la suscripción. Solo se encuentra presente para compras realizadas con "Suscríbete con Google".

acknowledgementState

integer

Es el estado de procesamiento de compra del producto de suscripción. Los valores posibles son los siguientes: 0. Compra aún sin procesar 1. Confirmado

externalAccountId

string

Es el identificador de la cuenta de usuario en el servicio externo. Solo está presente si la vinculación de la cuenta se llevó a cabo como parte del flujo de compra de la suscripción.

promotionType

integer

Es el tipo de promoción que se aplica en esta compra. Este campo solo se configura si se aplica una promoción en el momento de la compra de la suscripción. Los valores posibles son los siguientes: 0. Código único 1. Código personalizado

promotionCode

string

Es el código promocional que se aplica en esta compra. Este campo solo se configura si se aplica una promoción con código personalizado cuando se compra la suscripción.

obfuscatedExternalAccountId

string

Es una versión ofuscada del ID que está asociado de forma única a la cuenta del usuario en tu app. Está presente para las compras en los siguientes casos: * La cuenta se vinculó como parte del flujo de compra de la suscripción. * Se usó https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid para especificar el campo cuando se realizó la compra.

obfuscatedExternalProfileId

string

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.

IntroductoryPriceInfo

Contiene la información del precio de lanzamiento de una suscripción.

Representación JSON
{
  "introductoryPriceCurrencyCode": string,
  "introductoryPriceAmountMicros": string,
  "introductoryPricePeriod": string,
  "introductoryPriceCycles": integer
}
Campos
introductoryPriceCurrencyCode

string

Código de moneda según ISO 4217 para el precio de lanzamiento de la suscripción. Por ejemplo, si el precio se especifica en libras esterlinas británicas, el valor de priceCurrencyCode es "GBP".

introductoryPriceAmountMicros

string (int64 format)

Precio de lanzamiento de la suscripción, sin incluir impuestos. La moneda es la misma que en priceCurrencyCode. El precio se expresa en microunidades; 1,000,000 de microunidades representa una unidad de la moneda. Por ejemplo, si el precio de la suscripción es EUR 1.99, el valor de priceAmountMicros es 1990000.

introductoryPricePeriod

string

Período del precio de lanzamiento, especificado en formato ISO 8601. Entre los valores comunes se incluyen (sin limitaciones) "P1W" (una semana), "P1M" (un mes), "P3M" (tres meses), "P6M" (seis meses) y "P1Y" (un año).

introductoryPriceCycles

integer

Cantidad de períodos de facturación en los que se ofrece el precio de lanzamiento.

SubscriptionCancelSurveyResult

Es la información que proporciona el usuario cuando completa el flujo de cancelación de la suscripción (encuesta sobre el motivo de la cancelación).

Representación JSON
{
  "cancelSurveyReason": integer,
  "userInputCancelReason": string
}
Campos
cancelSurveyReason

integer

Es el motivo de la cancelación que eligió el usuario en la encuesta. Los valores posibles son los siguientes: 0. Otro 1. No uso este servicio lo suficiente 2. Problemas técnicos 3. Costo 4. Encontré una app mejor

userInputCancelReason

string

Es el motivo de cancelación que ingresa el usuario de forma personalizada. Solo se encuentra presente si el valor de cancelReason es 0.

SubscriptionPriceChange

Contiene la información del cambio de precio de una suscripción que puede usarse para controlar el recorrido del usuario para el cambio de precio en la app. Puede ser el resultado de una solicitud de confirmación del usuario o de la personalización de la experiencia para una conversión exitosa.

Representación JSON
{
  "newPrice": {
    object (Price)
  },
  "state": integer
}
Campos
newPrice

object (Price)

Nuevo precio con el que se renovará la suscripción si el usuario acepta el cambio de precio.

state

integer

Es el estado actual del cambio de precio. Los valores posibles son los siguientes: 0. Pendiente: Estado de un cambio de precio pendiente de la aprobación del usuario. En este estado, puedes optar por obtener la confirmación del usuario a través de la API integrada. 1. Aceptado: Estado aceptado de un cambio de precio con el cual se renovará la suscripción, a menos que esta se cancele. El cambio de precio será efectivo en una fecha futura cuando se renueve la suscripción. Ten en cuenta que es posible que el cambio no se realice en la próxima renovación de la suscripción.

Métodos

acknowledge

Procesa la compra de una suscripción.

cancel

Cancela la compra de una suscripción del usuario.

defer

Difiere la compra de una suscripción del usuario hasta una hora de vencimiento futura especificada.

get
(deprecated)

Obsoleto: Usa purchases.subscriptionsv2.get en su lugar.

refund
(deprecated)

Obsoleto: Usa orders.refund en su lugar.

revoke
(deprecated)

Obsoleto: Usa purchases.subscriptionsv2.revoke en su lugar.

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 / 410 subscriptionExpired La suscripción venció y no se puede realizar la operación solicitada. Verifica la hora de vencimiento de la suscripción. No se permite esta operación en suscripciones vencidas.
400 subscriptionInvalidArgument Se proporcionó un argumento no válido en la solicitud de suscripción. Revisa la documentación de la API y asegúrate de que se proporcionen todos los campos obligatorios y tengan el formato correcto.
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 prepaidSubscriptionNotSupported No se admite la operación solicitada para las suscripciones prepagadas. Asegúrate de que la operación se aplique al tipo de suscripción. Este error es específico para métodos como Cancel, Defer, Refund o Revoke.
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.
410 purchaseTokenNoLongerValid El token de compra no es válido de forma permanente porque se borró la cuenta de usuario asociada o ya no existe el registro de compra. Deja de usar este token de compra.
410 subscriptionNoLongerAvailable La compra de la suscripción ya no está disponible para la consulta porque venció hace demasiado tiempo. Este error indica que la suscripción caducó hace más de 60 días. Ya no debes consultar estas suscripciones.
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.