Android en la facturación de la aplicación … ¿Por qué hay información contradictoria?

Yo, como tantos otros, estoy tratando de probar mis compras en aplicaciones después de verificar que las respuestas estáticas están funcionando. Pero al leer los documentos, los posts y las respuestas, nada parece sumar. Y estoy muy frustrado.

Mi objetivo final es averiguar si puedo hacer las pruebas sin ser cargado.

Este documento dice que puedo – enlace

Una vez autorizados con el acceso de prueba, los usuarios pueden cargar lateralmente la aplicación y probar el flujo de merchandising, compra y cumplimiento completo de sus productos. Las compras de prueba son pedidos reales y Google Play los procesa de la misma manera que otros pedidos. Cuando se completan las compras, Google Play impide que los pedidos vayan al procesamiento financiero , garantizando que no se realicen cargos a las cuentas de usuario y cancelen automáticamente las órdenes completadas después de 14 días.

Y el mismo enlace

Durante una compra de prueba, los usuarios pueden probar el flujo real de merchandising, compra y cumplimiento en su aplicación. Durante la compra, el elemento inapp se muestra como un elemento normal con un precio real. Sin embargo, Google Play marca las compras de prueba con un aviso en el centro del diálogo de compra, para facilitar la identificación

Pero entonces en esta página, se dice – enlace

Inicie sesión en el dispositivo de prueba mediante una cuenta de comprobador. Pruebe su aplicación de facturación integrada en la aplicación mediante la compra de algunos elementos y corrija los problemas que encuentre. Recuerde devolver las compras si no desea que los probadores se carguen realmente!

WTF … así que alguien sabe? ¿Puede hacer pruebas sin ser cargado? Y si es así, ¿cómo?

Si está utilizando En la versión 3 de facturación de aplicaciones, simplemente puede utilizar el producto id = "android.test.purchased" . Es un producto ficticio y no debe agregarlo en la consola de desarrollo. Usted puede comprar ese producto sin ningún cargo.

Androide comprado

Cuando realiza una solicitud de facturación en la aplicación con este ID de producto, Google Play responde como si hubiera comprado un artículo correctamente. La respuesta incluye una cadena JSON, que contiene información de compra falsa (por ejemplo, una ID de orden falsa). En algunos casos, la cadena JSON está firmada y la respuesta incluye la firma para que pueda probar su implementación de verificación de firma utilizando estas respuestas.

Espero que te ayude.

Sí: puede realizar compras de prueba, que no implican pago alguno, para los artículos reales (SKUs) que haya definido en la consola. Acabo de hacer esto con éxito.

Contrariamente al consejo dado en la respuesta actualmente aceptada, no hay necesidad de usar el SKU ficticio android.test.purchased como lo haría con la prueba estática.

El OP cita este párrafo:

Durante una compra de prueba, los usuarios pueden probar el flujo real de merchandising, compra y cumplimiento en su aplicación. Durante la compra, el elemento inapp se muestra como un elemento normal con un precio real. Sin embargo, Google Play marca las compras de prueba con un aviso en el centro del diálogo de compra, para facilitar la identificación

Esto, hasta ahora, es correcto y está de acuerdo con lo que he podido lograr.

Pero el siguiente párrafo del OP cita:

Inicie sesión en el dispositivo de prueba mediante una cuenta de comprobador. Pruebe su aplicación de facturación integrada en la aplicación mediante la compra de algunos elementos y corrija los problemas que encuentre. Recuerde devolver las compras si no desea que los probadores se carguen realmente!

Esto, en lo que a mí respecta (en particular la última oración) no es correcto.

Lo que puede hacer es según el primer párrafo. Es decir, siempre y cuando la cuenta de prueba se añada a la consola como probador, entonces al intentar realizar una compra, el diálogo (que muestra el precio, etc.) también debería tener una cadena especial a través del centro de la misma Como se menciona en el primer párrafo) declarando "Esta es una orden de prueba, no se le cobrará".

Sin embargo, para realmente hacer que el trabajo, también es necesario para el APK real que el probador (o dispositivo de prueba) está utilizando para ser uno que se carga en el canal alfa.

Por lo tanto, los pasos que había tomado eran los siguientes:

  1. Cree un grupo de Google separado con el fin de realizar pruebas de canal alfa.

  2. Agregue su cuenta de Gmail de usuario de prueba de IAP a ese grupo.

  3. Cargue un APK (exportado y firmado con certificado de liberación) con el código de compra en la aplicación al canal alfa.

  4. Espera quizá una o dos horas para que la construcción alfa se active.

  5. Mientras tanto, configure un dispositivo de prueba separado con sólo la cuenta de prueba de Gmail configurada en ella.

  6. Opte por la prueba de canal alfa navegando a la URL de admisión en el dispositivo de prueba mientras está conectado como usuario de prueba.

  7. Inicie sesión en Play con esa cuenta del probador e instale la aplicación desde Play. En este punto (o después de una hora o dos) el último alpha que subiste debe ser el que está instalado.

  8. Intente realizar una compra. Cuando el diálogo aparece con el precio, debe tener un adicional "Esto es una orden de prueba, no se cargará" cadena a través de él.

De hecho, para ser completamente preciso, el dispositivo de prueba no necesariamente tiene que haber tenido el APK alfa instalado desde Play. De mis pruebas, lo importante es que tienes un APK cargado como alfa y que el APK que estás ejecutando en el dispositivo de prueba tiene el mismo número de versión. Además, el usuario de prueba debe ser elegido para construir alfa y agregado como probador en la Consola (como se indicó anteriormente). Acabo de exportar otra versión ajustada de mi APK y cargado en mi dispositivo de prueba con adb install , y todavía puedo intentar compras de SKUs reales con el mensaje "… no se le cobrará".

Tienes que consumir una vez comprado.

 consume.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Thread t = new Thread(new Runnable() { @Override public void run() { String purchaseToken = "inapp:" + getPackageName() + ":android.test.purchased"; try { Log.d("","Running"); int response = mService.consumePurchase(3, getPackageName(), purchaseToken); if(response==0) { Log.d("Consumed","Consumed"); }else { Log.d("","No"+response); } }catch (RemoteException e) { Log.d("Errorr",""+e); } } }); t.start(); } }); 
  • InAppBilling V3 - "purchaseData" y "dataSignature" son nulos al comprar un artículo de suscripción
  • Métodos alternativos de compra en la aplicación para Android
  • ¿Cómo obtener el ID de USUARIO de Google (no el ID del dispositivo) de seguro?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.