Question

android users are able to create two subscriptions if one is paused

  • 1 February 2022
  • 7 replies
  • 364 views

Badge +2

Hi there,

We have had multiple users complain about being billed for multiple subscriptions at the same time.

After some investigation we discovered that if an Android user has a subscription paused in the Google Play Store, they are prompted to subscribe again because the SDK reports that they have no active subscription. The original paused subscription will eventually resume and the user will end up with multiple ongoing subscriptions.

Re: RevenueCat/purchases-android

"Subscription Paused" - This state won't be able to be directly detected through the SDK currently, but is already logged as a future feature. Google recommends providing a deep link for the user to manage their subscription. This can be accessed through the managementURL property on the Purchaser Info object and shown to users with an expired subscription.

Is there an update to this? I wasn’t able to find anything. Being able to detect that a user has a subscription paused would allow us to not let the user subscribe twice. The UI could mention that a subscription is paused the direct them to the `managementURL`.

"entitlements":{
"active":{

},
"all":{
"premium":{
"billingIssueDetectedAtMillis":null,
"billingIssueDetectedAt":null,
"unsubscribeDetectedAtMillis":null,
"isSandbox":true,
"productIdentifier":"monthly",
"identifier":"premium",
"periodType":"NORMAL",
"unsubscribeDetectedAt":null,
"isActive":false,
"store":"PLAY_STORE",
"expirationDate":"2022-01-31T23:10:25.000Z",
"originalPurchaseDate":"2022-01-31T22:58:27.000Z",
"latestPurchaseDate":"2022-01-31T23:05:25.000Z",
"willRenew":true
}
}
}

Looking at the purchaserInfo object it appears that it may be possible to infer a paused subscription by checking for an inactive entitlement with isActive === false and willRenew === true and possibly unsubscribeDetectedAtMillis === null. However, it seems like it’d be better if the SDK handled this state was detected in the SDK instead.

Here is a link to the relevant Google Play developer documentation on paused subscriptions:

https://developer.android.com/google/play/billing/subscriptions#pause 

 

 


7 replies

Userlevel 6
Badge +8

Hey @CarbonKevin! 👋

Thanks for the feedback here, this makes a lot of sense and seems like an experience we can improve SDK-wise.

In the mean time, I do think that it makes sense to check isActive == false && willRenew == true to detect if the subscription is paused - if a user is in that state, you might want to redirect them to the Play Store to manage their subscription instead of allowing them to renew again.

Does that make sense? I went ahead and shared this feedback with the SDK team and will add this to our backlog to improve. Let me know if you have any questions for now!

Badge +2

Hey @cody, that’s great to hear that you are going to add it to your backlog.

Would it be possible to confirm with the SDK team that isActive == false && willRenew == true  is the correct logic to check that a Google Play subscription is paused? Do we need to check unsubscribeDetectedAtMillis === null at all to make sure that the user hasn’t paused then unsubscribed, or will checking willRenew == true cover that case? If there’s any other nuances we should be aware of before implementing our own logic it’d be great to get some info from the RC team.

Badge +2

I’d also like to mention that when there are no active entitlements in the purchaserInfo, the managementURL is null. It’d be great if the SDK handled this appropriately and provided the managementURL for PAUSED subscriptions as well. Thanks!

Userlevel 1
Badge +8

@CarbonKevin has the `managmentURL` is `null` issue been fixed yet? I am looking to pick up this feature soon in our app but thinking that I should disable the PAUSE feature in Google Play store console

Badge +2

@CarbonKevin has the `managmentURL` is `null` issue been fixed yet? I am looking to pick up this feature soon in our app but thinking that I should disable the PAUSE feature in Google Play store console

 

I don’t believe so. We ended up implementing the solution mentioned in the posts above to detect if the subscription is paused, then we simply use the device os to suggest which store to manage their subscription.

Userlevel 1
Badge +8

@CarbonKevin thanks for the quick reply.

 

@cody do you think this will be fixed soon?

Badge +3

@cody it would also be extremely helpful if there was something like a “SUBSCRIPTION_UNPAUSED” webhook for those of us who are handling everything via Firebase integration / streams. Atm I can react to any event, including SUBSCRIPTION_PAUSED (which would allow for me to update UI to let the user know that) but then when the subscription is resumed / unpaused there is no webhook / event for that to let the user know that it is not paused anymore. 

Reply