StoreKit sends failed transaction for a renewable subscription change

Originator:futuretap
Number:rdar://47152431 Date Originated:09-Jan-2019 08:22 PM
Status:Open Resolved:
Product:iOS + SDK Product Version:12.1.3 (16D5032a)
Classification:Serious Bug Reproducible:Always
 
Summary:
When implementing IAP renewable subscriptions and changing the renewal option within a subscription group (e.g. changing from a monthly to a yearly subscription) the transaction observer (paymentQueue:queue:transactions:) always gets passed a transaction with a .failed transactionState even though the subscription change seems to have gone through successfully (according to the "Your are all set" alert and the server-to-server notification and receipt validation).

Steps to Reproduce:
Assuming that 3 features are available on IAP Subscription: (1-Week, 3-Months, 1-Year)

- Subscribe to 1-WEEK feature
- Wait for completion
- Change subscription to 3-WEEK
- "Your are all set" is displayed.

Expected Results:
A transaction with transactionState = .purchased is sent to the SKPaymentTransactionObserver. 

Actual Results:
A transaction with transactionState = .failed is sent to the SKPaymentTransactionObserver. The transaction.error:
Error Domain=SKErrorDomain Code=0 "Cannot connect to iTunes Store"

Version:
12.1.3 (16D5032a)

Notes:
Same error occurs on iOS 11.x, too.

Comments

Has this been officially fixed by Apple? Tested on 11.4 and it seems to be fixed but want to confirm if it's fully fixed on all later version and stable. Any update/link to announcement appreciated!


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!