RevenueCat / react-native-purchases

React Native in-app purchases and subscriptions made easy. Support for iOS and Android.
https://www.revenuecat.com
MIT License
770 stars 84 forks source link

Promotional subscription overrides normal subscription in `customerInfo.entitlements` #844

Open Bi0max opened 10 months ago

Bi0max commented 10 months ago

Hi all,

When I have both normal and promotional subscriptions active (and they have the same entitlement), I naturally see only one of them (only promotional) in the customerInfo.entitlements, since it is a dictionary with unique keys. But there is no way that I can get information about both subscriptions, because there is no customerInfo.subscriptions field.

And for Play Store it's important to know some information about a normal subscription, since it influences the googleProductChangeInfo for purchasePackage method.

The CustomerInfo interface (https://revenuecat.github.io/react-native-purchases-docs/7.15.0/interfaces/CustomerInfo.html).

  1. Environment
    1. Platform:Android
    2. SDK version: 7.6.0
    3. OS version: 14
    4. Xcode/Android Studio version: using expo
    5. React Native version: 0.72.5
    6. SDK installation (CocoaPods + version or manual): expo
    7. How widespread is the issue. Percentage of devices affected: Testing on my own device before pushing to production at the moment
  2. Debug logs that reproduce the issue
  3. Steps to reproduce, with a description of expected vs. actual behavior
  4. Other information (e.g. stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow, etc.)

Additional context Add any other context about the problem here.

RCGitBot commented 10 months ago

👀 We've just linked this issue to our internal tracker and notified the team. Thank you for reporting, we're checking this out!

NachoSoto commented 10 months ago

Great question. It is true that entitlements cannot disambiguate this because of their format. You mentioned that "there is no customerInfo.subscriptions field". Would activeSubscriptions work for you?

Bi0max commented 9 months ago

Hi @NachoSoto , I use activeSubscriptions for now. But this array has only identifiers. I need to get a periodType from the subscription.

NachoSoto commented 9 months ago

With those you can fetch the product and look at their subscriptionPeriod. Would that work?

Bi0max commented 9 months ago

With those you can fetch the product and look at their subscriptionPeriod. Would that work?

I meant a periodType, which is TRIAL, NORMAL or INTRO. It's not an attribute of the product. It's an attribute of a specific user's subscription

I need this field to make a correct change of subscription for Play Store. I need to know, whether the current subscription is in TRIAL at the moment or not.

NachoSoto commented 9 months ago

Sorry for the confusion, I see what you were saying now. This is indeed a limitation because that information is only available in the entitlement, and there can only be one entitlement active with an identifier. Is it not giving you the expected type?

Bi0max commented 9 months ago

Hi @NachoSoto , no, because entitlement shows me the PROMO subscription. PROMO subscription overrides the one from the Play Store, if they have the same entitlement. And PROMO subscription is always periodType=NORMAL.