I've implemented in-app billing in our app. All is working well. However, we're asked if we could determine the exact tax on each purchase to be sent later to a server for real-time tracking purposes, and the sales report from Android Developer Console is only updated once a month (not entirely sure, as according to the information from the site, it's only delayed for 2 days), so that is not an option.
The problem is we're only able to retrieve the price without taxes through the in-app billing API (as also stated in the API documentation).
It seems that the tax charges are based on the country the user entered through the credit card information - and, of course, due to security issues, that cannot be retrieved as well.
Is there another way to determine from which country the user is purchasing from (i.e., the one from his/her credit card). Or better yet, is there a way to simply determine the tax on each purchase?
Related
Programmatically, I understand how to manage a single users subscription, but have not found a way to retrieve a holistic picture of In-app Subscriptions.
The closet thing I've found in the In-app Subscription documentation deals with tracking subscriptions to order numbers:
To help you track transactions relating to a given subscription, Google Wallet provides a base Merchant Order Number for all recurrences of the subscription and denotes each recurring transaction by appending an integer.
Using this mechanism in a roundabout way one can determine current subscription orders, but this doesn't give a clear picture of subscribers. How do you enumerate the number of users who are currently signed up for an In-app Subscription?
The Finance overview for an app in the Google Play Store Developer Console provides a summary of app revenue. In addition to App Sales the Fiance screen details a summary for Subscriptions which breaks down revenue by: day, last 7 days, last 30 days and overall.
Is it possible to get product price in local currency from the app itself. For example if I am selling Product1 with price of 1$ through Google Play In App billing. A customer from UK clicks on a button to purchase the product and the price at Google Play is shown in GBP. Can I get localized price in the app from Google Play so I can display it to the customer in its own currency?
The in-app billing v3 claims to be able to accomplish this:
The API also introduces a long-anticipated feature: the ability to query in-app product information directly from Google Play. Developers can now programmatically obtain an item's title, description and price. No currency conversion or formatting is necessary: prices are reported in the user's currency and formatted according to their locale
Source: http://android-developers.blogspot.com/2012/12/in-app-billing-version-3.html
Since you are asking this i suggest to just leave as it is.
This is more about economy rather than programming, and the problem is that the ratio between 2 currencies keeps changing every time and there is no way to calculate this because of the market and the actual evaluation is only given by the stock markets for a particular point in time.
There are 2 ways of thinking about this:
The merchant makes an evaluation about what is the average ratio between 2 currencies, he quantifies this value in real money and adds it to the final price, so he can avoid money loss or at least a good part of it
The merchant puts in place a mechanism for prices that, given real-time infos from the stock markets ( probably you have to pay for this ), calculates prices of real goods in real time or every time that the user wants to checkout his order.
If this is new to you don't say nothing about this, there are a lots of money that are burning and magically appearing every day in every stock exchange market, if you give a bad advice to your client he can be really disappointed and lose a lot of money.
Also different currencies are usually handled directly by credit card services, there is no reason to handle this by yourself, you can only risk more than it's worth doing it.
If your users wants to know the price in their currency teach them to use Google or some reliable online currency converter.
In Android documentation, you can find how to implement subscription billing for the products that you offer for sale within your application. It involves exchanging a number of messages with Google server.
I just want to sell my application itself (not products within it) with subscription. I feel that it would be almost as simple as selling the application for a one-time charge. When after one year the license becomes invalid, the licensing mechanism in the Google server would tell the customer to renew it.
So my question is : do I have to implement the whole in-app billing described in the documentation ? What is the minimum work I have to do to sell an application itself with subscription ? As far as I investigated, this is not obvious or clear. Does someone have more experience ?
Google Play's own selling method itself doesn't allow for subscription style billing. If you want to have a subscription type billing, you must use in app billing, or sell the app through your own website.
The absolute minimum would be to allow the user to download the app for free, or perhaps pay for one year when buying the app itself. After downloading a free app, you must ask the user to pay the first subscription payment. If you charged the user when buying the app, ask for payment after a year.
So in short, yes, you must use in app billing for this.
Is there any way of getting to know who has bought your app on the Android Market? I currently haven't got an account on the market, my app is still in development so i'm asking you guys.
I'd like to know and make a list of the people who purchased, or downloaded for free, my apps. Not their email addresses or anything, just some unique usernames, maybe from the Android Market itself. Is that possible?
If not, is there any way to get this information AFTER the app has been bought? The in-app billing system i'm guessing is anonymous as well, as it's still part of the Google/Android Market billing system. But if i were to use PayPal to make "my own in-app billing" would that work? I'm guessing i can see any PayPal transactions from where/who it originated, no?
If someone can offer me a suggestion on how i could get this information, with the user's willing participation of course, i'd be grateful.
To track users, people generally use some kind of Analytics app:
Google Analytics for Android and Flurry are popular, to name a couple.
I know of no other way to track general downloads, other than the Android developer dashboard/console
To answer your first question:
Google Android purchases (market and in-app) show up in the Merchant section of Google Checkout.
EDIT: Also, once a purchase is made, it is not anonymous and you as a merchant have freedom to contact the customer directly.
EDIT #2: To address your second comment:
From https://checkout.google.com/sell/orders a merchant can see the following information for each order:
Google Checkout Order Number
Total $ (or other currency) Amount
If they've yet been charged/pending/or other Credit Card/Other processing problems and current status.
Order Details (Include user name - which is Full Name - and App Name)
Additionally, within each order you get:
Customer's full name
Billing Address
Full email, not masked
Sold on, Charged on, Confirmed on Dates/Times
App name ID
So, Quite a bit information.
I have a few questions connected to Android In-App Billing:
Is it possible to make a purchase from non-Market app? I understand that it would be a vulnerability, but I have no opportunity to find out if it's possible or not.
How can I get purchase state for a particular product? As far as I understand it can be done using RESTORE_TRANSACTIONS request, but it's not recommended to use very often. That's not a theoretical problem. My application allows users to buy content using in-app billing. Content can be downloaded from a server, and server must allow content downloading only if it was purchased. But it can't check if content was purchased or not without using signed response from Android Market.
How can I get price and description of an item from Android Market? Seems that I know the answer and it's "there's no way it can be done", but maybe I'm wrong. It would be very useful to have a possibility of retrieving item's price.
It's very interesting to me how you solved/are going to solve these problems in your apps. Answer to any of these questions will be appreciated.
In order:
1- Nope. The in-app billing process is part of Market. If the app comes from elsewhere, there's no way for Market to verify the origin/authenticity of the application.
2- It's your responsibility to store the purchase state for a particular product. From the doc:
You must set up a database or some other mechanism for storing users' purchase information.
RESTORE_TRANSACTIONS should be reserved for reinstalls or first-time installs on a device.
3- Unfortunately, at this time you're right. File a feature request!
In the meantime, one option is to set up a website with appengine, store listings of all your content & pricing there, and then manually sync prices listed on your appengine server with the updated prices in Market. Then have your Android app pull the data from the AppEngine server. This is much better than hardcoding price values into the app itself, since you don't need to have everyone update the app immediately to see accurate pricing whenever you change something. The only caveat of this method is that if the user is in a different country, in-app billing will display an approximated price in their native currency, and there's no way for you to determine exactly what price will be displayed to them.
Related, One of the Android Developer Advocates is giving a talk on LVL/IAP at IO, called "Evading Pirates and Stopping Vampires using License Verification Library, In-App Billing, and App Engine." - It would definitely be worth your while to watch when they release the session videos on the website.