I’d like to ask for guidance on how to properly handle cases where users attempt to repurchase a subscription product they are already subscribed to.
In my app, I’ve implemented a subscription system offering both monthly and annual plans.
The issue I’m currently facing is: when a user who already has an active monthly subscription attempts to repurchase the same monthly plan via the paywall, the system silently ignores the request — no callback is triggered, and the only output I can see is the following log:
Ignoring purchase request for already subscribed package
While investigating this issue, I noticed something interesting: if I configure the package in the offering using PackageType.CUSTOM
instead of the standard PackageType.MONTHLY
, the PaywallViewModel
is able to proceed with performPurchase()
(since Package.currentlySubscribed
returns false
).
In this case, the RC SDK ends up calling the Google Play billing flow, which results in an error due to the duplicate purchase. This error is then surfaced to the user through an error message.
Surprisingly, this outcome is actually helpful for my use case — the user receives visible feedback that the purchase cannot be completed.
That said, I’d like to confirm:
Is relying on PackageType.CUSTOM
to trigger a Google Play error a valid approach to prevent duplicate subscription purchases?
Or is there a more recommended or proper flow for handling this kind of situation?
Thanks in advance for your support and advice.