En la aplicación de facturación V3

Tengo un problema con In App Billing. Estoy utilizando la clase de ayuda de la muestra TrivialDrive.
Aquí es cómo lo implemento.

  1. Prensas del usuario Eliminar anuncios
  2. Ayudante de inicio
  3. Utilice Listener para detectar cuándo el asistente está configurado.
  4. Inventario de consultas
  5. Use Listener para detectar cuándo se completa
  6. Compruebe si ya se ha realizado la compra. Si es así, quitar anuncios y salir
  7. Si no, entonces launchPurchaseFlow para comprar.

Esto funciona bien en un dispositivo, sin embargo si un usuario compra en un dispositivo y luego lo intenta en otro dispositivo el segundo dispositivo funciona de la siguiente manera:

El ayudante se configura como de costumbre, y luego cuando comprueba el inventario, no encuentra ningún artículo comprado (entiendo que hay un retraso antes de esta actualización). A continuación, intenta comprar, pero dice el artículo ya comprado en la ventana de reproducción de Google. Esto estaría bien si pudiera detectar esto en código, pero vuelve al oyente que el usuario canceló la compra.

¿Hay alguna manera de detectar que el usuario ya ha comprado el artículo usando el purchaseFinishedListener ?

El código en el método handleActivityResult devuelve usuario cancelado

else if (resultCode == Activity.RESULT_CANCELED) {
logDebug("Purchase canceled - Response: " + getResponseDesc(responseCode));
result = new IabResult(IABHELPER_USER_CANCELLED, "User canceled.");
if (mPurchaseListener != null) mPurchaseListener.onIabPurchaseFinished(result, null);
}

He añadido la línea if (responseCode==BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED) result = new IabResult(BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED, "Success");

Prueba esto

IabHelper.QueryInventoryFinishedListener mGotInventoryListener = nuevo
IabHelper.QueryInventoryFinishedListener () {

 public void onQueryInventoryFinished(IabResult result, Inventory inventory) { ..................... if (inventory.hasPurchase(SKU_CONTENT)) { mHelper.consumeAsync(inventory.getPurchase(SKU_CONTENT), null); } } 

};

  • Android en la aplicación de facturación de la clave pública en el repositorio público
  • Inventory.getPurchase () devuelve siempre null aunque ya comprado
  • ¿Cómo actualizar / bajar las suscripciones en Android InAppBilling?
  • Prueba de facturación en la aplicación de Android Market con credenciales falsas de tarjetas de crédito
  • La facturación en la aplicación no funciona (su solicitud no se pudo procesar)
  • IInAppBillingService mostrar una advertencia - método getInterfaceDescriptor nunca se utiliza localmente - ¿Cómo eliminar?
  • Tarjeta de crédito para la prueba de Google Play
  • Actualización de una aplicación de Android que utiliza la facturación de aplicaciones
  • Cómo obtener datos de suscripción en la facturación de Android en la aplicación
  • API de facturación v3 IabHelper NullPointerException
  • IAB Error Ya poseiste este artículo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.