Question
Part of the Phase 1 Payment System: Design & Build Map. Design backend data model & Stripe integration flow for Phase 1 payments designed a single-product flow (buy voter-limit blocks via a tier-select modal). The organizer-facing plan has since shifted to a cart: an "Upgrade Election" button opens a popout where the user can add multiple line items to one Stripe Checkout Session — starting with voter-limit blocks in batches, with other add-on types (e.g. a custom slug) anticipated but explicitly not built in this map (see Out of scope).
How should the checkout data model, Checkout Session creation, and webhook fulfillment generalize to support multiple line items and future product types, while Phase 1 still ships only the voter-limit product?
Question
Part of the Phase 1 Payment System: Design & Build Map. Design backend data model & Stripe integration flow for Phase 1 payments designed a single-product flow (buy voter-limit blocks via a tier-select modal). The organizer-facing plan has since shifted to a cart: an "Upgrade Election" button opens a popout where the user can add multiple line items to one Stripe Checkout Session — starting with voter-limit blocks in batches, with other add-on types (e.g. a custom slug) anticipated but explicitly not built in this map (see Out of scope).
How should the checkout data model, Checkout Session creation, and webhook fulfillment generalize to support multiple line items and future product types, while Phase 1 still ships only the voter-limit product?