- Recurso: SubscriptionPurchase
- IntroductoryPriceInfo
- SubscriptionCancelSurveyResult
- SubscriptionPriceChange
- Métodos
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 ( |
| Campos | |
|---|---|
kind |
Este tipo representa un objeto subscriptionPurchase en el servicio androidpublisher. |
startTimeMillis |
Hora en la que se otorgó la suscripción, expresada en milisegundos desde la época. |
expiryTimeMillis |
Hora en la que vencerá la suscripción, expresada en milisegundos desde la época. |
autoResumeTimeMillis |
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 |
Indica si la suscripción se renovará automáticamente cuando llegue la hora de vencimiento actual. |
priceCurrencyCode |
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 |
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 |
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 |
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 |
Es la cadena especificada por el desarrollador que contiene información adicional sobre un pedido. |
paymentState |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 ( |
| Campos | |
|---|---|
newPrice |
Nuevo precio con el que se renovará la suscripción si el usuario acepta el cambio de precio. |
state |
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 |
|
|---|---|
|
Procesa la compra de una suscripción. |
|
Cancela la compra de una suscripción del usuario. |
|
Difiere la compra de una suscripción del usuario hasta una hora de vencimiento futura especificada. |
(deprecated) |
Obsoleto: Usa purchases.subscriptionsv2.get en su lugar. |
(deprecated) |
Obsoleto: Usa orders.refund en su lugar. |
(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. |