Files
fotospiel-app/docs/archive/capacitor-tenant-app.txt
2025-11-20 10:44:29 +01:00

64 lines
4.5 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Yes: with Capacitor you can sell one/off event packs and subscriptions inside the tenant app, but you
must follow Apple/Google in-app purchase rules. For iOS in the U.S., digital content/services bought in-app must use
Apple IAP; for Android on Play you must use Google Play Billing (with limited “User Choice Billing” alternatives in
some regions). Capacitor itself is fine; youll integrate store billing via a plugin.
Policy Reality
- iOS: Digital content/services consumed in the app must use InApp Purchase. Apple now documents an entitlement to
link to your website for purchases, but usage is constrained and varies by app category/region; the safe default in
the U.S. is native IAP for in-app purchase flows. (developer.apple.com (https://developer.apple.com/app-store/review/
guidelines/?utm_source=openai))
- EU nuance: Apple has been loosening antisteering restrictions under the DMA; in the EU developers can direct
users to external payment with different fees, pending evolving terms. Dont rely on this outside the EU. (apnews.com
(https://apnews.com/article/f68dbd203284ecab38860d8da2140899?utm_source=openai), reuters.com (https://www.reuters.com/
sustainability/boards-policy-regulation/apple-set-stave-off-daily-fines-eu-accept-app-store-changes-sources-say-2025-
07-22/?utm_source=openai))
- Android: Apps on Google Play that sell digital goods must use Play Billing. Googles “User Choice Billing” allows
an alternative in select countries (e.g., U.K.) with a 4% fee reduction; you still owe Play service fees. (blog.google
(https://blog.google/intl/en-in/products/platforms/answering-your-faqs-about-google-play/?utm_source=openai),
play.google.com (https://play.google.com/console/about/programs/userchoicepilot/?utm_source=openai), techcrunch.com
(https://techcrunch.com/2025/03/28/google-rolls-out-user-choice-billing-on-google-play-in-the-uk/?utm_source=openai))
Is It A Good Idea?
- For self-serve planners: Yes—native IAP lowers friction and can lift conversion; youll pay store fees but get
instant recovery, tax handling, and easy restore on new devices.
- For photobooth operators (B2B): Often better to keep web/Invoice/Stripe as the primary channel. In the app, let them
sign in and use existing entitlements; only expose IAP if you want true selfserve on mobile and accept fees.
How To Implement With Capacitor
- Billing layer: Use RevenueCats Capacitor SDK to unify StoreKit + Play Billing, handle receipts, entitlements,
webhooks, and “restore purchases.” This keeps your Laravel backend authoritative via webhooks. (github.com (https://
github.com/RevenueCat/purchases-capacitor?utm_source=openai), revenuecat.com (https://www.revenuecat.com/docs/getting-
started/installation/capacitor?utm_source=openai))
- Product model:
- Subscriptions: “Pro Operator” monthly/annual tiers (unlimited or quota per month).
- Consumables: “Event Packs” (e.g., 1, 5, 20 events) as consumables on both stores.
- Map SKUs → backend entitlements (events_remaining, max_guests, features).
- Web checkout coexistence:
- Web (PWA/desktop): Stripe for subscriptions and invoices.
- Native iOS (US): Do not show external purchase links; show “Manage Subscription” (opens App Store subscription
management) and use IAP for inapp purchase. (developer.apple.com (https://developer.apple.com/app-store/review/
guidelines/?utm_source=openai))
- Native Android: Offer Play Billing; optionally add User Choice Billing where allowed. (play.google.com (https://
play.google.com/console/about/programs/userchoicepilot/?utm_source=openai))
Auth and Tenancy
- Use token-based auth for the native app.
- On first run, select/confirm tenant (scan domain QR), then fetch entitlements from your API after successful
purchase webhook.
- Add Capacitor shell for resources/js/admin.
- Configure RevenueCat projects and products (iOS/Android), wire webhooks to Laravel to credit entitlements.
- Implement Purchase UI: list offerings, purchase/restore, show current plan/credits.
- Add “Event Packs” and “Operator Pro” subscription SKUs; gate features by entitlements.
- Compliance UX: iOS (US) avoid external pay links; Android optionally implement UCB where eligible.
If you want, I can draft:
- A SKU/entitlement map (subscriptions + event packs).
- A Capacitor + RevenueCat integration skeleton (purchase + restore + webhook controller in Laravel).
- A rollout plan covering EU vs US behavior and QA checklist.