import React, { FunctionComponent, ReactNode } from 'react'; import { StripeElements } from './stripe-elements'; import { StripeForm } from './stripe-form'; import { GatewayFormProps, AbstractPaymentModal } from '../abstract-payment-modal'; import { ShoppingCart } from '../../../models/payment'; import { PaymentSchedule } from '../../../models/payment-schedule'; import { User } from '../../../models/user'; import stripeLogo from '../../../../../images/powered_by_stripe.png'; import mastercardLogo from '../../../../../images/mastercard.png'; import visaLogo from '../../../../../images/visa.png'; import { Invoice } from '../../../models/invoice'; interface StripeModalProps { isOpen: boolean, toggleModal: () => void, afterSuccess: (result: Invoice|PaymentSchedule) => void, onError: (message: string) => void, cart: ShoppingCart, currentUser: User, schedule?: PaymentSchedule, customer: User } /** * This component enables the user to input his card data or process payments, using the Stripe gateway. * Supports Strong-Customer Authentication (SCA). * * This component should not be called directly. Prefer using which can handle the configuration * of a different payment gateway. */ export const StripeModal: React.FC = ({ isOpen, toggleModal, afterSuccess, onError, cart, currentUser, schedule, customer }) => { /** * Return the logos, shown in the modal footer. */ const logoFooter = (): ReactNode => { return (
powered by stripe mastercard visa
); }; /** * Integrates the StripeForm into the parent PaymentModal */ const renderForm: FunctionComponent = ({ onSubmit, onSuccess, onError, operator, className, formId, cart, customer, paymentSchedule, children }) => { return ( {children} ); }; return ( ); };