2012-02-22 7 views
29

Ho un'app per Android che utilizza l'acquisto in-app che si rivolge a un pubblico internazionale, quindi mi aspetto pagamenti in valute diverse. Naturalmente mi piacerebbe mostrare gli articoli per l'acquisto con la valuta locale dell'utente, ma non so davvero come.Acquisto in-app sul mercato Android: come ottenere la valuta che un utente pagherà?

Utilizzando la regione o la lingua di un utente sembra un cattivo indicatore, come la moneta sembra dipendere dalla regione del mercato conto l'utente sta utilizzando e non sulle impostazioni del dispositivo.

Come posso sapere quale valuta un utente pagherà in?

Grazie.

+8

Avere lo stesso problema/necessità. Vogliamo essere in grado di mostrare agli articoli in app il loro prezzo. – Peterdk

risposta

21

A partire dal IAB Version 3, i dettagli SKU per la voce acquistabile includono un prezzo formattato, che comprende la valuta che l'utente pagherebbe in (valuta corrispondente al proprio Google Play Store):

enter image description here alcuni esempi di valori di price (non da un vero e proprio SKU):

  • 3,99 €
  • £ 2.99
  • $ 4,99

EDIT: Ho aggiornato la Tabella dei dettagli SKU, che ora comprende informazioni sul campo price_currency_code.

+0

Jippieh! Sai quando è entrato in vigore lo IAB v3? – janpio

+0

TBH, non lo so :) Sono felice che questo risolva la tua soluzione. Tuttavia, la soluzione che il team di Android ha fornito è tutt'altro che ideale: fornisce una stringa formattata e, separatamente, un campo currencyCode contenente il codice ISO della valuta (ad esempio USD, AUD, EUR). Non so perché non forniscono un Locale corretto. Inoltre, la [documentazione IAB v3] (http://developer.android.com/google/play/billing/billing_reference.html#getSkuDetails) non viene aggiornata con questi nuovi campi! Dai un'occhiata al [problema] correlato (https://code.google.com/p/marketbilling/issues/detail?id=93) per vedere i suoi progressi –

+0

Buon punto. Ha interpretato il problema. – janpio

3

Non che sarebbe una buona idea, dal momento che il l'in app billing non è gestito dal vostro te, gestito dal mercato. Basta scrivere il prezzo in dollari o euro e lasciare che l'utente veda l'acquisto nella propria valuta nella pagina di check-out.

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

+0

Beh, non penso che la visualizzazione di prezzi diversi sia una buona idea. Non ho trovato nulla nella documentazione di Android sui problemi di i18n con la fatturazione. – janpio

+0

Sono d'accordo che lasciare che l'utente scelga una valuta che Google Play ignorerà è una cattiva idea. Il problema più grande con il checkout di Google Play al momento è che non mi dice in quale valuta è il prezzo. Mostra solo un simbolo di valuta. Quindi, se la mia app mostra solo il prezzo in USD con un messaggio "prezzo locale verrà mostrato al checkout", quando vanno alla cassa se la loro valuta è mostrata con il segno $ non hanno idea se sto cercando di tirare un veloce uno e li carica di più o se sta mostrando solo il prezzo locale $. (Esempio: NZ $ vale meno del USD). – ChrisJD

-3

Forse utilizzare il valore predefinito Locale del dispositivo?

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

Poi si potrebbe fare un confronto fuori di questo.

Solo un'idea!

+3

Questo è quello che intendevo per "regione o lingua di un utente sembra un cattivo indicatore". In molti casi sarà corretto, ma la valuta di pagamento non è legata al dispositivo, ma al conto di mercato (credo). Se cambio la mia lingua, pago ancora in EUR perché vengo dalla Germania e Google lo sa. – janpio

+0

@JanP .: Sto cercando una via d'uscita dove posso ottenere il prezzo che ho pagato nel wallet di Google. Se hai qualche input, per favore condividi. Sarebbe davvero d'aiuto. – Amz

5

E 'un po' difficile da fare, come il tasso di cambio che il mercato utilizza per elaborare la transazione può oscillare tra l'utente che visualizza il prezzo e l'acquisto degli utenti. Oserei dire che Google preferirebbe che tu non lo facessi perché potrebbe causare che i clienti ti urlavano contro di te/tu perché hai detto $ 10 e sono stati addebitati $ 12.

La tua migliore scommessa (se qualcuno non sa come farlo all'interno del framework) è chiedere all'utente quale valuta si desidera pagare e quindi dare loro un prezzo approssimativo (vorrei elencarlo tra parentesi accanto al prezzo fornito come "USD $ 10 [circa AUD $ 9]"). Dovresti essere in grado di afferrarlo usando un'API di cambio.

E 'un po' di fare in giro, ma si deve solo bisogno di chiedere una volta e salvare la preferenza. Se vuoi davvero essere complicato, puoi utilizzare i dati di localizzazione grossolana per ottenere le loro impostazioni internazionali e inizialmente popolare il valore in questo modo.

+2

Questo è il caso per iOS, ma nella console di gioco è possibile impostare il prezzo per valuta. Quindi il prezzo non dovrebbe oscillare affatto a meno che mi manchi qualcosa. – DallinDyer

+0

@DallinDyer In quel momento stavo parlando specificamente del Play Store. Nessuna idea su iOS personalmente. Con un'altra occhiata, c'è la possibilità di definire il prezzo per * la maggior parte * dei paesi, ma non tutti. Il resto verrebbe addebitato alla conversione in USD dalla memoria, che quasi certamente fluttuerebbe. –

+0

In quali Paesi è possibile vendere l'app per la quale non è possibile impostare il prezzo? AFAIK abiliti i paesi in cui vuoi vendere e poi sempre *? avere la possibilità di impostare il prezzo. – DallinDyer

4
  1. È possibile chiedere inizialmente all'utente di scegliere la propria valuta (facoltativo).
  2. Mostra prezzo in USD per impostazione predefinita. Fornire un'opzione all'utente per modificare la valuta sulla schermata di selezione degli articoli. Forse un'icona/pulsante vicino a dove viene visualizzato il prezzo che apre un menu a discesa di tutte le valute. Quando l'utente seleziona una valuta dall'elenco a discesa, il prezzo di tutti gli articoli deve essere visualizzato nella valuta selezionata.