If you purchase a subscription again from the AppStore page, not in the app, will Storekit add a transaction?

After aborting the subscription, from the account page of AppStore (https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/manageSubscriptions),

If you purchase a subscription again,

Do StoreKit add a transaction queue?


With the sandbox test account, you can not check whether the transaction queue has been added, because you can not do the above operations.

Accepted Reply

If a user has used the App Store "Manage Subscriptions" page to indicate that an existing auto-renewable subscription will no longer renew when it expires, then the user can later on restart the auto-renewable subscription from that page. When the auto-renewable subscription is restarted, and the user account is charged, an incompleteTransaction item will be queued to the app ID for that user. When the app's transactionObserver is next activated, it should detect the incompleteTransaction and process it.


You are correct that this event cannot be replicated in the sandbox environment. Instead, I recommend that you perform the "Test an Interrupted Transaction" procedure as described in the In-App Purchase Programming Guide.

<https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/DeliverProduct.html#//apple_ref/doc/uid/TP40008267-CH5-SW12>

If your StoreKit app is able to handle an interrupted transaction as described above, it should handle the auto-renewable subscription renewal from the Manage Subscriptions page.


rich kubota - rkubota@apple.com

developer technical support CoreOS/Hardware/MFI

Replies

If a user has used the App Store "Manage Subscriptions" page to indicate that an existing auto-renewable subscription will no longer renew when it expires, then the user can later on restart the auto-renewable subscription from that page. When the auto-renewable subscription is restarted, and the user account is charged, an incompleteTransaction item will be queued to the app ID for that user. When the app's transactionObserver is next activated, it should detect the incompleteTransaction and process it.


You are correct that this event cannot be replicated in the sandbox environment. Instead, I recommend that you perform the "Test an Interrupted Transaction" procedure as described in the In-App Purchase Programming Guide.

<https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/DeliverProduct.html#//apple_ref/doc/uid/TP40008267-CH5-SW12>

If your StoreKit app is able to handle an interrupted transaction as described above, it should handle the auto-renewable subscription renewal from the Manage Subscriptions page.


rich kubota - rkubota@apple.com

developer technical support CoreOS/Hardware/MFI

Thank you for the quick reply.

It is another question.

Will transactions be added in the same way if a subscription is canceled by Apple's customer support?

If a subscription is renewed on the Manage Subscriptions page, and the user account is charged, the mechanism for informing the app is the same. There is no alternate method of notification.


rich kubota - rkubota@apple.com

developer technical support CoreOS/Hardware/MFI

You are asking a few questions that actually need a bit of clarification before they can be precisely answered:


After aborting the subscription, from the account page of AppStore

If you purchase a subscription again,

Do StoreKit add a transaction queue?


The answer actually depends on what you mean by "After aborting... purchase..again" since you turn off a subscription (aka abort) while the subscription is still active. So, if you mean "turning off a subscription and then purchasing again while the subscription is still active" then the answer is "no, there will be no transaction until the next renewal occurs and then there will be a standard transaction". But if you mean "turning off a subscription and then purchasing again but only after that earlier subscription has expired" then the answer is "yes, there will be a transaction".


Will transactions be added in the same way if a subscription is canceled by Apple's customer support?


A subscription will be added in the same way as if you had 'turned off a subscription and then purchased again but only after that earlier subscription had expired'; and in addition the receipt for the earlier purchase will have a cancellation_date field.

Thank you for your polite supplement.

I'm sorry. I wanted to say,

If the subscription was canceled by Apple Customer Support, will StoreKit add the transaction to the queue?

Both PBK and I are responding from a technical perspective. However, I suspect you are instead asking - if a user cancels their subscription via Apple Care contact, would they be able to renew the subscription again for fraudulent use. I can't speak for the App Store for such question. To my understanding, fraud is handled on an individual basis. I suspect that such user would not be able to make a subsequent charge and no transaction would be queued. If you have concerns in this area, please contact App Store Connect.


rich kubota - rkubota@apple.com

developer technical support CoreOS/Hardware/MFI

>If the subscription was canceled by Apple Customer Support, will StoreKit add the transaction to the queue?


There will be no transaction added when the purchase is canceled. If you refresh the receipt (or look at 'latest_receipt_info' from the Apple servers) then I believe the receipt will be updated with a cancelation_date field. If the user purchases the subscription again after canceling the first purchase then there will be another purchase transaction (and at that point the receipt will be updated so the earlier purchase will have a cancelation_date field).


If a user 1) purchases a subscription and then 2) cancels the subscription through Apple Customer Support and then 3) makes a second purchase of the subscription and then 4) tries to cancel that second purchase then I would expect Apple Customer Support to refuse to allow them to cancel the subscription.



And for clarity - 'cancel the subscription' has a different meaning than 'terminate the autorenewable subscription'. The later means just 'don't renew when it comes up for renewal'; the former means 'stop it now and give me back my money'.

>There will be no transaction added when the purchase is canceled. If you refresh the receipt (or look at 'latest_receipt_info' from the Apple servers) then I believe the receipt will be updated with a cancelation_date field.


That's right.

Again, it is necessary to receive the status update notification CANCEL on the application-specific server and reflect the user's charging status.

When a user contacts Apple Care and cancels their subscription, this is not a transaction event. The App Store simply modifies the internal server records and includes a cancellation_date field for the specific subscription record for the user. When the appStoreReipt is next updated (via a new in-app purchase or the use of the SKReceiptRefreshRequest), the cancellation_date field for the cancelled subscription record will appear.


If the developer has registered for a server-to-server notification, the App Store server should generate a CANCEL notification event and send it to the developer server. If the notification is not received, this is a bug report issue to be investigated by App Store engineering.


rich kubota - rkubota@apple.com


developer technical support CoreOS/Hardware/MFI