Suscripciones integradas en la aplicación

Las suscripciones te permiten vender contenido, servicios o funciones en tu app con facturación automatizada y periódica. Puedes adaptar fácilmente una implementación de facturación integrada existente para vender suscripciones.

Este documento se centra en destacar los detalles de implementación que son específicos para las suscripciones, junto con algunas estrategias para los modelos relacionados de facturación y negocios.

  • Las suscripciones te permiten vender productos con facturación automatizada y periódica en distintos intervalos.
  • Puedes ofrecer un período de prueba configurable para suscripciones mensuales y anuales.
  • Puedes gestionar las suscripciones a través de la Developer Console o por medio de la Google Play Developer API.
  • Los usuarios compran tus suscripciones desde tus apps, en vez de adquirirlas directamente en Google Play.
  • Los usuarios pueden renovar sus suscripciones mientras que una suscripción actual se encuentra activa.
  • Los usuarios pueden mejorar o pasar a una versión anterior una suscripción durante un período de suscripción. El costo anterior de suscripción se prorratea y la porción sin usar se adjudica a la suscripción de reemplazo.
  • Puedes aplazar la facturación para la suscripción de un usuario en particular, para gestionar cuentas u ofrecer recompensas.

Información general

Una suscripción es un tipo de producto que se ofrece mediante facturación integrada y te permite vender contenido, servicios o funciones a los usuarios desde tu app con facturación periódica automatizada, en el intervalo que especifiques. Puedes vender suscripciones a casi cualquier tipo de contenido digital desde cualquier tipo de aplicación o juego.

Como en el caso de otros productos integrados en la aplicación, se configuran y publican suscripciones por medio de la Developer Console, y luego estas se venden desde aplicaciones instaladas en dispositivos Android. En la Developer Console, se crean productos de suscripciones que se agregan a listas de productos, y luego se establece un precio y un período de prueba opcional para cada uno. Se elige un intervalo de facturación y luego se realiza la publicación. Para obtener más información sobre cómo usar la Developer Console, visita Configurar artículos de suscripciones.

Cuando los usuarios compran suscripciones en tus apps, Google Play se encarga de todos los detalles del pago para que estas nunca deban procesar directamente ninguna operación comercial. Google Play procesa todos los pagos para suscripciones a través de Google Payments, tal como lo hace para la compra de productos integrados en la aplicación y apps estándares. Esto garantiza un flujo de pago coherente y familiar para tus usuarios.

Una vez que los usuarios compran suscripciones, pueden verlas y cancelarlas desde la pantalla MyApps en la app de Play Store o desde la página de información de productos de la app, en la app de Play Store. Para obtener más información sobre cómo manejar las cancelaciones de los usuarios, consulta Cancelación de suscripciones.

Además de las llamadas de la API del lado del cliente, puedes usar la API en el servidor para que la facturación integrada brinde a los compradores de suscripciones acceso extendido a contenido (por ejemplo, desde tu sitio web o desde otro servicio). La API en el servidor te permite validar el estado de una suscripción cuando los usuarios acceden a tus otros servicios. Para obtener más información sobre la API, consulta Google Play Developer API.

También puedes aprovechar tu base externa actual de suscripciones desde tus apps para Android.

  • Si vendes suscripciones en un sitio web, por ejemplo, puedes agregar tu propia lógica de negocio a tu app de Android para determinar si el usuario ya ha comprado una suscripción en otra parte, luego permitirle acceso a tu contenido si es el caso o, de lo contrario, ofrecerle la compra de una suscripción desde Google Play.
  • Puedes implementar tu propia solución para compartir suscripciones en las aplicaciones o los productos que desees, sin importar su diversidad. Por ejemplo, podrías vender una suscripción que brinde al suscriptor acceso a una colección completa de apps, juegos o cualquier otro contenido por una tarifa mensual o anual. Para implementar esta solución, podrías agregar tu propia lógica de negocio a tu app a fin de determinar si el usuario ya ha comprado una suscripción determinada y, en ese caso, permitirle acceder a tu contenido.

En general, se aplican las mismas políticas y los términos básicos a las suscripciones que a los productos estándares integrados en la aplicación, aunque existen algunas diferencias. Para obtener información completa sobre políticas y términos actuales, lee el documento sobre políticas.

