I recently launched mobile app I found a purchase made by the user for some reason for this transaction my app could not capture customer details nowhere I could find in console customer details like mail id phone number I was under impression iap report from Google play will provide all these details & hence in my app not annoying my users to provide their details at time of purchase but it looks like Google does not share these details
What is my next step?
Please help, don't want to keep my customer waiting
Thank you
Google does not provide the developer with customer details in the course of processing an IAP. This is probably "by design"; after all, if you don't need someone's personal information to complete the purchase, why should they give it to you?
Also note there are legal concerns here, such as GDPR. You may prefer that Google deals with all that heavy stuff, so you don't have to.
If you happen to have certain information at the time the order is made, you can supply it as the developerPayload member of the purchase. That will attach the information to your order. Otherwise, you're pretty much stuck with what you have.
Or, if you'd like to implement Google Sign-In in your app, you'll find that you can get a great deal of information about your user, at the cost of a single button press.
Related
Background
I wish to get the account details of the user (just the email) that was used in order to download the app from the play store.
The reason is very simple: In-App-Billing allows to add something that is called "developer payload" (described on this google IO lecture) to purchases, so that it will verify that the purchase is legit, because it has a tag that identifies the purchase with the current user.
I think other people can think of other reasons to get it. maybe for saving games progress , for example.
The problem
Currently, All I know that you can do is to get ALL of the accounts (using the AccountManager as shown here) .
However, I'm not sure if that's the best thing to do.
The question
How do I achieve such a thing?
Also, is getting the list of all of the accounts also a good thing for this purpose (in app billing verification) ? Is it even a good thing to put the account info into the developer-payload of the purchase?
I'm starting to make some in-app purchases on my future app, and i wish to ask some questions regarding the new API (3) of the in app billing library (shown here):
google says (here) that there are no more unmanaged items. this means that in order to have multiple consumable items, the play store cannot hold a counter, so you need to either consume the purchase right when you put it in the app, or only when you need it.
My question about it is how would you get the consumable items stay on multiple devices? for example, if the user purchased 2 health potions, and because of the new limitations, they both are stored only on the app itself of one device, how could the end user go to another device , run the app and see that he has 2 health potions?
is it possible to make some purchases for free on some cases, programmatically ?
it could be useful for testing or on some cases when i want to reward the user for something he has done . i might even want to do it completely transparent and without any dialogs.
i know that there is a sandbox mode but that's only available by adding specific accounts as test accounts .
the lecture speaks of a "developer payload" (here) that you can put on the purchases for better security. they said that the data should be an id of the user, but they don't say what id i should use (only gave an example of google plus , which many people don't have).
my question is: what should be used for the "developer payload" ? if i use the sample, what do they use, and is it safe to use it or should i change it ?
i also don't understand how could it be useful, since the play store should always hold data as to which user has which items, so how could the play store be fooled on this? or maybe they talk about protection from changing the apk of the app?
is it possible to make a transaction of multiple purchases ? if so, can i hide those that don't cost money ? and if all are for free, maybe not show anything at all ?
Answer 1)
The way I have found for the question 1 is given below.
if your application used server database(stored data on server using internet connection) then you can simply stored data for particular user,Like if user has purchased 2 health potions and when user trying to use that 2 health potion from the another device then simply checked it is purchased by that user previously or not. if it is already purchased by that user then simply restrict that user to purchase potions again.
Answer 2)
Google is provided trial period for the subscription product. so that user can purchase that item as $0.00 amount as a trial period and when time expired(time can be 7day or more) item can be changed it's type as subscription item with credit card information as like simple purchase flow.
but, you used word "pro grammatically and without any dialog" then according to my knowledge Google will not provide it for the single user or for the particular user. you can simply give trial period value in the Google console for the all application user.
check this link for more detail: "Free trials" http://developer.android.com/google/play/billing/billing_subscriptions.html#administering
Answer 3)
I would like to suggest you for the developer payload, first of all it is not mandatory you can pass either blank string or with developer payload. According to my knowledge it should be working like "security code" same as you given in the Google site while searching content "Some Random String".
how to use developer payload and what should be use for developer payload
check this link
Developer payload is useful for the application?
I think it is working like security code like Random String, and while you retrieve data you can verify that item that was purchased is same or not so that if in case some kind of hacker can be redirect to the other product then you can check it at response time, is it the same product as you are going to purchased or not and user can be protect from unnecessarily withdrawn money from his account.
and also check given link I have explained more for the developer payload.
I do have an App at the PlayStore and a major problem with the current version. Everyday I get a lot of mails from customers saying that they paid for the InAppItem, but didn't get it.
There are two manifestations:
The customer receives a confirmation mail from google including the order number. But the order number is NOT in my Google checkout account. So Google is billing the customer, but I do not receive the money and my customer is not receiving the item. Even so it has been paid! If he tries to buy the item again an error message occurs, stating: 'failed: you already own this item"
The customer receives the item two days after purchasing it. But much earlier than that I can see the successful withdrawal on my checkout account.
Case 1 is very irritating and troublesome, as the customer wants money back, which I never received! In my opinion it's obvious, that this error is caused by Google, since in general this is not a problem and Google is sending these confirmation mails.
Is there someone, who had or have similar problems?
How can I contact Google regarding this matter? I did receive an answer asking me for details, but after describing it, I didn't get any response. Now I feel like they left me alone with my problem.
I would suggest to upgrade your app to the In App billing v3 api. It is way more reliable that the version 2.
I have added in-app billing to my app, and everything seems to work fine on the Android side. But the orders in Google Checkout cannot be charged, even though the status is chargeable, because the Charge Order button is disabled. Apart from this, everything about the order appears to be correct.
The same thing happens with the Dungeons sample app, so I am a bit stuck at this point.
You give very little informations about your problem.
What is the purchase type you're using ? If they are "managed per user account", then they can only be purchased once for a given user. Maybe the charge has been successful once, and is now blocked (in which case you should use "unmanaged" purchases)
Or maybe I'm totally wrong, and you should give us some additional infos.
Yes, Google will block you from charging unless your app is published or you register your self as a test user.
Test users can parches when the app is not published.
You don't use the Charge button when selling Android apps. Charging occurs automatically.
Maybe the Charge button is there for other kind of goods sold on Google Play, but for software sales it's useless, thus it's grayed.
Worth a general read: In-app Billing.
On the Google checkout side of things, one potential cause for this issue is that there is a delay period with purchases for fraud detection, etc. (source "Charge Order" button greyed out). More reading on this here: In-app billing and Google Checkout setup. It is typical for the "charge order" button to be greyed out during this period.
I'm guessing that this isn't your issue however, because it would have been resolved already. In can't press charge order button but order is chargeable one of the most relevant points is given as
#sounddoctorin: If you click the order details, you will see why - its likely the order is in some pending state "Reviewing", etc.
The point is that if you can't click the "Charge" button, it means the order is still pending for one reason or another.
For more information on charge states visit "Understanding Order States".
If this still doesn't help resolve your issue I would look into figuring out why it is misbehaving. What other data can you gather?
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.