Cómo administrar suscripciones y compras únicas

Es posible que debas realizar acciones de administración en suscripciones o compras únicas como parte de las operaciones comerciales diarias. Por ejemplo, es posible que tu servicio de atención al cliente deba emitir reembolsos totales o parciales para los usuarios, o que debas revocar derechos en ciertos casos. Puedes administrar pedidos desde Play Console o, si quieres hacerlo desde tu propio sistema, puedes usar la API de Google Play Developer.

Cancelar suscripciones

Los usuarios o los desarrolladores pueden iniciar la cancelación de suscripciones.

Cancelaciones iniciadas por el usuario

Los usuarios pueden cancelar una suscripción a Google Play en cualquier momento a través de Play Store. Si corresponde, también debes proporcionar una opción para que los usuarios cancelen sus suscripciones en tu app y en tu sitio web.

La forma más sencilla de permitir que los usuarios cancelen sus suscripciones de forma voluntaria es proporcionar vínculos directos en tu app a Play Store, donde puedan ver y administrar sus suscripciones.

Cancelaciones iniciadas por el desarrollador

Como desarrollador, es posible que también debas activar cancelaciones desde tu backend. La API de purchases.subscriptions.cancel te permite cancelar la compra de una suscripción. Por ejemplo, puedes usar este método para desactivar un servicio heredado. La cancelación de una suscripción no genera un reembolso, y el usuario conserva el acceso hasta el final del período de facturación actual.

Este método te permite especificar los siguientes tipos de cancelaciones en el parámetro del cuerpo de la solicitud cancellationType:

  • USER_REQUESTED_STOP_RENEWALS: Cancela la suscripción como si los usuarios la hubieran cancelado desde Play Store. Los pagos en cuotas continuarán durante el resto del período de compromiso actual. Desde Play Store, los usuarios pueden restablecer la suscripción antes de que venza o volver a suscribirse después de que venza si está habilitada para el plan básico.

  • DEVELOPER_REQUESTED_STOP_PAYMENTS: Cancela la suscripción y evita pagos futuros. Los usuarios no pueden restablecer la suscripción ni volver a suscribirse a ella desde Play Store, pero puedes permitirles que se vuelvan a suscribir dentro de tu app.

Permite que los usuarios restauren suscripciones no vencidas

En algunas situaciones, puede ser útil permitir que los usuarios restablezcan suscripciones no vencidas desde el centro de suscripciones de Play después de que hayas activado la cancelación como desarrollador. Por ejemplo, es posible que quieras proporcionar un flujo de cancelación personalizado en la app. Según tu lógica de negocios, puedes decidir qué cancelaciones activadas desde tu backend pueden restablecer los usuarios.

Para indicar que un usuario puede restablecer la cancelación, envía una solicitud POST a la API de purchases.subscriptions.cancel y establece el parámetro de solicitud cancellationType en el valor USER_REQUESTED_STOP_RENEWAL.

Ejemplo:

  • Token de compra de la suscripción 1a2b3c4d5e6f7g8h9i0j
  • Nombre del paquete de la aplicación com.your.app
  • ID de suscripción your-subscription-product

Solicitud HTTP POST:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptions/your-subscription-product/tokens/1a2b3c4d5e6f7g8h9i0j:cancel

Cuerpo de la solicitud:

{
  "cancellationType": "USER_REQUESTED_STOP_RENEWAL"
}

Permite que los usuarios se vuelvan a suscribir a suscripciones vencidas

Para permitir que se vuelva a suscribir a una suscripción vencida, debes habilitar la opción Volver a suscribirse en el plan básico de la suscripción y, luego, cancelar la suscripción estableciendo el parámetro cancellationType en el valor USER_REQUESTED_STOP_RENEWAL.

Permite que los usuarios se vuelvan a suscribir solo en tu aplicación

Si estableciste el parámetro cancellationType en DEVELOPER_REQUESTED_STOP _PAYMENTS o no lo estableciste, los usuarios no podrán restablecer su suscripción desde el centro de suscripciones de Play.cancellationType Sin embargo, los usuarios pueden volver a registrarse para obtener la suscripción a través de tu app si es necesario.

Esta acción activa una notificación para desarrolladores en tiempo real SUBSCRIPTION_CANCELED. Controla estas cancelaciones como se describe en Cancelaciones.

Cómo aplazar la facturación

Puedes extender el período de acceso de una suscripción con el método subscriptionsv2.defer. Cuando aplazas una suscripción con complementos, todos los elementos de la suscripción se aplazan por la misma duración. Durante el período de diferimiento, el usuario sigue suscrito a tu contenido, pero no se le cobra por el tiempo adicional. Cuando difieres la facturación de una suscripción, la información de estado se actualiza según corresponda y se refleja en el campo expiryTime de la información de estado de la compra:

  • En el caso de las suscripciones recurrentes activas, la facturación diferida extiende la próxima fecha de renovación.
  • En el caso de los planes prepagados, la facturación diferida extiende la fecha de vencimiento.

Estos son algunos ejemplos de cómo puedes usar la facturación diferida:

  • Ofrecer a los usuarios acceso sin costo como una oferta especial, por ejemplo, dar una semana gratis a los suscriptores existentes por completar una encuesta de comentarios
  • Brinda a los clientes acceso sin costo como una acción de atención al cliente, por ejemplo, después de una interrupción prolongada que podría haber afectado su capacidad para usar tu servicio.

