Apple introduced Grace Period for subscriptions.
https://developer.apple.com/app-store-connect/whats-new/?id=billinggraceperiod
I still can't tell if I need to set up the server-side to support this feature or just checking the receipt on the server is just an recommended way and I can use Grace Period without the server-side?
For example, you can check the receipt in the device to use auto-renewable subscriptions on iOS without the server-side, but checking the receipt with the server is a recommended way to avoid scum.
The grace period descriptions say you need to check receipts and server notifications, I guess you can check receipts on the device only if you want, but not sure about server notifications part.
Any help is appreciated!
They automatically renew at the end of their duration until the user chooses to cancel. Subscriptions are available on iOS, iPadOS, macOS, watchOS, and tvOS.
The grace period begins at the time of a billing error and cannot be altered. During this time, listeners are still able to access subscription benefits. If the user is recovered within the first 28 days, the existing billing date is maintained.
The subscription renewal process begins in the 10 days before the expiration date. During those 10 days, the App Store checks for any billing issues that might delay or prevent the subscription from being automatically renewed, for example, whether: The customer's payment method is active.
You can do it without server but not with offline on-device receipt validation as you need fresh receipt info from /verifyReceipt
endpoint from Apple servers. That's why it's recommended to use server-to-server validation as direct network request is vulnerable to man-in-the-middle attack.
Parsing receipt validation response you can get info whether subscription is in grace period by looking for grace_period_expires_date_ms
in pending_renewal_info and also check is_in_billing_retry_period to indicate Apple is still trying to collect payment.
Receipt response documentation: https://developer.apple.com/documentation/appstorereceipts/verifyreceipt Handling billing grace period documentation: https://developer.apple.com/documentation/storekit/in-app_purchase/reducing_involuntary_subscriber_churn
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With