SKReceiptRefreshRequest not working on macOS in production

Originator:hannes.oud.dev
Number:rdar://35826398 Date Originated:04-Dec-2017 11:39 AM
Status:Closed Resolved:04-Dec-2018 08:08 PM
Product:macOS + SDK Product Version:10.13.2 Beta (17C83a)
Classification:Serious Bug Reproducible:Always
 
Summary:
In an App released in the Mac App Store, SKReceiptRefreshRequest does not refresh the App’s receipt and does not call either of its delegates. It works only in SandBox and on iOS.

Steps to Reproduce:
In a released app on Mac App Store:
1. Create a SKReceiptRefreshRequest
2. Implement its delegate
3. Start the request 
4. Wait for delegate callbacks

Expected Results:
1. One of the two delegate methods should be called eventually:
    a) requestDidFinish(_ request:)
    b) request(_ request:didFailWithError:)
2. The receipt should be refreshed after a) is called

Actual Results:
- Neither of the delegates is called (thus the App is waiting forever)
- The receipt file remains unchanged and is not updated

Version:
10.13.2 Beta (17C83a)

Notes:
With a development signed App and Sandbox user, the request performs as expected. On iOS it works in Sandbox and Production.

Workarounds:
1. Use SKPaymentQueue’s restoreCompletedTransactions(). Problem:
- In Sandbox this however only refreshes the receipt when IAPs were made previously. So when there is no receipt, even after calling restoreCompletedTransactions() there is still no receipt.
2. exit(173). This refreshes the receipt. Problem: The app is forcedly terminated which can lead to data loss, and the user flow is interrupted.

The behaviour was observed on 10.13.1 as well as on 10.13.2 betas.

Comments

DUPLICATE OF 35745461

By hannes.oud.dev at Feb. 2, 2018, 11:32 a.m. (reply...)

Apple Developer Relations

The original report on your issue has been closed recently. Please note that you will not be able to directly view the original report in order to keep its information confidential. If you have further questions about this issue, please update your report using the Apple Bug Reporter http://bugreport.apple.com.

By hannes.oud.dev at Feb. 2, 2018, 11:32 a.m. (reply...)

Apple Developer Relations

Engineering has determined that your bug report is a duplicate of another issue and will be closed. The open or closed status of the original report your bug was duplicated to appears in a text box within the bug detail section of the bug reporter user interface. For security and privacy reasons, we don't provide access to the original bug yours was duped to. If you have any questions or concerns, please update your report directly at this link: https://bugreport.apple.com/.

By hannes.oud.dev at Feb. 2, 2018, 11:32 a.m. (reply...)

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!