En la aplicación de facturación, inventory.getPurchase es nulo en el dispositivo diferente que el pago se hizo

En mi usuario de la aplicación puede comprar la eliminación de anuncios, mantengo este elemento (no consumir). Así que tengo fragmento en mi actividad principal que comprueba si el usuario compró el artículo.

public class BillingInventoryFragment extends Fragment { // Helper billing object private IabHelper mHelper; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); initialiseBilling(); } private void initialiseBilling() { if (mHelper != null) { return; } // Create the helper, passing it our context and the public key to verify signatures with mHelper = new IabHelper(getActivity(), BillingUtils.getApplicationKey()); // Enable debug logging (for a production application, you should set this to false). mHelper.enableDebugLogging(true); // Start setup. This is asynchronous and the specified listener will be called once setup completes. mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { @Override public void onIabSetupFinished(IabResult result) { // Have we been disposed of in the meantime? If so, quit. if (mHelper == null) { return; } // Something went wrong if (!result.isSuccess()) { Log.e(getActivity().getApplicationInfo().name, "Problem setting up in-app billing: " + result.getMessage()); return; } // IAB is fully set up. Now, let's get an inventory of stuff we own. mHelper.queryInventoryAsync(iabInventoryListener()); } }); } /** * Listener that's called when we finish querying the items and subscriptions we own */ private IabHelper.QueryInventoryFinishedListener iabInventoryListener() { return new IabHelper.QueryInventoryFinishedListener() { @Override public void onQueryInventoryFinished(IabResult result, Inventory inventory) { // Have we been disposed of in the meantime? If so, quit. if (mHelper == null) { return; } // Something went wrong if (!result.isSuccess()) { Log.d(TAG, String.format("result not success, result = %s", result) ); return; } // Do your checks here... // Do we have the premium upgrade? Purchase purchasePro = inventory.getPurchase(BillingUtils.SKU_PRO); // Where BillingUtils.SKU_PRO is your product ID (eg. permanent.ad_removal) Log.d(TAG, String.format("Purchase pro = %s", purchasePro)); BillingUtils.isPro = (purchasePro != null && BillingUtils.verifyDeveloperPayload(purchasePro)); // After checking inventory, re-jig stuff which the user can access now // that we've determined what they've purchased BillingUtils.initialiseStuff(); } }; } /** * Very important! */ @Override public void onDestroy() { super.onDestroy(); if (mHelper != null) { mHelper.dispose(); mHelper = null; } } 

}

Todo funciona en un dispositivo, pero cuando lo probé en el segundo dispositivo:

 inventory.getPurchase(BillingUtils.SKU_PRO); 

Devuelve null.

Cuando intento comprar el artículo otra vez en este segundo dispositivo, no puedo porque lo poseo.

Si está seguro de que compró este artículo con éxito. Puede ser un problema relacionado con Gmail usado. Debe utilizar el mismo Gmail en los dos dispositivos porque Google está identificando a sus usuarios utilizando el Gmail registrado en el dispositivo.

  • Android: ¿Qué código de respuesta la facturación en la aplicación V3 devuelve en el tiempo de espera?
  • Android En la aplicación de facturación Phonegap 1.0
  • ¿El purchaseToken sigue siendo el mismo cuando se renueva una suscripción con Android In-App Billing V3?
  • Facturación en la aplicación: Inventario incorrecto; Hace que el usuario vuelva a comprar
  • No se puede realizar la compra en la aplicación de Android con la cuenta de prueba "El editor no puede comprar este elemento"
  • Prueba de facturación en la aplicación de Android Market con credenciales falsas de tarjetas de crédito
  • ¿Cómo calcular los ingresos potenciales de usar AdMob en la aplicación?
  • Hacer compras en la aplicación con una cuenta de Google Play distinta de la cuenta principal del dispositivo
  • ConsumerState de la API de desarrolladores de Google Play para Android
  • ¿Cómo proteger Google In-App Billing v3 contra la piratería de código?
  • Android IAB - Actividad destruida después de una compra exitosa
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.