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 notificationsy habilitaGet all notifications for subscriptions and one-time productspara recibir actualizaciones sobre el estado de las compras. - Implementa la
PurchasesUpdatedListenerinterfaz deBillingClientpara recibir automáticamente actualizaciones de compras. - Llama al
BillingClient.queryPurchasesAsync()método.
Después de recibir la compra nueva, usa el
getPurchaseState método o
purchases.productsv2.getproductpurchasev2 in Play Developer API
para determinar el estado de pago de la compra nueva.
Notificaciones para desarrolladores en tiempo real
Cuando un usuario compra o cancela la compra de un producto único, Google Play
envía un OneTimeProductNotification mensaje.
Para actualizar el estado de compra del backend, usa el token de compra que se proporciona en el
OneTimeProductNotification objeto para llamar al
purchases.productsv2.getproductpurchasev2
método. Este método proporciona el estado de compra y consumo más reciente, según un token de compra.
Cuando se cumple un pedido anticipado y su estado de compra cambia a PURCHASED, se envía una RTDN a tu cliente. Después de recibir la RTDN, procesa la compra del pedido anticipado como se describe en Procesa las compras de productos únicos en tu backend.
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 el cliente revoca la compra. Cuando el servidor de backend reciba esta notificación, llama al
purchases.productsv2.getproductpurchasev2
método 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 ONE_TIME_PRODUCT_PURCHASED
RTDN
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
purchases.productsv2.getproductpurchasev2extremo para obtener el estado de compra de un producto único más reciente. Para llamar a este método para una compra, necesitas elpurchaseTokencorrespondiente 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
obfuscatedExternalAccountIdcampo depurchases.productsv2.getproductpurchasev2, si se configuró consetObfuscatedAccountId()cuando la compra se realizó.- Para las compras de productos no consumibles, confirma la entrega del
contenido mediante una llamada al
purchases.products.acknowledgemétodo. Asegúrate de que la compra no se haya confirmado antes verificando elacknowledgementStatecampo. - Si el producto es consumible, marca el artículo como consumido llamando al
purchases.products.consumemétodo para 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
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.