Checkout and payments SDK reference
Checkout drafts, validation, submission and payment-facing presentation data.
Import these public values from @upstorr/theme-sdk/v1. Do not import their internal source files.
createThemeCheckoutDraft
createThemeCheckoutDraft(checkout: ThemeCheckoutRuntimeSnapshot | ThemeCheckoutSnapshot | null, current?: ThemeCheckoutDraft): ThemeCheckoutDraft
createThemeCheckoutLineItemView
createThemeCheckoutLineItemView(item: unknown, index: number, checkout: ThemeCheckoutRuntimeSnapshot | ThemeCheckoutSnapshot | null): ThemeCheckoutLineItemView
createThemeCheckoutRuntimeInputFingerprint
createThemeCheckoutRuntimeInputFingerprint(input: { snapshot: ThemeCheckoutRuntimeSnapshot | null; error: string | null; }): string
createThemeCheckoutSavedAddressPatch
createThemeCheckoutSavedAddressPatch(type: "shipping" | "billing", address: Record<string, unknown>): ThemeCheckoutDraft
createThemeCheckoutSavedAddressSelect
createThemeCheckoutSavedAddressSelect(checkout: ThemeCheckoutRuntimeSnapshot | ThemeCheckoutSnapshot | null, draft: ThemeCheckoutDraft, type: "shipping" | "billing"): ThemeCheckoutSavedAddressView
createThemeCheckoutView
createThemeCheckoutView(checkout: ThemeCheckoutRuntimeSnapshot | ThemeCheckoutSnapshot | null, draft: ThemeCheckoutDraft, status?: { error?: string | null; message?: string | null; }): ThemeCheckoutView
createThemeDeliveryAddressPatch
createThemeDeliveryAddressPatch(place: ThemeMapPlace): ThemeCheckoutDraft
createThemeQrDataUrl
createThemeQrDataUrl(value: string, options?: { width?: number; color?: { dark?: string; light?: string; }; }): Promise<string>
fetchThemeCheckout
fetchThemeCheckout(sessionId?: string): Promise<ThemeCheckoutSnapshot>
fetchThemeMapPlace
fetchThemeMapPlace(placeId: string): Promise<ThemeMapPlace>
formatThemeCheckoutPrice
formatThemeCheckoutPrice(value: number | undefined, checkout: ThemeCheckoutRuntimeSnapshot | ThemeCheckoutSnapshot | null): string
mergeThemeCheckoutDraftPatch
mergeThemeCheckoutDraftPatch(current: ThemeCheckoutDraft, patch: ThemeCheckoutDraft): ThemeCheckoutDraft
normalizeThemeCheckoutDraft
normalizeThemeCheckoutDraft(draft: ThemeCheckoutDraft, checkout: ThemeCheckoutRuntimeSnapshot | ThemeCheckoutSnapshot | null): ThemeCheckoutDraft
quoteThemeLocalDelivery
quoteThemeLocalDelivery(input: { sessionId: string; place: ThemeMapPlace; draftVersion?: number; }): Promise<ThemeCheckoutSnapshot>
requireThemeCheckoutRuntimeSnapshot
requireThemeCheckoutRuntimeSnapshot(value: unknown): ThemeCheckoutRuntimeSnapshot
resolveThemeCheckoutLineItemImageAspectRatio
resolveThemeCheckoutLineItemImageAspectRatio(value: unknown, item: unknown): string
resolveThemeCheckoutResourceSessionId
resolveThemeCheckoutResourceSessionId(currentSessionId: string | null, incomingSessionId: string | null): string | null
reverseThemeMapPlace
reverseThemeMapPlace(latitude: number, longitude: number): Promise<ThemeMapPlace>
runThemePaymentAction
runThemePaymentAction({ action, labels, prefill, }: { action: ThemePaymentAction; labels: ThemePaymentLabels; prefill?: ThemePaymentPrefill; }): Promise<ThemePaymentConfirmation>
saveThemeCheckoutDraft
saveThemeCheckoutDraft(sessionId: string, draft: ThemeCheckoutDraft): Promise<ThemeCheckoutSnapshot>
searchThemeMapAddresses
searchThemeMapAddresses(input: string, bias?: { latitude: number; longitude: number; } | null): Promise<ThemeMapAddressSuggestion[]>
shouldResetThemeCheckoutTransientState
shouldResetThemeCheckoutTransientState(current: ThemeCheckoutRuntimeSnapshot | null, next: ThemeCheckoutRuntimeSnapshot | null): boolean
submitThemeCheckout
submitThemeCheckout(input: { sessionId?: string; draft: ThemeCheckoutDraft; checkout?: ThemeCheckoutSnapshot | null; onCheckoutSaved?: (checkout: ThemeCheckoutSnapshot) => void; labels?: Partial<ThemePaymentLabels>; }): Promise<ThemeCheckoutSubmitResponse>
THEME_CHECKOUT_MANUAL_ADDRESS_OPTION
THEME_CHECKOUT_MANUAL_ADDRESS_OPTION: "__manual__"
ThemeCheckoutRuntime
type ThemeCheckoutRuntime = {
view: ThemeCheckoutView;
isEmpty: boolean;
isUpdating: boolean;
isComplete: boolean;
message: string | null;
error: string | null;
addressSuggestions: ThemeMapAddressSuggestion[];
isAddressSearching: boolean;
updateDraftFields: (patch: ThemeCheckoutDraft, persist?: boolean) => void;
saveDraft: () => Promise<void>;
saveDraftWithPatch: (patch: ThemeCheckoutDraft) => Promise<void>;
removeUnavailableItem: (lineItemId: string) => Promise<void>;
searchLocalDeliveryAddresses: (input: string) => Promise<void>;
selectLocalDeliveryAddress: (placeId: string) => Promise<void>;
confirmLocalDeliveryPin: (latitude: number, longitude: number) => Promise<void>;
useCurrentLocationForLocalDelivery: () => Promise<void>;
placeOrder: () => Promise<void>;
};
useThemeCheckout
useThemeCheckout(checkout: unknown): ThemeCheckoutRuntime