Consumir compras antiguas Android IAB V3
Tengo un problema al probar mi aplicación. Tengo 2 artículos que el usuario puede comprar. Hace unos días no sabía que debía consumir las compras. Hoy recibo el código 7 (artículo ya poseído) cada vez que intento comprar uno de los artículos porque no lo consumí. ¿Qué puedo hacer para consumir la compra antigua?
AÑADIDO: Ambos elementos no se gestionan en la consola del desarrollador
- Lista oficial de países para la aplicación de facturación Android?
- ¿Cómo usar la Facturación en la aplicación con MonoDroid?
- Error al consultar el inventario: Error al actualizar el inventario
- Error al agregar la biblioteca de facturación en la aplicación
- En la aplicación de facturación V3
- Facturación inapp android
- Protección de la Libertad
- Prueba de facturación en la aplicación: "El editor no puede comprar este elemento"
- La facturación en la aplicación de Android devuelve el código de respuesta del servidor 2. ¿Qué significa?
- In-App Billing v3 - No detecte reembolso
- Pop la página de inicio de sesión de Google en caso de que no haya ningún usuario conectado
- Android inapp-billing - averiguar la versión de la API
- ¿Qué utilizar como carga útil del desarrollador en las API de facturación de Google In-App?
Traté de consumir con un símbolo equivocado. Este código me ayudó.
Bundle ownedItems = mService.getPurchases(3, context.getPackageName(), "inapp", null); int response = ownedItems.getInt("RESPONSE_CODE"); if (response == 0) { ArrayList<String> ownedSkus = ownedItems.getStringArrayList("INAPP_PURCHASE_ITEM_LIST"); ArrayList<String> purchaseDataList = ownedItems.getStringArrayList("INAPP_PURCHASE_DATA_LIST"); //ArrayList<String> signatureList = ownedItems.getStringArrayList("INAPP_DATA_SIGNATURE"); //String continuationToken = ownedItems.getString("INAPP_CONTINUATION_TOKEN"); for (int i = 0; i < purchaseDataList.size(); ++i) { try { String purchaseData = purchaseDataList.get(i); JSONObject jo = new JSONObject(purchaseData); final String token = jo.getString("purchaseToken"); String sku = null; if (ownedSkus != null) sku = ownedSkus.get(i); consume(sku, token, purchaseData); } catch (JSONException e) { e.printStackTrace(); } } }
Para consumir inapp producto que necesita obtener la compra de ese sku. Para eso primero necesita o consigue INVENTARIO de todos los productos o hace COMPRA ese producto exacto.
Por favor, compruebe el código a continuación que le puede ayudar a consumir productos que fueron pruchased antes.
public void consume(final String skuName) { mHelper.queryInventoryAsync(true, new IabHelper.QueryInventoryFinishedListener() { @Override public void onQueryInventoryFinished(IabResult result, Inventory inventory) { if (inventory.getSkuDetails(skuName) != null){ mHelper.consumeAsync(inventory.getPurchase(skuName), null); } } }); }
Gracias a las respuestas anteriores, tengo esta solt. Para cancelar todas las compras
import com.android.vending.billing.util.Inventory; import com.android.vending.billing.util.Purchase; public class BasePurchaseActivity { protected IabHelper billingHelper; ... /** * Means it will clear our the purchase history */ protected void consumeAllPurchases() { // You know your product ids Set<String> allProductIds = com.demo.myapp.AppMgr.getAllAppProductIds(); try { Inventory inventory = getInventory(); for (String curProdId : allProductIds) { Purchase purchase = inventory.getPurchase(curProdId); if (purchase != null) { billingHelper.consumeAsync(purchase, null); } } } catch (IabException iabEx) { iabEx.printStackTrace(); } }
- Desvinculación de un fragmento que no activa onSaveInstanceState ()
- La cookie de la webview de Android devuelve null