Google Play Advertencia Implementación incorrecta de la facturación de Google Play inApp

Acabo de recibir el siguiente correo electrónico de Google Play

'Hola Desarrollador de Google Play,

Detectamos que las aplicaciones que aparecen al final de este correo electrónico están invocando el servicio de facturación en la aplicación sin establecer un paquete de destino para la intención. Esto puede permitir a un paquete malicioso omitir el sistema de facturación Play Store y acceder a los artículos que no se han comprado.

Próximos pasos

Si está utilizando IabHelper, comience por usar el SDK más reciente. Si está invocando manualmente el servicio de facturación en la aplicación, asegúrese de que está llamando a Intent.setPackage ("com.android.vending") en cualquier intención de "com.android.vending.billing.InAppBillingService.BIND". Inicie sesión en su consola de desarrolladores y envíe la versión actualizada de su aplicación. Vuelve a revisar después de cinco horas: mostraremos un mensaje de advertencia si la aplicación no se ha actualizado correctamente. '

No estoy seguro de cuál es la solución para este problema. ¿Puede alguien decir dónde especificar el código? ¿Está en alguna parte en la clase de Java o el manifiesto?

Recibí la misma advertencia hace unos días y ya estaba configurando el paquete para el intento como este:

Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND"); serviceIntent.setPackage("com.android.vending"); bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE); 

El problema ha desaparecido al actualizarse a las últimas versiones de Google Play Services y orientarse a Lollipop (5.1) en lugar de KitKat (4.4) … si utilizas cualquier Apis de Google Play, asegúrate de actualizarlas a las versiones más recientes y con suerte eso lo arreglará para usted también.

También hemos recibido esta alerta, y hemos comprobado nuestros apks. Encontramos que la versión antigua de Google-Play-Service.jar parece utilizar la intención de "com.android.vending.billing.InAppBillingService.BIND", sin definir setPackage.

También hemos comprobado la última versión de Google-Play-Service.jar y ésta estaba bien, así que te recomendamos que revises tu biblioteca.

Busque en su repositorio de código completo la siguiente instrucción de código.

 Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND"); 

Dondequiera que haya utilizado la intención anterior, no olvide añadir este código a continuación serviceIntent.setPackage("com.android.vending");

Había dos ocurrencias de la intención antedicha en mi base de código entera, una estaba en el archivo de Java de IabHelper eran si u utiliza el último en la facturación de la aplicación sdk, esta declaración sería agregada ya, Otra ocurrencia, utilicé esta intención para comprobar si la facturación de InApp servicio estaba disponible, me he olvidado de agregar el serviceIntent.setPackage("com.android.vending"); , una vez que me di cuenta de que fuera y actualizado mi aplicación en la consola de desarrollo, el mensaje de advertencia se eliminó después de unas horas.

Debe actualizar sus archivos IabHelper con el último SDK de:

https://github.com/googlesamples/android-play-billing/tree/master/TrivialDrive/app/src/main/java/com/example/android/trivialdrivesample/util

Al sobrescribir archivos antiguos, Eclipse o Android Studio mostrará errores y tendrá que solucionarlos, por ejemplo, agregar try catch o agregar un parámetro a la función queryInventory.

Recuerde que debe actualizar el nombre del paquete en archivos nuevos si lo ha cambiado.

EDIT: También finalmente necesito actualización google_play_services.jar lib incluido en mi proyecto. Después de actualizar esta alerta de notificación se ha ocultado. Estaba usando un lib de servicio de juegos de google antiguo. Ahora estoy usando la versión rev.

La corrección será en su Java. Busque en su base de código un Intent con la acción "com.android.vending.billing.InAppBillingService.BIND" , pasada al constructor o establecida a través de Intent.setAction() . Antes de llamar a bindService() con esa intención, debe establecer explícitamente el paquete a través de Intent.setPackage() .

Aquí está el código de ejemplo de Google como referencia: https://github.com/googlesamples/android-play-billing/blob/master/TrivialDrive/app/src/main/java/com/example/android/trivialdrivesample/util/IabHelper. java # L296

