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
- ¿Se ha documentado la diferencia de nivel de API entre Google Checkout y Android Market?
- Vida del correo electrónico enmascarado de Android Market
- ¿Por qué la facturación directa del operador no funciona con ciertas compañías para las compras de suscripciones en la aplicación de Google Play?
- Compra de Android en la aplicación
- Google checkout no está disponible en mi país, ¿cómo puedo publicar las aplicaciones pagadas en GooglePlay?
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?
- Las órdenes de Google Play realizadas mediante la facturación en la aplicación no se pueden cargar
- ¿Cómo verificamos el recibo de facturación de Android en la aplicación en el lado del servidor?
- ¿Cómo dar (ya comprado) la aplicación de Android al cliente como un regalo?
- ¿Puedo obtener el ID de pedido de Google Checkout para una aplicación Android de la propia aplicación?
- ¿Soporta Android el modo de pago en la aplicación a través de PayPal?
- Android 2.2 SDK - Inseguro JavaScript intenta acceder al marco con la URL - Google Checkout
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.