How is receipt validation supposed to work for a new Mac version of an old iOS app?

Background:

I've had an app in the iOS app store for many years. Quite recently I published a Mac version of the app. The Mac version uses the same bundle id and the app is setup in App Store Connect to be the same app. It's my understanding that with this setup, if a user purchases the iOS version, they don't need to pay for the macOS version (or vice versa).

The iOS app started out as a paid app and was later transitioned to a free app with in-app purchases. The new macOS version also supports the same IAPs.

If it makes a difference, the macOS version is built from the iOS code base using Mac Catalyst.

The app uses old StoreKit1 on-device receipt validation.

Issue:

I have a longtime user of the iOS app that has recently installed the macOS version. Their attempt to restore purchases in the macOS version is not resulting in anything being restored. The user originally purchased the old iOS version before it had any in-app purchases.

I log diagnostic info in the app and the user sent me those logs. One of the things I show in the log is information from the receipt. The on-device receipt validation my app does is indicating it is a valid receipt.

The problem is that the receipt states the original version of the app corresponds to the new macOS build. i would expect the receipt to show the version originally purchased years ago on iOS.

Question:

What is supposed to happen in a case like this? When the macOS version of the app requests (and gets) an updated receipt, is the receipt supposed to show the original version as the first macOS version of the app or is it supposed to show the first downloaded version, regardless of OS?

What is the correct logic for restoring purchases if the macOS receipt has no indication of the user ever having used the iOS version for years?

Replies

It is recommended to use the original_purchase_date to determine when an application was originally purchased, since this will indicate that the user purchased the app before the cutover from paid to free. https://developer.apple.com/documentation/appstorereceipts/responsebody/receipt

  • Any thoughts on my reply?

Add a Comment

OK, let's say I check the original purchase date instead of the original purchase version. I still don't know what is supposed to happen between the iOS and macOS versions of the app. If a user purchased some earlier version of the iOS app (pre or post in-app purchases), should the receipt received in the macOS version of the app reflect that past purchase? Right now I know of one user where the receipt obtained in the macOS version makes no mention of the past iOS purchase. The user has confirmed they are using the same AppleID on both devices.

As extra info, my app only does receipt validation if the user clicks on the "restore purchases" button in the app. Is there any reason that waiting until then to request a new receipt would cause the wrong receipt to be received?

I know of one user where the receipt obtained in the macOS version makes no mention of the past iOS purchase.

It seems that you know the answer! (I guess it would be more definitive if you had feedback from two users....)

  • I'd rather have a definitive answer than rely on anecdotal evidence from 1 user.

Add a Comment