La facturación puede diferirse de tan solo un día y hasta un año por llamada a la API. Para posponer aún más el final del derecho, vuelve a llamar a la API antes de que llegue la nueva fecha de vencimiento.

Esta acción activa una notificación para desarrolladores en tiempo real SUBSCRIPTION_DEFERRED. Consulta Cómo aplazar la facturación de un suscriptor en Acerca de las suscripciones para obtener información sobre cómo controlar estos eventos.

Ejemplo:

  1. El servicio de transmisión FitnessGoals quiere publicar una promoción para fomentar el ejercicio regular en febrero.

  2. Deciden ofrecer un mes adicional de servicio a cualquier suscriptor que haga ejercicio con FitnessGoals al menos 10 veces durante el mes de febrero.

  3. Hacen un seguimiento de los resultados del desafío y, el 1 de marzo, llaman al método subscriptionsv2.defer para cada compra de suscripción activa que pertenezca a los usuarios que completaron el desafío en febrero.

  4. Estos usuarios obtienen el beneficio de un mes completo adicional de videos de ejercicios regulares sin costo, y les cuentan a todos sus amigos cómo FitnessGoals los ayuda a mantenerse saludables.

Emitir reembolsos y revocaciones

Hay muchas situaciones en las que es posible que desees emitir un reembolso por una suscripción o compra única, o revocar el acceso a ellas.

Cómo reembolsar un pedido por completo según su ID

Con la API de orders.refund, puedes emitir reembolsos totales para cualquier pedido dentro de los tres años posteriores a la compra. El método orders.refund recibe un parámetro de revocación que indica si se debe revocar el acceso además de proporcionar el reembolso.

Si emites una revocación con la llamada de reembolso para la compra de una suscripción, esta se cancelará de inmediato y se activará una notificación para desarrolladores en tiempo real SUBSCRIPTION_REVOKED. Lee la guía de administración del ciclo de vida de las suscripciones, sección Revocaciones, para obtener información sobre cómo controlar estos eventos.

Ejemplo:

  1. Para celebrar el comienzo de la nueva Copa del Mundo, la app de deportes electrónicos Football-Not-Soccer decide sortear camisetas virtuales gratuitas para todos los usuarios que compren kits de equipos nuevos en las primeras 24 horas.

  2. Football-Not-Soccer usa la API de orders.refund sin pasar un parámetro de revocación para reembolsar las compras de camisetas a los ganadores.

Revoca y reembolsa una suscripción por token de compra

En algunos casos de uso, es posible que debas revocar el acceso a la suscripción de un usuario y proporcionar un reembolso. La Facturación Play ofrece métodos de revocación, incluidos reembolsos totales y prorrateados, a través de la API de subscriptionsv2.revoke. Con este extremo, puedes especificar revocationContext para determinar cómo se calcula el reembolso.

Esta acción activa una notificación para desarrolladores en tiempo real SUBSCRIPTION_REVOKED. Tu app debe controlar estas cancelaciones como se describe en Revocaciones.

Ejemplo:

  • Compra con el token de compra 1a2b3c4d5e6f7g8h9i0j
  • Aplicación con el nombre de paquete com.your.app
  • Intención de emitir un reembolso prorrateado

Solicitud HTTP POST:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke

Cuerpo de la solicitud:

{
  "revocationContext": {
    "proratedRefund": {}
  }
}

Reembolsos totales

Si necesitas cancelar una suscripción y reembolsar el importe total del período de facturación actual, emite un reembolso total. Usa la función purchases.subscriptionsv2.revoke y establece "fullRefund": {} como el tipo de reembolso.

Ejemplo:

  1. María tiene una suscripción de 30 días con renovación automática al plan mensual de transmisión de SuperMovies. María tuvo algunos problemas técnicos que le impiden acceder al contenido. Se comunica con el equipo de atención al cliente el día 3 de su ciclo de facturación y afirma que nunca obtuvo acceso a la suscripción.

  2. El servicio de atención al cliente encuentra los detalles de la compra de la suscripción de María en su sistema y activa una llamada a purchases.subscriptionsv2.revoke para solicitar un reembolso total.

  3. El servicio de atención al cliente le dice a María que debería recibir el 100% del precio de su suscripción como reembolso y que ya no está suscrita al plan.

Cómo prorratear reembolsos

Si necesitas cancelar una suscripción y reembolsar parcialmente el tiempo restante del derecho, emite un reembolso prorrateado. Usa la función purchases.subscriptionsv2.revoke y establece "proratedRefund": {} como el tipo de reembolso.

Ejemplo:

  1. María tiene una suscripción de 30 días con renovación automática al plan mensual de transmisión de SuperMovies. Ha usado el servicio con satisfacción durante un tiempo. María se comunica con el servicio de atención al cliente el día 15 de su ciclo de facturación y le informa que se mudará al extranjero y que no podrá usar el servicio a partir del día siguiente.

  2. El servicio de atención al cliente localiza los detalles de la compra de la suscripción de María en su sistema y activa una llamada a purchases.subscriptionsv2.revoke para solicitar un reembolso prorrateado.

  3. El servicio de atención al cliente le dice a María que debería recibir un reembolso de aproximadamente el 50% del precio de la suscripción y que el acceso al servicio se canceló de inmediato.