(StoreKit) Transaction fails with nil error when subscription offer is successfully redeemed for a subscribed user
Originator: | dev | ||
Number: | rdar://50129954 | Date Originated: | 23.04.2019 |
Status: | Open | Resolved: | |
Product: | StoreKit (macOS) | Product Version: | |
Classification: | Reproducible: | Always |
Summary: There's no reliable and documented way now to verify that subscription offer was redeemed successfully or not. Transaction observer receives failed transaction with vague error on iOS / nil on macOS in case, if user is currently subscribed to subscription plan with same product ID. Date and time when issue occurred: 23.04.2019 17:24:03 +0300 Steps to Reproduce: 1. Purchase subscription with product ID == X. 2. Transaction observer receives transaction with state == SKPaymentTransactionStatePurchased. 3. While subscription is active, prepare SKPaymentDiscount, add it to SKPayment and initiate a purchase of the product with same product ID == X. Expected Results: Transaction observer either: a) receives transaction with state SKPaymentTransactionStatePurchased or b) receives transaction with state SKPaymentTransactionStateFailed and an error clearly indicating that the offer was redeemed successfully. Also transaction.payment.paymentDiscount should not be nil. Actual Results: Transaction observer receives transaction with state == SKPaymentTransactionStateFailed with error == nil and transaction.payment.paymentDiscount == nil. Version/Build: Purchases were tested in sandbox environment. Configuration: iMac15,1 macOS 10.14.4 (18E226) Xcode Version 10.2.1 (10E1001)
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!
One more observation: system popover during offer purchase says that discounted subscription "starts now", but actually we see a transaction with "promotional_offer_id" in receipt only upon following renewal.