In-App Billing v3 – No detecte reembolso

He seguido el entrenamiento sobre "In-App Billing v3" de Google. Puedo hacer una compra de un artículo, pero tengo un problema.

Https://developer.android.com/training/in-app-billing/index.html

He cancelado y reembolsado la compra pero la aplicación detecta la compra como verdadera. No puedo continuar probando mi aplicación porque siempre detecto como compré el artículo.

El único error que he encontrado en logCat es el siguiente:

[3687] InAppBillingService.logResponseBundle: El paquete no contiene un código de respuesta

Aparece después de lanzar mHelper.queryInventoryAsync (mGotInventoryListener).

¿Alguna idea?

Ps – esto sugiere que sólo toma tiempo para que el reembolso sea actualizado

http://code.google.com/p/marketbilling/issues/detail?id=88#makechanges

Pero no estoy convencido – me doy cuenta de que están cachando los datos de compra en el dispositivo, pero 24 horas es mucho tiempo …

Actualizado para agregar que más de 24 horas después de haber cancelado las transacciones de "prueba", esas cuentas aún tienen licencia.

Se actualizó de nuevo: después de 36 horas, la aplicación estaba TODAVÍA licenciada. ¡Desinstalé y reinstalé y todavía era licencia !!

Actualizado de nuevo! – He reinstalado de fábrica el dispositivo, he iniciado la sesión, he instalado la aplicación y no tenía licencia …

Y otra actualización – una respuesta de Google sugiere que los reembolsos se procesan "automáticamente", pero puede tomar hasta 72 horas para ser actualizado en el dispositivo – no hay otra ruta para detectar un reembolso, por lo que los jugadores se ponen hasta 3 días de cosas ' De forma gratuita 'si se reembolsan – erm, OK esto es In-App y no la compra de la aplicación, pero aún así, que parece un BIT excesivo?

La forma en que estoy trabajando alrededor de él es con un bloque de código que ignora las compras específicas que he hecho. Tengo una declaración de registro en el código que imprime la información de compra, entonces hardcode una lista en mi aplicación de purchaseTimes a ignorar. Es un desastre y tengo que re-compilar cada vez que quiero probar, pero no he encontrado una mejor manera todavía.

Después de haber esperado alrededor de 12 horas y haber intentado todo lo sugerido aquí y en hilos similares, todavía estaba enfrentando el mismo problema. Lo que el truco para mí fue el siguiente comando adb:

Adb shell pm clear com.android.vending

Usted puede negar fácilmente la compra para los propósitos de la prueba consumiendo el artículo.

Uso de la muestra Trivial Drive He añadido el siguiente código en MainActivity.java que "consumirá" la actualización premium cuando se inicie la aplicación:

// Do we have the premium upgrade? Purchase premiumPurchase = inventory.getPurchase(SKU_PREMIUM); mIsPremium = (premiumPurchase != null && verifyDeveloperPayload(premiumPurchase)); Log.d(TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM")); // dss added for test: Consume the premium upgrade for test purposes. boolean testConsume = true; if (mIsPremium && testConsume) { Log.d(TAG, "NOT FOR PRODUCTION: We have a premium upgrade. Consuming it."); mHelper.consumeAsync(inventory.getPurchase(SKU_PREMIUM), mConsumeFinishedListener); mIsPremium = false; } //dss end add 

Como bono se obtiene un tanque de cuartos gratis de gas cuando se consume la actualización sólo porque la muestra trata todo el consumo como gasolina en otros lugares. Buscar MainActivity para "Provisioning" para encontrar dónde.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.