Para conocer los requisitos mínimos del sistema para suscripciones, lee las Notas de la versión.

Configurar artículos de suscripciones

Para crear y gestionar suscripciones, puedes usar la Developer Console a fin de configurar una lista de productos para la app, y luego configurar estos atributos para cada producto de suscripción:

  • Tipo de compra: siempre como Suscripción.
  • ID de suscripción: identificador para la suscripción
  • Estado de publicación: no publicado/publicado.
  • Idioma: idioma predeterminado en el que se muestra la suscripción.
  • Título: título del producto de suscripción.
  • DESCRIPCIÓN: detalles que informan al usuario sobre la suscripción.
  • Precio: precio predeterminado de la suscripción por recurrencia.
  • Periodicidad: intervalo de periodicidad para la facturación.
  • Precios en otras monedas (puede completarse automáticamente).

Para obtener más información sobre la manera de agregar y configurar productos en la Developer Console, consulta Administrar la facturación integrada.

También puedes crear y gestionar suscripciones usando la Google Play Developer API.

Poner precio a las suscripciones

Cuando creas una suscripción en la Developer Console, puedes fijarle un precio en cualquiera de las monedas disponibles. Cada suscripción debe tener un precio cuyo valor no sea cero. Puedes asignar diferentes precios a distintas suscripciones para el mismo contenido (por ejemplo, podrías ofrecer un descuento sobre una suscripción anual respecto del equivalente mensual).

Importante: Para modificar el precio de una suscripción, puedes publicar un nuevo ID de producto para la suscripción a un precio nuevo y luego ofrecerlo en tu app en lugar del producto original. A los usuarios que ya hayan realizado compras se les seguirá cobrando el precio original, pero a los usuarios nuevos se les cobrará el precio nuevo.

Facturación a los usuarios

En la Developer Console, puedes configurar productos de suscripciones con facturación periódica automatizada en el intervalo que elijas:

  • Semanal: Google Play emite la factura para la cuenta de Google Payments del comprador en el momento de la compra y cada semana luego de la fecha original de compra.
  • Mensual: Google Play emite la factura a la cuenta de Google Payments del comprador en el momento de la compra y cada mes siguiente a la fecha de la compra (los intervalos exactos de facturación pueden variar levemente en el tiempo).
  • 3 meses: Google Play emite la factura a la cuenta de Google Payments del comprador en el momento de la compra y luego cada tres meses (los intervalos exactos de facturación pueden variar levemente con el tiempo).
  • 6 meses: Google Play emite la factura a la cuenta de Google Payments del comprador en el momento de la compra y luego cada seis meses (los intervalos exactos de facturación pueden variar levemente con el tiempo).
  • Anual: Google Play emite la factura a la cuenta de Google Payments del comprador en el momento de la compra y luego en la misma fecha de los años posteriores.
  • Por temporada: Google Play emite la factura a la cuenta de Google Payments del comprador al iniciarse cada “temporada” (tú especificas las fechas de inicio y fin de la temporada). Esto está pensado para compras anuales de contenido por temporada (como contenido relacionado con el deporte). La suscripción se extiende hasta el final de la temporada y vuelve a comenzar al iniciarse la temporada el año siguiente.

La facturación continúa indefinidamente en el intervalo y al precio especificados para la suscripción. En cada renovación de la suscripción, Google Play aplica el cobro automáticamente a la cuenta del usuario y luego notifica al usuario por correo electrónico sobre los cargos. Para suscripciones mensuales y anuales, los ciclos de facturación siempre concuerdan con los ciclos de suscripción, según la fecha de compra. (Las suscripciones por temporada se cobran anualmente, el primer día de la temporada).

Cuando se aprueba el pago de la suscripción, Google Play proporciona un token de compra a la app desde la cual se realiza la compra a través de la In-app Billing API. Tus apps pueden almacenar el token localmente o pasarlo a tus servidores de backend, que pueden usar luego para validar o cancelar la suscripción de manera remota por medio de la Google Play Developer API.

