Preventing Trial Period Fraudulent in iOS In App purchases
Asked Answered
A

0

0

We have a app with a auto renewable IAP for which we offer a initial trial period to the user and charge once the trial period has expired. Our app maintains user account management(user login) and all features (including the IAP) are accessible only when the user is logged in.

There are two scenarios to consider:

Case 1: A new user(app user) opts to purchase the subscription for trial period on a device where she's logged in with her apple id. She later(post expiry of the trial period) installs the app on another device and signs up with a different app account but uses the same Apple Id. Since Apple Ids are opaque to the app, the app has no way to know that this user has already purchased trial, so the app UI presents them an option to start with a trial period. Since the Apple Id used is same, the user will be charged.

Although, this scenario is rare and can be justified on the pretext that the same Apple Id is used so the user is supposed to be charged, but it is fallacious on part of the app to suggest that trial period is available for the new app user(different login id)

Also, the user might not be intentionally doing it to avail a second trial period, but might have forgotten about the previous purchase and may use an alternate email next time they sign up.

How do you prevent the user to be charged if they have already used up the trial for the same Apple ID, or if there's a way to know if the current user(Apple ID user) has already made this purchase in the past, so that you do not show them trial option anymore. Would restore purchases help in that regard?

Case 2: The same app user may intentionally change the apple id on the new/same device to avail multiple trials. While your app will detect the user has already purchased the trial, you may choose to let the user not show the subscription purchasing UI but if you do the purchase workflow on part of Apple would still consider it to be trial period(new apple id) and not remit you the payment for the same.

How do you circumvent these conditions or if there's a flaw in my understanding where these situations would not occur at all.

For case 1: maybe the following may work, but not sure:

Whenever there's a new login to the app, the app should either refresh receipt or ask to restore transactions to the user(this can be frustrating for actual first time users) and the receipt validation should be performed to check if the user had previous purchase and if the transaction id is linked to some previous user. This is basically a kind of self managed restore. But still in this case, the new user will not be able to get the trial period, you can just prompt that the current apple id is already used for trial.

Please suggest if my understanding is correct.

Abuzz answered 2/5, 2019 at 13:14 Comment(4)
One way to solve the first issue might be that the first time they actually use the "trial" software and it registers with the appleID it immediately notifies them the trial has expired, and their existing subscription will be charged. You must know at this stage, even if you don't know during installation. If you don't know the AppleID at some stage, then how will you ever charge them? My understanding is the second issue would not arise if you can already detect the deviceID during installation, you won't offer the trial?Comehither
Second case may also happen with a new device. A new device can be used to avail the same trial with different Apple Id while keeping the user login same. Also, device identification can be tricky, especially across app uninstalls and reinstalls.Abuzz
So you have 3 things to manage: device-id, apple-id and user-id? Can/should customers expect to have multiple user-ids and be charged appropriately on one device? E.g. a personal account and a work account on the same device?Comehither
@GemTaylor: Actually I am looking for answers in both the cases. If multiple accounts are not allowed, every purchase request can be pre validated with a refresh receipt request to check if the current app store user has already availed the trial period. But in case we allow multiple accounts (like Instagram), there's no way to provide the trial period again for the second account. (and well I guess Instagram doesn't do IAP as well)Abuzz

© 2022 - 2024 — McMap. All rights reserved.