Los productos de compras únicas tienen un ciclo de vida más simple que los productos de suscripción, pero aún existen varios estados y eventos de transición que tu backend necesita para poder controlarlas de forma correcta.
Nuevas compras de productos únicos
Después de que el usuario complete el flujo de facturación, tu app puede ver información sobre la compra nueva de una de las siguientes maneras:
- Configura
Real-time developer notifications
y habilitaGet all notifications for subscriptions and one-time products
para recibir actualizaciones sobre el estado de las compras. - Implementa la interfaz
PurchasesUpdatedListener
deBillingClient
para recibir actualizaciones de compras automáticamente. - Llama al método
BillingClient.queryPurchasesAsync()
.
Después de recibir la compra nueva, usa el método getPurchaseState
o purchases.products.get in Play Developer API
para determinar el estado de pago de esa compra.
Notificaciones para desarrolladores en tiempo real
Cuando un usuario compra o cancela la compra de un producto único, Google Play envía un mensaje OneTimeProductNotification
. Para actualizar el estado de compra del backend, usa el token de compra proporcionado en el objeto OneTimeProductNotification
para llamar al método purchases.products.get
. Este método proporciona el estado de compra y consumo más reciente, según un token de compra.
Debes controlar las RTDN relacionadas con las transacciones en tu backend seguro.
Controla las transacciones completadas
Cuando un usuario completa la compra de un producto único, Google Play envía un mensaje OneTimeProductNotification
con el tipo ONE_TIME_PRODUCT_PURCHASED
.
Cuando recibas esta RTDN, procesa la compra como se describe en Procesa las compras de productos únicos en tu backend.
Controla las transacciones canceladas
Cuando se cancela la compra de un producto único, Google Play envía un mensaje OneTimeProductNotification
con el tipo ONE_TIME_PRODUCT_CANCELED
si configuraste la recepción de notificaciones para desarrolladores en tiempo real.
Por ejemplo, esto puede ocurrir si el usuario no completa el pago dentro del plazo requerido o si el desarrollador o la solicitud del cliente revoca la compra. Cuando tu servidor de backend reciba esta notificación, llama al método purchases.products.get
para obtener el estado de compra más reciente y, luego, actualiza el backend según corresponda, incluidos los derechos del usuario.
Si se reembolsa un producto único que se compró en el estado Purchased
, también se te informará mediante la API de Voided Purchases.
Procesa las compras de productos únicos en tu backend
Si detectaste una compra nueva a través de una RTDN de ONE_TIME_PRODUCT_PURCHASED
, o recibiste una notificación en la app a través de PurchasesUpdatedListener
o de la recuperación manual de compras en el método onResume()
de tu app, debes procesar la compra nueva. Te recomendamos que controles el procesamiento de compras en tu backend para mejorar la seguridad.
Sigue estos pasos para procesar una nueva compra única:
- Consulta el extremo
purchases.products.get
para obtener el estado de compra de un producto único más reciente. Para llamar a este método para una compra, necesitas elpurchaseToken
correspondiente desde tu app o desde la RTDN deONE_TIME_PRODUCT_PURCHASED
. - Llama a
getPurchaseState()
y asegúrate de que el estado de compra seaPURCHASED
. - Verifica la compra.
- Otórgale al usuario acceso al contenido. La cuenta de usuario asociada con la compra se puede identificar con el campo
obfuscatedExternalAccountId
depurchases.products.get
, si se configuró consetObfuscatedAccountId()
cuando se realizó la compra.- Para las compras de productos no consumibles, confirma la entrega del contenido mediante una llamada al método
purchases.products.acknowledge
. Para verificar que no se haya confirmado la compra con anterioridad, consulta el campoacknowledgementState
. - Si el producto es consumible, llama al método
purchases.products.consume
para marcar el artículo como consumido, de modo que el usuario pueda volver a comprarlo después de consumirlo. Este método también confirma la compra.
- Para las compras de productos no consumibles, confirma la entrega del contenido mediante una llamada al método
También existen métodos de confirmación de compras y consumo disponibles en la biblioteca de Play Billing que te permiten procesar compras de tu app, pero te recomendamos que controles el procesamiento en tu backend, si tienes uno, para realizar una implementación más segura.