Si un pago periódico falla (por ejemplo, porque la tarjeta de crédito del cliente no es válida), la suscripción no se renueva. El método getPurchases() no muestra suscripciones fallidas o caducadas.

Recomendación: Incluye tu lógica de negocio en tu app para notificar a tus servidores de backend sobre compras de suscripciones, tokens y cualquier error de facturación que pueda ocurrir. Tus servidores de backend pueden usar la API en el servidor para consultar y actualizar tus registros y seguir a los clientes directamente, si fuera necesario.

Renovación manual

Con la versión 3 de la In-app Billing API, los usuarios pueden renovar la suscripción durante su período activo aun cuando la suscripción no esté configurada para renovarse automáticamente. Si el usuario compra una suscripción mientras esta se encuentra activa, se extiende por el período correspondiente al precio actual.

Por ejemplo, Aquiles tiene una suscripción para la aplicación Hoplita moderno. Su suscripción actualmente caduca el día 1 de agosto. El día 10 de julio, compra una suscripción por 1 mes al precio actual. Ese mes se agrega a su suscripción actual y, por ello, esta ahora caduca el día 1 de setiembre.

La app debe transmitir esto con la IU adecuada. Por ejemplo, si un usuario no tiene una suscripción activa, la app podría tener un botón de compra, pero si no cuenta con una, el botón podría ser de renovación.

Actualizar una suscripción o pasarla a una versión anterior

Con la versión 3 de la In-app Billing API, los usuarios pueden actualizar o pasar a una versión anterior una suscripción durante su período de actividad. Cuando el usuario hace esto, se cancela la suscripción activa y se crea una nueva. El saldo sin usar de la suscripción anterior se adjudica a la nueva suscripción de manera prorrateada. El primer período de facturación para la nueva suscripción comienza una vez consumido ese saldo. (La nueva suscripción no necesita tener un período de igual duración que la anterior).

Por ejemplo, Samsagaz tiene una suscripción para contenido en línea de la app Jardinero. Actualmente cuenta con una suscripción mensual a la versión de nivel 1 del contenido (que tiene únicamente contenido de texto). Esta suscripción le cuesta £2 al mes y se renueva el primer día de cada mes. El día 15 de abril, decide actualizar la suscripción al nivel 2 (que incluye actualizaciones de video), con un precio de £3 por mes. Su suscripción de nivel 1 se termina inmediatamente. Debido a que pagó por un mes completo (del 1 al 30 de abril) y usó únicamente la mitad, se adjudica la mitad de una suscripción mensual (£1) a su nueva suscripción. Sin embargo, debido a que la nueva suscripción cuesta £3 por mes, el saldo acreedor de £1 solo se aplica a diez días. Por lo tanto, el crédito de Samsagaz se aplica a su suscripción del 15 al 25 de abril. El día 26 de abril, se le descuentan £3 por su suscripción nueva y otros £3 el día 26 de cada mes siguiente.

Nota: La nueva fecha de facturación de la suscripción depende del momento en que se agota el crédito prorrateado del suscriptor, por lo cual este no puede actualizar ni pasar a una versión anterior una suscripción por temporada, que tiene fechas de inicio y fin fijas y predeterminadas.

Cuando un usuario actualiza una suscripción o la pasa a una versión anterior, tu aplicación llama a getBuyIntentToReplaceSkus(). A este método se le pasa la nueva SKU que el usuario quiere comprar y todas las SKU anteriores que se reemplazan por la nueva. Las porciones restantes de las SKU anteriores se usan para pagar la nueva suscripción y la facturación comienza cuando este crédito se agota.

Facturación diferida

A través de la Google Play Developer API, puedes diferir la siguiente fecha de facturación para un suscriptor. El usuario sigue suscrito al contenido y tiene acceso total al mismo, pero no se cobra durante el período de aplazamiento. Esto te permite realizar acciones como las siguientes:

  • Dar a los usuarios acceso gratuito como parte de una oferta especial o un paquete (por ejemplo, a contenido web para los usuarios que se suscriban a una revista impresa).
  • Dar acceso gratuito a los clientes como gesto de buena voluntad.

Lo máximo que se puede aplazar la facturación es un año por llamada. Por supuesto, puedes llamar a la API de nuevo antes de que termine el año para aplazar más la facturación.

Por ejemplo, Darcy tiene una suscripción a contenido en línea para la app Pesca para caballeros. Normalmente, se le factura £1,25 el primer día de cada mes. El día 10 de marzo, participa en una encuesta en línea para el editor de la app. El editor lo recompensa aplazando su próximo pago hasta el 1 de junio. A Darcy no se le cobran el 1 de abril y el 1 de mayo, pero se mantiene su acceso normal al contenido. El día 1 de junio, se le cobra la tarifa de suscripción normal de £1,25.

Nota: La API siempre aplaza la fecha de facturación durante un número entero de días. Si solicitas un período de aplazamiento que incluya un número fraccionario de días, la API redondea el período hasta el siguiente día completo. Por ejemplo, si la suscripción de un usuario tiene establecido renovarse el 15 de junio de 2015 a las 14:00:00 UTC, y usas la API para aplazar la fecha de renovación hasta el 15 de agosto de 2015 a las 02:00:00 UTC, la API aplicará un redondeo hasta el día completo siguiente y establecerá la fecha de renovación en el día 15 de agosto de 2015 a las 14:00:00 UTC.

También puedes ofrecer pruebas gratuitas a suscriptores nuevos, como se describe en Pruebas gratuitas.

Pruebas gratuitas

En la Developer Console, puedes configurar un período de prueba gratuito que permita a los usuarios probar tu contenido de suscripción antes de adquirirlo. Este período de prueba es válido durante el lapso de tiempo que establezcas y luego se convierte automáticamente en una suscripción completa que se gestiona de acuerdo con el intervalo y el precio de facturación de la suscripción. Google Play admite pruebas gratuitas para todos los tipos de suscripciones, incluidas las suscripciones por temporada.

Para aprovechar una prueba gratuita, un usuario deberá “comprar” la suscripción completa a través del flujo estándar de facturación integrada, para lo cual brindará una forma de pago válida que se usará en la facturación y completará la transacción normal de compra. Sin embargo, no se aplicarán cobros al usuario, ya que el período inicial corresponde a la prueba gratuita. En este caso, Google Play registrará una transacción de $0,00 y la suscripción se marcará como adquirida durante el tiempo del período de prueba o hasta su cancelación. Cuando se complete la transacción, Google Play notificará a los usuarios por correo electrónico que han adquirido una suscripción que abarca un período de prueba gratuito y que el costo inicial fue de $0,00.

Cuando el período de prueba termine, Google Play iniciará automáticamente la facturación mediante la tarjeta de crédito que el usuario ingresó durante la compra inicial, al monto establecido para la suscripción completa, y continuará haciéndolo según el intervalo de la suscripción. Si fuese necesario, el usuario podrá cancelar la suscripción en cualquier momento durante el período de prueba. En este caso, la suscripción permanecerá activa hasta el final del período de prueba, pero Google Play establecerá que la suscripción no se renueve automáticamente. Al final del período, la suscripción caducará y Google Play no aplicará cobros al usuario.

Puedes configurar un período de prueba para una suscripción en la Developer Console, sin necesidad de modificar o actualizar tu APK. Simplemente, ubica y edita la suscripción en tu lista de productos, establece un número válido de días para el período (debe ser de 7 o más días) y realiza la publicación. Puedes cambiar el período en cualquier momento, aunque debes tener en cuenta que Google Play no aplica el cambio para usuarios que ya “compraron” un período de prueba para la suscripción. El período de prueba actualizado solo se usará para las compras de suscripciones nuevas. Puedes crear un período de prueba gratuito por producto de suscripción.

Publicación de suscripciones

Cuando termines de configurar los detalles de tu producto de suscripción en la Developer Console o por medio de la API, puedes publicar la suscripción en la lista de productos de la app.

En la lista de productos, puedes agregar suscripciones, productos integrados en la aplicación o ambos. Puedes agregar varias suscripciones que den acceso a diferentes contenidos o servicios, o varias suscripciones que den acceso al mismo contenido con intervalos o precios diferentes, como en el caso de una promoción. Por ejemplo, un proveedor de noticias podría decidirse a ofrecer suscripciones mensuales tanto como anuales para el mismo contenido, y la suscripción anual tendría un descuento. También puedes ofrecer algo equivalente a compras directas desde la aplicación para productos de suscripción, y así garantizar que tu contenido esté disponible para usuarios de dispositivos más antiguos que no sean compatibles con las suscripciones.

Luego de que agregues una suscripción o un producto integrado en la aplicación a la lista de productos, debes publicar el producto a fin de que Google Play pueda hacer que se encuentre disponible para la compra. Ten en cuenta que también debes publicar la propia app antes de que Google Play haga que los productos se encuentren disponibles para la compra dentro de la app.

Importante: Puedes quitar el producto de suscripción desde la lista de productos que se ofrece en tu app para evitar que los usuarios lo vean o lo compren.

Precios prorrateados para las suscripciones por temporada

Puedes configurar precios prorrateados para usuarios que adquieran suscripciones por temporada luego de la fecha de inicio de esta. Debes especificar la fecha de entrada en vigencia del precio con descuento. El precio con descuento entra en vigencia a las 0:00 UTC de la fecha especificada. Puedes establecer varios precios prorrateados y así bajar el precio de suscripción progresivamente a medida que transcurra la temporada. Si un usuario compra una suscripción por temporada prorrateada y permanece sin suscripción hasta el inicio de la temporada siguiente, Google Play le cobra el precio completo de la suscripción cuando comienza la temporada siguiente.

Por ejemplo, la temporada profesional de damas va del 1 de marzo al 31 de agosto. La app Checkers Dilettante ofrece una suscripción por €10. La app también ofrece dos precios prorrateados: €7,50 para usuarios que se registren a partir del 1 de junio y €5 para usuarios que se registren a partir del 15 de agosto. Independientemente del momento en que se registre el usuario, la suscripción por temporada terminará el día 31 de agosto.

Cancelación de suscripciones

Los usuarios pueden ver el estado de todas las suscripciones y cancelarlas si es necesario desde la pantalla My Apps en la app de Play Store. Actualmente, la In-app Billing API no admite la cancelación programática de suscripciones desde la app en la cual se realiza la compra.

Cuando el usuario cancela una suscripción, Google Play no ofrece un reembolso por el ciclo de facturación actual. En cambio, permite que el usuario tenga acceso a la suscripción cancelada hasta el fin del ciclo de facturación actual, momento en el que finaliza la suscripción. Por ejemplo, si un usuario compra una suscripción mensual y la cancela en el día 15 del ciclo, Google Play considerará válida la suscripción hasta el final del día 30 (u otro día, según el mes).

En algunos casos, es posible que el usuario podrá contactarse directamente contigo para solicitar la cancelación de una suscripción. En este caso y otros similares, puedes usar la API en el servidor para solicitar y cancelar directamente la suscripción del usuario desde tus servidores.

Importante: En todos los casos, deberás seguir ofreciendo el contenido adquirido por tus suscriptores durante todo el período de sus suscripciones mientras alguno de ellos tenga acceso. Eso significa que no deberás quitar contenidos mientras algún usuario tenga una suscripción activa relacionada con estos, incluso cuando esa suscripción concluya al final del ciclo de facturación actual. Como opción, podrás usar la API de reembolso y revocación para revocar la suscripción de cada suscriptor (uno por uno) y reembolsar sus pagos por las suscripciones. Quitar contenido al que un usuario aún tenga derecho de acceso derivará en sanciones. Lee el documento sobre políticas para obtener más información.

Desinstalación de apps

Cuando el usuario desinstale una app que incluya suscripciones compradas, la aplicación de Play Store notificará al usuario que existen suscripciones activas. Si el usuario opta por continuar con la desinstalación, la app se quitará, las suscripciones permanecerán activas y la facturación periódica continuará. El usuario puede regresar para cancelar las suscripciones asociadas en cualquier momento, en la pantalla My Apps en la app de Play Store. Si el usuario opta por cancelar la desinstalación, la app y las suscripciones permanecerán como antes.

Reembolso y revocación de suscripciones

Con las suscripciones, Google Play no ofrece una ventana de reembolso, por lo cual los usuarios necesitarán solicitar un reembolso. Podrán solicitar un reembolso desde la página My Orders en la Play Store, o contactarse directamente contigo.

