Non-Recurring In-App Purchase Receipt Not Found In App Receipt
| Originator: | markw | ||
| Number: | rdar://23180869 | Date Originated: | 20/10/2015 |
| Status: | Open | Resolved: | |
| Product: | iOS | Product Version: | iOS 9 |
| Classification: | Reproducible: | YES |
Summary: After making an in-app purchase of a non-recurring subscription product and refreshing the app receipt, the non-recurring in-app purchase receipt is not found in the in_app receipt field. Prior to the 15th / 16th October 2015 non-recurring in-app purchase receipts remained indefinitely in the in_app receipt field and were one of the ways used to support purchase restore onto a different device. From a user experience perspective, this is not a positive change. Even if the in-app receipt information is stored separately by an app at the point of purchase, there is no guarantee that the attempt to store the receipt will succeed due to a multitude of reasons (network connectivity, battery state, memory pressure, ...). Should that happen then the only way to support purchase restore onto a different device is to refresh the app receipt, which will now no longer recover the situation. So from a user experience perspective they'll end up annoyed, angry with the app developer and inconvenienced trying to find-out how to request a refund. The situation is made more confusing in that if a user then tries to purchase the non-recurring in-app purchase again StoreKit will respond with the message “You have already purchased this subscription. Tap Buy to renew or extend it." Taken from https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW8 “The in-app purchase receipt for a non-consumable product, auto-renewable subscription, non-renewing subscription, or free subscription remains in the receipt indefinitely”. Taken from https://developer.apple.com/in-app-purchase/In-App-Purchase-Guidelines.pdf "For Non-Renewing Subscriptions, if you want to allow users to renew their subscription, your application must track the expiration manually. If the user chooses to renew their subscription you have to initiate a new Store Kit purchase request. Tracking of the expiration date of initial or renewed subscriptions is not handled by the App Store and is your responsibility. Additionally, your application must include a mechanism to deliver the purchased Non- Renewing Subscription In App Purchase to all iOS devices owned by a single user.” Many apps achieve that by refreshing the app receipt and processing the in-app purchases. Steps to Reproduce: (Assuming in-app purchase information is correctly set-up in iTunes Connect) 1) Purchase a non-recurring subscription using StoreKit [SKPaymentQueue addPayment:] 2) Refresh the app receipt using SKReceiptRefreshRequest Expected Results: The in_app field of the app receipt contains a receipt for the non-recurring subscription in-app purchase. Actual Results: The in_app field of the app receipt is empty. Version: iOS 9.0.2 Notes: Configuration: iPhone 6S, 128GB
Comments
Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!