Fully implemented StoreKit 2 in-app purchase system: StoreKitManager.swift: - Product loading from App Store with Product.products() API - Complete purchase flow with result handling (success/cancelled/pending) - Transaction verification using VerificationResult - Backend receipt verification via SubscriptionApi - Automatic transaction observation with Transaction.updates - Current entitlements checking with Transaction.currentEntitlements - Restore purchases with AppStore.sync() - Transaction finishing to acknowledge purchases - Subscription cache updates after successful verification - Error handling with custom StoreKitError enum UpgradePromptView.swift: - Integration with StoreKitManager singleton - Automatic product loading on view appear - Display of subscription options with real pricing - Product selection with loading states - Purchase flow with try/catch error handling - Success alert on purchase completion - Error message display for failed purchases - Restore purchases button - SubscriptionProductButton component for product display - Annual subscription highlighted with "Save 17%" badge - Retry loading if products fail to fetch Key features: - Async/await pattern throughout - MainActor dispatching for UI updates - Transaction cryptographic verification - Backend verification sends transaction ID - Purchased product IDs tracking - Transaction listener cleanup in deinit - Products sorted by price (monthly first) Ready for testing with Configuration.storekit in simulator. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
9.9 KiB
9.9 KiB