Just For Privacy sake, I think Apple is not thinking it thorough for developer enough.
Atleast provide some unique way to identify a user.
Like when they are receiving premium receipt. Provide user the original_transaction_id also.
For upgrade/downgrade/crossgrade/cancel downgrade.
Right now, developer need to depend on the notification but that is not enough.
You need the data of each country and currency for that particular product id in the subscription plan.
Now for each user maintain their first payment currency and product_id they bought the plan.
Then when they change the plan, check the new autoRenewProductId in case of downgrade and crossgrade.
Ultimately, anytime when there's a DID_CHANGE_RENEWAL_PREF involved. we need to maintain 2 history and accordingly change user validity or renewal date and might need to calculate the prorated refund in case of UPGRADE and CROSSGRADE.
also check this: https://www.revenuecat.com/blog/engineering/ios-subscription-groups-explained/
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
Tags: