In app purchases - recover subscribed users in a new app - android

We already have an app on Google Play with in app purchases (as subscriptions), and there are lots of users who already purchased our subscriptions. However, we have developed a new version of this app from scratch and we want to list it on Google Play as a new app. After few months, we want to unpublish the old version of it. There is one issue with this: How do we make sure that users who already purchased subscriptions in the old app keep their subscriptions in the new one? It seems like there is no way around this other than asking them to purchase on the new one. But maybe there is a better idea than that?
P.S. We are publishing as totally new listing because of significant changes in the app and also the old one wasn't taken care of properly, therefore there were many bad ratings. This would be a fresh start.

Maybe , there is a way.
From Your Old App Obtain 2 things
GOOGLE API KEY FOR IN APP PURCHASE
product id (is unique everytime)
Inside the java code, check all the purchase history for this particular product from Billing object.
This library is excellent in simplyfing in-app purchases.
https://github.com/anjlab/android-inapp-billing-v3

I'm pretty sure there is no way to tell the play store that the user has bought a subscription for the new app. You could update the old app to send subscription data to a server which can mark the user as having bought a subscription, and then the server can validate the new app to deliver subscription content. But the play store will not know anything about it.

Related

Disable one in-app purchase as of a certain date

I have an Android app that has several features available as in-app purchases. We have published the app on both Google Play and the Amazon App Store. We need to stop offering one of the features as of a certain date. However, customers who have already purchased the feature should be able to use it past that date, even if they install the app on a new device. They should also still be able to purchase other features.
I was thinking that we could simply update our app so that the UI offered no option for purchasing the feature in question. However, that would not prevent a user with an older version of the app from purchasing the feature. So it seems like in addition to removing the feature purchase logic from the app (but not the feature itself), we need to do something to turn off the purchase at the store end. But whatever that something is, it must still allow the app to check whether the user had previously purchased the feature.
I've been unable to figure out from the Google Play or Amazon App Store documentation how to set this up. My understanding, from what I've read, is that removing the item (from either store) will cause checks for previous purchases to fail. Is it possible to do what I've described? We need solutions for both stores.
P.S. I did find one related question on SO: Are Google Play in-app purchases still valid if the app or the product is removed? However, it has no answer and also is a little too narrowly framed. (I'm not assuming that the product has to be removed and I also need to know about the Amazon store.)
I was thinking that we could simply update our app so that the UI
offered no option for purchasing the feature in question. However,
that would not prevent a user with an older version of the app from
purchasing the feature. So it seems like in addition to removing the
feature purchase logic from the app (but not the feature itself), we
need to do something to turn off the purchase at the store end.
For Amazon Appstore, you would need to contact their support team to get the in-app item in question suppressed (it's not a self-service as of today). Once suppressed, that in-app item would no longer be purchasable. It would not affect existing users who purchased that item in the past.
When it comes to in-app purchase I always opt for implementing everything in my own server. when a user buys something, I instantly consume it and notify my server. Then instead of querying Google or Amazon, I query my own server which gives me a lot of flexibility. If I face something like your problem I just add few lines of code!
Since you already published your app this may not work for you unless you willing to force users to update the app to the newer version. (Hoping you can do that!)
You mentioned that you don't know what happens if you deactivate the product and there is no documentation, well you can try it on a test project and see what happens! It shouldn't be that hard. If that doesn't work as you expect there is nothing you can do, your logic is in your app and it's already published so...

Need to delete beta in-app download data from play store account

I'm developing an Android app that's in beta that downloads music tracks from a separate server. To ensure that the app's purchase functionality is working correctly, I need to rescind the purchases (not just refund from the Dev Console), but the Play Store holds this locked up somehow so that I can't reverse Google Play's record of the purchase. So... my app can't return to the "haven't purchased" state. I've look everywhere for an answer to this. I can't believe that it's not a common issue, or maybe I don't know what exactly to search for.
TIA

Transfer In App Purchases from one app to another on Android

Okay, something really dumb happened to my friend.
He submitted an Android application a few weeks ago that offers In-App Purchases to the user.
Now, he needed to update the .apk to fix a bug, but he actually lost the keystore that he used to sign the application the other day (what a dumbass...). He tells me it's definitely lost. He exhausted all options to find or restore it, but without success. So, as he understands, the only way to submit the update is to actually create a new application in the Google Play Developer Console. He is so dumb, I always tell him to do backups of important files, he just won't listen (wow, really, such a blockhead...)!!!! sigh...
Luckily, he only had a handful of users who actually purchased something in his app during that time. However, I would like to know (for my friend) if there is any way to transfer the In App Purchases from the same user from the old app to the new one, so that the users who bought something in the app and now want to update it, won't get punished for his stupidity and have to purchase the same items again....
AFAIK, there is no way to do that. The only option is to refund them and ask them to buy again in the new app. I believe refunding can be done by logging in to Merchant account.
Google Play does not provide any form of content delivery. You are
responsible for delivering the digital content that you sell in your
applications. In-app products are always explicitly associated with
one and only one app. That is, one application cannot purchase an
in-app product published for another app, even if they are from the
same developer.
And BTW, Does the app have any backend? Where in he saved data of all purchases made?

Transferring android app with subscription to another account

I understand that google does not allow the transfer of app ownership with in app-subscription from one developer account to another. I have been waiting for them to enable that feature but till now, it is not available and there is no ETA on it.
I have a paid app with in-app-subscription as part of it. A company is looking to acquire my app but the transfer is not possible. So I am thinking about alternatives.
Should I create another identifcal app and ask users in my old app to move to this new identical app. That will involve buying it again but I can provide incentive (like enabling the subscription feature to be free).. Other suggestions? Basically what would you do in my case
Thank you so much
Ask your new company owner to be added to your Google Play console as developer and give him access to financial data, so he could see income/revenue.
Create new app identical to the previous one, implement same subscriptions. This time in owners Google Play console.
Kindly ask your users to move to the new app and let them know that their subscriptions will be still active.
Implement on server side code to check if subscriptions are valid for particular users.
When new app is published, unpublish old app. I think subscribtions will be still active(check docs).
All new users will get subscriptions from new app.
Anyway you will have to introduce new SKU for subscriptions from time to time, because Google doesn't update prices, and currencies are changing every year.
You can transfer apps with in-app subsriptions to a new developer account. And you need pay extra attention to linked project if you used Play Developer APIs to verify the purchases or used other integrated services.
After the transfering process, the renewal orders will be visible in the Play Console under the new developer account while the previous orders will only be visible under your current account.

In-App Billing Security and Design questions

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.

Categories

Resources