Carga útil para desarrolladores

La carga útil para desarrolladores se utilizó históricamente para diversos fines, por ejemplo, la prevención de fraudes y la atribución de compras al usuario correcto. Con las versiones 2.2 y posteriores de la biblioteca de Facturación Google Play, los casos de uso previstos anteriores que se basaban en la carga útil del desarrollador ahora se admiten totalmente en otras partes de la biblioteca.

Con esta compatibilidad, dimos de baja la carga útil para desarrolladores, comenzando con la versión 2.2 de la biblioteca de Facturación Google Play. Los métodos asociados con la carga útil del desarrollador dejaron de estar disponibles en la versión 2.2 y se quitaron en la versión 3.0. Ten en cuenta que tu app puede seguir recuperando la carga útil para desarrolladores de las compras realizadas con versiones anteriores de la biblioteca o mediante el AIDL.

Para obtener una lista detallada de los cambios, consulta las notas de la versión 2.2 de la biblioteca de Facturación Google Play y las notas de la versión de la biblioteca de Facturación Google Play 3.0.

Verificación de compras

A fin de garantizar que las compras sean auténticas y no falsificadas ni repetidas, Google recomienda usar el token de compra (obtenido del método getPurchaseToken() del objeto Purchase) junto con las API de Google Play Developer para verificar que las compras sean auténticas. Para obtener más información, consulta Cómo combatir los casos de fraude y abuso.

Atribución de compra

Muchas apps, especialmente los juegos, deben garantizar que se atribuya correctamente una compra al personaje/avatar del juego o al perfil de usuario dentro de la app que inició la compra. A partir la versión 2.2 de la Biblioteca de Facturación Google Play, tu app puede pasar identificadores de perfil y cuenta ofuscados a Google al iniciar el cuadro de diálogo de compra y mostrarlos al recuperar una compra.

Usa los parámetros setObfuscatedAccountId() y setObfuscatedProfileId() de BillingFlowParams y recupéralos con el método getAccountIdentifiers() del objeto Purchase.

Cómo asociar metadatos con una compra

Google te recomienda que almacenes los metadatos de una compra en un servidor de backend seguro que mantengas por tu cuenta. Esos metadatos de compra deben estar asociados con el token de compra obtenido a través del método getPurchaseToken del objeto Purchase. Para conservar esos datos, debes pasar el token de compra y los metadatos a tu backend cuando se llame al objeto PurchasesUpdatedListener después de realizar correctamente una compra.

Para garantizar que los metadatos estén asociados con las interrupciones del flujo de compra, Google te recomienda que almacenes los metadatos en tu servidor de backend antes de iniciar el cuadro de diálogo de compra y los asocies con el ID de cuenta del usuario, el SKU de la compra en cuestión y la marca de tiempo correspondiente.

Si se interrumpe el flujo de compra antes de que se llame al objeto PurchasesUpdatedListener, tu app descubrirá la compra una vez que se reanude y llame a BillingClient.queryPurchasesAsync(). Luego, podrás enviar los valores recuperados de los objetos getPurchaseTime(), getSku() y getPurchaseToken() de Purchase a tu servidor de backend para buscar metadatos, asociar los metadatos con el token de compra y seguir procesando la compra. Ten en cuenta que la marca de tiempo que almacenaste inicialmente no coincidirá exactamente con el valor del getPurchaseTime() del objeto Purchase, por lo que deberás compararlos de manera aproximada. Por ejemplo, puedes verificar si los valores se encuentran dentro de un cierto período de tiempo entre sí.