Grant mobile plans from verified App Store and Play purchases (#78).
CI / test (pull_request) Successful in 10s
Unit Tests / test (pull_request) Successful in 10s

The app confirms a StoreKit signed transaction or Play purchase token. The backend checks it with Apple or Google before writing the ledger, and the RevenueCat webhook no longer grants access.
This commit is contained in:
westfarn committed 2026-10-19 06:14:27 -05:00
1 parent bb5c43a4e7
commit 74e8a4ad71
14 files changed
+1141 -119

No files matched your search

+5 -2
View File
@@ -247,6 +247,8 @@ def needs_checkout(user) -> bool:
UserSubscription.Source.ADMIN,
UserSubscription.Source.STRIPE,
UserSubscription.Source.REVENUECAT,
UserSubscription.Source.APP_STORE,
UserSubscription.Source.PLAY_STORE,
):
return False
return True
@@ -457,8 +459,9 @@ def assign_plan_from_revenuecat(
cancel_at_period_end: bool | None = None,
current_period_end=None,
keep_existing_plan_if_unknown: bool = False,
source: str | None = None,
) -> UserSubscription:
"""Assign a catalog plan from a RevenueCat store purchase event."""
"""Assign a catalog plan from a verified store purchase."""
seed_subscription_plans(update_existing=False)
existing = (
UserSubscription.objects.filter(user=user).select_related("plan").first()
@@ -493,7 +496,7 @@ def assign_plan_from_revenuecat(
sub = assign_plan(
user,
plan=plan,
source=UserSubscription.Source.REVENUECAT,
source=source or UserSubscription.Source.REVENUECAT,
status=status,
revenuecat_original_transaction_id=revenuecat_original_transaction_id or "",
log_auth_event=False,