@blocklet/payment-react
Version:
Reusable react components for payment kit v2
64 lines (63 loc) • 1.94 kB
TypeScript
import type { TCheckoutSessionExpanded, TCustomer, TPaymentIntent, TPaymentLink, TPaymentMethodExpanded } from '@blocklet/payment-types';
import type { SxProps, ThemeOptions } from '@mui/material';
import type { LiteralUnion } from 'type-fest';
export type CheckoutContext = {
checkoutSession: TCheckoutSessionExpanded;
paymentMethods: TPaymentMethodExpanded[];
paymentLink?: TPaymentLink;
paymentIntent?: TPaymentIntent;
customer?: TCustomer;
mode: LiteralUnion<'standalone' | 'inline' | 'popup', string>;
action?: string;
showCheckoutSummary?: boolean;
currencyId?: string;
};
export type CheckoutFormData = {
customer_name: string;
customer_email?: string;
customer_phone?: string;
payment_method: string;
payment_currency: string;
billing_address?: {
country: string;
state?: string;
city?: string;
line1?: string;
line2?: string;
postal_code: string;
};
};
export type PaymentThemeOptions = ThemeOptions & {
sx?: SxProps;
};
export type CheckoutProps = Partial<CheckoutCallbacks> & {
id: string;
extraParams?: Record<string, any>;
action?: string;
mode?: LiteralUnion<'standalone' | 'inline' | 'popup' | 'inline-minimal' | 'popup-minimal', string>;
theme?: 'default' | 'inherit' | PaymentThemeOptions;
formType?: 'donation' | 'payment';
formRender?: Record<string, any>;
};
export type CheckoutCallbacks = {
onPaid: (res: CheckoutContext) => void;
onError: (err: Error) => void;
onChange?: (data: CheckoutFormData) => void;
goBack?: () => void;
};
export type PricingRenderProps = {
totalPrice: string;
unitPrice?: string;
quantity: string;
totalAmount: string;
};
export type ActionProps = {
[key: string]: {
color?: string;
variant?: string;
sx?: {
[key: string]: any;
};
text?: string;
};
};