You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The schema-sync MVP ships read-first: booking requests are created without payment (bookingSource: REQUEST_SUBMITTED), consultants approve to APPROVED_PENDING_PAYMENT, and payment completes on the web. All checkout/payment surfaces are gated behind FeatureFlags.payments (false), with backend featureGate middleware returning 403 feature_disabled on checkout/, payments/, invoices/, webhooks/.
App Store compliance
1:1 person-to-person services (consultations, 1:1 subscriptions) may use purchase methods other than IAP per App Review Guideline 3.1.3(d) → Razorpay in-app is allowed for these.
One-to-few/one-to-many (webinars, classes) must use IAP — tracked separately.
Keep approved-pending-payment copy neutral for group programs (already handled in lib/domain/entities/booking/booking.dart).
Scope (priority order: Razorpay → Stripe → Dodo)
Re-enable direct checkout path in lib/features/booking/screens/booking_screen.dart (FeatureFlags.payments branch already preserves it)
Update checkout_repository.dart + webhook_handlers.dart for the synced schema: Payment BigInt paise amounts, PaymentLeg rows (CARD leg at minimum), clientIdempotencyKey, Refund/Dispute.amountPaise
Context
The schema-sync MVP ships read-first: booking requests are created without payment (
bookingSource: REQUEST_SUBMITTED), consultants approve toAPPROVED_PENDING_PAYMENT, and payment completes on the web. All checkout/payment surfaces are gated behindFeatureFlags.payments(false), with backendfeatureGatemiddleware returning 403feature_disabledoncheckout/,payments/,invoices/,webhooks/.App Store compliance
lib/domain/entities/booking/booking.dart).Scope (priority order: Razorpay → Stripe → Dodo)
lib/features/booking/screens/booking_screen.dart(FeatureFlags.paymentsbranch already preserves it)checkout_repository.dart+webhook_handlers.dartfor the synced schema:PaymentBigInt paise amounts,PaymentLegrows (CARDleg at minimum),clientIdempotencyKey,Refund/Dispute.amountPaisebooking_action_buttons.dart,my_bookings_screen.dart— already flag-gated)FeatureFlags.paymentsinlib/core/config/feature_flags.dart+backend/lib/config/feature_flags.darttogetherRelated: #15, #19, #20, #44, #45, #57