I'm trying to implement the auto-renewable subscriptions but something is not really clear for me.
If I have for example a magazine like app and want to track the subscriptions even if they are invalid now, do I have to save the receipts in my app (e.g. Core Data)? I have to track them all because I have to give the user access to old issues even if the subscription is invalid. So either it has the status code 0 oder 21006.
Another question is why Apple uses the 21006 status code for canceled subscriptions that were canceled by Apple because for example somebody mistakenly made a subscription. How can I determine if that happend when I only know that it's invalid now? It could also be invalidated because it is out of the subscription period. I have this Information from the WWDC 2011 Video on iTunes U.
Any help would be appreciated ;-)
Apple recommends you store and verify all receipts on your server, not necessarily on the app. To check on the status of someones subscription, just verify any receipt you have stored for that user. (it must be a receipt from the same subscription family) Then Apple will respond with the latest receipt in that subscription. You can use this information to provide the user with all issues of the magazine up until the expiration date of that receipt. You can do this all on the app if you want, but Apple discourages it since you'd have to store your iTunes verification
secret in the app itself.
As for your second question, my assumption is that Apple sees refunds as outside-the-norm. So they don't want to make any concessions for it. They don't want to make it easier or automated. That's why you don't get a special code that means 'the user's subscription was cancelled due to refund.' I would hope that this is rare enough that simply providing the magazine articles for free to refunded users, won't make you broke. (and since your receipt verification will show that their account isn't renewing, you don't have to give them new issues).