Hello,
We're implementing subscription offers in our app and all goes fairly well. However, if user has an active subscription (same plan / product ID) while redeeming the offer, we're getting failed transaction from the payment queue, despite system popover states that "You're all set". I'm not aware if it's documented anywhere, but I assume that the failed transaction in this case indicates, that user hasn't been charged. And yet, this is source of confusion — how do we know, if user redeemed the offer successfully or not?
That said, we started observing another inconsistency this week: StoreKit documentation states that we must use transaction's error property "to determine what happened", but in aforementioned scenario it is actually nil. I'd like to consider the absence of error as an indirect evidence, that the transaction was actually successful, and yet I haven't seen any documentation to support this hypothesis.
Is it intended behaviour or a bug in sandbox?
UPDATE: It looks like the
transaction.error
and transaction.payment.paymentDiscount
are nil on the mac, but present on iPad (for same test account) for existing subscribers, though error message is still vague in the latter case:Error Domain=SKErrorDomain Code=0 "Cannot connect to iTunes Store" UserInfo={NSLocalizedDescription=Cannot connect to iTunes Store}
UPDATE 2: Submitted a bug regarding this issue.