Si recibes una solicitud de reembolso, puedes usar la Google Play Developer API o el Merchant Center para cancelar la suscripción, verificar que ya se haya cancelado o reembolsar el pago del usuario sin cancelarla. También puedes usar la Google Play Developer API para reembolsar y revocar la suscripción de un usuario. Si reembolsas y revocas una suscripción, la suscripción del usuario se cancela de inmediato y se reembolsa el pago más reciente del usuario por la suscripción. (Si deseas reembolsar más que el pago más reciente, puedes procesar reembolsos adicionales a través del Merchant Center).

Importante: En este momento no hay disponibles reembolsos parciales.

Políticas y procesamiento de pagos

En general, los términos de Google Play te permiten vender suscripciones integradas en la aplicación únicamente a través del procesador de pagos estándar: Google Payments. Para las compras de cualquier producto de suscripción, la tarifa de transacción es la misma que la de transacción para la compra de aplicaciones (30%).

En las apps publicadas en Google Play para las cuales se venden suscripciones se debe usar la facturación integrada a fin de gestionar la transacción, y no se pueden proveer vínculos a un flujo de compra fuera de la app o de Google Play (como el de un sitio web).

Para obtener información detallada sobre términos y políticas, consulta el documento sobre políticas.

Números de pedido para las suscripciones

Para ayudarte a rastrear transacciones relacionadas con una suscripción en particular, Google Payments brinda un número base de pedido del comerciante para todas las periodicidades de la suscripción, y denota cada transacción periódica añadiéndole un valor entero de la siguiente manera:

GPA.1234-5678-9012-34567 (número base de pedido);
GPA.1234-5678-9012-34567..0 (orderID de primera periodicidad);
GPA.1234-5678-9012-34567..1 (orderID de segunda periodicidad);
GPA.1234-5678-9012-34567..2 (orderID de tercera periodicidad).
...

Google Play proporciona el número de pedido como el valor del campo orderId del campo JSON INAPP_PURCHASE_DATA (en la V3) o la intent PURCHASE_STATE_CHANGED (en la V2).

Período de gracia para pagos rechazados

La Developer Console te permite establecer un período de gracia para suscripciones, por lo que puedes dar a tus suscriptores una posibilidad de actualizar sus métodos de pago si se rechaza un pago periódico. Esta opción es útil si tus suscriptores tienen una tarjeta de crédito vencida, si usaron una tarjeta prepaga para la suscripción o si cancelaron una tarjeta y no actualizaron su información de pago. Si deseas obtener más información sobre cómo establecer un período de gracia para los suscriptores, visita el tema Agregar suscripciones y cargos recurrentes en la Ayuda de Developer Console.

Para obtener más información sobre la forma en que la fijación de un período de gracia afecta a la información que muestra el método getBuyIntent(), consulta la tabla de campos INAPP_PURCHASE_DATA.

Estrategias de verificación de compra

En una situación típica, tu app verifica el estado de los pedidos para compras nuevas con el objetivo de asegurar que sean válidas antes de dar acceso al contenido adquirido.

Para verificar una compra, la app pasa el token de compra y otros detalles a tus servidores de backend, que los verifican directamente con Google Play mediante la Google Play Developer API. Si el servidor determina que la compra es válida, notifica a la app y otorga acceso al contenido.

Ten en cuenta que los usuarios desearán poder usar tu app en cualquier momento, incluso cuando no haya conexión de red disponible. Asegúrate de que en tu enfoque para la verificación de compras se contemplen los casos de uso sin conexión.

Google Play Developer API

Google Play ofrece una API basada en HTTP que te permite realizar tareas como:

  • consultar de manera remota la validez de una suscripción específica en cualquier momento;
  • cancelar una suscripción;
  • aplazar la siguiente fecha de facturación de la suscripción;
  • reembolsar el pago de una suscripción sin cancelar la suscripción;
  • reembolsar y revocar una suscripción.

La API se ha diseñado para usarse desde tus servidores de backend, como un método para gestionar las suscripciones de manera segura y extender e integrar las suscripciones con otros servicios.

Para obtener información completa, consulta Google Play Developer API.