Solved

Can I delete a lifetime purchase made in the Testflight/sandbox?

  • 14 February 2022
  • 5 replies
  • 696 views

Badge +4

Hi there,Our app has options for subscriptions:

  1. monthly renewing subscriptions
  2. annual renewing subscriptions
  3. lifetime
  4. month_upgrade_lifetime

The lifetime  option is implemented as a non-consumable purchase in the App Store.

The issue we’re having is that once a user has purchased a lifetime subscription in the sandbox, there seems to be no way to ignore that purchase (even to Deleting Account, user can still restore after deleting the account).

So we have to treat sandbox lifetime purchases as invalid. But if I ignore sandbox purchases, this would also ignore non-sandbox purchases for the same entitlement.

 

As lifetime purchase may have high priorityin Revenuecat SDK.

If one user made a monthly subscription via AppStore and also made a lifetime purchase via TestFlight or made a lifetime purchase via TestFlight first and then made a month_upgrade_lifetime purchase via AppStore.

 restore or getPurchaseInfo ​​​​ methods will return the lifetime purchase recipient (Sandbox) first on TestFlight environment.

 

 

icon

Best answer by joshdholtz 23 February 2022, 12:22

View original

5 replies

Userlevel 3
Badge +5

Hey @Floating island!

This issue intrigues me (especially after reading the previous community post that you linked) 🤔 One question that I think will help me… Are you using the `login` method to identifier the customers? Or are you using anonymous users?

Thanks!

Badge +4

@joshdholtz we are using anonymous users.

Badge +4

To Simplify the problem, I think the `restore` function in revenuecat may return the most recent purchase entitlement.It means that if I’m a lifetime user in AppStore and then install the app from Testflight, and made a lifetime purchase (sandbox). This user can’t restore to AppStore lifetime entitlement(isSandbox = 0) anymore even restore from AppStore version.


Our suggestion to revenuecat SDK is

“If we are in AppStore version the restore method needs to return the last entitlement in AppStore Or give an option to filter entitlements in Sandbox”

So we call  disable the lifetime premium from Sandbox, and tell them to Restore in AppStore.

It will be better.

Thanks!

Userlevel 3
Badge +5

Hey @Floating island!

I talked this over with the team yesterday and we will be adding some functionality to make filtering for sandbox entitlements easier. I’m pretty excited about this change since I’m also a RevenueCat customer 😊 We will (most likely) be adding a method for checking if app is in sandbox (like `isSandbox`) and also method either picking active entitlements from sandbox or non-sandbox.

In the mean time, `EntitlementInfo` do have `isSandbox` and `isActive` properties that you could iterate and filter on.

I’m looking forward to when this change goes out but hopefully this helps you until then!

Thanks!

Badge +3

Hey @Floating island!

I talked this over with the team yesterday and we will be adding some functionality to make filtering for sandbox entitlements easier. I’m pretty excited about this change since I’m also a RevenueCat customer 😊 We will (most likely) be adding a method for checking if app is in sandbox (like `isSandbox`) and also method either picking active entitlements from sandbox or non-sandbox.

In the mean time, `EntitlementInfo` do have `isSandbox` and `isActive` properties that you could iterate and filter on.

I’m looking forward to when this change goes out but hopefully this helps you until then!

Thanks!


Hey,
I just had a look at your flutter API docs and I did not find any option to detect if the app is currently in sandbox/testflight or not.
 

Reply