I'm getting ready to include in-app purchasing for subscription features in my iOS app. Per what I've read, I need to use a non-renewable subscription type (not auto-renewable). Some customers trick the system and get a refund from Apple but they can still use their app. As a non-renewable subscription has to be handled by an external server (us) we will obviously log the subscription purchase, receipt, etc.
Is there a way in the receipt verification to determine if the subscription is still valid? I'm not sure if the non-renewable subscription type validation is simply testing whether a receipt is valid or if the subscription remains valid.
For example, you make a purchase, the receipt validates. If you cancel your purchase with Apple via an iTunes complaint and Apple grants you a refund, if I were to later verify that receipt again would it come back invalid? I'm wondering if we should build in a frequent validation routine that would catch any subscriptions that have been refunded. We have some terms that will go two years so it's important we verify these on a set schedule. We originally planned to use auto-renewable subscriptions where this scenario does exist as it's the way to determine if the subscription renewed, but now learning a subscription for synchronization will require a non-renewable subscription type.
See this question on refunds.
Apple doesn't provide you a way to determine if a transaction was refunded. Since refunds are officially not supported, they expect you to continue to deliver the goods to a refunded user.