Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Do I need the server side to support iOS Grace Period of auto-renewable subscriptions?

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!

like image 355
Non Umemoto Avatar asked Sep 15 '19 08:09

Non Umemoto


People also ask

Does Apple automatically renew subscriptions?

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.

What is Grace Period Apple?

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.

What time do subscriptions renew Apple?

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.


1 Answers

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

like image 84
Palli Avatar answered Oct 04 '22 17:10

Palli