2012-02-22 9 views
29

Tengo una aplicación de Android que usa la compra integrada en la aplicación que atiende a un público internacional, por lo que espero pagos en diferentes monedas. Por supuesto, me gustaría mostrar los artículos para comprar con la moneda local del usuario, pero realmente no sé cómo.Android Market In-App-Purchase: cómo obtener la moneda que pagará un usuario?

Usar la región o el idioma de un usuario parece ser un mal indicador, ya que la moneda parece depender de la región de la cuenta de Market que el usuario esté utilizando y no de la configuración del dispositivo.

¿Cómo puedo saber en qué moneda pagará un usuario?

Gracias.

+8

Teniendo el mismo problema/necesidad. Queremos poder mostrarles a los artículos de la aplicación su precio. – Peterdk

Respuesta

21

A partir de IAB Version 3, los detalles de SKU para el elemento adquiribles incluyen un precio formato, que incluye la moneda que el usuario pagaría en (la moneda correspondiente a su tienda de Google Play):

enter image description here algunos ejemplos de valores de price (no de un verdadero SKU):

  • 3,99 €
  • 2 £.99
  • $ 4,99

EDITAR: He actualizado la tabla de detalles SKU, que ahora incluye información sobre el campo price_currency_code.

+0

Jippieh! ¿Sabes cuándo entró en vigencia el IAB v3? – janpio

+0

TBH, no sé :) Me alegra que esto resuelva tu solución. Sin embargo, en mi humilde opinión, la solución que el equipo de Android ha proporcionado está lejos de ser ideal: proporcionan una cadena formateada y, por separado, un campo currencyCode que contiene el código ISO de la moneda (por ejemplo, USD, AUD, EUR). No sé por qué no proporcionan una configuración regional adecuada. Además, la [documentación de IAB v3] (http://developer.android.com/google/play/billing/billing_reference.html#getSkuDetails) no se actualiza con estos nuevos campos. Eche un vistazo a la [cuestión] relacionada (https://code.google.com/p/marketbilling/issues/detail?id=93) para ver su progreso –

+0

Buen punto. Destacó el problema. – janpio

3

No me gustaría una idea tan buena, ya que la facturación en la aplicación no es manejada por su usted, es manejada por el mercado. Simplemente escriba el precio en dólares o euros y deje que el usuario vea la compra en su propia moneda en la página de salida.

http://developer.android.com/guide/market/billing/index.html

+0

Bueno, no creo que mostrar los precios sea una buena idea. No encontré nada en la documentación de Android sobre los problemas de i18n con la facturación. – janpio

+0

Acepto que dejar que el usuario elija una moneda que Google Play simplemente ignorará es una mala idea. El mayor problema con el pago de Google Play en este momento es que no me dice en qué moneda está el precio. Simplemente muestra un símbolo de moneda. Entonces, si mi aplicación solo muestra el precio en USD con un mensaje de "precios locales se mostrarán al momento del pago", cuando van a la caja si su moneda también se muestra con $ sign no tienen idea de si estoy tratando de sacar un rápido uno y cobrarles más o si solo muestra el precio del $ local. (Ejemplo: NZ $ valen menos que USD). – ChrisJD

-3

usar Quizás el defecto de configuración regional del dispositivo?

String locale = Locale.getDefault().toString();

Posteriormente, se podría hacer una comparación fuera de eso.

¡Solo una idea!

+3

Eso es lo que quise decir con "la región o el idioma de un usuario parece un mal indicador". Será correcto en muchos casos, pero la moneda de pago no está vinculada al dispositivo, sino a la cuenta de Market (creo). Si cambio mi idioma, aún pago en EUR porque soy de Alemania y Google lo sabe. – janpio

+0

@JanP .: Estoy buscando una salida donde pueda obtener el precio que pagué en la billetera de Google. Si tiene alguna entrada, por favor comparta. Eso realmente ayudaría. – Amz

5

Es algo difícil de hacer ya que la tasa de cambio que usa el mercado para procesar la transacción puede fluctuar entre la visualización del precio y la compra del usuario. Me atrevería a decir que Google preferiría que no estuvieras haciendo esto, ya que puede provocar que los clientes te griten/porque dijiste $ 10 y se les cobró $ 12.

Su mejor apuesta (si alguien no sabe cómo hacerlo dentro del marco) es preguntarle a los usuarios qué moneda desean pagar y luego darles un precio aproximado (la incluiría entre paréntesis junto al precio suministrado como "USD $ 10 [aproximadamente AUD $ 9]"). Debería poder tomarlo usando una API de tipo de cambio.

Es un poco complicado, pero solo deberías preguntar una vez y guardar la preferencia. Si realmente quiere ser engañoso, puede usar datos de ubicación aproximada para obtener su configuración regional y poblar inicialmente el valor de esa manera.

+2

Este sería el caso para iOS, pero en la consola de reproducción tiene la opción de establecer el precio por moneda. Entonces, el precio no debería fluctuar en absoluto a menos que me falta algo. – DallinDyer

+0

@DallinDyer Hablaba específicamente sobre Play Store en ese momento. No tengo idea en iOS personalmente. Teniendo otra mirada, existe la opción de definir el precio para la mayoría de los países, pero no todos. El resto se cobraría a la conversión de USD de la memoria, lo que casi seguramente fluctuaría. –

+0

¿En qué países se puede vender la aplicación para la que no se puede establecer el precio? ¿AFAIK habilita los países en los que desea vender y luego siempre *? tiene la opción de establecer el precio. – DallinDyer

4
  1. Puede solicitar inicialmente al usuario que elija su moneda (opcional).
  2. Muestra el precio en USD de manera predeterminada. Proporcione una opción para que el usuario cambie la moneda en la pantalla de selección de elementos. Tal vez un ícono/botón cerca de donde se muestra el precio que abre un menú desplegable de todas las monedas. Cuando el usuario selecciona una moneda desde el menú desplegable, el precio de todos los artículos debe mostrarse en la moneda seleccionada.
Cuestiones relacionadas