Commerce & Orders

Order Summary

The final checkout review + payment step in the flow: Menu Item Detail → Cart → Pickup Scheduler → Order Summary → Payment or Confirmation. It shows fulfillment data, itemized totals, payment readiness, and then either submits directly to backend orders or hands off into Stripe flows.

Flow positionFinal checkout step

Last customer review before payment, confirmation, and order creation.

Runtime inputsnavigationParams · cartItems · callbacks

Receives pending order state and actions from AppPlayer runtime.

Payment handlingCheckout Session · PaymentIntent fallback

Uses Stripe when available, with backend order submission at the end.

What it does

Four things worth knowing

Renders fulfillment and store context

Shows restaurant information, fulfillment mode, selected pickup details, and order context coming from earlier checkout screens.

Builds full itemized totals view

Lists line items, quantities, selected options, and totals (subtotal, service fee, grand total) using existing currency and parsing helpers.

Tracks Stripe readiness and payment path

Checks Stripe configuration, uses Checkout Session when possible, and falls back to PaymentIntent flow when needed.

Submits backend order payload

Creates the final payload and calls onSubmitOrder, then transitions into payment or confirmation state based on runtime context.

Builder setup

Find it, drop it, wire checkout navigation

Where to find itAdd it to your checkout screen

  1. Component picker → Commerce & OrdersOrder Summary.
  2. Drop it onto the final checkout review screen after Cart or Pickup Scheduler.
  3. Set paymentScreenId for Stripe flow and ordersScreenId/menuScreenId for navigation return paths.

Before you publishThree things to check

  1. Keep payload keys stable (tracking, trackingContext, items, totals fields) for backend and orders list mapping.
  2. If fulfillment/pickup fields change, update Pickup Scheduler and Cart to keep the flow in sync.
  3. Verify backend recalculates totals server-side before creating charge or final order record.
Category: Commerce & OrdersComponent: BuilderOrderSummaryRegistry key: order-summaryBundle mirror: bundledSourceFiles.ts
Props

Most edited runtime and builder props

PropTypeDefaultDescription
ordersScreenId, menuScreenId, paymentScreenIdstringnoneNavigation targets for returning to orders/menu and moving to payment flow.
cartItems, navigationParamsruntimeInjected by AppPlayerPending order data from Cart and Pickup Scheduler.
onSubmitOrder, onGoBack, onScreenNavigatefunctionInjected by AppPlayerSubmission and navigation callbacks used by checkout actions.
headerText, emptyText, checkoutButtonText, restaurantNamestringRegistry defaultsMain copy for heading, empty state, CTA, and store naming in checkout UI.
serviceFeePct, appId, secureApiCall, usesBackendOrders, _prefetchedStripeConfig, _prefetchedPaymentMethodsnumber / runtimeRuntime dependentService fee math and integration controls for Stripe readiness and backend order flow.
Toggles & colours

Make it yours

Style tokens are editable through registry props, with selected values intentionally locked in runtime. Keep registry defaults and component locks aligned.

PropDefaultWhat it controls
backgroundColor, cardBackgroundColorTheme defaultsOuter and inner checkout card backgrounds.
titleColor, metaColor, priceColorRegistry defaultsPrimary text, supporting metadata, and monetary value colours.
accentColor, accentTextColorRegistry defaultsCTA and emphasis colours for payment actions.
borderColor, borderRadiusRegistry defaultsCard edge styling and rounded corner radius.
fontFamily, titleFontSizeRegistry defaultsTypography family and heading sizing.
metaFontSizeLockedIntentionally removed from editable prop list and controlled via LOCKED_ORDER_SUMMARY_PROPS.
Tips

Common mistakes to avoid

Keep payload keys stable

Do not casually rename tracking, trackingContext, items, or totals fields. Backend mapping and orders history depend on these names.

Sync cart and pickup changes

If fulfillment or pickup field shapes change here, update the same fields in Cart and Pickup Scheduler in the same release.

Use existing helpers for money

Keep formatting with formatCurrencyAmount(…) and continue using established numeric parsing helpers to avoid rounding drift.

Never expose payment secrets

Keep tokens and secret keys backend-side. UI should only consume non-sensitive readiness and client-safe payment configuration.