Hay tres puntos para resolver este problema.

  1. Encuentre com.android.vending.billing.InAppBillingService.BIND en sus códigos. Deja que cada Intención a esta llamada el método Intent.setPackage(“com.android.vending”).
  2. Actualizar SDK de IabHelper .
  3. Actualice el proyecto de biblioteca del servicio de Google Play. Asegúrese de que estas cosas se hacen correctamente. Cada punto desatado conduce a este problema. Si el problema sigue existiendo, tal vez haya algo malo con otros frascos en su proyecto.

Recibí la misma advertencia. Ya estaba configurando el paquete al vincular el InAppBillingService, pero encontré que estaba comprobando si el InAppBillingService existe así:

 boolean inAppBillingAvailable = !getPackageManager().queryIntentServices(new Intent("com.android.vending.billing.InAppBillingService.BIND"), 0).isEmpty(); 

Asegúrese de que también está configurando el paquete aquí:

 boolean inAppBillingAvailable = !getPackageManager().queryIntentServices(new Intent("com.android.vending.billing.InAppBillingService.BIND").setPackage("com.android.vending"), 0).isEmpty(); 

Finalmente logré resolver esto. Primero había actualizado IabHelper, pero eso no ayudó. Entonces noté que una compilación de dependencias 'com.google.android.gms: play-services: 6.1.71' en build.gradle. Cambié esto a com.google.android.gms: play-services: 9.4.0. Esto estaba causando muchos errores de compilación. Pero, entonces, en lugar de usar la versión 9.4.0 de play-services, usé los servicios google individuales de la versión 9.4.0. En mi caso sólo es com.google.android.gms: play-services-auth: 9.4.0 y com.google.android.gms: play-services-drive: 9.4.0. Esto sólo da algunos errores de compilación que fijo en el código. Esto, entonces empujó en google jugar como alfa, esperó 2 días. La alerta de advertencia no se abrió para la versión que subí.

Gracias.

Edit: No creo que tengamos que cambiar IabHelper.java siempre y cuando se establezca setPackage ("com.android.vending"). Volví a invertir IabHelper.java, y subí una compilación sólo con la versión 9.4.0 de los servicios play-services-drive y play-services-auth. No lanzó advertencia.

No probó esta solución, pero puede probarla: reemplace serviceIntent.setPackage("com.android.vending"); con serviceIntent.setPackage("com.android.vending.billing.InAppBillingService.BIND"); en https://github.com/googlesamples/android-play-billing/blob/master/TrivialDrive/app/src/main/java/com/example/android/trivialdrivesample/util/IabHelper.java#L297 o en cualquier lugar que tenga cosa del setPackage. Aclamaciones.

ACTUALIZACIÓN : Actualizar la biblioteca de servicios de Google Play, funcionó para mí. Aclamaciones.

Tuve este problema y no podía permitirme la actualización de nuestro viejo oleoducto basado en eclipse. Así que, básicamente, decompiled la biblioteca del servicio de Google Play, corrigió las vulnerabilidades en eb.java y dx.java, recompilé esos dos archivos y los puso en el archivo JAR original. Esto se explica en mi blog .

Todas las respuestas son correctas. Lo que hice fue actualizar los servicios de Google Play y el ayudante de IAB y en lugar de usar IAB ayudante sed el método descrito en google en la compra de aplicaciones tutorial y fijó las notificaciones.

  • ¿Cómo saber si una aplicación se instala desde google play o side-load?
  • ¿Has pagado la aplicación de Android gratis durante una semana?
  • Tamaños de captura de pantalla para publicar la aplicación android en Google Play
  • ¿Es posible conocer la fuente (por ejemplo, Google Play) de la aplicación para Android?
  • Configuración de compatibilidad de Android en AndroidManifest.xml
  • ¿Qué debo usar para "Distinguished Name" en nuestro Keystore para Android Market
  • Evite el filtrado de Android Market en el uso opcional de la ubicación
  • Política de privacidad de la aplicación para Android
  • Abrir aplicación en Google Play desde un enlace de redireccionamiento
  • Publicar versión beta en el mercado de Android
  • Cómo arreglar la representación lenta (vitales de Android)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.