Fix Deep Link & Razorpay

Customer: AI | Published: 27.12.2025

I have a Flutter-based QR-code menu (Android, iOS and web) backed by Firebase. Right now each QR code is supposed to trigger a native deep-link into the app, but when it scans I get an “Invalid URL format” error instead of the menu page. I need that link logic repaired so every generated code reliably opens the correct screen on both platforms. At the same time I’m rolling out paid plans for restaurant owners. The flow I want is: • Restaurant picks a plan, pays through Razorpay, and only then does the QR code become active for their venue. • Subscriptions should be handled inside Razorpay with automatic renewal. Please wire Razorpay’s Subscription API into the existing Firebase user records so that app features (QR activation, menu edits, etc.) are gated by an active subscription token. After payment succeeds, the system should mark the venue as active; on failed renewal it should revoke access and render their QR code inactive until payment is resolved. Acceptance criteria 1. Scanning any new or existing code opens the correct in-app page on both Android and iOS with no URL errors. 2. Razorpay checkout works in production mode, stores payment status in Firebase, and renews automatically. 3. QR codes for restaurants without an active subscription display an “inactive” message. 4. Clear setup instructions and a short hand-off call so I can manage future plan changes myself. Code is in Flutter 3.x; backend is Firebase Auth + Firestore. You’re free to use dynamic links, custom URL schemes or any proven method as long as it’s robust and meets the above criteria.