Acabas de implementar la Facturación Play en tu app para Android o en tu app web progresiva, y tus usuarios ya pueden comprar tus bienes digitales. Ahora es el momento de implementar algunos componentes clave de la Facturación Play en tu servidor de backend.
API de Google Play Developer
La API de Google Play Developer tiene dos componentes: la API de Subscriptions and In-app Purchases y la API de Publishing. La API de Subscriptions and In-app Purchases consta de los siguientes recursos de REST para ayudarte a administrar productos y compras:
inappproducts: Administración de catálogos de suscripciones y productos integrados en la aplicaciónpurchases.products: Estado de compra de productos integrados en la aplicaciónpurchases.subscriptions: Estado y administración de la compra de suscripciones
Puedes usar la API de Google Play Developer directamente como una API de REST, o bien las bibliotecas cliente pueden ayudarte a comenzar a desarrollar rápidamente. Las bibliotecas cliente para todos los lenguajes admitidos se pueden encontrar aquí. Sigue la guía de introducción de la API de Google Play Developer para vincular tu proyecto de API y configurar los clientes de acceso a la API.
Enumera todos los productos integrados en la aplicación
Cuando consultes los detalles de productos disponibles en el frontend (en tu app para Android o app web progresiva), debes especificar la lista de IDs de productos. Puedes implementar esto en tu servidor de backend con el método inappproducts.list de la API de Play Developer, que mostrará todos los productos integrados en la aplicación y las suscripciones que creaste en Play Console. Asegúrate de verificar el status de cada producto y solo envía los que tengan active al cliente de tu app.
Verifica las compras antes de otorgar derechos
Una parte fundamental de la implementación de la Facturación Play en tu app para Android o app web progresiva es asegurarte de verificar las compras antes de otorgar derechos al usuario. Cuando le otorgas un derecho a un usuario, le das acceso a los beneficios o al contenido asociados con el elemento que compró. Dado que esto requiere el manejo de datos sensibles, debe realizarse en el servidor de backend.
La API de Google Play Developer proporciona los métodos purchases.products:get y purchases.subscriptions:get. Úsalos con los tokens de compra recuperados en la app o almacenados en tu servidor de backend para verificar que una compra sea legítima. Debes hacer un seguimiento de los tokens de compra en tu servidor de backend para verificar las compras adicionales y los derechos del usuario. Consulta la documentación de la Facturación Google Play sobre la verificación de compras para obtener más detalles sobre los pasos que debes seguir.
Compras directas desde la aplicación
Después de recibir el token de compra del cliente, tu backend debe llamar a la API de Google Play Developer y validar que aún no se haya consumido. El campo purchaseState de una compra válida es 1.
Si la compra es válida, el cliente debe confirmar la compra y otorgar el derecho después de recibir la respuesta del servidor.
Compras de suscripciones
Al igual que con la verificación de compras integradas en la aplicación, tu servidor de backend debe llamar a la API de Google Play Developer después de recibir el token de compra del cliente y validar que la suscripción siga siendo válida.
Tu cliente debe otorgar el derecho si el campo expiryTimeMillis de la suscripción es posterior a la hora actual.
También es un buen momento para verificar el campo linkedPurchaseToken y actualizar tu base de datos de suscripciones de forma adecuada para controlar las actualizaciones, las versiones anteriores y otros flujos de suscripción. En el resto de esta página, se proporcionarán más detalles.
Mantén actualizado el estado del backend
Si tu app está disponible en diferentes plataformas (que también pueden usar diferentes formas de pago), hacer un seguimiento de tus usuarios y sus compras en tu servidor de backend garantizará que puedan acceder a los mismos derechos en los dispositivos y las plataformas en los que usen tu app.
Esto puede ser tan simple como tener una base de datos en la que mantengas un registro de tus usuarios y sus derechos actuales. Luego, a medida que realicen compras o consuman sus derechos, actualiza el valor según corresponda. La próxima vez que accedan a tu app desde otra plataforma, podrás recuperar los derechos correspondientes desde tu backend para que el usuario pueda acceder a ella.
Cómo controlar los cambios de estado de la suscripción
Una suscripción puede pasar por varios cambios de estado durante su ciclo de vida, y debes asegurarte de responder a cada uno de ellos de manera adecuada. Obtén más información para administrar el ciclo de vida de la suscripción y mantener tu backend siempre actualizado.
Subscription linkedPurchaseToken
Como se describe en la documentación sobre suscripciones, cada nuevo flujo de compra de Google Play (compra inicial, actualización o cambio a una versión anterior) genera un nuevo token de compra. El campo linkedPurchaseToken permite reconocer cuando varios tokens de compra pertenecen a la misma suscripción.
Cada vez que verifiques una suscripción, tu backend debe comprobar si el campo linkedPurchaseToken está configurado. Si es así, el valor de ese campo representa el token anterior que ahora se reemplazó. Debes marcar de inmediato ese token anterior como no válido para que los usuarios no puedan usarlo para acceder a tu contenido.
Por ejemplo, cuando el backend recibe el token de compra A para la compra inicial, con un campo linkedPurchaseToken vacío, habilita el derecho para ese token. Más adelante, cuando el backend recibe el nuevo token de compra B después de la actualización, verifica el campo linkedPurchaseToken, ve que está configurado como A y, luego, inhabilita el derecho para el token de compra A.

Para obtener un análisis detallado de la implementación de linkedPurchaseToken, consulta Cómo implementar linkedPurchaseToken correctamente para evitar suscripciones duplicadas.
Notificaciones para desarrolladores en tiempo real
El método purchases.subscriptions:get de la API de Google Play Developer es la fuente de información confiable para administrar las suscripciones de los usuarios. Si administras el estado de tus suscriptores en un servidor de backend seguro, debes mantener su estado sincronizado con los servidores de Google. Sin embargo, la consulta frecuente de la API de Google Play Developer puede generar restricciones de cuota de la API y demoras en la recepción de notificaciones sobre acciones importantes del usuario (como la cancelación o la actualización de una suscripción).
Las notificaciones para desarrolladores en tiempo real (RTDN) son una función de la Facturación Google Play que envía a tu servidor una notificación instantánea cuando cambia el estado de derechos de un suscriptor (p.ej., suscripción comprada, suscripción cancelada, suscripción en espera). Con las RTDN, puedes mantener sincronizada tu base de datos de suscriptores solo respondiendo a estas notificaciones, en lugar de consultar la API de Google Play Developer con regularidad.
Tu servidor de backend recibirá un objeto SubscriptionNotification para los eventos que afecten el estado de la suscripción, como las renovaciones y las cancelaciones. Luego, llama a la API de Google Play Developer con el token de compra de la notificación para obtener el estado completo y actualizar tu propio estado de backend.
Para configurar RTDN en tu app, sigue estas instrucciones. Luego, debes configurar tu servidor de backend para que consuma estos mensajes.
Consulta la referencia completa de RTDN para obtener más información.