I'm little perplexed.
Let's say my app has two subscription options. One is "$0.99 / 1 year" another one is "$2.99 / Forever"
What really happens if a user buys $0.99 option twice?
I have searched and found this stackoverflow article that has an accepted answer saying "Yes, when the user buys a non-renewing subscription a second (or third, etc) time, the are charged again."
But Apple docs says "If the user attempts to purchase a product that’s already been purchased, rather than using your app’s restoration interface, the App Store creates a regular transaction instead of a restore transaction. The user isn’t charged again for the product."
Which one is correct?
I tested with some real app from app store, buying them twice and it seems that they don't charge me twice.
So, may I trust the above Apple doc %100?
If so, I will have another question.
Let's say a user had bought 1 year option and a year passed so it has expired. The user buy 1 year option again, however, App Store do not charge the user again since it's been bought before? Then how can I sell the same item again? (in case non-renewal subscription)
There are three different types of in-app purchase available:
- Non-consumable purchases
- Consumable purchases
And there are two types of subscriptions:
- Auto renewing subscriptions
- Non-renewing subscriptions.
Non-consumable items can only be purchased once. The user has the ability to restore this purchase and an attempt to purchase it a second time will result be treated like restoration; the user won't be charge a second time.
Your "$2.99 forever" product falls under this category, since a subscription would be for a limited time. Once the user has purchased this product then you should prevent them from purchasing the subscription products by disabling them in your store interface.
For your "$0.99/year" option you can use auto-renewing or non-renewing subscriptions.
If you use auto-renewing subscriptions then Apple will take care of "purchasing" the product again when the expiration date is reached and if the user attempts to purchase a second time while they already have a subscription active a payment won't be processed.
If you use non-renewing subscription then it is your responsibility to handle subscription expiration and allowing the user to restore their active subscriptions on another device. In this case you could take a couple of approaches:
- If the user has an active subscription don't allow them to purchase any more subscriptions by disabling the purchase option in your store interface in your app
- Allow them to purchase a second (or third etc) time and extend the expiration date accordingly. e.g. If they purchase today, the subscription would expire in August 2017. If they purchase a new subscription before the old one expires, extend the date so it now expires in August 2018.