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.
Related
In Google Play Console, I have previously created yearly and monthly subscriptions and they work just fine, however now I want to create a subscription where the user only pays once and gets a lifetime subscription to the application.
Unfortunately, when I create a new subscription, it is required to select one "Renewal Type", which has the most a period of 1 year
How can I create a subscription, where the user only pays once and is never charged again?
Google Play Console: Create New Subscription
This would technically not fall into the Subscription category. A Subscription has to have recurrent billing. I see two potential solutions to your case:
You could go to the App Pricing page and set a price for your app there.
You can create an In-app product that would not expire.
I see an increasing number of developers using the second option. A good example would be Forest.
I am using InAppBilling version 3 in my app, I am able to purchase subscriptions using test account. Now my question is how do I know the billing details in my app againt one subscription plan. Suppose I have purchase one plan and it renews Daily, Is there any provision or method to know that renew is done to this product with details(like for ex. product_id, time, date, update, renewing_status...etc). I have refered to this link.
And the other thing is that do a user can subscribed to multiple subscription at a time ?
After searching quite a bit, finally I found my solution. Google don't provide subscription order number for test purchases(if you are using test account to test your application without going to production). It only provide product_id, token, purchase_time, developer_payload, autoRenewing, package_name and purchase_state as if Google don't send details to Play Billing server as it is not a real purchase. Still your can implement your own logic as it provide autoRenewing = true(if product is in renewal state) and false(if product is in non-renewal state) with purchase_state = 0(purchased) , 1(canceled) and 2(refunded). And one more thing I came to know after reading documentation of Google that, test user who has taken the subscriptions the recur on daily basis, but they will only get the same details, which they get while purchasing a test subscription plan.
It provide order Id for real purchases with other details. If your subscription is monthly and your order Id is GPA.1234-5678-9012-34567 while purchasing the plan. Then next month Google append your order Id with GPA.1234-5678-9012-34567..0(second month) , GPA.1234-5678-9012-34567..1 (third month) and so on. So you can track your renewal of purchases with order Id as described in here. Rest are same.
I have gone through most of the links here on stackoverflow and i have some doubts regarding InApp Subscriptions and Google Wallet.
What i know:
InApp Subscriptions basically allows a user to be able to subscribe to an app, say for example if it offers one year trial period, then once thats over, Google automatically handles the subscriptions then after.
Google Wallet, its a method that can be used to perform the purchase. What i don't understand is, can i use this method in order to allow users to use the app for one year, and then make them pay for the next years?
Billing continues indefinitely at the interval and price specified for the subscription. At each subscription renewal, Google Play charges the user account automatically, then notifies the user of the charges afterward by email. For monthly and annual subscriptions, billing cycles will always match subscription cycles, based on the purchase date. (Seasonal subscriptions are charged annually, on the first day of the season.)
This is what happens in my app:
1. A user logs in, and i get a date that probably keeps track of the billing cycle
2. If the sessions expired, the user is asked to pay using the inApp Billing serivce
3. Based on TrivailDriveApp Example, where we have the success log printed on subscription, we update the date of payment.
Some questions i have:
As per the quote from android, if the user is automatically subscribed to the service, and if a mail is sent to the user, does that mean that i would never be able to get a notification about the payment extension? How do i sync that with the server then?
Is my approach wrong in handling this kind of scenario? Or do i have to select a different method of handling app extensions?
P.S: There is no way of testing inapp subscriptions also. I wonder if i could do that without using real credit/debit card credentials.
EDIT:
I would also want to keep track of when the purchase or billing was done, if subscriptions are auto-renewed, then should i take up the purchase flow as an InApp Product instead of an InApp Subscription?
Please help.
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?
Before I explain my question, let me give an example situation.
A user of a magazine app subscribes to the monthly subscription on the month of August and September. If the user reformats the phone, the app should be able to restore both August and September month's magazines.
The problem with this is that, the In-App Billing API returns only the latest subscription and whether the subscription is active.
Also, I want the users to be able view the previous months' magazines even if they have canceled their subscription.
Is there a way to keep track of all payments made by the user?
This likely would involve your own independent servers and "developer payload" information. As stated in this Subscriptions link:
Include business logic in your app to notify your backend servers of subscription purchases, tokens, and any billing errors that may occur. Your backend servers can use the server-side API to query and update your records and follow up with customers directly, if needed.
In other words, you should be keeping track of this--unfortunately.
Further, you can check this api reference as to whether a user's subscription purchase is valid.