Stack: Flutter, purchases_flutter 9.7.0, iOS target 14, RC sandbox Web Billing, same RC project for App Store + Web Billing.
Entitlement: premium (Web product appname_weekly_web attached).
App User ID: e.g., YuSUDJGSSUQqYkeJqu0xoH2 (logged in via Purchases.logIn(uid)).
WPL (identified):
https://pay.rev.cat/sandbox/<TOKEN>/<APP_USER_ID>?package_id=$rc_weekly
Server says it’s active:
REST /v1/subscribers/<APP_USER_ID> shows premium entitlement active (store: rc_billing, is_sandbox: true). WPL revisits show “Success” (already subscribed).
Client says it’s not:
On app resume:
await Purchases.invalidateCustomerInfoCache();
final info = await Purchases.getCustomerInfo(); print(info.entitlements.active.keys); // => ()
I have tried polling every 2 seconds and the entitlement never gets updated.
What does work:
If I build the WPL with originalAppUserId (or anonymous flow) and tap the Redeem Purchase deep link:
final r = await Purchases.parseAsWebPurchaseRedemption(url);
if (r != null) await Purchases.redeemWebPurchase(r);
→ entitlement appears immediately.
Tried: matching UID in WPL vs SDK, mapping verified, same project, invalidate→get, short polling, verbose logs, upgraded SDK
