According to the billing subscriptions documentation, there is a possibility of triggering a manual renewal before the current subscriptions has expired.
For eg. If I invoke the same purchase flow on a particular monthly sub 2 times in a row, the second one will fail with the error 'You have already subscribed to xxx'. I am expecting it to succeed and add an additional month to the expiry date.
Is there a way of manually renewing IAP before the expiry date?
the manual renewal will happen with subscription recovery.
Related
I have created the product list of 3 product of type SUBSCRIPTIONS.
Required
When the user subscribe to another product, if their is any the Subscription of
previous product it automatically get cancelled,
and user get subscribe to newly selected product.
Problem
The user get subscription of 2 products at a time which is wrong.
I have search it, but found the solution that user manually need to
Unsubscribe the product in Play Store Account --> Subscription
setting. is there is any another way to Unsubscribe previuos Product
if user subscribe new Product of type subscription.
Subscription Upgrade/Downgrade
With the In-app Billing API, users can upgrade or downgrade a subscription during its active period. When the user does this, the active subscription is canceled and a new subscription is created. The unused balance of the old subscription is applied on a pro-rated basis to the new subscription. The first billing period for the new subscription begins after that balance is used up.
Subscription Cancellation
Users can view the status of all of their subscriptions and cancel them if necessary from the My Apps screen in the Play Store app. Currently, the In-app Billing API does not provide support for programmatically canceling subscriptions from inside the purchasing app.
In addition to client-side API calls, you can use the server-side API for cancelling a subscription programattically. This call cancels a user's subscription purchase but remains valid until its expiration time.
https://developer.android.com/google/play/billing/billing_subscriptions.html
please read the 6th point, user wont be charged 2nd time as per android Documentation, read below.
Users can upgrade or downgrade a subscription in the middle of a
subscription period. The old subscription's cost is pro-rated, and the
unused portion is applied to the replacement subscription.
I want non auto renewable subscriptions in Google In app purchases. According to Google Docs, In App subscriptions are auto renewable which means they will be renewed after that specified time. I want non auto renewable subscriptions. So What I will do is canceling user subscription from my system. According to Google docs, If user subscription is canceled, it will remains valid until its expiration time. I have two options
Cancel user subscription when he subscribed as this subscription will remain valid until its expiry time.
Setup a scheduler which will cancel user subscription before it is renewed.
According to docs, there is parameter in response cancelReason which can be either 0,1 or 2
The reason why a subscription was cancelled or is not auto-renewing.
Possible values are
0: User cancelled the subscription
1: Subscription was cancelled by the system, for example because of a billing problem
2: Subscription was replaced with a new subscription
I want to ask, if I cancel subscription (which will be considered as subscription canceled by system) when user just subscribed, will it be valid until its expiry time? As there is no such description in Google API Docs. As for method 2 of cancellation, I had to setup a scheduler on the system which is lengthy task.
The whole point of a subscription is that it renews.
If you want to take a payment for a specific time period but do not want it to renew then just use in-app purchasing.
Have your users buy an in-app product and have that product "expire" after a set time period. You can query from the system the purchase date etc. then just use the in-app "consume" method after that time has passed.
I'm working an app that will have an in-app subscription purchases on Weekly,Monthly bases.
When a user subscribe weekly or monthly, app getting subscription purchase details with OrderID like GPA.0000-0000-0000-00000 and purchased date in long.
And as per the Android developer blog after auto renewal we will get new order id with suffix ..1,..2,..3
GPA.0000-0000-0000-00000..0
GPA.0000-0000-0000-00000..1
GPA.0000-0000-0000-00000..2
GPA.0000-0000-0000-00000..3
But, my problem is after renewing the subscription also I'm still getting old subscription purchase details. No changes in OrderID and Purchased Date.
So, please anyone help me to get the Subscription Renewal Details.
Thanks.
If a recurring payment fails (for example, because the customer’s credit card has become invalid), the subscription does not renew.
The getPurchases() method does not return failed or expired subscriptions.
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.)
Refer for more details In-app Subscriptions
In my android app using in-app subscription monthly plan. I have purchased a subscription product with test account. After one hour I cancelled it manually from my phone.
After I query using inventory.getPurchase(monthlyplan), I always get purchase state is 0.
I waited more than one day; still getting response of purchase state is 0. Can any one help me on this?
You may want to check this document - Subscription Cancellation:
Users can view the status of all of their subscriptions and cancel them if necessary from the My Apps screen in the Play Store app. Currently, the In-app Billing API does not provide support for programatically canceling subscriptions from inside the purchasing app.
When the user cancels a subscription, Google Play does not offer a refund for the current billing cycle. Instead, it allows the user to have access to the canceled subscription until the end of the current billing cycle, at which time it terminates the subscription. For example, if a user purchases a monthly subscription and cancels it on the 15th day of the cycle, Google Play will consider the subscription valid until the end of the 30th day (or other day, depending on the month).
Important: In all cases, you must continue to offer the content that your subscribers have purchased through their subscriptions, as long any user is able to access it. That is, you must not remove any content while any user still has an active subscription to it, even if that subscription will terminate at the end of the current billing cycle. Alternatively, you can use the refund and revoke API to revoke each subscriber's subscription (one by one) and refund their subscription payments. Removing content that any subscriber is entitled to access will result in penalties. Please see the policies document for more information.
There are some good insights regarding the following (also found in the same document):
App uninstallation
Refunding and revoking subscriptions
Here is a related SO question that also talk about cancelling subscription in-app.
I need check that user has active subscription after automatic renew.
I do call getPurchases() and expect get all subscriptions (expired and active) or at least information about latest automatic purchase. I need datetime and orderID for this renewal for submit to server.
But now getPurchases() returns first purchase/subscription only.
I'm using test subscription with daily renewal (see Testing Android IAP/In-App Purchase Subscriptions)