SKPaymentTransactionStatePurchased not getting called for successful purchases of recurring subscription

Originator:casey
Number:rdar://29967331 Date Originated:01/11/17
Status:Open Resolved:
Product:iOS + SDK Product Version:
Classification:Serious Bug Reproducible:
 
Area:
StoreKit

Summary:
An issue with in-app purchases not always updating with the SKPaymentTransactionStatePurchased state that cropped up in late 2015 seems to be back.

Starting around January 6th or so, our support team started receiving reports from customers who successfully purchased an auto-renewing subscription but did not receive the premium membership. While it is difficult to reproduce locally, it appears to be the same issue that occurred in late 2015. What seems to be happening is that in cases where the user is asked to update their credit card, etc, we initially get the SKPaymentTransactionStateFailed as expected, but never receive the SKPaymentTransactionStatePurchased update after the user completes the purchase. This forum thread discusses the issue: https://forums.developer.apple.com/message/205427#205427

Steps to Reproduce:
1. Set up app store payment information in such a way that the user is asked to update/verify payment information during the purchase process (expired cc, no available credit, etc)
2. Attempt to purchase a premium membership
3. Update payment information
4. Complete the purchase

Expected Results:
1. The app's SKPaymentTransactionObserver first receives a call to paymentQueue:updatedTransactions: with a SKPaymentTransactionStateFailed state and an error code of SKErrorPaymentCancelled

2. After payment information is updated and purchase is completed, another call is made to paymentQueue:updatedTransactions: with a SKPaymentTransactionStatePurchased state and we process the subscription

Actual Results:
We only get the first, SKPaymentTransactionStateFailed call, and never the SKPaymentTransactionStatePurchased call, even though the purchase actually succeeded

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!