supermercados supermercado para lista imprimir hacer google compras compartida bring basica apps app aplicaciones android in-app-purchase in-app-billing

android - supermercado - ¿Cómo obtener información separada sobre precios y divisas para una compra en la aplicación?



lista de compras supermercado para imprimir (7)

Aquí está mi solución :)

private static Locale findLocale(String price) { for (Locale locale : Locale.getAvailableLocales()){ try { Currency currency = Currency.getInstance(locale); if (price.endsWith(currency.getSymbol())) return locale; }catch (Exception e){ } } return null; }

Uso:

Locale locale = findLocale(price); String currency = Currency.getInstance(locale).getCurrencyCode(); double priceClean = NumberFormat.getCurrencyInstance(locale).parse(price).doubleValue();

Estoy implementando compras en la aplicación para una aplicación con soporte para varios países.

La API de la versión 3 de facturación en la aplicación afirma que :

No es necesario realizar ninguna conversión o formato de moneda: los precios se informan en la moneda del usuario y se formatean de acuerdo con su configuración regional.

Esto es cierto , ya que skuGetDetails() se encarga de todo el formato necesario. La respuesta incluye un campo llamado price , que contiene el

Precio formateado del artículo, incluyendo su signo de moneda. El precio no incluye impuestos.

Sin embargo, necesito el código de moneda ISO 4217 (recuperable si conozco la configuración regional de la tienda) y el precio real sin formato (óptimamente en una variable flotante o decimal) para poder realizar un procesamiento y análisis adicionales por mi cuenta.

Analizar el retorno de skuGetDetails() no es una idea confiable, porque muchos países comparten los mismos símbolos monetarios.

¿Cómo puedo obtener el código de moneda ISO 4217 y el precio sin formato de una compra dentro de la aplicación con la API de la versión 3 de facturación dentro de la aplicación?


La información completa se puede encontrar here , pero esencialmente en agosto de 2014 esto se resolvió con:

El método getSkuDetails ()

Este método devuelve los detalles del producto para una lista de ID de productos. En el paquete de respuesta enviado por Google Play, los resultados de la consulta se almacenan en una String ArrayList asignada a la clave DETAILS_LIST. Cada cadena en la lista de detalles contiene detalles del producto para un solo producto en formato JSON. Los campos en la cadena JSON con los detalles del producto se resumen a continuación.

price_currency_code ISO 4217 código de moneda para el precio. Por ejemplo, si el precio se especifica en libras esterlinas británicas, price_currency_code es "GBP".

price_amount_micros Precio en microunidades, donde 1,000,000 microunidades equivalen a una unidad de la moneda. Por ejemplo, si el precio es "€ 7.99", price_amount_micros es "7990000".


Muy simple. SKU devuelve el código de moneda (campo "price_currency_code"). Con ese código puedes recuperar el símbolo usando la clase de moneda. Ver el código adjunto:

String currencyCode = skuObj.getString("price_currency_code"); currencySymbol = Currency.getInstance(currencyCode).getSymbol();



Otra solución alternativa es asignar precios a los artículos para países con el mismo símbolo, de manera diferente en un centavo aproximadamente. Cuando recupera el precio del artículo de Google Play en la compra y sabe que el símbolo de moneda recuperado es uno que se usa en muchos países, es decir. PS Luego tiene un registro de diferentes precios en su servidor backend y correlaciona el precio de compra con un país específico.


Puede verificar esto. Los desarrolladores de Android en países seleccionados ahora pueden ofrecer aplicaciones para la venta en múltiples monedas a través de Google Wallet Merchant Center. Para vender sus aplicaciones en monedas adicionales, deberá establecer el precio de la aplicación en cada país / moneda. Una lista de países / monedas admitidos está disponible en nuestro centro de ayuda.

Si hace que una aplicación esté disponible en la moneda local, los clientes de Google Play solo verán la aplicación en venta en esa moneda. Se cobrará a los clientes en su moneda local, pero el pago se emitirá en la moneda establecida en su cuenta de Google Wallet Merchant Center.


Usted puede. Necesitas modificar SkuDetails.java como abajo.

Pasos:

  1. Compruebe su aplicación de muestra para la facturación en la aplicación.
  2. Modifique el archivo SkuDetails.java de la siguiente manera:

import org.json.JSONException; import org.json.JSONObject; /** * Represents an in-app product''s listing details. */ public class SkuDetails { String mItemType; String mSku; String mType; int mPriceAmountMicros; String mPriceCurrencyCode; String mPrice; String mTitle; String mDescription; String mJson; public SkuDetails(String jsonSkuDetails) throws JSONException { this(IabHelper.ITEM_TYPE_INAPP, jsonSkuDetails); } public SkuDetails(String itemType, String jsonSkuDetails) throws JSONException { mItemType = itemType; mJson = jsonSkuDetails; JSONObject o = new JSONObject(mJson); mSku = o.optString("productId"); mType = o.optString("type"); mPrice = o.optString("price"); mPriceAmountMicros = o.optInt("price_amount_micros"); mPriceCurrencyCode = o.optString("price_currency_code"); mTitle = o.optString("title"); mDescription = o.optString("description"); } public String getSku() { return mSku; } public String getType() { return mType; } public String getPrice() { return mPrice; } public String getTitle() { return mTitle; } public String getDescription() { return mDescription; } public int getPriceAmountMicros() { return mPriceAmountMicros; } public String getPriceCurrencyCode() { return mPriceCurrencyCode; } @Override public String toString() { return "SkuDetails:" + mJson; } }