Not Understanding Subscription Expiration & Receipt Validation

I have an in-app 3 month subscription for a macOS app. In the sandbox these subscriptions expire in 15 minutes.


Testing in the sandbox - I make a purchase - everything proceeds correctly.

I confirm subscription sucess and then quit the app and wait 20-30 minutes.


On re-launch I validate the reciept (locally) and find that the original subscription has expired.

Thats all that I find in the receipt.


If I do a 'restoreCompletedTransactions' the second instance of the subscription is found (not yet expired).

If I then quit and restart the app the same result occurs - the receipt validation still shows only the expired first transaction...


Yes I do '[[SKPaymentQueue defaultQueue] addTransactionObserver:self]' in 'applicationDidFinishLaunching'.


What am I overlooking or not understanding about this process?


Thanks for any helpful suggestions.
Steve

Replies

Sounds a bit like these 2016 threads...


https://forums.developer.apple.com/thread/44603


https://forums.developer.apple.com/thread/47218


Might want to file a bug, tho, just in case, and see what comes back.

I assume you are referring to an autorenewable subscription.


An autorenewable subscription is renewed only 5 times in teh sandbox environment. Each renewal should generate a receipt only for devices that have done a purchase or a restoreCompletedTransaction. The receipt will be refreshed only once if the user's device has only done an SKRefreshReceiptRequest.


Are you seeing different behaviour?