He intentado configurar la facturación en la aplicación para mi primera aplicación y he estado usando el sku android.test.purchased. La compra se realiza y me las arreglo para incluir el SKU en mi inventario, pero, como dice el título, nunca se llama a onIabPurchaseFinished.
Creo que puede tener algo que ver con este registro: "No se pudo guardar qué vista tiene el foco porque la vista enfocada com.android.internal.policy.impl.PhoneWindow$DecorView@406743d0 no tiene id". Eso aparece, justo antes de ir a Google Play. Aunque no estoy muy seguro de lo que eso significa ...
Compra de lanzamiento:
mHelper.launchPurchaseFlow(this, sku, 10001, mPurchaseFinishedListener, "");
Y el Oyente:
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
@Override
public void onIabPurchaseFinished(IabResult result, Purchase info) {
System.out.println("Purchase Finish heard something");
if (result.isFailure()) {
Log.d(TAG, "Error purchasing: " + result);
return;
} else{
Log.d(TAG,"Success!");
}
}
};
android
in-app-billing
AAAton
fuente
fuente
Respuestas:
Intente agregar esto a la actividad que llama
mHelper.launchPurchaseFlow(..)
:fuente
Acabo de descubrir otra cosa importante: ¡el requestCode que se usa para iniciar el flujo de compra tiene que ser> = 0!
Usé "new Random (). nextInt ()" para generar un requestCode aleatorio, y algunas veces funcionó, otras veces no. ahora descubrí en la siguiente documentación, que el requestCode no debería ser un número negativo:
http://developer.android.com/reference/android/app/Activity.html#startActivityForResult%28android.content.Intent,%20int%29
fuente
Tuve el mismo problema y tampoco se llamó a onActivityResult .
Inspirado por la respuesta de @ Ghulam, me di cuenta de que la actividad onActivityResult no llama automáticamente al onActivityResult del fragmento, así que tuve que hacerlo manualmente.
fuente
Debe llamar a protected void onActivityResult (); En su Actividad principal en lugar de MainActivity (Trivial Drive) desde donde está llamando a su MainActivity que es Trivial Drive Activity.
recibirá valores de código de resultado -1 si la compra se realiza correctamente, de lo contrario 0.
fuente
Estaba enfrentando el mismo problema y la solución aceptada ya estaba implementada, pero no podía decir qué estaba causando esto. El cambio a la nueva Biblioteca de facturación de Google Play 1.0 (lanzada el 19 de septiembre de 2017) solucionó el problema.
Espero que los siguientes enlaces ayuden a alguien que quiera implementar la nueva biblioteca:
Publicación del blog de Google sobre el lanzamiento
Video de youtube de Google
Play Billing Library Training Class
Ejemplo de Trivial Drive v2 de Google
Codelab de Play Billing Library publicado durante Google I / O 2017
Documentos de la biblioteca de facturación de Play
Referencia oficial para clases y métodos.
Notas de publicación
fuente