@fractalpay/fractalpay-next-dev 0.0.211 → 0.0.213
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +137 -0
- package/dist/index.js +33 -8401
- package/dist/index.mjs +3013 -0
- package/package.json +15 -12
- package/dist/index.js.map +0 -1
- package/types/fractal.d.ts +0 -11
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../package.json","../src/app/components/RequestPayment/RequestPayment.tsx","../src/app/components/Loader/LoaderStyle.tsx","../src/app/components/Loader/Loader.tsx","../src/app/components/baseurl.ts","../src/app/components/Errortext.ts","../src/app/components/CustomModal/CustomModal2styles.tsx","../src/app/components/CustomModal/CustomModal2.tsx","../src/app/components/RequestPayment/RequestPaymentstyles.tsx","../src/app/utils/Common.js","../src/app/components/RequestPayment/RequestPreAuthPayment.tsx","../src/app/components/Charge/GetPaymentPage.tsx","../src/app/components/Charge/Chargewidgetstyles.tsx","../src/app/components/SuccessMessage/SuccessMszStyle.tsx","../src/app/components/SuccessMessage/HandleSubmit.tsx","../src/app/components/SuccessMessage/SuccessMsz.tsx","../src/app/components/Datascript.tsx","../src/app/components/ErrorCardMessage/ErrorCardMessageStyle.tsx","../src/app/components/ErrorCardMessage/ErrorCardMessage.tsx","../src/app/components/socketClient.js","../src/app/components/Atoms/CardBankRadio/CardBankRadio.tsx","../src/app/components/Atoms/CardBankRadio/CardBankRadioStyles.tsx","../src/app/components/Atoms/CardList/CardList.tsx","../src/app/components/Atoms/PaxList/PaxList.tsx","../src/app/components/FractalTokenizer.tsx","../src/app/components/Atoms/FractalForm/FractalFields.tsx","../src/app/components/Datacap-Payment/DataCapScriptLoader.tsx","../src/app/components/Datacap-Payment/DataCapFields.tsx","../src/app/components/PreAuthCharge/PreAuthPaymentPage.tsx","../src/app/components/AddCard/AddCardEasyPay.tsx","../src/app/components/AddCard/AddCardStyles.tsx","../src/app/components/SuccessCardMessage/SuccessCardMszStyle.tsx","../src/app/components/SuccessCardMessage/SuccessCardMsz.tsx","../src/app/components/AddCard/AddCardSky.tsx","../src/app/utils/Constant.js","../src/app/components/AddCard/AddCardSkyStyle.tsx","../src/app/components/Atoms/FractalForm/FractalFieldsAddCardSky.tsx","../src/app/components/PartialPayment/PartialPayment.tsx","../src/app/components/Skysystemz/PayButtonWithForm.tsx","../src/app/components/Skysystemz/SkyChargewidgetstyles.tsx","../src/app/components/Atoms/ModelContentSky/ModelContentSky.tsx","../src/app/components/Atoms/ThreedsCheckout/ThreeDSChallenge.tsx","../src/app/components/Atoms/ThreedsCheckout/ThreedsCheckout.tsx","../src/app/components/Atoms/ThreedsCheckout/CheckoutForm.tsx"],"sourcesContent":["{\n \"name\": \"@fractalpay/fractalpay-next-dev\",\n \"version\": \"0.0.211\",\n \"private\": false,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"next dev -p 4001\",\n \"build\": \"next build\",\n \"start\": \"next start\",\n \"lint\": \"next lint\",\n \"bundle\": \"tsup src/app/index.ts\"\n },\n \"dependencies\": {\n \"@stripe/react-stripe-js\": \"^5.3.0\",\n \"@stripe/stripe-js\": \"^8.3.0\",\n \"axios\": \"^1.8.1\",\n \"bootstrap\": \"^5.3.3\",\n \"credit-card-type\": \"^10.0.1\",\n \"formik\": \"^2.4.6\",\n \"node-forge\": \"^1.3.1\",\n \"react-bootstrap\": \"^2.10.5\",\n \"react-bs-datatable\": \"^3.15.0\",\n \"react-datepicker\": \"^7.5.0\",\n \"react-icons\": \"^5.5.0\",\n \"react-number-format\": \"^5.4.3\",\n \"react-toastify\": \"^10.0.6\",\n \"socket.io-client\": \"^4.8.1\",\n \"styled-components\": \"^6.1.15\",\n \"sweetalert2\": \"^11.22.0\",\n \"yup\": \"^1.6.1\"\n },\n \"peerDependencies\": {\n \"react\": \">=18.0.0 <20.0.0\",\n \"react-dom\": \">=18.0.0 <20.0.0\"\n },\n \"devDependencies\": {\n \"@types/estree\": \"^1.0.8\",\n \"@types/node\": \"^20\",\n \"@types/node-forge\": \"^1.3.11\",\n \"@types/react\": \"^18\",\n \"@types/react-dom\": \"^18\",\n \"autoprefixer\": \"^10.4.20\",\n \"eslint\": \"^8\",\n \"eslint-config-next\": \"15.0.3\",\n \"next\": \"^15.0.5\",\n \"react\": \"^18.3.1\",\n \"react-dom\": \"^18.3.1\",\n \"tsup\": \"^8.4.0\",\n \"typescript\": \"^5\"\n },\n \"main\": \"dist/index.js\",\n \"module\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/index.js\"\n }\n },\n \"author\": \"Mukul\",\n \"license\": \"MIT\",\n \"keywords\": [\"nextjs\", \"next\", \"typescript\", \"tailwindcss\"],\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n","'use client'\nimport 'bootstrap/dist/js/bootstrap.bundle.min.js';\nimport React, { useState, useEffect } from 'react';\nimport Loader from '../Loader/Loader';\nimport { baseUrl } from '../baseurl';\nimport { ErrorText } from '../Errortext';\nimport CustomModal2 from '../CustomModal/CustomModal2';\nimport axios from 'axios';\nimport { PatternFormat } from 'react-number-format';\nimport RequestPaymentstyles from './RequestPaymentstyles';\nimport { formatUSD, numberToBoolean } from '@/app/utils/Common';\n\n\ninterface Props {\n merchantPublicKey: string;\n customerId?: string;\n orderID?: string;\n name?: string;\n email?: string;\n phone?: string;\n from?: string;\n amount: string;\n webname?: string;\n discount?: string;\n tax?: string;\n surcharge?: string;\n require_3ds?: boolean,\n pass_fee?: boolean,\n sessionToken?: string,\n showSurcharge?: number,\n}\n\ninterface RequestDetails {\n email: string;\n amount: string | undefined;\n phone_number: string;\n order_id: string;\n name: string;\n fractalpayPublicKey: string;\n}\n\ninterface Errors {\n [key: string]: string;\n}\n\n\n\n// export const RequestPayment: React.FC<Props> = (props) => {\nexport function RequestPayment(props: Props) {\n const fractalpayClientKey = props.merchantPublicKey;\n const discount = props?.discount;\n const tax = props?.tax;\n const surcharge = props?.surcharge;\n // State definitions with types\n const [show, setShow] = useState<boolean>(false);\n const [loading, setLoading] = useState<boolean>(false);\n const [errors, setErrors] = useState<{ [key: string]: string }>({});\n const [phone, setPhone] = useState<string | null>(null);\n const [requestDetails, setRequestDetails] = useState({\n email: '',\n phone_number: '',\n order_id: '',\n name: '',\n fractalpayPublicKey: fractalpayClientKey,\n });\n const [allowPartial, setAllowPartial] = useState<boolean>(false);\n const [cashDiscount, setCashDiscount] = useState<number | undefined>(undefined);\n const [amount, setAmount] = useState<string>('');\n const [showConfirmationModal, setShowConfirmationModal] = useState<boolean>(false);\n const [apiResponse, setApiResponse] = useState<any>(null);\n\n const phoneNumberRegex = (value: string) => /^\\(?\\d{3}\\)?[-.\\s]?\\d{3}[-.\\s]?\\d{4}$/.test(value);\n const amoutRegex = /[+-]?([0-9]*[.])?[0-9]+/;\n const isValidEmail = (value: string) => /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value);\n const isAlpha = (value: string) => /^[A-Za-z\\s]*$/.test(value);\n\n const CalculateCashDiscount = (amount: any, surcharge: any) => {\n const surchargeVal = (parseFloat(surcharge) || 0) / 100;\n const originalAmount = amount / (1 + surchargeVal);\n return Math.round(originalAmount * 100) / 100; // rounding to 2 decimals\n };\n\n useEffect(() => {\n if (props?.pass_fee) {\n let cash_discount = CalculateCashDiscount(props?.amount, props?.surcharge);\n setCashDiscount(cash_discount);\n }\n }, [props?.pass_fee])\n\n const handleClose = () => {\n setShow(false);\n setErrors({});\n };\n\n const handleShow = () => setShow(true);\n\n const handleCloseConfirmationModal = () => {\n console.log(apiResponse, 'apiresponse');\n handleSubmit(apiResponse);\n setShowConfirmationModal(false);\n };\n\n function emptyFields() {\n setRequestDetails({\n email: '',\n phone_number: '',\n order_id: '',\n name: '',\n fractalpayPublicKey: fractalpayClientKey,\n });\n setAmount('');\n }\n\n function handleSubmit(event: any) {\n // Send message to parent window\n let message = {\n type: 'preview.compiledcheck',\n other: { ...event, status: true }\n };\n\n window.parent.postMessage(message, '*');\n }\n\n const sendRequestPayment = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.currentTarget.blur();\n if (loading) return;\n if (Object.keys(errors).length > 0) {\n return;\n }\n setErrors({});\n\n if (!requestDetails?.email && phone && !phoneNumberRegex(phone)) {\n setErrors((prevErrors) => ({\n ...prevErrors,\n phone: ErrorText.phonenumbervalid\n }));\n return;\n }\n if (!validateForm()) {\n return;\n }\n\n try {\n setLoading(true);\n const formData = {\n fractalpayPublicKey: fractalpayClientKey,\n amount: amount,\n phone_number: phone,\n order_id: requestDetails.order_id,\n action: 'request',\n name: requestDetails.name,\n email: requestDetails.email,\n customer_id: props?.customerId ? props?.customerId : '',\n discount,\n surcharge,\n tax,\n require_3ds: props?.require_3ds,\n pass_fee: props?.pass_fee,\n allow_partial: allowPartial,\n };\n let response = await axios.post(`${baseUrl}create-widget-order`, formData, {\n headers: {\n ...(props?.sessionToken && { 'X-Session-Token': props.sessionToken })\n }\n });\n if (response?.status === 200) {\n setShowConfirmationModal(true);\n setShow(false);\n emptyFields();\n setApiResponse(response?.data);\n }\n\n setLoading(false);\n } catch (error) {\n console.log(error);\n setLoading(false);\n }\n };\n\n let favicon_logo = baseUrl + 'images/logo-img.png';\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = e.target;\n const token = e.target.dataset.token as string;\n setRequestDetails({ ...requestDetails, [token]: value });\n if ((token === 'name') && !isAlpha(value)) {\n setErrors((prevErrors) => ({\n ...prevErrors,\n [token]: ErrorText.onlylettersallowed\n }));\n return;\n }\n\n let errorobj = errors;\n\n if (token === 'email' && !phone) {\n delete errorobj.phone;\n setErrors(errorobj);\n }\n\n if (value) {\n delete errorobj[token];\n setErrors(errorobj);\n }\n\n if (token === 'email' && !value) {\n delete errorobj[token];\n setErrors(errorobj);\n }\n };\n\n const handleAmountChange = (data: { value: string }) => {\n const { value } = data;\n if (Number(value) > 0) {\n let errorobj = errors;\n delete errorobj.amount;\n setErrors(errorobj);\n }\n setAmount(value);\n };\n\n const validateForm = () => {\n let newErrors: { [key: string]: string } = {};\n\n if (!amount) newErrors.amount = ErrorText.amountrequired;\n if (requestDetails.email && !isValidEmail(requestDetails?.email)) newErrors.email = ErrorText.invalidemail;\n if (!phone && !requestDetails?.email) newErrors.phone = ErrorText.phoneoremailrequired;\n if (!phone && !requestDetails?.email) newErrors.email = ErrorText.phoneoremailrequired;\n if (!phone && requestDetails.email && !isValidEmail(requestDetails?.email)) newErrors.email = ErrorText.invalidemail;\n if (props.from === 'merchant' && !requestDetails.order_id) newErrors.order_id = ErrorText.orderidrequired;\n\n setErrors(newErrors);\n return Object.keys(newErrors).length === 0;\n };\n\n useEffect(() => {\n if (props) {\n setRequestDetails((prev) => ({\n ...prev,\n order_id: props.orderID ? props.orderID : '',\n name: props?.name ? props?.name : '',\n email: props?.email ? props?.email : '',\n }));\n setAmount(props.amount ? props.amount : '');\n setPhone(props.phone ? `${props.phone}` : null);\n }\n }, [props]);\n\n const handlePhoneChange = (e: { value: string }) => {\n let value = e?.value;\n if (value && value?.length > 0 && value?.length !== 10) {\n setErrors((prevErrors) => ({\n ...prevErrors,\n phone: ErrorText.phonenumberlength\n }));\n setPhone(value);\n return;\n } else {\n setPhone(value);\n }\n let errorobj = errors;\n delete errorobj.phone;\n\n if (value && !requestDetails?.email) {\n delete errorobj.email;\n }\n\n setErrors(errorobj);\n };\n\n function formatAmount(amount: string) {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(Number(amount));\n }\n\n const handleAllowPartial = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.checked;\n setAllowPartial(value);\n }\n\n\n return (\n <>\n <RequestPaymentstyles />\n <Loader loading={loading} />\n <>\n <button className=\"paymentBtn\" onClick={handleShow}>\n Request Payment\n </button>\n\n <CustomModal2\n open={show}\n onClose={() => setShow(false)}\n maxWidth={'500px'}\n >\n <div style={{ maxWidth: '500px' }}>\n\n <div className=\"request-payment-amount-detail frac-form\">\n <p className=\"request-payment-merchantname\">Pay {props?.webname}</p>\n <p className=\"request-payment-amount\">{formatAmount(props?.amount)}</p>\n {\n cashDiscount && cashDiscount > 0 && <div className='frac-req-cash-discount' >\n {/* <div className='frac-cashlabel' >Cash Discount :</div> */}\n <div className='frac-cashlabel' >{numberToBoolean(props?.showSurcharge) ? 'Surcharge' : 'Cash Discount'} :</div>\n <div>{formatUSD((Number(props.amount) - cashDiscount).toFixed(2))}</div>\n </div>\n }\n {\n props?.from === 'merchant' && <p className=\"request-payment-orderid\" >{requestDetails?.order_id}</p>\n }\n <span className=\"request-payment-close-popup\" onClick={handleClose}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <g clipPath=\"url(#clip0_12425_52336)\">\n <path d=\"M9.46585 8.01168L15.6959 1.7814C16.1014 1.37615 16.1014 0.720912 15.6959 0.315659C15.2907 -0.0895946 14.6354 -0.0895946 14.2302 0.315659L7.99991 6.54593L1.76983 0.315659C1.36438 -0.0895946 0.709336 -0.0895946 0.304082 0.315659C-0.101361 0.720912 -0.101361 1.37615 0.304082 1.7814L6.53416 8.01168L0.304082 14.2419C-0.101361 14.6472 -0.101361 15.3024 0.304082 15.7077C0.506045 15.9098 0.771595 16.0114 1.03695 16.0114C1.30232 16.0114 1.56768 15.9098 1.76983 15.7077L7.99991 9.47742L14.2302 15.7077C14.4323 15.9098 14.6977 16.0114 14.9631 16.0114C15.2284 16.0114 15.4938 15.9098 15.6959 15.7077C16.1014 15.3024 16.1014 14.6472 15.6959 14.2419L9.46585 8.01168Z\" fill=\"#727272\" />\n </g>\n <defs>\n <clipPath id=\"clip0_12425_52336\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <form className=\"request-payment-input-form\" >\n <div className=\"request-payment-list-div\">\n <label htmlFor=\"exampleFormControlInput2\" className=\"request-payment-input-label\">\n FULL NAME\n </label>\n <input\n className=\"request-payment-input-box\"\n type=\"text\"\n placeholder=\"Full Name\"\n data-token=\"name\"\n onChange={handleChange}\n value={requestDetails?.name}\n />\n {errors.name && <small className=\"request-payment-error-msg\">{errors.name}</small>}\n </div>\n\n <div className=\"request-payment-list-div\">\n <label htmlFor=\"requestPhoneNumber\" className=\"request-payment-input-label\">\n Phone Number\n </label>\n <PatternFormat\n className=\"request-payment-input-box\"\n placeholder=\"Mobile number\"\n format=\"+1 (###) ###-####\"\n value={phone}\n onValueChange={(e) => { handlePhoneChange(e) }}\n />\n {errors.phone && <small className=\"request-payment-error-msg\">{errors.phone}</small>}\n </div>\n\n <div className=\"request-payment-list-div\">\n <label htmlFor=\"exampleFormControlInput2\" className=\"request-payment-input-label\">\n EMAIL\n </label>\n <input\n className=\"request-payment-input-box\"\n type=\"text\"\n placeholder=\"Email\"\n onChange={handleChange}\n data-token=\"email\"\n value={requestDetails?.email}\n />\n {errors.email && <small className=\"request-payment-error-msg\">{errors.email}</small>}\n </div>\n <div className=\"partial-toggle-div\">\n <input className=\"partial-input\" type=\"checkbox\" role=\"switch\"\n style={{ cursor: 'pointer' }} checked={allowPartial}\n onChange={(e) => handleAllowPartial(e)} id=\"partialSwitch\" />\n <label className=\"partial-label\" htmlFor=\"partialSwitch\"\n style={{ cursor: 'pointer' }}>Allow Partial Payments?</label>\n </div>\n <button\n type=\"button\"\n className=\"request-payment-submit-button\"\n onClick={sendRequestPayment}\n disabled={loading}\n >\n {loading ? \"Loading...\" : \"Send Request\"}\n </button>\n <div className=\"request-payment-fractal-powerd-by\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\n <path d=\"M15.2165 4.11839C15.1973 3.69746 15.1973 3.29567 15.1973 2.89387C15.1973 2.56861 14.9486 2.31988 14.6234 2.31988C12.2317 2.31988 10.4141 1.63109 8.90257 0.157848C8.67298 -0.0526158 8.32858 -0.0526158 8.09898 0.157848C6.58748 1.63109 4.76984 2.31988 2.37821 2.31988C2.05295 2.31988 1.80422 2.56861 1.80422 2.89387C1.80422 3.29567 1.80422 3.69746 1.78508 4.11839C1.70855 8.13632 1.59375 13.6466 8.30945 15.9617L8.50078 16L8.69211 15.9617C15.3887 13.6466 15.293 8.15546 15.2165 4.11839ZM8.04159 9.6861C7.92679 9.78176 7.79286 9.83916 7.63979 9.83916H7.62066C7.46759 9.83916 7.31453 9.76263 7.21887 9.64783L5.43949 7.67713L6.30048 6.91181L7.69719 8.46158L10.7967 5.5151L11.5812 6.35695L8.04159 9.6861Z\" fill=\"#727272\" />\n </svg>\n Secure payments powered by <span>Fractal</span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path d=\"M17.4999 5.49758V7.01156C17.4999 7.05924 17.4595 7.09898 17.411 7.09898H12.3516C12.9169 6.54266 13.4781 5.99032 14.0434 5.434C14.0596 5.4181 14.0838 5.41016 14.104 5.41016H17.411C17.4595 5.41016 17.4999 5.44989 17.4999 5.49758Z\" fill=\"#61C699\" />\n <path d=\"M12.3462 10.9037V9.29836C12.3462 9.25067 12.3866 9.21094 12.435 9.21094H13.8523C13.929 9.21094 13.9694 9.30631 13.9129 9.35796C13.392 9.87455 12.8711 10.3911 12.3462 10.9037Z\" fill=\"#61C699\" />\n <path d=\"M12.4404 9.00523H15.6949C15.7434 9.00523 15.7838 8.96549 15.7838 8.91781V7.40383C15.7838 7.35614 15.7434 7.31641 15.6949 7.31641H12.4404C12.3919 7.31641 12.3516 7.35614 12.3516 7.40383V8.91781C12.3516 8.96549 12.3919 9.00523 12.4404 9.00523Z\" fill=\"#61C699\" />\n <path d=\"M10.1581 0.0120725L11.4906 0.77105C11.531 0.794892 11.5471 0.84655 11.5229 0.890261L8.99114 5.20173C8.78521 4.44275 8.57927 3.68775 8.37334 2.92877C8.36527 2.90493 8.3693 2.88109 8.38142 2.86122L10.0329 0.0438621C10.0612 0.000151419 10.1177 -0.0117697 10.1581 0.0120725Z\" fill=\"#61C699\" />\n <path d=\"M12.3382 7.10006L10.9289 6.29737C10.8886 6.27353 10.8724 6.22187 10.8966 6.17816L11.6033 4.97015C11.6436 4.9026 11.7446 4.91452 11.7648 4.99002C11.9546 5.69734 12.1484 6.40068 12.3382 7.10006Z\" fill=\"#61C699\" />\n <path d=\"M10.7107 6.0771L12.338 3.30345C12.3622 3.26372 12.346 3.20808 12.3057 3.18424L10.9732 2.42526C10.9328 2.40142 10.8763 2.41732 10.852 2.45705L9.22476 5.2307C9.20053 5.27044 9.21669 5.32607 9.25706 5.34991L10.5896 6.10889C10.634 6.13273 10.6865 6.11683 10.7107 6.0771Z\" fill=\"#61C699\" />\n <path d=\"M1.66713 3.51237L2.99963 2.75339C3.04001 2.72955 3.09654 2.74544 3.12077 2.78518L5.65251 7.09665C4.88128 6.89399 4.11408 6.69133 3.34285 6.48867C3.31862 6.4847 3.30247 6.4688 3.29036 6.44893L1.63483 3.63158C1.6106 3.58787 1.62271 3.53621 1.66713 3.51237Z\" fill=\"#61C699\" />\n <path d=\"M8.99793 5.20018L7.58871 5.99889C7.54833 6.02274 7.4918 6.00684 7.46757 5.9671L6.76095 4.76307C6.72057 4.69552 6.78517 4.61605 6.86189 4.63591C7.57256 4.82268 8.28726 5.00944 8.99793 5.20018Z\" fill=\"#61C699\" />\n <path d=\"M7.27986 6.07054L5.6526 3.2969C5.62837 3.25716 5.57588 3.24127 5.53146 3.26511L4.19896 4.02409C4.15858 4.04793 4.14243 4.09959 4.16666 4.1433L5.79392 6.91694C5.81815 6.95668 5.87064 6.97257 5.91506 6.94873L7.24756 6.18975C7.28794 6.16591 7.30409 6.11425 7.27986 6.07054Z\" fill=\"#61C699\" />\n <path d=\"M0.5 12.4998V10.9859C0.5 10.9382 0.540379 10.8984 0.588833 10.8984H5.64829C5.08299 11.4548 4.52172 12.0071 3.95642 12.5634C3.94027 12.5793 3.91604 12.5873 3.89585 12.5873H0.588833C0.540379 12.5873 0.5 12.5475 0.5 12.4998Z\" fill=\"#61C699\" />\n <path d=\"M5.65129 7.09766V8.70303C5.65129 8.75072 5.61091 8.79045 5.56246 8.79045H4.14516C4.06844 8.79045 4.02806 8.69508 4.08459 8.64343C4.60548 8.12685 5.12637 7.61424 5.65129 7.09766Z\" fill=\"#61C699\" />\n <path d=\"M5.55967 8.99609H2.30514C2.25669 8.99609 2.21631 9.03583 2.21631 9.08352V10.5975C2.21631 10.6452 2.25669 10.6849 2.30514 10.6849H5.55967C5.60813 10.6849 5.6485 10.6452 5.6485 10.5975V9.08352C5.6485 9.03583 5.60813 8.99609 5.55967 8.99609Z\" fill=\"#61C699\" />\n <path d=\"M7.82638 17.9865L6.49388 17.2276C6.4535 17.2037 6.43735 17.1521 6.46158 17.1083L8.99333 12.7969C9.19926 13.5559 9.40519 14.3109 9.61112 15.0698C9.6192 15.0937 9.61516 15.1175 9.60305 15.1374L7.95155 17.9547C7.91925 17.9985 7.86676 18.0104 7.82638 17.9865Z\" fill=\"#61C699\" />\n <path d=\"M5.64795 10.8984L7.05717 11.7011C7.09755 11.725 7.1137 11.7766 7.08947 11.8203L6.38284 13.0283C6.34246 13.0959 6.24152 13.084 6.22133 13.0085C6.02751 12.3012 5.83773 11.5978 5.64795 10.8984Z\" fill=\"#61C699\" />\n <path d=\"M7.2739 11.9258L5.64664 14.6994C5.62241 14.7392 5.63856 14.7948 5.67894 14.8187L7.01144 15.5776C7.05182 15.6015 7.10835 15.5856 7.13258 15.5458L8.75984 12.7722C8.78407 12.7325 8.76792 12.6768 8.72754 12.653L7.39504 11.894C7.35062 11.8702 7.29813 11.8861 7.2739 11.9258Z\" fill=\"#61C699\" />\n <path d=\"M16.3199 14.4866L14.9874 15.2456C14.947 15.2694 14.8904 15.2535 14.8662 15.2138L12.3345 10.9023C13.1057 11.105 13.8729 11.3077 14.6441 11.5103C14.6684 11.5143 14.6845 11.5302 14.6966 11.5501L16.3481 14.3674C16.3764 14.4111 16.3643 14.4628 16.3199 14.4866Z\" fill=\"#61C699\" />\n <path d=\"M8.99121 12.7983L10.4004 11.9956C10.4408 11.9717 10.4973 11.9876 10.5216 12.0274L11.2282 13.2354C11.2686 13.3029 11.204 13.3824 11.1272 13.3625C10.4166 13.1758 9.70188 12.989 8.99121 12.7983Z\" fill=\"#61C699\" />\n <path d=\"M10.7077 11.9285L12.3349 14.7021C12.3592 14.7418 12.4117 14.7577 12.4561 14.7339L13.7886 13.9749C13.829 13.9511 13.8451 13.8994 13.8209 13.8557L12.1936 11.0821C12.1694 11.0423 12.1169 11.0264 12.0725 11.0503L10.74 11.8092C10.6996 11.8331 10.6834 11.8847 10.7077 11.9285Z\" fill=\"#61C699\" />\n </svg>\n </div>\n </form>\n </div>\n </CustomModal2>\n <CustomModal2\n open={showConfirmationModal}\n onClose={handleCloseConfirmationModal}\n maxWidth={'500px'}\n >\n <div className=\"fractal-popup-content\" style={{ padding: '0px', maxWidth: '500px' }}>\n <div className=\"request-payment-success-container\">\n <span className=\"request-payment-close-popup\" onClick={handleCloseConfirmationModal}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <g clipPath=\"url(#clip0_12425_52336)\">\n <path d=\"M9.46585 8.01168L15.6959 1.7814C16.1014 1.37615 16.1014 0.720912 15.6959 0.315659C15.2907 -0.0895946 14.6354 -0.0895946 14.2302 0.315659L7.99991 6.54593L1.76983 0.315659C1.36438 -0.0895946 0.709336 -0.0895946 0.304082 0.315659C-0.101361 0.720912 -0.101361 1.37615 0.304082 1.7814L6.53416 8.01168L0.304082 14.2419C-0.101361 14.6472 -0.101361 15.3024 0.304082 15.7077C0.506045 15.9098 0.771595 16.0114 1.03695 16.0114C1.30232 16.0114 1.56768 15.9098 1.76983 15.7077L7.99991 9.47742L14.2302 15.7077C14.4323 15.9098 14.6977 16.0114 14.9631 16.0114C15.2284 16.0114 15.4938 15.9098 15.6959 15.7077C16.1014 15.3024 16.1014 14.6472 15.6959 14.2419L9.46585 8.01168Z\" fill=\"#727272\" />\n </g>\n <defs>\n <clipPath id=\"clip0_12425_52336\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <div className=\"request-payment-success-tick-div\">\n <div className=\"request-payment-success-tick\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M6.12669 13.9774C5.97396 14.131 5.76558 14.2167 5.54913 14.2167C5.33267 14.2167 5.1243 14.131 4.97157 13.9774L0.359012 9.36408C-0.119671 8.8854 -0.119671 8.10919 0.359012 7.6314L0.936573 7.05369C1.4154 6.57501 2.19072 6.57501 2.6694 7.05369L5.54913 9.93357L13.3306 2.15198C13.8094 1.6733 14.5855 1.6733 15.0634 2.15198L15.641 2.72969C16.1196 3.20837 16.1196 3.98444 15.641 4.46237L6.12669 13.9774Z\" fill=\"#61C699\" />\n </svg>\n </div>\n </div>\n <h6 className=\"request-payment-success-text\">The request <br />\n was sent</h6>\n <h6 className=\"request-payment-success-subtext\">Please wait for the customer to pay</h6>\n <div className=\"request-payment-success-btn-div\">\n {/* <button className=\"request-payment-success-btn1\">Go to Transactions</button> */}\n <button onClick={handleCloseConfirmationModal} className=\"request-payment-success-btn2\">Close</button>\n </div>\n </div>\n </div>\n </CustomModal2>\n </>\n </>\n );\n};\n\n","import React from 'react'\n\ntype Props = {}\n\nconst LoaderStyle = (props: Props) => {\n return (\n <style>\n {`\n \n .loader {\n position: fixed; /* Fixed position to cover the viewport */\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n /* background: rgba(255, 255, 0, 0.01); Adjust the blur effect */\n background-color: rgba(31, 29, 29, 0.52); /* Semi-transparent black background */\n\n backdrop-filter: blur(.5px); /* Blur effect */\n z-index: 999999999999 !important; /* Ensure it's on top of other elements */\n transform: translate(0%, 0%) !important\n}\n\n.lds-ellipsis {\n display: inline-block;\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.lds-ellipsis div {\n position: absolute;\n top: 33px;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: #000;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n}\n\n.lds-ellipsis div:nth-child(1) {\n left: 8px;\n animation: lds-ellipsis1 0.6s infinite;\n}\n\n.lds-ellipsis div:nth-child(2) {\n left: 8px;\n animation: lds-ellipsis2 0.6s infinite;\n}\n\n.lds-ellipsis div:nth-child(3) {\n left: 32px;\n animation: lds-ellipsis2 0.6s infinite;\n}\n\n.lds-ellipsis div:nth-child(4) {\n left: 56px;\n animation: lds-ellipsis3 0.6s infinite;\n}\n\n@keyframes lds-ellipsis1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes lds-ellipsis2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n}\n\n@keyframes lds-ellipsis3 {\n 0% {\n transform: scale(1);\n }\n 100% {\n transform: scale(0);\n }\n}\n\n `}\n </style>\n )\n}\n\nexport default LoaderStyle","import React from 'react'\nimport LoaderStyle from './LoaderStyle'\n\ntype Props = {\n loading: boolean\n}\n\nconst Loader = (props: Props) => {\n return (\n <>\n <LoaderStyle />\n {props?.loading && (\n <div className=\"loader\">\n <div className=\"lds-ellipsis\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>\n )}\n </>\n )\n}\n\nexport default Loader","const { name } = require('../../../package.json');\n\n// console.log(name, \"dgijiisdfhg\");\n\n// export const fractalGatewayUrl = \"https://api-dev.merchant-trends.com/\"\n\n// export const fractalGatewayUrl = \"https://api.merchant-trends.com/\"\n\nexport const S3Url = 'https://fractal-userdata-upload.s3.us-east-1.amazonaws.com/'\n\n// dev environment urls\n\n// export const masterBaseUrl = \"https://dev-sky-node.fractalpay.com/\";\n// export const baseUrl = \"https://dev-widget.fractalpay.com/\";\n\n//Staging environment urls\n\n// export const masterBaseUrl = \"https://testapi.fractalpay.com/\";\n// export const baseUrl = \"https://staging-widget.fractalpay.com/\";\n\n//test prod environment urls\n\n// export const masterBaseUrl = \"https://sky-node-prod.fractalpay.com/\";\n// export const baseUrl = \"https://widget-prod.fractalpay.com/\";\n\n\n//prod environment urls\n\n// export const masterBaseUrl = \"https://api.fractalpay.com/\";\n// export const baseUrl = \"https://widget.fractalpay.com/\";\n\n//Local environment urls\n\n// export const baseUrl = 'http://192.168.1.63:8082/'\n// export const masterBaseUrl = \"http://192.168.1.63:8081/\";\n\n// export const baseUrl = 'http://localhost:8082/'\n// export const masterBaseUrl = \"http://localhost:8081/\";\n\n// export const baseUrl = 'http://192.168.1.65:8082/'\n// export const masterBaseUrl = \"http://192.168.1.65:8081/\";\n\n\nif (name === '@fractalpay/fractalpay-next-dev') {\n masterBaseUrl = \"https://dev-sky-node.fractalpay.com/\";\n baseUrl = \"https://dev-widget.fractalpay.com/\";\n // baseUrl = 'http://192.168.1.63:8082/'\n // masterBaseUrl = \"http://192.168.1.63:8081/\"; \n // baseUrl = 'http://192.168.1.65:8082/' \n // masterBaseUrl = \"http://192.168.1.65:8081/\";\n // baseUrl = 'http://192.168.1.74:8083/' \n // masterBaseUrl = \"http://192.168.1.74:8082/\";\n // baseUrl = 'http://localhost:8082/'\n // masterBaseUrl = \"http://localhost:8081/\";\n fractalGatewayUrl = \"https://api-dev.merchant-trends.com/\";\n datacapUrl = \"https://token-cert.dcap.com/v1/client\"\n threedsSecurePublicKey = \"pk_test_51RH5Wc2SlJvyNZ80hpUDy88r4rVdpijfKbNaWaUyQEE6rOrPmG2JQyAj7G5amBD5z5daC56WaeT4jfNhrrPcGOEP00UyKu6AOw\"\n\n} else if (name === '@fractalpay/fractalpay-next-test') {\n masterBaseUrl = \"https://testapi.fractalpay.com/\";\n baseUrl = \"https://staging-widget.fractalpay.com/\";\n fractalGatewayUrl = \"https://api-dev.merchant-trends.com/\";\n datacapUrl = \"https://token-cert.dcap.com/v1/client\"\n threedsSecurePublicKey = \"pk_test_51RH5Wc2SlJvyNZ80hpUDy88r4rVdpijfKbNaWaUyQEE6rOrPmG2JQyAj7G5amBD5z5daC56WaeT4jfNhrrPcGOEP00UyKu6AOw\"\n\n} else if (name === '@fractalpay/fractalpay-next-testprod') {\n masterBaseUrl = \"https://sky-node-prod.fractalpay.com/\";\n baseUrl = \"https://widget-prod.fractalpay.com/\";\n fractalGatewayUrl = \"https://api.merchant-trends.com/\";\n datacapUrl = \"https://token.dcap.com/v1/client\"\n threedsSecurePublicKey = \"pk_live_51RH5WXCZ90rBGeaYwqmjWqgUmudTgxL6uKOE1keu617jvRx9OvW2ke6zGf6SKgv4ixsBLcIPQ4sQIEhp8MgBX39500CqULxOPB\"\n\n} else if (name === \"@fractalpay/fractalpay-next\") {\n masterBaseUrl = \"https://api.fractalpay.com/\";\n baseUrl = \"https://widget.fractalpay.com/\";\n fractalGatewayUrl = \"https://api.merchant-trends.com/\";\n datacapUrl = \"https://token.dcap.com/v1/client\"\n threedsSecurePublicKey = \"pk_live_51RH5WXCZ90rBGeaYwqmjWqgUmudTgxL6uKOE1keu617jvRx9OvW2ke6zGf6SKgv4ixsBLcIPQ4sQIEhp8MgBX39500CqULxOPB\"\n\n} else {\n baseUrl = 'http://localhost:8082/'\n masterBaseUrl = \"http://localhost:8081/\";\n fractalGatewayUrl = \"https://api-dev.merchant-trends.com/\";\n datacapUrl = \"https://token-cert.dcap.com/v1/client\"\n threedsSecurePublicKey = \"pk_test_51RH5Wc2SlJvyNZ80hpUDy88r4rVdpijfKbNaWaUyQEE6rOrPmG2JQyAj7G5amBD5z5daC56WaeT4jfNhrrPcGOEP00UyKu6AOw\"\n}\n\nexport var masterBaseUrl: string\nexport var baseUrl: string\nexport var fractalGatewayUrl: string\nexport var datacapUrl: string\nexport var threedsSecurePublicKey: string","export const ErrorText = {\n\n namerequired: 'Full Name is required',\n amountrequired:'Amount is required',\n amountpositive:'Amount should be positive',\n amountzero:'Amount should not be zero',\n amountenter:'Please enter an amount',\n amountvalid:'Please enter a valid amount',\n phoneoremailrequired:'Phone or Email is required',\n invalidemail:'Please enter a valid email',\n invalidemailformat:'Invalid email format',\n onlylettersallowed:'Only letters are allowed',\n phonenumberlength:'Phone number should be 10 digits',\n phonenumberrequired:'Please enter a phone number',\n // phonenumbervalid:'Please enter a valid 10-digit phone number',\n phonenumbervalid:'Please enter a valid phone number',\n phonenumbervalidnumberonly:'Please enter a valid phone number (numbers only)',\n orderidenter:'Please enter an order ID',\n orderidrequired:'Order ID is required',\n networkresponseerror:'Network response was not ok',\n anerroroccured:'An error occurred. Please try again.',\n montherror:'Please write month only 1 to 12',\n fieldrequired:\"This field is required\",\n fractalpayclientidrequired:'Fractalpay client key is missing or empty.'\n\n\n\n\n}","import React from 'react'\n\ntype Props = {}\n\nconst CustomModal2styles = (props: Props) => {\n return (\n <style>\n {\n `\n.fractal-input::placeholder {\n color: #35254D;\n opacity: 1;\n font-size: 15px;\n}\n\n.fractal-input::-ms-input-placeholder {\n color: #35254D;\n font-size: 15px;\n}\n\n.trigger{\n text-align: center;\n padding: 7px 13px;\n background: #3e3e3e;\n color: #fff;\n font-size: 15px;\n outline: none;\n border: none;\n border-radius: 5px;\n font-family: cursive;\n}\n\n// .fractal-popup {\n// position: fixed;\n// z-index: 9999;\n// top: 0;\n// right: 0;\n// bottom: 0;\n// left: 0;\n// width: 100%;\n// // max-width:810px;\n// height: 100%;\n// background-color: rgba(0, 0, 0, 0.5);\n// transition: visibility 0s linear 0.25s, opacity 0.25s 0s, transform 0.25s;\n// display: flex;\n// justify-content: center;\n// align-items: center;\n// overflow:auto;\n// }\n\n .fractal-popup {\n position: fixed;\n z-index: 1050;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: auto;\n background-color: rgba(0, 0, 0, 0.8);\n // padding:20px\n }\n\n.fractal-popup-content {\n margin:20px auto !important;\n transform :none;\n background-color: white;\n padding:20px;\n border-radius: 0.5rem;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); \n box-sizing: border-box;\n position: relative;\n // min-height : 585px;\n max-width:810px; \n width:90vw\n \n}\n \n\n// @media only screen and (min-width: 600px){\n// .fractal-popup-content {\n// max-width:810px; \n// }\n// }\n// @media only screen and (max-width: 600px){\n// .fractal-popup-content {\n// width: 350px;\n// }\n// }\n// @media only screen and (max-width: 450px){\n// .fractal-popup-content {\n// width: 300px;\n// }\n// }\n.close-popup {\n max-height:25px;\n width:25px;\n height: 25px;\n color: #999;\n position: absolute;\n top: 2px;\n right: 4px;\n z-index: 7;\n text-align: center;\n cursor: pointer;\n border-radius: 0.25rem;\n font-size: 30px;\n line-height: 30px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.close-popup:hover {\n color: #000;\n}\n\n.fractal-inpt-list {\n margin-bottom: 15px;\n}\n\n.fractal-label {\n color: #727272;\n margin-bottom: 3px;\n font-family: \"Inter\", sans-serif;\n font-weight: 500;\n font-size: 12px;\n display: block;\n text-align: left;\n}\n\n.fractal-input {\n display: block;\n width: 100%;\n padding: .320rem .75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #35254D;\n appearance: none;\n background-color:#ffffff;\n background-clip: padding-box;\n border:1px solid #dee2e6;\n border-radius: 0.375rem;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.fractal-input:focus {border:#86b7fe 1px solid; outline: none;}\n\n.fractal-group {\n position: relative;\n display: flex;\n align-items: stretch;\n width: 100%;\n}\n\n.fractal-group-icons {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: center;\n white-space: nowrap;\n background-color: #f8f9fa;\n border:#dee2e6 1px solid;\n border-radius: 0.375rem 0 0 0.375rem ;\n}\n\n.fractal-group .fractal-input{\n border-radius:0 0.375rem 0.375rem 0;\n}\n\n\n.pay-button {\n outline: 0;\n height: 46px;\n font-size: 16px;\n background: #727272;\n border: none;\n display: block;\n color: #fff;\n width: 100%;\n border-radius: 180px;\n margin: 10px 0;\n text-decoration: none;\n cursor:pointer,\n font-family:\n}\n\n.pay-button:hover, .pay-button:focus {background: #222; color: #fff; cursor:pointer}\n\n.fractal-powerd-by {\n display: flex;\n font-size: 12px;\n text-align: center;\n align-items: center;\n justify-content: center;\n margin: 5px 0 20px 0;\n}\n\n\n\n\n\n\n\n/* ................................................................ */\n\n.fractal-pay-popup {\n position: fixed;\n z-index: 9999;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n transition: visibility 0s linear 0.25s, opacity 0.25s 0s, transform 0.25s;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.fractal-pay-popup-content {\n background-color: white;\n padding:0px;\n border-radius: 0.5rem;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); \n box-sizing: border-box;\n position: relative;\n height: 100%;\n max-height:90%;\n overflow: hidden;\n}\n.fractal-pay-popup-content iframe{height: 100% !important; }\n.fractal-pay-popup-content iframe body{overflow: hidden;}\n@media only screen and (min-width: 768px){\n .fractal-pay-popup-content iframe{width: 768px;}\n .fractal-pay-popup-content {\n width: 750px; \n\n }\n}\n@media only screen and (max-width: 600px){\n .fractal-pay-popup-content {\n width: 350px;\n }\n}\n@media only screen and (max-width: 450px){\n .fractal-pay-popup-content {\n width: 300px;\n }\n}\n\n.request-payment-popup-container {\n padding: 0px !important;\n border-radius: 12px !important;\n}\n `\n }\n </style>\n )\n}\n\nexport default CustomModal2styles","import React from \"react\";\nimport RequestPaymentstyles from \"../RequestPayment/RequestPaymentstyles\";\nimport CustomModal2styles from \"./CustomModal2styles\";\n\ntype CustomModalProps = {\n open: boolean;\n onClose: () => void;\n children: React.ReactNode;\n cancelText?: string;\n maxWidth?: string;\n};\n\nconst CustomModal2: React.FC<CustomModalProps> = ({\n open,\n onClose,\n children,\n maxWidth\n}) => {\n if (!open) return null;\n\n\n // console.log(maxWidth);\n \n return (\n <>\n <CustomModal2styles />\n <div className=\"fractal-popup\">\n <div className=\"fractal-popup-content request-payment-popup-container\" style={{maxWidth : `${maxWidth ?? \"auto\"}`}}>\n {children}\n </div>\n\n </div>\n </>\n );\n};\n\nexport default CustomModal2;\n","import React from 'react'\n\ntype Props = {}\n\nconst RequestPaymentstyles = (props: Props) => {\n return (\n <style>\n {\n `\n @import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap'); \n body {\n font-family: 'Inter', sans-serif !important;\n }\n input{\n font-family: 'Inter', sans-serif !important;\n } \n\n .paymentBtn {\n background-color: black;\n border: none;\n color: white;\n padding: 15px 32px;\n text-align: center;\n text-decoration: none;\n display: inline-block;\n font-size: 16px;\n margin: 4px 2px;\n cursor: pointer;\n border-radius: 180px;\n /* width: auto; */\n } \n/*****************************************REDESIGNING STYLES **************************************/\n\n.request-payment-amount {\n color: #161616;\n text-align: center;\n font-size: 42px;\n font-style: normal;\n font-weight: 600;\n text-transform: uppercase;\n margin: 8px 0px !important;\n}\n\n.request-payment-orderid {\n color: #727272;\n text-align: center;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n margin: 0px;\n}\n\n.request-payment-pre-auth-merchantname {\n color: #727272;\n text-align: center;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n margin-top: 10px !important;\n margin-bottom: 0px !important;\n}\n\n.request-payment-merchantname {\n color: #727272;\n text-align: center;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n margin-top: 20px !important;\n margin-bottom: 0px !important;\n}\n\n.request-payment-close-popup {\n position: absolute;\n right: 20px;\n top: 20px;\n cursor: pointer;\n}\n\n.request-payment-amount-detail {\n padding: 32px 0px;\n border-bottom: 1px solid #E0DFE2;\n}\n\n.request-payment-popup-container {\n padding: 0px !important;\n border-radius: 12px !important;\n}\n\n.request-payment-input-form {\n padding: 24px 48px 32px 48px;\n}\n\n.request-payment-input-label {\n color: #727272;\n font-size: 12px;\n font-style: normal;\n font-weight: 500;\n margin-bottom: 6px !important;\n text-align: start !important;\n width: 100% !important;\n margin-bottom: 6px !important;\n text-transform: uppercase;\n}\n\n.request-payment-input-box {\n border-radius: 8px;\n border: 1px solid #E0DFE2;\n padding: 11px;\n display: block;\n width: 100%;\n color: #161616;\n margin-top: 6px !important;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n box-sizing: border-box;\n}\n\n.request-payment-list-div {\n margin-bottom: 12px;\n}\n\n.request-payment-submit-button {\n border-radius: 80px;\n background: #161616;\n height: 48px;\n padding: 12px 24px;\n margin-top: 20px;\n color: #fff;\n width: 100% !important;\n border: none !important;\n font-size: 16px;\n font-style: normal;\n font-weight: 500;\n cursor: pointer;\n}\n\n.request-payment-submit-button:disabled {\n cursor: not-allowed;\n}\n\n.request-payment-fractal-powerd-by {\n color: #727272;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n margin-top: 16px;\n display: flex;\n text-align: center;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.request-payment-fractal-powerd-by span {\n color: #61C699;\n}\n\n.request-payment-success-container {\n display: flex;\n padding: 120px 48px 32px 48px;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.request-payment-success-tick {\n border-radius: 1000px;\n background: rgba(97, 198, 153, 0.14);\n display: flex;\n width: 60px;\n height: 60px;\n justify-content: center;\n align-items: center;\n}\n\n.request-payment-success-text {\n color: #161616;\n text-align: center;\n font-size: 32px;\n font-style: normal;\n font-weight: 500;\n line-height: 36px;\n /* 112.5% */\n letter-spacing: -0.64px;\n margin-top: 20px;\n margin-bottom: 5px !important;\n}\n\n.request-payment-success-subtext {\n color: #727272;\n text-align: center;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: 18px;\n letter-spacing: -0.28px;\n margin-bottom: 6rem !important;\n margin-top: 8px !important;\n}\n\n.request-payment-success-btn-div {\n display: flex;\n align-items: flex-start;\n justify-content: center;\n gap: 8px;\n}\n\n.request-payment-success-tick-div {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-top: 32px;\n}\n\n.request-payment-success-btn1 {\n cursor: pointer;\n border-radius: 80px;\n border: 1px solid #E0DFE2;\n display: flex;\n padding: 12px 32px;\n justify-content: center;\n align-items: center;\n gap: 6px;\n background-color: #fff;\n}\n\n.request-payment-success-btn2 {\n border-radius: 80px;\n cursor: pointer;\n border: 1px solid #E0DFE2;\n display: flex;\n padding: 12px 32px;\n justify-content: center;\n align-items: center;\n gap: 6px;\n background-color: #161616;\n color: #fff;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n}\n\n.request-payment-error-msg{\n color: #dc3545;\n\n font-size: 12px;\n}\n\n .frac-req-cash-discount{\n justify-content: center;\n gap: 8px;\n align-items: center;\n display: flex;\n padding: 9px 14px 9px 10px;\n font-family: Inter;\n color: #161616;\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n}\n\n.frac-req-cash-discount .frac-cashlabel{\n color: #727272;\n font-size: 12px;\n font-style: normal;\n font-weight: 500;\n}\n\n.partial-toggle-div {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n}\n\n.partial-input[type=\"checkbox\"] {\n appearance: none;\n -webkit-appearance: none;\n width: 50px;\n height: 26px;\n background-color: #ccc;\n border-radius: 13px;\n position: relative;\n cursor: pointer;\n transition: background-color 0.3s ease;\n border: none;\n outline: none;\n margin-right: 10px;\n}\n\n.partial-input[type=\"checkbox\"]::before {\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n background-color: white;\n top: 2px;\n left: 2px;\n transition: transform 0.3s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n.partial-input[type=\"checkbox\"]:checked {\n background-color: #000000;\n}\n\n.partial-input[type=\"checkbox\"]:checked::before {\n transform: translateX(24px);\n}\n\n.partial-input[type=\"checkbox\"]:focus {\n box-shadow: 0 0 0 3px rgba(13, 110, 253, 0.25);\n}\n\n.partial-label {\n user-select: none;\n font-size: 14px;\n}\n `\n }\n </style>\n )\n}\n\nexport default RequestPaymentstyles","import { S3Url } from \"../components/baseurl\";\n\nexport const isValidJson = (jsonString) => {\n try {\n const parsed = JSON.parse(jsonString);\n // Optionally check that parsed is an object or array\n return typeof parsed === 'object' && parsed !== null;\n } catch (e) {\n return false;\n }\n}\n\nexport const accountTypes = [\n { value: \"personal saving\", label: \"Personal Saving\" },\n { value: \"business saving\", label: \"Business Saving\" },\n { value: \"personal checking\", label: \"Personal Checking\" },\n { value: \"business checking\", label: \"Business Checking\" }\n];\n\n\nexport function formatUSD(num) {\n // Convert string numbers to actual numbers\n const value = Number(num);\n\n if (isNaN(value)) {\n return `$${num}`; // return empty if not a valid number\n }\n\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2\n }).format(value);\n}\n\nexport let mastercard = S3Url + 'widget/mc-img.svg'\nexport let visa = S3Url + 'widget/visa-img.svg'\nexport let americanexp = S3Url + 'widget/ae-img.svg'\nexport let discover = S3Url + 'widget/discover-img.svg'\nexport let defaultcard = S3Url + 'widget/card.svg'\nexport let bank = S3Url + 'widget/bank.svg'\nexport let trash = S3Url + 'widget/Trash.svg'\nexport let secure = S3Url + 'widget/secure-img.png'\nexport let pov = S3Url + 'widget/pov-by.png'\nexport let pax = S3Url + 'widget/pax.svg'\nexport let bankNew = S3Url + 'widget/Bank _New.svg'\n\n\nexport const getCardType = (card) => {\n let card_type = card?.toLowerCase();\n\n switch (card_type) {\n case 'visa':\n return visa;\n case 'mastercard':\n case 'mc':\n case 'm/c':\n return mastercard;\n case 'amex':\n case 'american express':\n case 'ae':\n return americanexp;\n case 'discover':\n case 'dcvr':\n return discover;\n case 'bank':\n return bank;\n default:\n return defaultcard;\n }\n};\n\n\nexport const formatCardNumberWithCursor = (value, cursorPos) => {\n const raw = value.replace(/\\D/g, \"\");\n\n const digitsBeforeCursor = value\n .slice(0, cursorPos)\n .replace(/\\D/g, \"\").length;\n\n let trimmed = \"\";\n let formatted = \"\";\n\n const isAmex = /^3[47]/.test(raw);\n\n if (isAmex) {\n trimmed = raw.slice(0, 15);\n formatted = trimmed.replace(\n /^(\\d{1,4})(\\d{1,6})?(\\d{1,5})?$/,\n (_, g1, g2, g3) => [g1, g2, g3].filter(Boolean).join(\" \")\n );\n } else {\n trimmed = raw.slice(0, 16);\n formatted = trimmed.replace(\n /^(\\d{1,4})(\\d{1,4})?(\\d{1,4})?(\\d{1,4})?$/,\n (_, g1, g2, g3, g4) => [g1, g2, g3, g4].filter(Boolean).join(\" \")\n );\n }\n\n // ✅ CRITICAL FIX: zero-digit cursor case\n if (digitsBeforeCursor === 0) {\n return { formatted, cursor: 0 };\n }\n\n let newCursorPos = formatted.length;\n let digitsSeen = 0;\n\n for (let i = 0; i < formatted.length; i++) {\n if (/\\d/.test(formatted[i])) digitsSeen++;\n if (digitsSeen === digitsBeforeCursor) {\n newCursorPos = i + 1;\n break;\n }\n }\n\n return { formatted, cursor: newCursorPos };\n};\n\n\n\nexport const numberToBoolean = (value) => {\n if (value == 1) return false;\n if (value == 0) return true;\n return true; // fallback\n};\n\n\n\n","'use client'\nimport 'bootstrap/dist/js/bootstrap.bundle.min.js';\nimport React, { useState, useEffect } from 'react';\nimport Loader from '../Loader/Loader';\nimport RequestPaymentstyles from './RequestPaymentstyles';\nimport { baseUrl } from '../baseurl';\nimport { ErrorText } from '../Errortext';\nimport CustomModal2 from '../CustomModal/CustomModal2';\nimport axios from 'axios';\nimport { PatternFormat } from 'react-number-format';\n\n\ninterface Props {\n merchantPublicKey: string;\n customerId?: string;\n orderID?: string;\n name?: string;\n email?: string;\n phone?: string;\n from?: string;\n amount: string;\n webname?: string;\n discount?: string;\n tax?: string;\n surcharge?: string;\n require_3ds?: boolean;\n sessionToken?: string;\n}\n\ninterface RequestDetails {\n email: string;\n amount: string | undefined;\n phone_number: string;\n order_id: string;\n name: string;\n fractalpayPublicKey: string;\n}\n\ninterface Errors {\n [key: string]: string;\n}\n\n\n// export const RequestPayment: React.FC<Props> = (props) => {\nexport function RequestPreAuthPayment(props: Props) {\n const fractalpayClientKey = props.merchantPublicKey;\n const discount = props?.discount;\n const tax = props?.tax;\n const surcharge = props?.surcharge;\n // State definitions with types\n const [show, setShow] = useState<boolean>(false);\n const [loading, setLoading] = useState<boolean>(false);\n const [errors, setErrors] = useState<{ [key: string]: string }>({});\n const [phone, setPhone] = useState<string | null>(null);\n const [requestDetails, setRequestDetails] = useState({\n email: '',\n phone_number: '',\n order_id: '',\n name: '',\n fractalpayPublicKey: fractalpayClientKey,\n });\n\n const [amount, setAmount] = useState<string>('');\n const [showConfirmationModal, setShowConfirmationModal] = useState<boolean>(false);\n const [apiResponse, setApiResponse] = useState<any>(null);\n\n const phoneNumberRegex = (value: string) => /^\\(?\\d{3}\\)?[-.\\s]?\\d{3}[-.\\s]?\\d{4}$/.test(value);\n const amoutRegex = /[+-]?([0-9]*[.])?[0-9]+/;\n const isValidEmail = (value: string) => /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value);\n const isAlpha = (value: string) => /^[A-Za-z\\s]*$/.test(value);\n\n const handleClose = () => {\n setShow(false);\n setErrors({});\n };\n\n const handleShow = () => setShow(true);\n\n const handleCloseConfirmationModal = () => {\n handleSubmit(apiResponse);\n setShowConfirmationModal(false);\n };\n\n function emptyFields() {\n setRequestDetails({\n email: '',\n phone_number: '',\n order_id: '',\n name: '',\n fractalpayPublicKey: fractalpayClientKey,\n });\n setAmount('');\n }\n\n function handleSubmit(event: any) {\n // Send message to parent window\n let message = {\n type: 'preview.compiledcheck',\n other: { ...event, status: true }\n };\n\n window.parent.postMessage(message, '*');\n }\n\n const sendRequestPayment = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.currentTarget.blur();\n if (loading) return;\n if (Object.keys(errors).length > 0) {\n return;\n }\n setErrors({});\n\n if (!requestDetails?.email && phone && !phoneNumberRegex(phone)) {\n setErrors((prevErrors) => ({\n ...prevErrors,\n phone: ErrorText.phonenumbervalid\n }));\n return;\n }\n if (!validateForm()) {\n return;\n }\n\n try {\n setLoading(true);\n const formData = {\n fractalpayPublicKey: fractalpayClientKey,\n amount: amount,\n phone_number: phone,\n order_id: requestDetails.order_id,\n action: 'request',\n name: requestDetails.name,\n email: requestDetails.email,\n customer_id: props?.customerId ? props?.customerId : '',\n discount,\n surcharge,\n tax,\n require_3ds: props?.require_3ds,\n };\n let response = await axios.post(`${baseUrl}send-request-pre-auth-payment`, formData, {\n headers: {\n ...(props?.sessionToken && { 'X-Session-Token': props.sessionToken })\n }\n });\n if (response?.status === 200) {\n setShowConfirmationModal(true);\n setShow(false);\n emptyFields();\n setApiResponse(response?.data);\n }\n setLoading(false);\n } catch (error) {\n console.log(error);\n setLoading(false);\n }\n };\n\n let favicon_logo = baseUrl + 'images/logo-img.png';\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = e.target;\n const token = e.target.dataset.token as string;\n setRequestDetails({ ...requestDetails, [token]: value });\n if ((token === 'name') && !isAlpha(value)) {\n setErrors((prevErrors) => ({\n ...prevErrors,\n [token]: ErrorText.onlylettersallowed\n }));\n return;\n }\n\n let errorobj = errors;\n\n if (token === 'email' && !phone) {\n delete errorobj.phone;\n setErrors(errorobj);\n }\n\n if (value) {\n delete errorobj[token];\n setErrors(errorobj);\n }\n\n if (token === 'email' && !value) {\n delete errorobj[token];\n setErrors(errorobj);\n }\n };\n\n const handleAmountChange = (data: { value: string }) => {\n const { value } = data;\n if (Number(value) > 0) {\n let errorobj = errors;\n delete errorobj.amount;\n setErrors(errorobj);\n }\n setAmount(value);\n };\n\n const validateForm = () => {\n let newErrors: { [key: string]: string } = {};\n\n if (!amount) newErrors.amount = ErrorText.amountrequired;\n if (requestDetails.email && !isValidEmail(requestDetails?.email)) newErrors.email = ErrorText.invalidemail;\n if (!phone && !requestDetails?.email) newErrors.phone = ErrorText.phoneoremailrequired;\n if (!phone && !requestDetails?.email) newErrors.email = ErrorText.phoneoremailrequired;\n if (!phone && requestDetails.email && !isValidEmail(requestDetails?.email)) newErrors.email = ErrorText.invalidemail;\n if (props.from === 'merchant' && !requestDetails.order_id) newErrors.order_id = ErrorText.orderidrequired;\n\n setErrors(newErrors);\n return Object.keys(newErrors).length === 0;\n };\n\n useEffect(() => {\n if (props) {\n setRequestDetails((prev) => ({\n ...prev,\n order_id: props.orderID ? props.orderID : '',\n name: props?.name ? props?.name : '',\n email: props?.email ? props?.email : '',\n }));\n setAmount(props.amount ? props.amount : '');\n setPhone(props.phone ? `${props.phone}` : null);\n }\n }, [props]);\n\n const handlePhoneChange = (e: { value: string }) => {\n let value = e?.value;\n if (value && value?.length > 0 && value?.length !== 10) {\n setErrors((prevErrors) => ({\n ...prevErrors,\n phone: ErrorText.phonenumberlength\n }));\n setPhone(value);\n return;\n } else {\n setPhone(value);\n }\n let errorobj = errors;\n delete errorobj.phone;\n\n if (value && !requestDetails?.email) {\n delete errorobj.email;\n }\n\n setErrors(errorobj);\n };\n\n function formatAmount(amount: string) {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(Number(amount));\n }\n\n\n return (\n <>\n <RequestPaymentstyles />\n <Loader loading={loading} />\n <>\n <button className=\"paymentBtn\" onClick={handleShow}>\n Send Request\n </button>\n <div className='frac-form'>\n <CustomModal2\n open={show}\n onClose={() => setShow(false)}\n maxWidth={'500px'}\n >\n <div className=\"request-payment-amount-detail\">\n <p className=\"request-payment-merchantname\">Authorization Request</p>\n <p className=\"request-payment-pre-auth-merchantname\">Pay {props?.webname}</p>\n <p className=\"request-payment-amount\">{formatAmount(props?.amount)}</p>\n {\n props?.from === 'merchant' && <p className=\"request-payment-orderid\" >{requestDetails?.order_id}</p>\n }\n <span className=\"request-payment-close-popup\" onClick={handleClose}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <g clipPath=\"url(#clip0_12425_52336)\">\n <path d=\"M9.46585 8.01168L15.6959 1.7814C16.1014 1.37615 16.1014 0.720912 15.6959 0.315659C15.2907 -0.0895946 14.6354 -0.0895946 14.2302 0.315659L7.99991 6.54593L1.76983 0.315659C1.36438 -0.0895946 0.709336 -0.0895946 0.304082 0.315659C-0.101361 0.720912 -0.101361 1.37615 0.304082 1.7814L6.53416 8.01168L0.304082 14.2419C-0.101361 14.6472 -0.101361 15.3024 0.304082 15.7077C0.506045 15.9098 0.771595 16.0114 1.03695 16.0114C1.30232 16.0114 1.56768 15.9098 1.76983 15.7077L7.99991 9.47742L14.2302 15.7077C14.4323 15.9098 14.6977 16.0114 14.9631 16.0114C15.2284 16.0114 15.4938 15.9098 15.6959 15.7077C16.1014 15.3024 16.1014 14.6472 15.6959 14.2419L9.46585 8.01168Z\" fill=\"#727272\" />\n </g>\n <defs>\n <clipPath id=\"clip0_12425_52336\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <form className=\"request-payment-input-form\" >\n <div className=\"request-payment-list-div\">\n <label htmlFor=\"exampleFormControlInput2\" className=\"request-payment-input-label\">\n FULL NAME\n </label>\n <input\n className=\"request-payment-input-box\"\n type=\"text\"\n placeholder=\"Full Name\"\n data-token=\"name\"\n onChange={handleChange}\n value={requestDetails?.name}\n />\n {errors.name && <small className=\"request-payment-error-msg\">{errors.name}</small>}\n </div>\n\n <div className=\"request-payment-list-div\">\n <label htmlFor=\"requestPhoneNumber\" className=\"request-payment-input-label\">\n Phone Number\n </label>\n <PatternFormat\n className=\"request-payment-input-box\"\n placeholder=\"Mobile number\"\n format=\"+1 (###) ###-####\"\n value={phone}\n onValueChange={(e) => { handlePhoneChange(e) }}\n />\n {errors.phone && <small className=\"request-payment-error-msg\">{errors.phone}</small>}\n </div>\n\n <div className=\"request-payment-list-div\">\n <label htmlFor=\"exampleFormControlInput2\" className=\"request-payment-input-label\">\n EMAIL\n </label>\n <input\n className=\"request-payment-input-box\"\n type=\"text\"\n placeholder=\"Email\"\n onChange={handleChange}\n data-token=\"email\"\n value={requestDetails?.email}\n />\n {errors.email && <small className=\"request-payment-error-msg\">{errors.email}</small>}\n </div>\n <button\n type=\"button\"\n className=\"request-payment-submit-button\"\n onClick={sendRequestPayment}\n disabled={loading}\n >\n {loading ? \"Loading...\" : \"Send Request\"}\n </button>\n <div className=\"request-payment-fractal-powerd-by\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\n <path d=\"M15.2165 4.11839C15.1973 3.69746 15.1973 3.29567 15.1973 2.89387C15.1973 2.56861 14.9486 2.31988 14.6234 2.31988C12.2317 2.31988 10.4141 1.63109 8.90257 0.157848C8.67298 -0.0526158 8.32858 -0.0526158 8.09898 0.157848C6.58748 1.63109 4.76984 2.31988 2.37821 2.31988C2.05295 2.31988 1.80422 2.56861 1.80422 2.89387C1.80422 3.29567 1.80422 3.69746 1.78508 4.11839C1.70855 8.13632 1.59375 13.6466 8.30945 15.9617L8.50078 16L8.69211 15.9617C15.3887 13.6466 15.293 8.15546 15.2165 4.11839ZM8.04159 9.6861C7.92679 9.78176 7.79286 9.83916 7.63979 9.83916H7.62066C7.46759 9.83916 7.31453 9.76263 7.21887 9.64783L5.43949 7.67713L6.30048 6.91181L7.69719 8.46158L10.7967 5.5151L11.5812 6.35695L8.04159 9.6861Z\" fill=\"#727272\" />\n </svg>\n Secure payments powered by <span>Fractal</span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path d=\"M17.4999 5.49758V7.01156C17.4999 7.05924 17.4595 7.09898 17.411 7.09898H12.3516C12.9169 6.54266 13.4781 5.99032 14.0434 5.434C14.0596 5.4181 14.0838 5.41016 14.104 5.41016H17.411C17.4595 5.41016 17.4999 5.44989 17.4999 5.49758Z\" fill=\"#61C699\" />\n <path d=\"M12.3462 10.9037V9.29836C12.3462 9.25067 12.3866 9.21094 12.435 9.21094H13.8523C13.929 9.21094 13.9694 9.30631 13.9129 9.35796C13.392 9.87455 12.8711 10.3911 12.3462 10.9037Z\" fill=\"#61C699\" />\n <path d=\"M12.4404 9.00523H15.6949C15.7434 9.00523 15.7838 8.96549 15.7838 8.91781V7.40383C15.7838 7.35614 15.7434 7.31641 15.6949 7.31641H12.4404C12.3919 7.31641 12.3516 7.35614 12.3516 7.40383V8.91781C12.3516 8.96549 12.3919 9.00523 12.4404 9.00523Z\" fill=\"#61C699\" />\n <path d=\"M10.1581 0.0120725L11.4906 0.77105C11.531 0.794892 11.5471 0.84655 11.5229 0.890261L8.99114 5.20173C8.78521 4.44275 8.57927 3.68775 8.37334 2.92877C8.36527 2.90493 8.3693 2.88109 8.38142 2.86122L10.0329 0.0438621C10.0612 0.000151419 10.1177 -0.0117697 10.1581 0.0120725Z\" fill=\"#61C699\" />\n <path d=\"M12.3382 7.10006L10.9289 6.29737C10.8886 6.27353 10.8724 6.22187 10.8966 6.17816L11.6033 4.97015C11.6436 4.9026 11.7446 4.91452 11.7648 4.99002C11.9546 5.69734 12.1484 6.40068 12.3382 7.10006Z\" fill=\"#61C699\" />\n <path d=\"M10.7107 6.0771L12.338 3.30345C12.3622 3.26372 12.346 3.20808 12.3057 3.18424L10.9732 2.42526C10.9328 2.40142 10.8763 2.41732 10.852 2.45705L9.22476 5.2307C9.20053 5.27044 9.21669 5.32607 9.25706 5.34991L10.5896 6.10889C10.634 6.13273 10.6865 6.11683 10.7107 6.0771Z\" fill=\"#61C699\" />\n <path d=\"M1.66713 3.51237L2.99963 2.75339C3.04001 2.72955 3.09654 2.74544 3.12077 2.78518L5.65251 7.09665C4.88128 6.89399 4.11408 6.69133 3.34285 6.48867C3.31862 6.4847 3.30247 6.4688 3.29036 6.44893L1.63483 3.63158C1.6106 3.58787 1.62271 3.53621 1.66713 3.51237Z\" fill=\"#61C699\" />\n <path d=\"M8.99793 5.20018L7.58871 5.99889C7.54833 6.02274 7.4918 6.00684 7.46757 5.9671L6.76095 4.76307C6.72057 4.69552 6.78517 4.61605 6.86189 4.63591C7.57256 4.82268 8.28726 5.00944 8.99793 5.20018Z\" fill=\"#61C699\" />\n <path d=\"M7.27986 6.07054L5.6526 3.2969C5.62837 3.25716 5.57588 3.24127 5.53146 3.26511L4.19896 4.02409C4.15858 4.04793 4.14243 4.09959 4.16666 4.1433L5.79392 6.91694C5.81815 6.95668 5.87064 6.97257 5.91506 6.94873L7.24756 6.18975C7.28794 6.16591 7.30409 6.11425 7.27986 6.07054Z\" fill=\"#61C699\" />\n <path d=\"M0.5 12.4998V10.9859C0.5 10.9382 0.540379 10.8984 0.588833 10.8984H5.64829C5.08299 11.4548 4.52172 12.0071 3.95642 12.5634C3.94027 12.5793 3.91604 12.5873 3.89585 12.5873H0.588833C0.540379 12.5873 0.5 12.5475 0.5 12.4998Z\" fill=\"#61C699\" />\n <path d=\"M5.65129 7.09766V8.70303C5.65129 8.75072 5.61091 8.79045 5.56246 8.79045H4.14516C4.06844 8.79045 4.02806 8.69508 4.08459 8.64343C4.60548 8.12685 5.12637 7.61424 5.65129 7.09766Z\" fill=\"#61C699\" />\n <path d=\"M5.55967 8.99609H2.30514C2.25669 8.99609 2.21631 9.03583 2.21631 9.08352V10.5975C2.21631 10.6452 2.25669 10.6849 2.30514 10.6849H5.55967C5.60813 10.6849 5.6485 10.6452 5.6485 10.5975V9.08352C5.6485 9.03583 5.60813 8.99609 5.55967 8.99609Z\" fill=\"#61C699\" />\n <path d=\"M7.82638 17.9865L6.49388 17.2276C6.4535 17.2037 6.43735 17.1521 6.46158 17.1083L8.99333 12.7969C9.19926 13.5559 9.40519 14.3109 9.61112 15.0698C9.6192 15.0937 9.61516 15.1175 9.60305 15.1374L7.95155 17.9547C7.91925 17.9985 7.86676 18.0104 7.82638 17.9865Z\" fill=\"#61C699\" />\n <path d=\"M5.64795 10.8984L7.05717 11.7011C7.09755 11.725 7.1137 11.7766 7.08947 11.8203L6.38284 13.0283C6.34246 13.0959 6.24152 13.084 6.22133 13.0085C6.02751 12.3012 5.83773 11.5978 5.64795 10.8984Z\" fill=\"#61C699\" />\n <path d=\"M7.2739 11.9258L5.64664 14.6994C5.62241 14.7392 5.63856 14.7948 5.67894 14.8187L7.01144 15.5776C7.05182 15.6015 7.10835 15.5856 7.13258 15.5458L8.75984 12.7722C8.78407 12.7325 8.76792 12.6768 8.72754 12.653L7.39504 11.894C7.35062 11.8702 7.29813 11.8861 7.2739 11.9258Z\" fill=\"#61C699\" />\n <path d=\"M16.3199 14.4866L14.9874 15.2456C14.947 15.2694 14.8904 15.2535 14.8662 15.2138L12.3345 10.9023C13.1057 11.105 13.8729 11.3077 14.6441 11.5103C14.6684 11.5143 14.6845 11.5302 14.6966 11.5501L16.3481 14.3674C16.3764 14.4111 16.3643 14.4628 16.3199 14.4866Z\" fill=\"#61C699\" />\n <path d=\"M8.99121 12.7983L10.4004 11.9956C10.4408 11.9717 10.4973 11.9876 10.5216 12.0274L11.2282 13.2354C11.2686 13.3029 11.204 13.3824 11.1272 13.3625C10.4166 13.1758 9.70188 12.989 8.99121 12.7983Z\" fill=\"#61C699\" />\n <path d=\"M10.7077 11.9285L12.3349 14.7021C12.3592 14.7418 12.4117 14.7577 12.4561 14.7339L13.7886 13.9749C13.829 13.9511 13.8451 13.8994 13.8209 13.8557L12.1936 11.0821C12.1694 11.0423 12.1169 11.0264 12.0725 11.0503L10.74 11.8092C10.6996 11.8331 10.6834 11.8847 10.7077 11.9285Z\" fill=\"#61C699\" />\n </svg>\n </div>\n </form>\n </CustomModal2>\n <CustomModal2\n open={showConfirmationModal}\n onClose={handleCloseConfirmationModal}\n maxWidth={'500px'}\n >\n <div className=\"fractal-popup-content\" style={{ padding: '0px', maxWidth: '500px' }}>\n <div className=\"request-payment-success-container\">\n <span className=\"request-payment-close-popup\" onClick={handleCloseConfirmationModal}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <g clipPath=\"url(#clip0_12425_52336)\">\n <path d=\"M9.46585 8.01168L15.6959 1.7814C16.1014 1.37615 16.1014 0.720912 15.6959 0.315659C15.2907 -0.0895946 14.6354 -0.0895946 14.2302 0.315659L7.99991 6.54593L1.76983 0.315659C1.36438 -0.0895946 0.709336 -0.0895946 0.304082 0.315659C-0.101361 0.720912 -0.101361 1.37615 0.304082 1.7814L6.53416 8.01168L0.304082 14.2419C-0.101361 14.6472 -0.101361 15.3024 0.304082 15.7077C0.506045 15.9098 0.771595 16.0114 1.03695 16.0114C1.30232 16.0114 1.56768 15.9098 1.76983 15.7077L7.99991 9.47742L14.2302 15.7077C14.4323 15.9098 14.6977 16.0114 14.9631 16.0114C15.2284 16.0114 15.4938 15.9098 15.6959 15.7077C16.1014 15.3024 16.1014 14.6472 15.6959 14.2419L9.46585 8.01168Z\" fill=\"#727272\" />\n </g>\n <defs>\n <clipPath id=\"clip0_12425_52336\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <div className=\"request-payment-success-tick-div\">\n <div className=\"request-payment-success-tick\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M6.12669 13.9774C5.97396 14.131 5.76558 14.2167 5.54913 14.2167C5.33267 14.2167 5.1243 14.131 4.97157 13.9774L0.359012 9.36408C-0.119671 8.8854 -0.119671 8.10919 0.359012 7.6314L0.936573 7.05369C1.4154 6.57501 2.19072 6.57501 2.6694 7.05369L5.54913 9.93357L13.3306 2.15198C13.8094 1.6733 14.5855 1.6733 15.0634 2.15198L15.641 2.72969C16.1196 3.20837 16.1196 3.98444 15.641 4.46237L6.12669 13.9774Z\" fill=\"#61C699\" />\n </svg>\n </div>\n </div>\n <h6 className=\"request-payment-success-text\">The request <br />\n was sent</h6>\n <h6 className=\"request-payment-success-subtext\">Please wait for the customer to pay</h6>\n <div className=\"request-payment-success-btn-div\">\n {/* <button className=\"request-payment-success-btn1\">Go to Transactions</button> */}\n <button onClick={handleCloseConfirmationModal} className=\"request-payment-success-btn2\">Close</button>\n </div>\n </div>\n </div>\n </CustomModal2>\n </div>\n </>\n </>\n );\n};\n\n","'use client'\nimport React, { useEffect, useRef, useState } from 'react'\nimport Chargewidgetstyles from './Chargewidgetstyles';\nimport CustomModal2 from '../CustomModal/CustomModal2';\nimport { baseUrl, masterBaseUrl, fractalGatewayUrl, S3Url } from '../baseurl';\nimport axios, { AxiosError } from 'axios';\nimport Loader from '../Loader/Loader';\nimport SuccessMsz from '../SuccessMessage/SuccessMsz';\nimport Swal from 'sweetalert2';\nimport { IoArrowBack } from \"react-icons/io5\";\nimport DataScript from '../Datascript';\nimport ErrorCardMessage from '../ErrorCardMessage/ErrorCardMessage';\nimport socket from '../socketClient'\nimport { accountTypes, bankNew, formatCardNumberWithCursor, formatUSD, isValidJson, numberToBoolean } from '../../utils/Common'\nimport { CardBankRadio } from '../Atoms/CardBankRadio/CardBankRadio';\nimport CardBankRadioStyles from '../Atoms/CardBankRadio/CardBankRadioStyles';\nimport { CardList } from '../Atoms/CardList/CardList';\nimport { PaxList } from '../Atoms/PaxList/PaxList';\nimport FractalTokenizerScript from '../FractalTokenizer';\nimport FractalFields from '../Atoms/FractalForm/FractalFields';\nimport { DataCapFields, DataCapScriptLoader } from '../Datacap-Payment';\n\ndeclare let DatacapWebToken: any;\ndeclare let forge: any;\ndeclare let FractalTokenizer: any;\n\ntype Props = {\n merchantPublicKey: string;\n customerId?: string;\n orderID?: string;\n from?: string;\n amount: string;\n discount?: string;\n tax?: string;\n surcharge?: string;\n pass_fee?: boolean;\n isReader?: boolean;\n sessionToken?: string;\n}\n\ntype activeinTabs = 'form' | 'list'\n\n\nexport function GetPaymentPage(props: Props) {\n const [loading, setLoading] = useState<boolean>(false);\n const [loadingIframe, setLoadingIframe] = useState<boolean>(false);\n const [loading2, setLoading2] = useState<boolean>(false);\n const [error, setError] = useState<string>(\"\");\n const [errorIframe, setErrorIframe] = useState<string>(\"\");\n const [success, setSuccess] = useState<boolean>(false);\n const [show, setShow] = useState<boolean>(false);\n const [activetab, setActive] = useState<string>('card');\n const [activeList, setActiveList] = useState<string>('card')\n const [activeinCard, setActiveinCard] = useState<activeinTabs>('form')\n const [activeinBank, setActiveinBank] = useState<activeinTabs>('form')\n const [activeForm, setActiveForm] = useState<boolean>(true)\n const [saveCardInfo, setSaveCardInfo] = useState<boolean>(false);\n const [saveACHinfo, setSaveACHinfo] = useState<boolean>(false);\n const fractalpayClientKey = props.merchantPublicKey;\n interface CardDetails {\n cardName: string,\n cardNumber: string;\n expiryMonth: string;\n expiryYear: string;\n cvv: string;\n orderId: string;\n zipCode: string;\n }\n interface achDetails {\n name: string;\n routingNumber: string;\n accountNumber: string;\n confirmAccountNumber: string;\n bankName: string;\n accountType: string;\n companyName?: string;\n }\n\n interface Card {\n id: string;\n firstname: string;\n lastname: string;\n primary_card: number;\n expmonth: number;\n expyear: number;\n card_type: string;\n cardlastfourdigit: string;\n }\n\n interface PaymentDevice {\n id: number;\n device_id: number;\n device_name: string;\n }\n\n interface PaymentData {\n paymentGateway: number;\n isSkyFiAccount: boolean;\n logo: string;\n bname: string;\n card_list: Card[];\n customer_name: string;\n is_primary: string;\n paymentDeviceList: PaymentDevice[];\n showSurcharge?: number,\n dctoken?: string,\n }\n interface SelectedCard {\n card_type: string;\n cardlastfourdigit: string;\n expmonth: number;\n expyear: number;\n primary_card: number;\n firstname: string;\n id: string;\n lastname: string;\n }\n\n interface SelectedReader {\n id?: number;\n device_id?: number;\n device_name?: string;\n }\n\n let mastercard = S3Url + 'widget/mc-img.svg'\n let visa = S3Url + 'widget/visa-img.svg'\n let americanexp = S3Url + 'widget/ae-img.svg'\n let discover = S3Url + 'widget/discover-img.svg'\n let defaultcard = S3Url + 'widget/card.svg'\n let trash = S3Url + 'widget/Trash.svg'\n let bank = S3Url + 'widget/bank.svg'\n let secure = S3Url + 'widget/secure-img.png'\n let pov = S3Url + 'widget/pov-by.png'\n let pax = S3Url + 'widget/pax.svg'\n\n const [cardData, setCardData] = useState<CardDetails>()\n const [cardError, setCardError] = useState<Partial<Record<keyof CardDetails, string>>>({});\n const [achData, setAchData] = useState<achDetails>()\n const [achError, setAchError] = useState<Partial<Record<keyof achDetails, string>>>({});\n const [cardList, setCardList] = useState([])\n const [bankList, setBankList] = useState([])\n const [selectedCard, setSelectedCard] = useState<SelectedCard>()\n const [selectedReader, setSelectedReader] = useState<PaymentDevice | null | undefined>(undefined)\n const [cashDiscount, setCashDiscount] = useState<number | undefined>(Number(props?.amount));\n // console.log(selectedCard, \"selectedCard\");\n\n\n const [paymentData, setPaymentData] = useState<PaymentData>()\n let [tranId, setTranId] = useState(\"\")\n\n const tokenizerRef = useRef<any>(null);\n\n const fractalStyles = {\n input: {\n 'font-family': \"'Inter', sans-serif\",\n 'font-size': '16px',\n 'color': '#212529',\n 'background-color': 'transparent',\n 'padding': '0px',\n 'appearance': 'none',\n 'outline': 'none',\n 'border': 'none',\n 'box-shadow': 'none'\n },\n ':focus': {\n 'color': '#212529',\n 'outline': 'none',\n 'border': 'none'\n },\n '::placeholder': {\n 'color': '#212529'\n }\n };\n\n const showLoader = () => setLoading(true);\n const hideLoader = () => setLoading(false);\n const CalculateCashDiscount = (amount: any, surcharge: any) => {\n const surchargeVal = (parseFloat(surcharge) || 0) / 100;\n const originalAmount = amount / (1 + surchargeVal);\n return Math.round(originalAmount * 100) / 100; // rounding to 2 decimals\n };\n\n useEffect(() => {\n if (show) {\n let cash_discount = CalculateCashDiscount(props?.amount, (props?.surcharge || 0));\n setCashDiscount(cash_discount);\n }\n // if (props?.pass_fee) {\n // } else {\n // setCashDiscount(undefined);\n // }\n }, [show, props?.pass_fee, props?.amount, props?.surcharge])\n\n // for payment popup\n const handleClose = () => {\n\n // if (tokenizerRef.current) {\n // try {\n // tokenizerRef.current.destroy?.(); \n // tokenizerRef.current.unmount?.();\n // } catch (err) {\n // console.warn(\"Tokenizer cleanup error:\", err);\n // }\n\n // tokenizerRef.current = null;\n // }\n // [\"card_number\", \"exp_month\", \"exp_year\", \"cvv\"].forEach((id) => {\n // const el = document.getElementById(id);\n // if (el) el.innerHTML = \"\";\n // });\n\n setShow(false);\n setActive('card')\n setError(\"\")\n setSuccess(false)\n setTranId(\"\")\n setAchData({\n name: \"\",\n routingNumber: \"\",\n accountNumber: \"\",\n confirmAccountNumber: \"\",\n bankName: \"\",\n accountType: \"\"\n })\n setAchError({\n name: \"\",\n routingNumber: \"\",\n accountNumber: \"\",\n confirmAccountNumber: \"\",\n bankName: \"\",\n accountType: \"\"\n })\n setCardData({\n cardName: \"\",\n cardNumber: \"\",\n expiryMonth: \"\",\n expiryYear: \"\",\n cvv: \"\",\n orderId: \"\",\n zipCode: \"\"\n })\n setCardError({\n cardName: \"\",\n cardNumber: \"\",\n expiryMonth: \"\",\n expiryYear: \"\",\n cvv: \"\",\n orderId: \"\",\n zipCode: \"\"\n })\n setSaveACHinfo(false)\n setSaveCardInfo(false)\n setSelectedCard({\n card_type: \"\",\n cardlastfourdigit: \"\",\n expmonth: 1,\n expyear: 2025,\n primary_card: 0,\n firstname: \"\",\n id: \"\",\n lastname: \"\",\n })\n setSelectedReader(null)\n setCashDiscount(0)\n setActiveList('card')\n setActiveForm(true)\n setActiveinBank('form')\n setActiveinCard('form')\n setLoading2(false);\n setLoading(false);\n setBankList([]);\n setCardList([]);\n };\n const handleShow = () => setShow(true);\n\n\n const handletabchange = (id: string) => {\n setActive(id)\n }\n\n const handleCardChange = (field: string, value: any) => {\n const name = field\n const numericFields = [\"expiryMonth\", \"expiryYear\", \"zipCode\", \"cvv\"];\n\n if (numericFields.includes(name)) {\n if (value === \"\" || /^[0-9]+$/.test(value)) {\n setCardError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setCardData((prev: any) => ({\n ...prev,\n [name]: value,\n }));\n }\n return;\n }\n\n setCardError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setCardData((prev: any) => ({\n ...prev, [name]: value\n }))\n\n }\n const handleCardNumberChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target;\n const { formatted, cursor } = formatCardNumberWithCursor(\n input.value,\n input.selectionStart ?? 0\n );\n setCardError((prev: any) => ({\n ...prev,\n cardNumber: \"\"\n }))\n\n setCardData((prev: any) => ({\n ...prev,\n cardNumber: formatted\n }));\n\n requestAnimationFrame(() => {\n input.setSelectionRange(cursor, cursor);\n });\n };\n\n const handleChangeAch = (e: any) => {\n const { name, value } = e.target\n const numericFields = [\"routingNumber\", \"accountNumber\", \"confirmAccountNumber\"];\n if (name == \"name\") {\n\n\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n setAchError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setAchData((prev: any) => ({\n ...prev,\n [name]: value,\n }));\n }\n return\n\n }\n if (numericFields.includes(name)) {\n // Agar value empty hai (backspace ke liye) ya sirf digits hain, tabhi set karenge\n if (value === \"\" || /^[0-9]+$/.test(value)) {\n setAchError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setAchData((prev: any) => ({\n ...prev,\n [name]: value,\n }));\n }\n return;\n }\n\n\n setAchError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setAchData((prev: any) => ({\n ...prev, [name]: value\n }))\n\n }\n\n const validateCardData = (): boolean => {\n const errors: Partial<Record<keyof CardDetails, string>> = {};\n const data = cardData\n // if (paymentData?.paymentGateway !== 32) {\n\n // if (!data?.cardNumber?.trim()) errors.cardNumber = \"Card number is required\";\n // const month = parseInt(data?.expiryMonth || \"\", 10);\n // const year = data?.expiryYear || \"\";\n // if (!data?.expiryMonth?.trim() || !data?.expiryYear?.trim()) {\n // errors.expiryMonth = \"Invalid Expiration Date.\"\n // } else if (isNaN(month) || month < 1 || month > 12 || year.length !== 4) {\n // errors.expiryMonth = \"Invalid Expiration Date.\";\n // }\n // if (!data?.cvv?.trim()) errors.cvv = \"CVV is required\";\n // // Additional check for expired card\n // if (data?.expiryMonth && data?.expiryYear && data.expiryMonth.length <= 2 && data.expiryYear.length === 4) {\n // const month = parseInt(data.expiryMonth, 10);\n // const year = parseInt(data.expiryYear, 10);\n // const now = new Date();\n // const currentMonth = now.getMonth() + 1; // JS month is 0-indexed\n // const currentYear = now.getFullYear();\n\n // if (year < currentYear || (year === currentYear && month < currentMonth)) {\n // errors.expiryMonth = \"Card is expired\";\n // }\n // }\n // }\n if (!data?.cardName?.trim()) errors.cardName = \"Card name is required\";\n if (!data?.zipCode?.trim()) errors.zipCode = \"ZIP code is required\";\n setCardError(errors);\n\n // Return true if there is any error\n return Object.keys(errors).length > 0;\n };\n const validateAchData = (): boolean => {\n const errors: Partial<Record<keyof achDetails, string>> = {};\n const data = achData\n if (!data?.name?.trim()) errors.name = \"Name is required\";\n if (!data?.accountNumber?.trim()) errors.accountNumber = \"Account number is required\";\n if (data?.accountNumber?.trim() && data?.accountNumber?.trim() !== data?.confirmAccountNumber?.trim()) errors.confirmAccountNumber = \"Account numbers must match\";\n if (!data?.bankName?.trim()) errors.bankName = \"Bank name is required\";\n if (!data?.routingNumber?.trim()) errors.routingNumber = \"Routing Number is required\";\n\n\n if (data?.routingNumber && data?.routingNumber?.length !== 9) errors.routingNumber = \"Routing number must be 9 digits\";\n\n\n if ((data?.accountType === 'business saving' || data?.accountType === 'business checking')) {\n if (!data?.companyName || data?.companyName === \"\") {\n errors.companyName = \"Company Name is required for business accounts\";\n }\n }\n\n // Routing Number Validation removed du to new validation \n // if (data?.routingNumber?.length == 9) {\n\n // let routingNumber = data?.routingNumber\n // const weights = [3, 7, 1];\n // let sum = 0;\n\n // for (let i = 0; i < routingNumber.length; i++) {\n // sum += parseInt(routingNumber[i], 10) * weights[i % 3];\n // }\n // if (sum % 10 !== 0) {\n // errors.routingNumber = \"Invalid routing number\"\n // }\n\n // }\n setAchError(errors);\n return Object.keys(errors).length > 0;\n };\n\n\n\n const submitFunc = async (e: any) => {\n e.preventDefault()\n const el = document.activeElement;\n if (el instanceof HTMLElement) {\n el.blur();\n }\n if (activetab !== 'ach') {\n const hasError = validateCardData()\n if (hasError) return\n else {\n let validCard = true;\n let validExpirationDate = true;\n let validCVV = true;\n\n // if (paymentData?.paymentGateway !== 32) {\n // let validCard = DatacapWebToken.validateCardNumber(cardData?.cardNumber.replaceAll(\" \", ''));\n // let validExpirationDate = DatacapWebToken.validateExpirationDate(cardData?.expiryMonth, cardData?.expiryYear);\n // let validCVV = DatacapWebToken.validateCVV(cardData?.cvv);\n // let errors: Partial<Record<keyof CardDetails, string>> = {}\n // if (!validCard) errors.cardNumber = \"Invalid card Number\"\n // if (!validExpirationDate) errors.expiryMonth = \"Invalid Expiration Date.\"\n // if (!validCVV) errors.cvv = \"Invalid CVV\"\n // setCardError(errors)\n // }\n\n if (validCard && validCVV && validExpirationDate) {\n\n // showLoader()\n setLoading2(true)\n try {\n const formData = {\n amount: `${props.amount || 0}`,\n fractalpayPublicKey: fractalpayClientKey,\n orderId: props?.orderID,\n customer_id: props?.customerId,\n discount: props?.discount,\n surcharge: props?.surcharge,\n tax: props?.tax,\n pass_fee: props?.pass_fee\n }\n const result = await axios.post(`${baseUrl}create-widget-order`, formData, {\n headers: {\n ...(props?.sessionToken && { 'X-Session-Token': props.sessionToken })\n }\n })\n let tokenCallback = async function (response: any) {\n\n if (response.Error) {\n setError(response.Error)\n // hideLoader();\n setLoading2(false)\n\n\n } else {\n let name = cardData?.cardName;\n let postal_code = cardData?.zipCode;\n\n response.name = name;\n response.postal_code = postal_code;\n response.isCardSave = `${saveCardInfo}`\n response.isCharge = true;\n response.posSalesIdEncode = result?.data.data.posSalesIdEncode;\n\n\n socket.emit(\"sendMessage\", response)\n socket.on(result?.data.data.posSalesIdEncode, (data: any) => {\n if (isValidJson(data?.data)) {\n let apiResponse = JSON.parse(data.data);\n if (apiResponse?.result) {\n setCardData({\n cardName: \"\",\n cardNumber: \"\",\n expiryMonth: \"\",\n expiryYear: \"\",\n cvv: \"\",\n orderId: \"\",\n zipCode: \"\"\n })\n setSaveCardInfo(false)\n setTranId(apiResponse?.transactionId)\n setSuccess(true)\n // hideLoader()\n setLoading2(false)\n } else {\n setLoading2(false)\n setError(apiResponse?.message || \"Something went wrong.\")\n }\n } else {\n setError(\"Something went wrong.\")\n }\n })\n\n\n // try {\n // let apiResponse = await axios.post(`${masterBaseUrl}quick-pay/${result?.data.data.posSalesIdEncode}`, response)\n // setCardData({\n // cardName: \"\",\n // cardNumber: \"\",\n // expiryMonth: \"\",\n // expiryYear: \"\",\n // cvv: \"\",\n // orderId: \"\",\n // zipCode: \"\"\n // })\n // setSaveCardInfo(false)\n // setTranId(apiResponse?.data?.transactionId)\n // setSuccess(true)\n // // hideLoader()\n // setLoading2(false)\n\n // } catch (err: any) {\n // // hideLoader()\n // setLoading2(false)\n\n // setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n\n // }\n\n }\n }\n\n if (paymentData?.paymentGateway === 32) {\n const requestOptions = {\n method: \"POST\",\n redirect: \"follow\"\n };\n try {\n let sesionResult = await axios.post(`${masterBaseUrl}api/v1/widget/generate-session`, requestOptions)\n // let expYear = (Number(cardData?.expiryYear)) % 100;\n // let cardNumber = cardData?.cardNumber;\n // cardNumber = cardNumber?.replace(/\\s+/g, '');\n // let track2_data = `${cardNumber}=${expYear}${cardData?.expiryMonth} ${cardData?.cvv}`;\n // const publicKey = forge.pki.publicKeyFromPem(sesionResult?.data?.data?.publicKeyPem);\n // const encrypted = publicKey.encrypt(track2_data, 'RSA-OAEP', {\n // md: forge.md.sha1.create(),\n // mgf1: {\n // md: forge.md.sha1.create()\n // }\n // });\n // const encryptedBase64 = forge.util.encode64(encrypted);\n // // Create Token\n // const myHeaders = {\n // \"Content-Type\": \"application/json\",\n // \"x-app-session-key\": sesionResult.data?.data?.session_key\n // }\n\n // const raw = JSON.stringify({\n // \"enc_track2_data\": `${encryptedBase64}`,\n // \"algorithm\": \"RSAES_OAEP_SHA_1\",\n // session_key: `${sesionResult?.data?.data?.session_key}`\n // });\n\n try {\n console.log(sesionResult, \"sesionResult\");\n // const tokenizeData = await axios.post(`${fractalGatewayUrl}tokenizer/tokenize`, raw, { headers: myHeaders })\n const tokenizeData = await tokenizerRef.current.createToken({\n public_key_pem: sesionResult?.data?.data?.publicKeyPem || sesionResult?.data?.data?.public_key_pem,\n session_key: sesionResult?.data?.data?.session_key\n });\n console.log(tokenizeData, \"tokenizeData\");\n const reqData = JSON.stringify({\n ...tokenizeData,\n isSaveCardChecked: saveCardInfo,\n name: cardData?.cardName,\n postal_code: cardData?.zipCode,\n customer_id: props?.customerId\n })\n\n const reqData2 = JSON.stringify({\n \"pre_sales_id\": `${result?.data?.data?.posSalesIdEncode}`,\n \"token\": `${tokenizeData?.token}`,\n \"json_response\": `${reqData}`\n })\n let myHeaders2 = JSON.stringify({\n \"Content-Type\": \"application/json\"\n })\n const requestOptions = {\n method: \"POST\",\n headers: myHeaders2,\n body: reqData2,\n redirect: \"follow\",\n isChargeviafractal: true,\n };\n\n socket.emit(\"sendMessage\", requestOptions)\n socket.on('chargeviafractalgateway', (data: any) => {\n if (isValidJson(data?.data)) {\n let paymentRes = JSON.parse(data?.data)\n if (paymentRes?.result) {\n setTranId(paymentRes?.data?.transactionId)\n setSuccess(true)\n // hideLoader()\n setLoading2(false)\n } else {\n setLoading2(false)\n setError(paymentRes?.message || \"Something went wrong.\")\n }\n } else {\n setError(\"Something went wrong.\")\n }\n })\n\n\n // try {\n // let paymentRes = await axios.post(`${masterBaseUrl}api/v1/payment-gateway/charge`, requestOptions,\n // {\n // headers: myHeaders2\n // }\n // )\n // if (paymentRes?.data?.result) {\n // setTranId(paymentRes?.data?.data?.transactionId)\n // setSuccess(true)\n // // hideLoader()\n // setLoading2(false)\n\n // }\n\n // } catch (err: any) {\n // // hideLoader()\n // setLoading2(false)\n\n // setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n // }\n } catch (err: any) {\n // hideLoader()\n setLoading2(false)\n\n setErrorIframe(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n }\n\n } catch (err: any) {\n // hideLoader()\n setLoading2(false)\n setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n }\n } else {\n try {\n const result = await (window as any).requestDcToken();;\n console.log(\"Token:\", result.Token);\n if(result.Token){\n tokenCallback(result);\n }\n } catch (err : any) {\n console.log(err,\"Error while tokenizing\");\n setErrorIframe(err);\n setLoading2(false);\n }\n\n // if (typeof DatacapWebToken !== 'undefined') {\n\n // DatacapWebToken.requestToken(result?.data.data.dctoken, \"PaymentForm\", tokenCallback);\n // }\n }\n } catch (err: any) {\n // hideLoader()\n setLoading2(false)\n\n setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n }\n }\n }\n } else {\n const hasError = validateAchData()\n if (hasError) return\n else {\n setLoading2(true)\n let dataForm = {\n fractalpayPublicKey: fractalpayClientKey,\n label: achData?.name || \"John Doe\",\n account_number: achData?.accountNumber,\n routing_number: achData?.routingNumber,\n bank_name: achData?.bankName,\n account_type: achData?.accountType,\n amount: String(cashDiscount || 0),\n isSaveAch: saveACHinfo,\n customer_id: props?.customerId,\n order_id: props?.orderID,\n tax: props?.tax,\n discount: props?.discount,\n surcharge: props?.surcharge,\n isChargeACH: true,\n company_name: achData?.companyName || \"\",\n ...(props?.sessionToken && { sessionToken: props.sessionToken })\n }\n // showLoader()\n socket.emit(\"sendMessage\", dataForm)\n socket.on('ach-incoming', (data: any) => {\n if (data?.status == \"Failed\") {\n if (typeof (data?.message) == \"object\") {\n Object.values(data?.message).forEach((message: any) => {\n setError(message || \"Something went wrong\");\n });\n } else {\n setError(data?.message || \"Something went wrong\")\n }\n } else {\n setTranId(data?.data?.transaction_id)\n setSuccess(true)\n setLoading2(false)\n // Swal.fire({\n // icon: 'success',\n // title: 'Congrats...',\n // text: data?.message,\n // }).then((res) => {\n // if (res.isConfirmed) {\n // // OK button was clicked\n // handleClose()\n // }\n // });\n }\n })\n\n // try {\n // let result = await axios.post(`${baseUrl}ach-incoming`, dataForm)\n // // hideLoader()\n // setLoading2(false)\n\n // Swal.fire({\n // icon: 'success',\n // title: 'Congrats...',\n // text: result?.data?.message,\n // }).then((res) => {\n // if (res.isConfirmed) {\n // // OK button was clicked\n // handleClose()\n // }\n // });\n // } catch (error) {\n // if (axios.isAxiosError(error)) {\n // // hideLoader()\n // setLoading2(false)\n\n // setError(error.response?.data?.message?.error ?? error.response?.data?.message?.amount ?? \"Something went wrong\")\n // }\n // else {\n // console.error('Unexpected error', error);\n // }\n // }\n }\n }\n\n }\n\n\n const getPaymentDetails = async () => {\n showLoader()\n try {\n const data = {\n fractalpayPublicKey: fractalpayClientKey,\n \"customer_id\": props?.customerId,\n pass_fee: props?.pass_fee,\n isReader: props?.isReader\n }\n let paymentData = await axios.post(`${baseUrl}get-payment-details`, data)\n setPaymentData(paymentData?.data?.data)\n if (!paymentData?.data?.data?.paymentGateway) {\n handleClose()\n setError(\"Something went wrong.\")\n }\n if (paymentData?.data?.data?.card_list && paymentData?.data?.data?.card_list?.length > 0) {\n // setActive('cardList')\n let banklists = paymentData?.data?.data?.card_list?.filter((card: any) => card?.card_type == 'Bank')\n let cardlists = paymentData?.data?.data?.card_list?.filter((card: any) => card?.card_type !== 'Bank')\n // console.log(banklists, \"hohgohoo\", cardlists);\n if (cardlists?.length > 0) {\n setActiveinCard('list')\n }\n if (banklists?.length > 0) {\n setActiveinBank('list')\n }\n setCardList(cardlists)\n setBankList(banklists)\n // let primary_card = paymentData?.data?.data?.card_list?.filter((card: any) => card?.primary_card == 1)\n // if (primary_card?.[0] && primary_card?.[0]?.payment_method_type == paymentData?.data?.data?.paymentGateway) {\n // setSelectedCard(primary_card[0])\n // } else if (primary_card?.[0]?.card_type === \"Bank\") {\n // setSelectedCard(primary_card[0])\n // }\n } else {\n setActive('card')\n }\n\n if (paymentData?.data?.data?.paymentDeviceList && paymentData?.data?.data?.paymentDeviceList?.length > 0) {\n setSelectedReader(paymentData?.data?.data?.paymentDeviceList[0])\n }\n\n hideLoader()\n } catch (err: any) {\n console.log(err);\n hideLoader()\n setError(err?.response?.data?.message || err?.message || \"Something went wrong\")\n }\n }\n\n const handlechargeCustomer = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.currentTarget.blur();\n if (loading2) return;\n let customer_id = props?.customerId\n let discount = String(props?.discount)\n let surcharge = String(props?.surcharge)\n let tax = String(props?.tax)\n let fractalpayPublicKey = props?.merchantPublicKey\n let order_id = props?.orderID\n let amount = String(props?.amount)\n let card_id = selectedCard?.id\n let card_type = selectedCard?.card_type\n if (fractalpayPublicKey && order_id && amount && cashDiscount) {\n if (customer_id) {\n if (card_id) {\n let chargeobj = {\n amount: card_type === \"Bank\" ? `${cashDiscount}` : amount,\n order_id,\n customer_id,\n card_id,\n fractalpayPublicKey,\n isCardSave: saveCardInfo,\n discount,\n surcharge,\n tax,\n pass_fee: props?.pass_fee,\n require3ds: false,\n ...(props?.sessionToken && { sessionToken: props.sessionToken })\n }\n let { isCardSave, pass_fee, require3ds, ...rest } = chargeobj\n\n\n let endpoint = card_type === \"Bank\" ? \"charge-ach\" : \"charge-by-card\"\n\n let chargeurl = baseUrl + endpoint\n const headers = {\n 'Content-Type': 'application/json'\n }\n // showLoader()\n setLoading2(true)\n socket.emit(\"sendMessage\", { url: chargeurl, body: card_type == 'Bank' ? rest : chargeobj, isChargebycard: true })\n socket.on('charge-by-card', (response: any) => {\n if (response?.result == true || response?.status == true) {\n setTranId(response.data?.transaction_id)\n setSuccess(true)\n // hideLoader()\n setLoading2(false)\n } else {\n setError(response?.message || \"Something went wrong.\")\n }\n })\n // try {\n // let result = await axios.post(chargeurl, card_type == 'Bank' ? rest : chargeobj, { headers })\n // if (result?.data?.result) {\n // setTranId(result?.data?.data?.transaction_id)\n // setSuccess(true)\n // // hideLoader()\n // setLoading2(false)\n\n // }\n // // hideLoader()\n\n // } catch (err: any) {\n // // hideLoader()\n // setLoading2(false)\n\n // setError(err?.response?.data?.message || err?.response?.data?.status || \"Something went erong\")\n\n // }\n\n } else {\n setError(\"Please Select A Card/ACH\")\n // swal(\"Please Select A Card/ACH\", '', \"error\");\n }\n } else {\n // swal(\"Please Select Customer\", '', \"error\");\n setError(\"Please Select Customer\")\n }\n } else {\n // swal(\"Something went wrong\", 'Please try again later !!!', \"error\");\n setError(\"Something went wrong.\")\n }\n }\n\n const handleChargewithEMV = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.currentTarget.blur();\n if (loading2) return;\n let fractalpayPublicKey = props?.merchantPublicKey\n let customer_order_id = props?.orderID\n let amount = String(props?.amount)\n let customer_id = props?.customerId\n\n if (!selectedReader?.device_id) {\n setError(\"Please Select A Payment Device\")\n return\n }\n\n if (fractalpayPublicKey && customer_order_id && amount) {\n setLoading2(true)\n let obj = {\n amount,\n fractalpayPublicKey,\n customer_order_id,\n device_id: selectedReader?.device_id,\n customer_id: customer_id || \"\"\n }\n\n try {\n let response = await axios.post(`${baseUrl}charge-with-reader`, obj)\n\n\n if (response?.data?.result == true) {\n setTranId(response?.data?.data?.transaction_id)\n setSuccess(true)\n setLoading2(false)\n } else {\n setError(response?.data?.message || \"Something went wrong.\")\n setLoading2(false)\n }\n\n } catch (error: any) {\n setError(error?.response?.data?.message || \"Something went wrong.\")\n setLoading2(false)\n }\n } else {\n setError(\"Something went wrong.\")\n }\n }\n\n const handlepayment = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (activeList === 'card') {\n handlechargeCustomer(e)\n } else if (activeList === 'reader') {\n handleChargewithEMV(e)\n }\n }\n\n\n useEffect(() => {\n if (show && fractalpayClientKey) {\n\n getPaymentDetails()\n }\n }, [fractalpayClientKey, show])\n\n const handleDeleteCard = async (cardId: any) => {\n Swal.fire({\n icon: 'warning',\n text: 'Do you want to delete the card?',\n showCancelButton: true,\n confirmButtonText: 'Yes',\n cancelButtonText: 'No',\n reverseButtons: true,\n buttonsStyling: false,\n customClass: {\n confirmButton: 'swal2-confirm btn btn-dark',\n cancelButton: 'swal2-cancel btn btn-dark',\n popup: 'custom-swal-popup',\n icon: 'custom-swal-icon'\n }\n }).then(async (result) => {\n if (result.isConfirmed) {\n // 👇 Yahan aap apna API call karo\n // showLoader()\n setLoading2(true)\n try {\n let obj = {\n card_id: cardId,\n customer_id: props?.customerId,\n fractalpayPublicKey: props?.merchantPublicKey\n }\n\n const res = await axios.post(`${baseUrl}delete-customer-card`, obj)\n // hideLoader()\n setLoading2(false)\n\n getPaymentDetails()\n Swal.fire({\n icon: 'success',\n title: 'Deleted!',\n text: 'Card deleted.',\n confirmButtonText: 'OK',\n showConfirmButton: true,\n timer: 1000, // auto-close after 1 second\n timerProgressBar: true,\n customClass: {\n confirmButton: 'btn btn-dark'\n }\n })\n\n } catch (err) {\n // hideLoader()\n setLoading2(false)\n Swal.fire({\n icon: 'error',\n title: 'Error!',\n text: 'Failed to delete the card.',\n confirmButtonText: 'OK',\n customClass: {\n confirmButton: 'btn btn-dark'\n }\n });\n }\n\n\n } else if (result.dismiss === Swal.DismissReason.cancel) {\n // 👇 Show new popup on \"No\"\n Swal.fire({\n icon: 'info',\n text: 'Card not deleted',\n confirmButtonText: 'OK',\n buttonsStyling: false,\n customClass: {\n confirmButton: 'btn btn-dark float-end',\n actions: 'swal2-actions-end'\n }\n });\n\n }\n });\n };\n\n const getCardType = (card: string) => {\n let card_type = card?.toLowerCase();\n\n switch (card_type) {\n case 'visa':\n return visa;\n case 'mastercard':\n case 'mc':\n case 'm/c':\n return mastercard;\n case 'amex':\n case 'american express':\n case 'ae':\n return americanexp;\n case 'discover':\n case 'dcvr':\n return discover;\n case 'bank':\n return bank;\n default:\n return card;\n }\n };\n\n const getCashDiscount = () => {\n let cashDiscountNew = cashDiscount || 0\n let diff = Number(props.amount) - cashDiscountNew\n return diff.toFixed(0)\n }\n\n useEffect(() => {\n if (typeof FractalTokenizer === 'undefined') return;\n\n const tokenizer = new FractalTokenizer({\n styles: {},\n });\n\n\n }, []);\n\n // console.log(activeinCard, \"activeinCard\", \"activeinBank\", activeinBank, \"activeList\", activeList);\n\n return (\n <>\n <DataScript />\n <FractalTokenizerScript />\n <DataCapScriptLoader />\n <Chargewidgetstyles />\n <CardBankRadioStyles />\n <>\n <button className=\"paymentBtn\" onClick={handleShow}\n >\n Pay\n </button>\n\n <CustomModal2\n open={show}\n onClose={handleClose}\n >\n {\n error && <div style={{ maxHeight: '606px', minHeight: '60vh', padding: '40px' }}>\n <ErrorCardMessage error={error} onClose={handleClose} />\n </div>\n }\n {\n errorIframe && <div style={{ maxHeight: '606px', minHeight: '60vh', padding: '40px' }}>\n <ErrorCardMessage error={errorIframe} onClose={() => { setErrorIframe(\"\") }} />\n </div>\n }\n {success && <SuccessMsz onClose={handleClose} tranId={tranId} />}\n {!error && !errorIframe && !success &&\n <>\n {(loading || loading2 || loadingIframe) && <Loader loading={loading || loading2 || loadingIframe} />}\n <div className='frac-card-payment-page frac-form'>\n <div className='parent-pay-container'>\n <span className=\"request-payment-close-popup\" onClick={handleClose}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <g clipPath=\"url(#clip0_12425_52336)\">\n <path d=\"M9.46585 8.01168L15.6959 1.7814C16.1014 1.37615 16.1014 0.720912 15.6959 0.315659C15.2907 -0.0895946 14.6354 -0.0895946 14.2302 0.315659L7.99991 6.54593L1.76983 0.315659C1.36438 -0.0895946 0.709336 -0.0895946 0.304082 0.315659C-0.101361 0.720912 -0.101361 1.37615 0.304082 1.7814L6.53416 8.01168L0.304082 14.2419C-0.101361 14.6472 -0.101361 15.3024 0.304082 15.7077C0.506045 15.9098 0.771595 16.0114 1.03695 16.0114C1.30232 16.0114 1.56768 15.9098 1.76983 15.7077L7.99991 9.47742L14.2302 15.7077C14.4323 15.9098 14.6977 16.0114 14.9631 16.0114C15.2284 16.0114 15.4938 15.9098 15.6959 15.7077C16.1014 15.3024 16.1014 14.6472 15.6959 14.2419L9.46585 8.01168Z\" fill=\"#727272\" />\n </g>\n <defs>\n <clipPath id=\"clip0_12425_52336\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n\n <div className='pay-main-logo-res'>\n <img src={paymentData?.logo} id='pay-logos' /></div>\n <div className=\"pay-container\" >\n <div className=\"pay-header pay-conatiner-one frac-pay-conatiner-one\" >\n\n <div className=\"pay-conatiner-one-first\">\n\n <div className=\"pay-logo-container\" >\n <div className='pay-main-logo'>\n <img src={paymentData?.logo} id='pay-logos' /></div>\n {/* <h1 className='pay-heading' >Pay</h1> */}\n\n {cardList?.length > 0 && activetab !== \"cardList\" &&\n <button className='res-charge-payment-back-btn ' onClick={() => setActive('cardList')}> <IoArrowBack /> Back</button>\n }\n </div>\n <div className='amt-pay-con'>\n\n <div className='pay-amount-conatiner' >\n <small className='pay-payment-amount' >Select paymet type</small>\n {/* <strong className='pay-amount'>${Number(props?.amount)?.toFixed(2)}</strong>\n {cashDiscount && cashDiscount > 0 && <div style={{ width: '80%' }} className='frac-cash-discount' >\n <div className='frac-cashlabel' >Cash Discount</div>\n <div>${cashDiscount.toFixed(2)}</div>\n </div>} */}\n </div>\n {/* {\n activetab != \"ach\" &&\n <div style={{ display: 'flex', gap: '8px', margin: '8px 0' }}>\n <img src={visa} alt=\"\" width={33} />\n <img src={mastercard} width={33} alt=\"\" />\n <img src={americanexp} alt=\"\" width={33} />\n <img src={discover} width={33} alt=\"\" />\n </div>\n } */}\n <div className='frac-card-bank-radio-main' >\n <CardBankRadio label='Card' amount={Number(props?.amount)?.toFixed(2)} value='card' onChange={handletabchange} activetab={activetab} />\n {\n paymentData?.isSkyFiAccount &&\n <CardBankRadio label='Bank' amount={Number(cashDiscount)?.toFixed(2)} value='ach' onChange={handletabchange} activetab={activetab} />\n }\n {\n props?.isReader && paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 && (\n <CardBankRadio label='Reader' amount={Number(props?.amount)?.toFixed(2)} value='reader' onChange={handletabchange} activetab={activetab} />\n )\n }\n </div>\n {\n !loading && (numberToBoolean(paymentData?.showSurcharge) ? (\n ((cashDiscount && cashDiscount > 0 && props?.pass_fee)) ? (\n <div className=\"frac-cash-discount-fee\">\n <small>{(activetab === 'card' || activetab === 'reader') ? 'Cash Discount' : 'Cash Discount Savings'} </small>\n <p>{formatUSD((Number(props.amount) - cashDiscount).toFixed(2))}</p>\n </div>\n ) : null\n ) : ((cashDiscount && cashDiscount > 0 && props?.pass_fee && ((activetab === 'card' || activetab === 'reader'))) ? (\n <div className=\"frac-cash-discount-fee\">\n <small>{(activetab === 'card' || activetab === 'reader') ? 'Surcharge' : null} </small>\n <p>{formatUSD((Number(props.amount) - cashDiscount).toFixed(2))}</p>\n </div>\n ) : null))\n }\n </div>\n </div>\n <div className='pay-conatiner-one-last'>\n <img src={secure} alt=\"\" />\n <img src={pov} alt=\"\" />\n Secure payments powered by Fractal\n </div>\n\n </div>\n <div className=\"pay-tab pay-conatiner-two\">\n {!loading &&\n <div className=\"col-md-12\">\n <div id='payment-form-div' >\n {\n activetab !== \"cardList\" ?\n <div className='frac-charge-payment-back-btn-wrap '>\n {cardList?.length > 0 &&\n <button className='charge-payment-back-btn ' onClick={() => setActive('cardList')}> <IoArrowBack /> Back</button>\n }\n {paymentData?.isSkyFiAccount &&\n <div className=\"tab\">\n <button className=\"tablinks\" onClick={(e) => { handletabchange('card') }} style={{ border: activetab === 'card' ? '1px solid' : '' }} ><i className=\"fas fa-credit-card me-2\" style={{ marginRight: '8px', fontSize: '15px' }}></i>Card</button>\n\n <button className=\"tablinks\" onClick={(e) => { handletabchange('ach') }} style={{ border: activetab === 'ach' ? '1px solid' : '' }} ><i className=\"fas fa-university me-2\" style={{ marginRight: '8px', fontSize: '15px' }}></i>Bank</button>\n </div>\n }\n\n <div className='res-pay-con'>\n\n <div className='pay-amount-conatiner' style={{ margin: 0 }} >\n <small className='pay-payment-amount' >Payment Amount</small>\n <strong className='pay-amount'>${Number(props?.amount)?.toFixed(2)}</strong>\n </div>\n {\n activetab != \"ach\" &&\n <div >\n <div >\n\n <img src={visa} alt=\"\" width={35} style={{ paddingRight: '5px' }} />\n <img src={mastercard} width={35} alt=\"\" />\n </div>\n <div>\n\n <img src={americanexp} alt=\"\" width={35} style={{ paddingRight: '5px' }} />\n <img src={discover} width={35} alt=\"\" />\n </div>\n </div>\n }\n </div>\n {/* {\n cashDiscount && cashDiscount > 0 && <div className='res-pay-con frac-cash-discount' >\n <div className='frac-cashlabel' >Cash Discount</div>\n <div>${cashDiscount}</div>\n </div>\n } */}\n </div>\n :\n <div>\n <h6 className='charge-customer-name' style={{ marginBottom: '16px !important' }}> Charge {paymentData?.customer_name}</h6>\n <h6 className='card-ach-heading' style={{ marginBottom: '10px !important' }}> {activeList === 'card' ? 'Cards/Banks' : 'Readers'} </h6>\n <div className='res-pay-con'>\n\n <div className='pay-amount-conatiner' style={{ margin: 0 }} >\n <small className='pay-payment-amount' >Payment Amount</small>\n <strong className='pay-amount'>${Number(props?.amount)?.toFixed(2)}</strong>\n </div>\n\n\n <div >\n <div >\n\n <img src={visa} alt=\"\" width={35} style={{ paddingRight: '5px' }} />\n <img src={mastercard} width={35} alt=\"\" />\n </div>\n <div>\n\n <img src={americanexp} alt=\"\" width={35} style={{ paddingRight: '5px' }} />\n <img src={discover} width={35} alt=\"\" />\n </div>\n </div>\n\n </div>\n </div>\n }\n\n {/* active tab home card list */}\n {/* <div id=\"ach\" style={{ display: activetab === 'cardList' ? 'block' : 'none' }} className=\"tabcontent\">\n\n <CardList listHeading='Banks' paymentGateway={paymentData?.paymentGateway} ListItems={bankList} selectedCard={selectedCard} setSelectedCard={setSelectedCard} handleDeleteCard={handleDeleteCard} />\n\n <div className='card-lint-div-in'>\n <div className='card-list-div'>\n\n {\n activeList === 'card' ? (\n <>\n {\n paymentData?.card_list && paymentData?.card_list?.length > 0 &&\n paymentData?.card_list?.map((card: any, index) => (\n <div className='card-list-single-div' key={index}>\n <div className=\"card-number-radio\">\n <input disabled={paymentData?.paymentGateway != card?.payment_method_type && card?.card_type != \"Bank\"} type=\"radio\" className='cardRadio' name=\"selected_card\" id=\"\" checked={selectedCard === card}\n onChange={(e) => setSelectedCard(card)} />\n <label htmlFor=\"\" className='card-number-last-four'>**** {card?.cardlastfourdigit}</label>\n {\n card?.card_type != \"Bank\" && (<h6 className='card-expiry-date'>{card?.expmonth}/{card?.expyear}</h6>)\n }\n </div>\n <div className=\"card-number-radio\">\n <span className='visa-card'>\n <img src={getCardType(card?.card_type)} alt=\"\" />\n </span>\n <span className='visa-card' style={{ cursor: \"pointer\" }} onClick={() => handleDeleteCard(card?.id)}>\n <img src={trash} alt=\"\" />\n </span>\n </div>\n </div>\n ))\n }\n </>\n ) : (\n <>\n {\n paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 &&\n paymentData?.paymentDeviceList?.map((reader: any, index) => (\n <div className='card-list-single-div' key={index}>\n <div className=\"card-number-radio\">\n <input type=\"radio\" className='cardRadio' name=\"selected_reader\" id=\"\" checked={selectedReader === reader}\n onChange={(e) => setSelectedReader(reader)} />\n <label htmlFor=\"\" className='card-number-last-four'>{reader?.device_name}</label>\n </div>\n <div className=\"card-number-radio\">\n <span className='visa-card'>\n <img src={pax} alt=\"\" />\n </span>\n </div>\n </div>\n ))\n }\n </>\n )\n\n }\n\n </div>\n <div className='pay-with-other-card' onClick={() => setActive('card')}>\n Pay With Other Card\n <img src={defaultcard} alt=\"\" />\n </div>\n {activeList === 'card' && paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 && (\n <div className='pay-with-other-card ' onClick={() => setActiveList('reader')}>\n Pay With Reader\n <img src={pax} alt=\"\" />\n </div>\n )\n }\n {activeList === 'reader' && paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 && (\n <div className='pay-with-other-card ' onClick={() => setActiveList('card')}>\n Pay With Saved Card\n <img src={defaultcard} alt=\"\" />\n </div>\n )\n }\n </div>\n\n\n <div className=\"form-group\" style={{ padding: '0' }} >\n <button className='pay-button' style={{ margin: '0px' }} type='submit' onClick={handlepayment}>${Number(props?.amount)?.toFixed(2)}</button>\n </div>\n\n </div> */}\n {/* active tab card */}\n <div id=\"card\" style={{ display: activetab === 'card' ? 'block' : 'none' }} className=\"tabcontent\">\n <div className=\"frac-card-payment\">\n <div className=\"frac-heading-card-wrap\">\n <div className='frac-backarrow'>\n {cardList?.length > 0 && activeinCard === 'form' &&\n <button className='charge-payment-back-btn ' onClick={() => setActiveinCard('list')}> <IoArrowBack /></button>\n }\n {/* {paymentData?.isSkyFiAccount &&\n <div className=\"tab frac-tab-2\">\n <button className=\"tablinks\" onClick={(e) => { handletabchange('card') }} style={{ border: activetab === 'card' ? '1px solid' : '' }} ><i className=\"fas fa-credit-card me-2\" style={{ marginRight: '8px', fontSize: '15px' }}></i>Card</button>\n\n <button className=\"tablinks\" onClick={(e) => { handletabchange('ach') }} style={{ border: activetab === 'ach' ? '1px solid' : '' }} ><i className=\"fas fa-university me-2\" style={{ marginRight: '8px', fontSize: '15px' }}></i>Bank</button>\n </div>\n } */}\n\n\n {/* {\n cashDiscount && cashDiscount > 0 && <div className='res-pay-con frac-cash-discount' >\n <div className='frac-cashlabel' >Cash Discount</div>\n <div>${cashDiscount}</div>\n </div>\n } */}\n </div>\n <h6 className='frac-card-payment-heading'>Card Payment</h6>\n </div>\n {\n activetab != \"ach\" &&\n (<div style={{ display: 'flex', gap: '8px', margin: '8px 0px 19px 0px' }}>\n <img src={visa} alt=\"\" width={33} />\n <img src={mastercard} width={33} alt=\"\" />\n <img src={americanexp} alt=\"\" width={33} />\n <img src={discover} width={33} alt=\"\" />\n </div>)\n }\n </div>\n\n {\n activeinCard === 'list' ?\n (\n <>\n <CardList listHeading='Cards' paymentGateway={paymentData?.paymentGateway} ListItems={cardList} selectedCard={selectedCard} setSelectedCard={setSelectedCard} handleDeleteCard={handleDeleteCard} otherButtonLabel='Pay With Other Card' otherButtonAction={() => { setActiveinCard('form') }} />\n {/* <div className='pay-with-other-card' onClick={() => setActiveinCard('form')}>\n Pay With Other Card\n <img src={defaultcard} alt=\"\" />\n </div> */}\n <div className=\"form-group\" style={{ padding: '0' }} >\n <button className='pay-button' style={{ margin: '0px' }} type='submit' disabled={loading2} onClick={handlepayment}>{formatUSD(Number(props?.amount)?.toFixed(2))}</button>\n </div>\n </>\n ) : (\n\n paymentData?.paymentGateway === 32 ? (\n <form\n id=\"paymentForm\"\n onSubmit={submitFunc}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && loading2) {\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n >\n <div\n className=\"ach-scrl\"\n style={{\n minHeight:\n paymentData?.isSkyFiAccount && cardList?.length > 0\n ? \"444px\"\n : paymentData?.isSkyFiAccount && cardList?.length == 0\n ? \"456px\"\n : cardList?.length > 0\n ? \"462px\"\n : \"520px\",\n overflow: \"auto\",\n marginRight: \"5px\",\n }}\n >\n {/* NAME ON CARD (Normal Input) */}\n <div className=\"form-group\">\n <label>NAME ON CARD</label>\n <input\n type=\"text\"\n className=\"form-control\"\n maxLength={100}\n placeholder=\"John Doe\"\n value={cardData?.cardName || \"\"}\n onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange(\"cardName\", value);\n }\n }}\n />\n {cardError?.cardName && (\n <span className=\"error-span\">{cardError?.cardName}</span>\n )}\n </div>\n\n {/* CARD NUMBER (Fractal Secure Field) */}\n <div className=\"form-group\">\n <label>CARD NUMBER</label>\n\n <div className=\"toggle-num-wrapper\">\n {show && paymentData?.paymentGateway === 32 && (\n <FractalFields\n fractalStyles={fractalStyles}\n tokenizerRef={tokenizerRef}\n />\n )}\n </div>\n </div>\n\n {/* ORDER ID */}\n <div className=\"form-group\">\n <label>Order ID / Description</label>\n <input\n type=\"text\"\n className=\"form-control\"\n maxLength={100}\n placeholder=\"OID123456\"\n disabled\n value={props?.orderID ?? \"\"}\n style={{ background: \"#F6F6F7\", color: \"#727272\" }}\n />\n </div>\n\n {/* ZIP (Normal Input) */}\n <div className=\"form-group\">\n <label>ZIP</label>\n <input\n type=\"text\"\n className=\"form-control\"\n maxLength={100}\n placeholder=\"000000\"\n value={cardData?.zipCode ?? \"\"}\n onChange={(e) =>\n handleCardChange(\"zipCode\", e.target.value)\n }\n />\n {cardError?.zipCode && (\n <span className=\"error-span\">{cardError?.zipCode}</span>\n )}\n </div>\n\n {/* SAVE CARD */}\n {props?.customerId && (\n <div className=\"form-group\">\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"10px\",\n paddingTop: \"10px\",\n }}\n >\n <input\n type=\"checkbox\"\n id=\"save_card\"\n className=\"toggle-checkbox\"\n checked={saveCardInfo}\n onChange={(e) => setSaveCardInfo(e.target.checked)}\n />\n <label htmlFor=\"save_card\" className=\"toggle-label\"></label>\n <label htmlFor=\"save_card\">\n Save card for future payments\n </label>\n </div>\n </div>\n )}\n </div>\n\n <div className=\"form-group\" style={{ marginTop: \"20px\", padding: \"0\" }}>\n <button\n type=\"submit\"\n style={{ margin: 0 }}\n className=\"pay-button\"\n disabled={loading2}\n >\n {formatUSD(Number(props?.amount)?.toFixed(2))}\n </button>\n </div>\n </form>\n ) : (\n <form id='PaymentForm' style={{ textAlign: 'start' }} onSubmit={submitFunc} onKeyDown={(e) => {\n if (e.key === \"Enter\" && loading2) {\n e.preventDefault();\n e.stopPropagation();\n }\n }}>\n {/* <div style={{minHeight: '482px'}}> */}\n <div className='ach-scrl' style={{ minHeight: paymentData?.isSkyFiAccount && cardList?.length > 0 ? \"444px\" : paymentData?.isSkyFiAccount && cardList?.length == 0 ? \"456px\" : cardList?.length > 0 ? '462px' : '520px', overflow: 'auto', marginRight: '5px' }}>\n\n <div className=\"form-group\">\n <label htmlFor=\"cardHolderName\">NAME ON CARD </label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"John Doe\" value={cardData?.cardName || \"\"} onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange('cardName', value);\n }\n }} />\n {cardError?.cardName && <span className='error-span'>{cardError?.cardName}</span>}\n </div>\n\n <div className=\"form-group\">\n <DataCapFields\n isOpen={show}\n tokenKey={paymentData?.dctoken}\n setLoader={setLoadingIframe}\n />\n {/* <label htmlFor=\"cardNumber\">CARD NUMBER</label>\n <div className='toggle-num-wrapper'>\n <input className='form-control card-number-new' type='text' maxLength={19} inputMode=\"numeric\" placeholder='0000 0000 0000 0000' value={cardData?.cardNumber || \"\"} onChange={(e) => handleCardNumberChange(e)}\n data-token=\"card_number\"\n />\n\n <div className='card-crdi card-expiry-new'>\n <div className=\"exp-date-year-container\">\n <div className=\"exp-date form-group\">\n <input data-token=\"exp_month\" className=\"form-control required card-cvv-in\" type=\"text\"\n style={{ maxHeight: '36px' }}\n placeholder=\"MM\" maxLength={2} value={cardData?.expiryMonth || \"\"}\n onChange={(e) => handleCardChange('expiryMonth', e.target.value)} />\n </div>\n <div className=\"exp-year form-group\">\n <input data-token=\"exp_year\" className=\"form-control required card-cvv-in\" type=\"text\"\n style={{ maxHeight: '36px' }}\n placeholder=\"YYYY\" maxLength={4} value={cardData?.expiryYear || \"\"} onChange={(e) => handleCardChange('expiryYear', e.target.value)} />\n </div>\n <div className=\"security-digit form-group\">\n <input data-token=\"cvv\" className=\"form-control card-cvv-in required\" type=\"text\"\n style={{ maxHeight: '36px' }}\n maxLength={4} placeholder=\"CVC\" value={cardData?.cvv || \"\"} onChange={(e) => handleCardChange('cvv', e.target.value)}\n />\n </div>\n </div>\n </div>\n {cardError?.cardNumber &&\n <span className='error-span'>{cardError?.cardNumber}</span>\n }\n <p style={{ margin: '0' }}>\n {cardError?.expiryMonth || cardError?.expiryYear ?\n <span className='error-span' style={{ paddingRight: '4px' }}>{cardError?.expiryMonth}</span>\n : \"\"\n }\n {cardError?.cvv &&\n <span className='error-span' >{cardError?.cvv}</span>\n\n }\n </p>\n\n </div> */}\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"OrderId\">Order ID / Description</label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"OID123456\" disabled value={props?.orderID ?? \"\"}\n style={{ background: '#F6F6F7', color: '#727272' }} />\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"zip\">ZIP</label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"000000\" value={cardData?.zipCode ?? \"\"} onChange={(e) => handleCardChange('zipCode', e.target.value)} />\n {cardError?.zipCode && <span className='error-span'>{cardError?.zipCode}</span>}\n </div>\n\n {\n props?.customerId &&\n <div className='form-group'>\n\n <div style={{ display: 'flex', alignItems: 'center', gap: '10px', paddingTop: '10px' }}>\n\n <input\n type=\"checkbox\"\n id=\"save_card\"\n className=\"toggle-checkbox\"\n checked={saveCardInfo}\n onChange={(e) => setSaveCardInfo(e.target.checked)}\n />\n <label htmlFor=\"save_card\" className=\"toggle-label\"></label>\n <label htmlFor='save_card'>Save card for future payments </label>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <g clipPath=\"url(#clip0_12420_50192)\">\n <rect width=\"20\" height=\"20\" fill=\"white\"></rect>\n <circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"#E0DFE2\"></circle>\n <path d=\"M9.03406 12.0979V12.0072C9.04055 11.4153 9.10057 10.9443 9.21411 10.5943C9.3309 10.2442 9.49635 9.96102 9.71046 9.74463C9.92457 9.52824 10.1825 9.33095 10.4842 9.15274C10.6788 9.03182 10.854 8.89658 11.0097 8.74702C11.1655 8.59745 11.2887 8.42562 11.3796 8.2315C11.4704 8.03739 11.5158 7.82259 11.5158 7.58711C11.5158 7.3039 11.4477 7.05887 11.3114 6.85203C11.1752 6.64519 10.9935 6.48608 10.7664 6.3747C10.5426 6.26014 10.2928 6.20286 10.017 6.20286C9.76723 6.20286 9.52879 6.25378 9.3017 6.35561C9.07461 6.45744 8.88646 6.61655 8.73723 6.83294C8.588 7.04614 8.50203 7.3214 8.47932 7.65871H7C7.02271 7.08592 7.17032 6.60223 7.44282 6.20764C7.71533 5.80986 8.07543 5.50915 8.52311 5.30549C8.97405 5.10183 9.47202 5 10.017 5C10.6139 5 11.1363 5.10979 11.5839 5.32936C12.0316 5.54574 12.3788 5.84964 12.6253 6.24105C12.8751 6.62928 13 7.08274 13 7.60143C13 7.95784 12.9432 8.27924 12.8297 8.56563C12.7161 8.84885 12.5539 9.10183 12.3431 9.32458C12.1354 9.54733 11.8856 9.74463 11.5937 9.91647C11.3179 10.0851 11.0941 10.2601 10.9221 10.4415C10.7534 10.6229 10.6302 10.8377 10.5523 11.0859C10.4745 11.3341 10.4323 11.6412 10.4258 12.0072V12.0979H9.03406ZM9.76886 15C9.50284 15 9.27413 14.9077 9.08273 14.7232C8.89132 14.5354 8.79562 14.3095 8.79562 14.0453C8.79562 13.7844 8.89132 13.5617 9.08273 13.3771C9.27413 13.1893 9.50284 13.0955 9.76886 13.0955C10.0316 13.0955 10.2587 13.1893 10.4501 13.3771C10.6448 13.5617 10.7421 13.7844 10.7421 14.0453C10.7421 14.2204 10.6967 14.3811 10.6058 14.5274C10.5182 14.6706 10.4015 14.7852 10.2555 14.8711C10.1095 14.957 9.94728 15 9.76886 15Z\" fill=\"#161616\"></path>\n </g>\n <defs>\n <clipPath id=\"clip0_12420_50192\">\n <rect width=\"20\" height=\"20\" fill=\"white\"></rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n\n </div>\n }\n {/* </div> */}\n\n </div>\n\n <div className=\"form-group\" style={{ marginTop: '20px', padding: '0' }}>\n <button type=\"submit\" style={{ margin: 0 }} className='pay-button'>{formatUSD(Number(props?.amount)?.toFixed(2))}</button>\n </div>\n </form>\n )\n )\n }\n\n\n\n {/* <div style={{minHeight: '482px'}}> */}\n {/* </div> */}\n {/* {activeForm ? (\n <form id='PaymentForm' style={{ textAlign: 'start' }} onSubmit={submitFunc}>\n <div className='ach-scrl' style={{ minHeight: paymentData?.isSkyFiAccount && cardList?.length > 0 ? \"398px\" : paymentData?.isSkyFiAccount && cardList?.length == 0 ? \"456px\" : cardList?.length > 0 ? '462px' : '520px', overflow: 'auto', marginRight: '5px' }}>\n\n <div className=\"form-group\">\n <label htmlFor=\"cardHolderName\">NAME ON CARD </label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"John Doe\" value={cardData?.cardName || \"\"} onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange('cardName', value);\n }\n }} />\n {cardError?.cardName && <span className='error-span'>{cardError?.cardName}</span>}\n </div>\n\n <div className=\"form-group\">\n <label htmlFor=\"cardNumber\">CARD NUMBER</label>\n <div className='toggle-num-wrapper'>\n <input className='form-control card-number-new' type='text' maxLength={19} inputMode=\"numeric\" placeholder='0000 0000 0000 0000' value={cardData?.cardNumber || \"\"} onChange={(e) => handleCardNumberChange(e)}\n data-token=\"card_number\"\n />\n\n <div className='card-crdi card-expiry-new'>\n <div className=\"exp-date-year-container\">\n <div className=\"exp-date form-group\">\n <input data-token=\"exp_month\" className=\"form-control required card-cvv-in\" type=\"text\"\n style={{ maxHeight: '36px' }}\n placeholder=\"MM\" maxLength={2} value={cardData?.expiryMonth || \"\"}\n onChange={(e) => handleCardChange('expiryMonth', e.target.value)} />\n </div>\n <div className=\"exp-year form-group\">\n <input data-token=\"exp_year\" className=\"form-control required card-cvv-in\" type=\"text\"\n style={{ maxHeight: '36px' }}\n placeholder=\"YYYY\" maxLength={4} value={cardData?.expiryYear || \"\"} onChange={(e) => handleCardChange('expiryYear', e.target.value)} />\n </div>\n <div className=\"security-digit form-group\">\n <input data-token=\"cvv\" className=\"form-control card-cvv-in required\" type=\"text\"\n style={{ maxHeight: '36px' }}\n maxLength={4} placeholder=\"CVC\" value={cardData?.cvv || \"\"} onChange={(e) => handleCardChange('cvv', e.target.value)}\n />\n </div>\n </div>\n </div>\n {cardError?.cardNumber &&\n <span className='error-span'>{cardError?.cardNumber}</span>\n }\n <p style={{ margin: '0' }}>\n {cardError?.expiryMonth || cardError?.expiryYear ?\n <span className='error-span' style={{ paddingRight: '4px' }}>{cardError?.expiryMonth}</span>\n : \"\"\n }\n {cardError?.cvv &&\n <span className='error-span' >{cardError?.cvv}</span>\n\n }\n </p>\n\n </div>\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"OrderId\">Order ID / Description</label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"OID123456\" disabled value={props?.orderID ?? \"\"}\n style={{ background: '#F6F6F7', color: '#727272' }} />\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"zip\">ZIP</label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"000000\" value={cardData?.zipCode ?? \"\"} onChange={(e) => handleCardChange('zipCode', e.target.value)} />\n {cardError?.zipCode && <span className='error-span'>{cardError?.zipCode}</span>}\n </div>\n\n {\n props?.customerId &&\n <div className='form-group'>\n\n <div style={{ display: 'flex', alignItems: 'center', gap: '10px', paddingTop: '10px' }}>\n\n <input\n type=\"checkbox\"\n id=\"save_card\"\n className=\"toggle-checkbox\"\n checked={saveCardInfo}\n onChange={(e) => setSaveCardInfo(e.target.checked)}\n />\n <label htmlFor=\"save_card\" className=\"toggle-label\"></label>\n <label htmlFor='save_card'>Save card for future payments </label>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <g clipPath=\"url(#clip0_12420_50192)\">\n <rect width=\"20\" height=\"20\" fill=\"white\"></rect>\n <circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"#E0DFE2\"></circle>\n <path d=\"M9.03406 12.0979V12.0072C9.04055 11.4153 9.10057 10.9443 9.21411 10.5943C9.3309 10.2442 9.49635 9.96102 9.71046 9.74463C9.92457 9.52824 10.1825 9.33095 10.4842 9.15274C10.6788 9.03182 10.854 8.89658 11.0097 8.74702C11.1655 8.59745 11.2887 8.42562 11.3796 8.2315C11.4704 8.03739 11.5158 7.82259 11.5158 7.58711C11.5158 7.3039 11.4477 7.05887 11.3114 6.85203C11.1752 6.64519 10.9935 6.48608 10.7664 6.3747C10.5426 6.26014 10.2928 6.20286 10.017 6.20286C9.76723 6.20286 9.52879 6.25378 9.3017 6.35561C9.07461 6.45744 8.88646 6.61655 8.73723 6.83294C8.588 7.04614 8.50203 7.3214 8.47932 7.65871H7C7.02271 7.08592 7.17032 6.60223 7.44282 6.20764C7.71533 5.80986 8.07543 5.50915 8.52311 5.30549C8.97405 5.10183 9.47202 5 10.017 5C10.6139 5 11.1363 5.10979 11.5839 5.32936C12.0316 5.54574 12.3788 5.84964 12.6253 6.24105C12.8751 6.62928 13 7.08274 13 7.60143C13 7.95784 12.9432 8.27924 12.8297 8.56563C12.7161 8.84885 12.5539 9.10183 12.3431 9.32458C12.1354 9.54733 11.8856 9.74463 11.5937 9.91647C11.3179 10.0851 11.0941 10.2601 10.9221 10.4415C10.7534 10.6229 10.6302 10.8377 10.5523 11.0859C10.4745 11.3341 10.4323 11.6412 10.4258 12.0072V12.0979H9.03406ZM9.76886 15C9.50284 15 9.27413 14.9077 9.08273 14.7232C8.89132 14.5354 8.79562 14.3095 8.79562 14.0453C8.79562 13.7844 8.89132 13.5617 9.08273 13.3771C9.27413 13.1893 9.50284 13.0955 9.76886 13.0955C10.0316 13.0955 10.2587 13.1893 10.4501 13.3771C10.6448 13.5617 10.7421 13.7844 10.7421 14.0453C10.7421 14.2204 10.6967 14.3811 10.6058 14.5274C10.5182 14.6706 10.4015 14.7852 10.2555 14.8711C10.1095 14.957 9.94728 15 9.76886 15Z\" fill=\"#161616\"></path>\n </g>\n <defs>\n <clipPath id=\"clip0_12420_50192\">\n <rect width=\"20\" height=\"20\" fill=\"white\"></rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n\n </div>\n }\n \n\n </div>\n\n <div className=\"form-group\" style={{ marginTop: '20px', padding: '0' }}>\n {\n paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 && (\n <button type='button' style={{ marginBottom: '10px' }} className='pay-button' onClick={() => setActiveForm(!activeForm)}>\n {activeForm ? 'Pay With Reader' : 'Pay With Card'}\n </button>\n )\n }\n <button type=\"submit\" style={{ margin: 0 }} className='pay-button'>${Number(props?.amount)?.toFixed(2)}</button>\n </div>\n </form>\n ) : (\n <>\n <h6 className='card-ach-heading' style={{ marginBottom: '10px !important' }}>Readers</h6>\n <div className='card-lint-div-in'>\n <div className='card-list-div'>\n {\n paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 &&\n paymentData?.paymentDeviceList?.map((reader: any, index) => (\n <div className='card-list-single-div' key={index}>\n <div className=\"card-number-radio\">\n <input type=\"radio\" className='cardRadio' name=\"selected_reader\" id=\"\" checked={selectedReader === reader}\n onChange={(e) => setSelectedReader(reader)} />\n <label htmlFor=\"\" className='card-number-last-four'>{reader?.device_name}</label>\n </div>\n <div className=\"card-number-radio\">\n <span className='visa-card'>\n <img src={pax} alt=\"\" />\n </span>\n </div>\n </div>\n ))\n }\n </div>\n </div>\n <div className=\"form-group\" style={{ marginTop: '20px', padding: '0' }}>\n {\n paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 && (\n <button type='button' style={{ marginBottom: '10px' }} className='pay-button' onClick={() => setActiveForm(!activeForm)}>\n {activeForm ? 'Pay With Reader' : 'Pay With Card'}\n </button>\n )\n }\n <button onClick={handleChargewithEMV} className='pay-button'>${Number(props?.amount)?.toFixed(2)}</button>\n </div>\n </>\n )\n } */}\n\n </div>\n {/* active tab ach */}\n <div id=\"ach\" style={{ display: activetab === 'ach' ? 'block' : 'none' }} className=\"tabcontent\">\n <div className=\"frac-card-payment\">\n <div className=\"frac-heading-card-wrap\">\n <div className='frac-backarrow'>\n {bankList?.length > 0 && activeinBank === 'form' &&\n <button className='charge-payment-back-btn ' onClick={() => setActiveinBank('list')}> <IoArrowBack /></button>\n }\n {/* {paymentData?.isSkyFiAccount &&\n <div className=\"tab frac-tab-2\">\n <button className=\"tablinks\" onClick={(e) => { handletabchange('card') }} style={{ border: activetab === 'card' ? '1px solid' : '' }} ><i className=\"fas fa-credit-card me-2\" style={{ marginRight: '8px', fontSize: '15px' }}></i>Card</button>\n\n <button className=\"tablinks\" onClick={(e) => { handletabchange('ach') }} style={{ border: activetab === 'ach' ? '1px solid' : '' }} ><i className=\"fas fa-university me-2\" style={{ marginRight: '8px', fontSize: '15px' }}></i>Bank</button>\n </div>\n } */}\n {/* {\n cashDiscount && cashDiscount > 0 && <div className='res-pay-con frac-cash-discount' >\n <div className='frac-cashlabel' >Cash Discount Savings</div>\n <div>${getCashDiscount()}</div>\n </div>\n } */}\n </div>\n <h6 className='frac-card-payment-heading'>Bank Payment</h6>\n </div>\n </div>\n {\n activeinBank === 'list' ? (\n <>\n <CardList listHeading='Banks' paymentGateway={paymentData?.paymentGateway} ListItems={bankList} selectedCard={selectedCard} setSelectedCard={setSelectedCard} handleDeleteCard={handleDeleteCard} otherButtonLabel='Pay With Other Bank' otherButtonAction={() => { setActiveinBank('form') }} />\n {/* <div className='pay-with-other-card' onClick={() => setActiveinCard('form')}>\n Pay With Other Card\n <img src={defaultcard} alt=\"\" />\n </div> */}\n <div className=\"form-group\" style={{ padding: '0' }} >\n <button className='pay-button' style={{ margin: '0px' }} type='submit' onClick={handlepayment}>{formatUSD(Number(cashDiscount)?.toFixed(2))}</button>\n </div>\n </>\n\n ) : (\n\n <form id='ACHPaymentForm' style={{ textAlign: 'start' }} onSubmit={submitFunc} autoComplete=\"off\" onKeyDown={(e) => {\n if (e.key === \"Enter\" && loading2) {\n e.preventDefault();\n e.stopPropagation();\n }\n }} >\n <div className='ach-scrl' style={{\n minHeight: paymentData?.isSkyFiAccount && cardList?.length > 0 ? \"444px\" : paymentData?.isSkyFiAccount && cardList?.length == 0 ? \"436px\" : cardList?.length > 0 ? '462px' : '520px',\n maxHeight: paymentData?.isSkyFiAccount && cardList?.length > 0 ? \"444px\" : cardList?.length > 0 ? '380px' : '380px',\n }}>\n\n <div className=\"form-group mb-4\">\n <label htmlFor=\"nameonaccount\">Name on account</label>\n <input type=\"text\" id='nameonaccount' className='form-control' maxLength={100} placeholder=\"John Doe\" name=\"name\" value={achData?.name ?? \"\"} onChange={handleChangeAch} />\n {achError?.name && <span className='error-span'>{achError?.name}</span>}\n </div>\n <div className=\"form-group mb-4\">\n <label htmlFor=\"routingnumber\">Routing number</label>\n <input type=\"text\" id='routingnumber' className='form-control' maxLength={9} placeholder=\"000000000\"\n name=\"routingNumber\" value={achData?.routingNumber ?? \"\"} onChange={handleChangeAch} />\n {achError?.routingNumber && <span className='error-span'>{achError?.routingNumber}</span>}\n </div>\n <div className=\"form-group mb-4\">\n <label htmlFor=\"accountnumber\">Account number</label>\n <input type=\"text\" id='accountnumber' className='form-control' maxLength={16} placeholder=\"0000000000\"\n name=\"accountNumber\" value={achData?.accountNumber ?? \"\"} onChange={handleChangeAch} />\n {achError?.accountNumber && <span className='error-span'>{achError?.accountNumber}</span>}\n </div>\n <div className=\"form-group mb-4\">\n <label htmlFor=\"confirmaccountnumber\">Confirm account number</label>\n <input type=\"text\" id='confirmaccountnumber' className='form-control' maxLength={16} placeholder=\"0000000000\"\n name=\"confirmAccountNumber\" value={achData?.confirmAccountNumber ?? \"\"} onChange={handleChangeAch} />\n {achError?.confirmAccountNumber && <span className='error-span'>{achError?.confirmAccountNumber}</span>}\n </div>\n <div className=\"form-group mb-4\">\n <label htmlFor=\"bankname\">Bank name</label>\n <input type=\"text\" id='bankname' className='form-control' maxLength={100} placeholder=\"My Bank\"\n name=\"bankName\" value={achData?.bankName ?? \"\"} onChange={handleChangeAch}\n />\n {achError?.bankName && <span className='error-span'>{achError?.bankName}</span>}\n </div>\n {(achData?.accountType === 'business saving' || achData?.accountType === 'business checking') && (\n <div className=\"form-group mb-4\">\n <label htmlFor=\"companyName\">Company name</label>\n <input type=\"text\" id='companyName' className='form-control' maxLength={100} placeholder=\"My Company\"\n name=\"companyName\" value={achData?.companyName ?? \"\"} onChange={handleChangeAch}\n />\n {achError?.companyName && <span className='error-span'>{achError?.companyName}</span>}\n </div>\n )}\n <div className=\"form-group mb-4\">\n <label htmlFor=\"accounttype\">Select account type</label>\n <select name=\"accountType\" id=\"accounttype\" className='form-control' value={achData?.accountType ?? \"\"} onChange={handleChangeAch} >\n <option value=\"\">Select account</option>\n {accountTypes.map((type) => (\n <option key={type.value} value={type.value}>\n {type.label}\n </option>\n ))}\n </select>\n\n </div>\n {\n props?.customerId && (\n <div className=\"form-group mb-4 save-ach-div\" style={{ paddingTop: '5px' }}>\n <input type=\"checkbox\" id='saveACH' className='' maxLength={100} placeholder=\"My Bank\" checked={saveACHinfo} onChange={(e) => setSaveACHinfo(e.target.checked)} />\n <label htmlFor=\"saveACH\">Save ACH</label>\n </div>\n )\n }\n {saveACHinfo &&\n <div className=\"form-group mb-4\" style={{ fontSize: '12px', color: '#727272' }}>\n <p>If checked, I agree for <b>ecommerce</b> to have my permission to charge this credit card for agreed upon purchases in the future.</p>\n </div>\n }\n </div>\n\n\n\n <div className=\"form-group \" >\n <button className='pay-button' style={{ margin: '20px 0 0' }} type='submit'>{formatUSD(Number(cashDiscount)?.toFixed(2))}</button>\n </div>\n </form>\n\n )\n }\n </div>\n\n {/* active tab Pax if any */}\n <div id=\"reader\" style={{ display: activetab === 'reader' ? 'block' : 'none' }} className=\"tabcontent\">\n <div className=\"frac-card-payment\">\n <div className=\"frac-heading-card-wrap\">\n <div className='frac-backarrow'>\n {/* {\n cashDiscount && cashDiscount > 0 && <div className='res-pay-con frac-cash-discount' >\n <div className='frac-cashlabel' >Cash Discount</div>\n <div>${cashDiscount}</div>\n </div>\n } */}\n </div>\n <h6 className='frac-card-payment-heading'>Reader Payment</h6>\n </div>\n </div>\n <PaxList listHeading='Reader' ListItems={paymentData?.paymentDeviceList} selectedPax={selectedReader} setSlectedPax={setSelectedReader} />\n\n <button onClick={handleChargewithEMV} className='pay-button'>${Number(props?.amount)?.toFixed(2)}</button>\n </div>\n\n\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n\n </div>\n </>\n }\n\n\n\n\n\n </CustomModal2>\n </>\n </>\n )\n}","import React from \"react\";\n\nexport default function Chargewidgetstyles() {\n const primarycolor = \"#000\";\n const primarybgcolor = \"#fff\";\n const primarybodycolor = \"#212529\";\n const primarybordercolor = \"#dee2e6\";\n return (\n <style>\n {`\n @import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap'); \n body\n {\n font-family: 'Inter', sans-serif !important;\n }\n input\n {\n font-family: 'Inter', sans-serif !important;\n } \n .frac-form .form-group{\n margin:0 !important\n }\n .frac-form .mb-4{\n margin-bottom : 10px !important\n }\n .frac-form .save-ach-div{\n display:flex !important;\n gap:5px !important;\n align-items:center\n }\n \n .frac-form .card-cvv-in{\n height : 36px !importantt; \n }\n\n .frac-form .pay-payment-amount{\n text-align:start !important\n }\n .frac-form .pay-amount{\n text-align:start !important\n }\n .frac-form .pay-main-logo{\n text-align:start !important\n }\n\n\n \n .paymentBtn {\n background-color: black;\n border: none;\n color: white;\n padding: 15px 32px;\n text-align: center;\n text-decoration: none;\n display: inline-block;\n font-size: 16px;\n margin: 4px 2px;\n cursor: pointer;\n border-radius: 180px;\n /* width: auto; */\n } \n \n .main-logo {\n text-align: center;\n margin-bottom: 20px;\n }\n\n .main-logo img {\n max-width: 180px;\n }\n\n .pay-main-box {\n width: 365px !important;\n height: 93%;\n background: 0 0 #ffffff;\n border-radius: 12px;\n\n\n border: 1px solid #E0DFE2;\n margin: 0 auto;\n display: block;\n padding: 0px 26px !important\n }\n .pay-main-box .pay-header {\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n }\n \n .pay-main-box .pay-header button {\n border: 0;\n background: none;\n padding: 0;\n box-shadow: 0;\n outline: inherit;\n }\n \n .pay-main-box h1 {\n margin: 0;\n flex: 1;\n padding: 10px 0;\n font-size: 23px;\n font-weight: 500;\n color: #35254D;\n align-items: start;\n display: flex;\n }\n .tab {\n overflow: hidden;\n padding: 5px;\n border-radius: 8px;\n display: flex;\n justify-content: space-around;\n margin-bottom:12px\n }\n\n /* Style the buttons inside the tab */\n .tab button {\n float: left;\n border: none;\n outline: none;\n cursor: pointer;\n background:white;\n padding: 11px 16px;\n transition: 0.3s;\n font-size: 16px;\n width: 143px;\n border-radius: 5px;\n box-shadow: inherit;\n outline: none;\n color: ${primarycolor};\n }\n\n /* Change background color of buttons on hover */\n .tab button:hover {\n background-color: #f0f0f0;\n }\n\n /* Create an active/current tablink class */\n // .tab button.active {\n // background-color: #ccc;\n // }\n\n /* Style the tab content */\n \n \n .parent-pay-container{\n padding: 24px;\n }\n .pay-container{\n display: grid;\n grid-template-columns: 2fr 3fr;\n \n }\n .pay-main{\n padding-y: 20px}\n\n .request-payment-close-popup {\n position: absolute;\n right: 20px;\n top: 20px;\n cursor: pointer;\n}\n .pay-conatiner-one{\n border-right: 1px solid #E0DFE2;\n }\n .pay-conatiner-one-first{\n min-height:530px\n }\n .pay-conatiner-one-last{\n display:flex;\n font-size:12px;\n gap:5px;\n max-width:250px;\n align-items:center;\n color:black !important\n }\n .pay-conatiner-one-last img{\n width : 17px;\n height:17px\n }\n .pay-conatiner-two{\n padding: 0 5% 0;\n }\n .pay-logo-container{\n border-bottom: 1px solid #E0DFE2\n }\n .pay-heading{\n margin: 0;\n flex: 1;\n padding: 10px 0;\n font-size: 23px;\n font-weight: 500;\n color: #35254D;\n align-items: start;\n display: flex;\n }\n .pay-main-logo > img{\n width: 50%;\n }\n .pay-main-logo-res > img{\n width: 50%;\n display : none\n }\n \n .pay-payment-amount{\n display: block;\n font-size: 12px;\n color: #727272;\n margin-bottom: 8px;\n }\n .pay-amount-conatiner{\n margin-top: 6%;\n }\n .pay-amount{\n color: #000000;\n font-size: 38px;\n display: block;\n line-height: 110%;\n letter-spacing: -1px;\n }\n .frac-form label{\n font-family: 'IBM Plex Mono', monospace !important;\n color: #727272 !important;\n margin-bottom: 2px !important;\n font-weight: 600 !important;\n font-size: 12px !important;\n display:block !important;\n text-align : left !important;\n text-transform: uppercase !important;\n }\n .form-control{\n display: block;\n width: 100%;\n padding: .375rem .75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: ${primarybodycolor};\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: ${primarybgcolor};\n background-clip: padding-box;\n border: 1px solid ${primarybordercolor};\n border-radius: 0.375rem;\n transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n }\n .form-control:focus{\n border-color: #86b7fe;\n outline: 0;\n }\n .toggle-num-wrapper {\n position: relative;\n }\n .card-number-new{\n border-bottom: none;\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n }\n .card-crdi {\n display: flex;\n border: 1px solid ${primarybordercolor};\n border-radius: 0.375rem;\n }\n .card-expiry-new{\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n }\n .exp-date-year-container{\n display: flex;\n flex-wrap: wrap;\n }\n .exp-date-year-container .form-group{\n flex:1;\n \n }\n\n .exp-date {\n float: left;\n // width: 30%\n }\n\n .exp-date input {\n width: calc(100% + 1px);\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border: 0;\n border-right: 1px solid ${primarybordercolor};\n }\n\n\n .exp-year {\n float: left;\n // width: 30%\n }\n\n .exp-year input {\n width: calc(100% + 1px);\n border-radius: 0;\n border-top: 0;\n border-bottom: 0;\n border-right: 1px solid ${primarybordercolor};\n }\n\n .exp-date input:focus {\n position: relative;\n z-index: 10;\n }\n\n .security-digit {\n float: right;\n // width: 40%;\n position: relative;\n }\n\n .security-digit input {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-top: 0;\n border-bottom: 0;\n border-right:0;\n }\n .card-expiry-new{\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n }\n .form-control{box-sizing: border-box ;}\n #PaymentForm .form-group{\n padding:5px 0 ;\n matgin: 0 !important\n }\n\n #paymentForm .form-group{\n padding:5px 0 ;\n matgin: 0 !important\n }\n \n .toggle-label {\n position: relative;\n display: inline-block;\n width: 40px;\n height: 24px;\n background-color: #ccc;\n border-radius: 12px;\n cursor: pointer;\n transition: background-color 0.3s;\n }\n\n .toggle-label::before {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 20px;\n height: 20px;\n background: #ffffff;\n border-radius: 50%;\n transition: left 300ms linear;\n }\n\n .toggle-checkbox {\n display: none;\n }\n\n .toggle-checkbox:checked + .toggle-label {\n background-color: #4caf50;\n }\n\n .toggle-checkbox:checked + .toggle-label::before {\n left: 18px;\n }\n .ach-scrl {\n max-height: 380px;\n min-height: 380px;\n overflow-y: auto;\n padding-right: 6px;\n }\n .mb-4{\n margin-bottom:4px\n }\n .ach-scrl::-webkit-scrollbar {\n width: 3px;\n background-color: #F5F5F5;\n }\n .ach-scrl::-webkit-scrollbar-thumb {\n background-color: #35254D;\n }\n\n .error-span{\n color:red !important;\n font-size:12px !important;\n text-align: left !important;\n width: 100% !important;\n display: block;\n }\n\n .charge-customer-name{\n color: #161616;\n font-family: Inter;\n font-size: 24px;\n font-style: normal;\n font-weight: 600;\n line-height: 32px;\n letter-spacing: -0.48px;\n text-transform: capitalize;\n margin-top:0;\n margin-bottom:16px !important;\n text-align:left !important\n }\n .card-ach-heading {\n color: #727272;\n font-family: Inter;\n font-size: 12px;\n font-style: normal;\n font-weight: 500;\n line-height: 18px;\n letter-spacing: -0.24px;\n margin : 0 0 10px !important; \n text-align : left\n}\n .card-list-div{\n max-height : 190px;\n overflow-y : auto;\n border:1px solid #E0DFE2;\n border-radius : 8px\n }\n \n \n .card-list-div::-webkit-scrollbar{\n width:2px;\n background-color:#F5F5F5\n }\n .card-list-div::-webkit-scrollbar-thumb{\n background-color:#35254D\n }\n \n .card-list-single-div{\n border-bottom: 1px solid #E0DFE2;\n padding : 8px 11px;\n display : flex ;\n align-items:center;\n justify-content : space-between;\n gap:12px\n }\n .card-list-single-div:last-child {\n border-bottom: none;\n}\n .card-lint-div-in{\n min-height:444px}\n .card-number-radio{\n display:flex;\n gap:12px;\n }\n .card-number-radio .card-number-last-four{\n color:#161616 !important;\n font-family:Inter !important;\n font-size:14px !important;\n font-weight:500 !important;\n font-style:normal !important;\n line-height : 18px !important;\n latter-spacing:-0.18px !important\n }\n .card-expiry-date{\n margin:0;\n color:#00000080;\n font-family:Inter;\n font-size:14px;\n font-weight:500;\n font-style\"normal;\n line-height : 18px;\n latter-spacing:-0.18px\n }\n .pay-with-other-card {\n margin-top : 12px;\n padding:12px 32px;\n border :1px solid #E0DFE2;\n border-radius : 1000px;\n display: flex;\n justify-content : center;\n align-items:center;\n gap:10px;\n // width:100%;\n background:white;\n cursor:pointer;\n color:#161616;\n text-align:center\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: 24px;\n letter-spacing: -0.28px;\n // margin-bottom: 50px;\n }\n .charge-payment-back-btn {\n display: flex;\n padding: 5px 10px;\n align-items: center;\n gap: 6px;\n border-radius: 1000px;\n border: 1px solid #E0DFE2;\n background: #FFF;\n box-shadow: 0px 6px 12px 0px rgba(206, 197, 221, 0.31);\n font-size:16px;\n cursor:pointer;\n color:black\n}\n .res-charge-payment-back-btn{\n padding: 9px 16px;\n align-items: center;\n gap: 6px;\n margin-bottom: 20px;\n border-radius: 1000px;\n border: 1px solid #E0DFE2;\n background: #FFF;\n box-shadow: 0px 6px 12px 0px rgba(206, 197, 221, 0.31);\n font-size:16px;\n curso:pointer;\n color:black;\n display:none \n }\n .btn {\n padding: 11px 23px;\n background-color: black;\n color: white;\n border: none;\n border-radius: 6px;\n font-weight: bold;\n margin: 0 10px;\n cursor: pointer;\n}\n\n.custom-swal-icon {\n margin: 20px auto;\n}\n\n.custom-swal-popup {\n font-size: 16px;\n text-align: center;\n}\n\n .frac-form .res-pay-con{\n display:none\n }\n\n .frac-cash-discount{\n border-radius: 8px;\n background: #F6F6F7;\n justify-content: space-between;\n align-items: center;\n display: flex;\n padding: 9px 14px 9px 10px;\n font-family: Inter;\n color: #161616;\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n margin: 12px 0;\n }\n.frac-cash-discount .frac-cashlabel{\n color: #727272;\n font-size: 12px;\n font-style: normal;\n font-weight: 500;\n}\n\nfrac-tooltip-wrapper {\n position: absolute;\n right:0;\n}\n\n.frac-tooltip-icon {\n cursor: pointer;\n}\n.frac-tooltip-mn{\nposition:relative;\n}\n.frac-tooltip-text {\n display: none;\n position: absolute;\n top:-15px;\n right: 22px;\n background: #161616;\n color: white;\n padding: 15px;\n border-radius: 10px;\n width: 200px;\n font-size:12px;\n word-break: break-word;\n white-space: normal;\n z-index: 999;\n}\n\n.frac-tooltip-wrapper:hover .frac-tooltip-text {\n display: block;\n}\n\n.frac-tooltip-text p,.frac-tooltip-text b {\n font-size : 12px !important;\n line-height : 1.5 !important;\n margin-bottom : 10px !important;\n}\n\n@media (max-width: 768px) {\n .parent-pay-container{\n padding: 20px 5%;\n }\n .pay-container {\n grid-template-columns: 1fr;\n padding: 10px 5%;\n border:1px solid #E0DFE2;\n border-radius : 12px;\n gap:24px;\n }\n .pay-conatiner-one{\n border-right: none;\n }\n .pay-conatiner-one-first{\n min-height:0\n }\n .pay-main-logo > img{\n display: none;\n }\n .pay-main-logo-res > img {\n display:block;\n margin:auto\n }\n \n .pay-logo-container{\n border :none\n }\n // .res-charge-payment-back-btn {\n // display:flex !important\n // }\n // .charge-payment-back-btn{\n // display:none !important\n // }\n .fractal-popup-content{\n width: 90%;\n }\n // .frac-form .res-pay-con{\n // display:flex;\n // justify-content :space-between;\n // align-items:center;\n // padding-bottom : 10px\n // }\n // .frac-form .amt-pay-con{\n // display:none\n // }\n .pay-conatiner-one-last{\n display:none}\n .pay-conatiner-two{\n padding:0\n }\n \n \n }\n .amt-pay-con {\n padding-right: 24px;\n }\n @media (max-width : 512px){\n .tab button {\n padding: 6px 16px;\n }\n .amt-pay-con {\n padding-right: 0;\n }\n}\n \n \n .frac-cash-discount-fee {\n display: flex;\n padding: 11px;\n justify-content: space-between;\n align-items: center;\n align-self: stretch;\n border-radius: 8px;\n border: 1px solid #E0DFE2;\n background: #F6F6F7;\n margin-top: 24px;\n }\n .frac-cash-discount-fee small {\n color:#727272;\n font-size: 12px;\n font-weight: 500;\n }\n .frac-cash-discount-fee p{\n margin:0px;\n font-size: 14px;\n font-weight: 500;\n }\n .frac-card-payment-heading {\n font-size: 24px;\n font-style: normal;\n font-weight: 600;\n margin:0px;\n }\n .exp-date-year-container .form-group {\n padding: 0px !important;\n }\n .frac-heading-card-wrap {\n display: flex;\n align-items: center;\n margin-bottom:12px;\n }\n .frac-backarrow {\n margin-right: 10px;\n }\n .frac-charge-payment-back-btn-wrap , .frac-tab-2{\n display: none;\n }\n .frac-pay-conatiner-one{\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n min-height: auto;\n }\n\n .frac-partial-payment-input{\n margin-top: 12px !important; \n }\n div#cvv {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-top: 0;\n border-bottom: 0;\n border-right: 0;\n }\n div#exp_year {\n height: 36px;\n width: calc(100% + 1px);\n border-radius: 0;\n border-top: 0;\n border-bottom: 0;\n border-right: 1px solid #dee2e6;\n }\n div#exp_month {\n width: calc(100% + 1px);\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border: 0;\n border-right: 1px solid #dee2e6;\n }\n `}\n </style>\n );\n}\n","import React from 'react'\n\nexport default function SuccessMszStyle() {\n return (\n <style>\n {\n `\n @import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap'); \n \n body{\n display: flex;\n justify-content: center;\n align-items: center;\n padding-top: 30px;\n margin: 0;\n /* background-color: #f8f9fa; */\n flex-direction: column;\n }\n .payment-msg-container{\n min-height : 550px\n }\n\n .logo-container {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: -50px; /* Adjust this to overlap the content */\n z-index: 10;\n }\n\n .client-logo {\n max-width: 100px;\n height: auto;\n object-fit: contain;\n display: block;\n }\n\n .payment-success-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 18px 20px 24px;\n width: 335px;\n height: 400px; /* Fixed height */\n background: #ffffff;\n border-radius: 12px;\n position: relative;\n /* box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n border: 1px solid #e3e3e3; */\n justify-content: center;\n text-align: center;\n margin-top: 50px; /* Adjust this to move the content down */\n }\n\n .success-icon {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n width: 227px;\n height: 116px;\n z-index: 2;\n }\n\n .circle {\n width: 40px;\n height: 40px;\n border: 1px solid #49b182;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .circle .fa-check-circle {\n font-size: 20px;\n color: #49b182;\n }\n\n .success-text {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 4px;\n width: 227px;\n }\n\n .payment-success-text {\n font-family: \"Inter\", sans-serif;\n font-weight: 500;\n font-size: 18px;\n line-height: 21px;\n text-align: center;\n letter-spacing: -0.02em;\n color: #161616;\n }\n\n .thank-you-text {\n font-family: \"Inter\", sans-serif;\n font-weight: 500;\n font-size: 14px;\n line-height: 18px;\n text-align: center;\n letter-spacing: -0.02em;\n color: #161616;\n opacity: 0.5;\n }\n\n .charge-payment-success-tick-div {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-top: 32px;\n }\n .charge-payment-success-tick {\n border-radius: 1000px;\n background: rgba(97, 198, 153, 0.14);\n display: flex;\n width: 60px;\n height: 60px;\n justify-content: center;\n align-items: center;\n }\n .charge-payment-success-text {\n color: #161616;\n text-align: center;\n font-family: Inter;\n font-size: 32px;\n font-style: normal;\n font-weight: 500;\n line-height: 36px;\n letter-spacing: -0.64px;\n margin-top: 20px;\n margin-bottom: 5px !important;\n }\n .charge-payment-success-container {\n display: flex;\n padding: 120px 48px 32px 48px;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n .charge-payment-success-subtext {\n color: #727272;\n text-align: center;\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: 18px; /* 128.571% */\n letter-spacing: -0.28px;\n margin:14px 0 !important\n\n }\n .charge-success-payment-button-div {\n display: flex;\n gap: 10px;\n align-items: baseline;\n }\n .charge-success-btn1 {\n display: flex;\n padding: 9px 16px;\n align-items: center;\n gap: 6px;\n border-radius: 1000px;\n border: 1px solid #e0dfe2;\n background: #fff;\n color: #161616;\n }\n\n .charge-payment-success-btn-div {\n display: flex;\n align-items: flex-start;\n justify-content: center;\n gap: 8px;\n }\n\n .charge-payment-success-btn1 {\n cursor: pointer;\n border-radius: 80px;\n border: 1px solid #e0dfe2;\n display: flex;\n padding: 12px 32px;\n justify-content: center;\n align-items: center;\n gap: 6px;\n background-color: #fff;\n }\n\n .charge-payment-success-btn2 {\n border-radius: 80px;\n cursor: pointer;\n border: 1px solid #e0dfe2;\n display: flex;\n padding: 12px 32px;\n justify-content: center;\n align-items: center;\n gap: 6px;\n background-color: #161616;\n color: #fff;\n }`\n }\n </style>\n )\n}\n","\nexport function HandleSubmit(event: React.FormEvent, key: string, tranId: string): void {\n event.preventDefault();\n\n const status = key === 'close';\n\n const message = {\n type: 'preview.compiledcheck',\n other: {\n msg: 'Payment success!',\n status,\n data: {\n tran_id: tranId,\n key,\n },\n },\n };\n\n console.log('message:', message);\n window.parent.postMessage(message, '*');\n}\n","import React from 'react'\nimport SuccessMszStyle from './SuccessMszStyle'\nimport { HandleSubmit } from './HandleSubmit'\n\n\ninterface SuccessMszProps {\n onClose: () => void;\n tranId: string;\n}\nexport default function SuccessMsz({ onClose, tranId }: SuccessMszProps) {\n\n \n return (\n <>\n <SuccessMszStyle/>\n <div className='payment-msg-container'>\n\n <div className=\"charge-payment-success-container\">\n <div className=\"charge-payment-success-tick-div\">\n <div className=\"charge-payment-success-tick\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n d=\"M6.12669 13.9774C5.97396 14.131 5.76558 14.2167 5.54913 14.2167C5.33267 14.2167 5.1243 14.131 4.97157 13.9774L0.359012 9.36408C-0.119671 8.8854 -0.119671 8.10919 0.359012 7.6314L0.936573 7.05369C1.4154 6.57501 2.19072 6.57501 2.6694 7.05369L5.54913 9.93357L13.3306 2.15198C13.8094 1.6733 14.5855 1.6733 15.0634 2.15198L15.641 2.72969C16.1196 3.20837 16.1196 3.98444 15.641 4.46237L6.12669 13.9774Z\"\n fill=\"#61C699\"\n />\n </svg>\n </div>\n </div>\n <h6 className=\"charge-payment-success-text\">\n Your charge<br />\n was successful\n </h6>\n <h6 className=\"charge-payment-success-subtext\">We’ve processed your charge</h6>\n <div className=\"charge-success-payment-button-div\">\n <button className=\"charge-success-btn1\" onClick={(e)=>HandleSubmit(e , 'print' , tranId )} >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n >\n <path\n d=\"M15.7729 8.7272C15.58 8.7272 15.395 8.80383 15.2586 8.94022C15.1222 9.07661 15.0456 9.2616 15.0456 9.45448V12.5185C15.045 13.0559 14.8313 13.5711 14.4513 13.9511C14.0713 14.3311 13.5561 14.5449 13.0187 14.5454H3.98149C3.44409 14.5449 2.92887 14.3311 2.54887 13.9511C2.16887 13.5711 1.95514 13.0559 1.95456 12.5185V9.45448C1.95456 9.2616 1.87794 9.07661 1.74154 8.94022C1.60515 8.80383 1.42017 8.7272 1.22728 8.7272C1.03439 8.7272 0.849407 8.80383 0.713015 8.94022C0.576624 9.07661 0.5 9.2616 0.5 9.45448V12.5185C0.500963 13.4416 0.86807 14.3265 1.52077 14.9792C2.17346 15.6319 3.05844 15.999 3.98149 16H13.0187C13.9417 15.999 14.8267 15.6319 15.4794 14.9792C16.1321 14.3265 16.4992 13.4416 16.5002 12.5185V9.45448C16.5002 9.2616 16.4235 9.07661 16.2871 8.94022C16.1507 8.80383 15.9658 8.7272 15.7729 8.7272Z\"\n fill=\"#161616\"\n />\n <path\n d=\"M4.65059 6.75861L7.7728 9.88082V0.72728C7.7728 0.534394 7.84942 0.349407 7.98581 0.213015C8.1222 0.0766239 8.30719 0 8.50008 0C8.69296 0 8.87795 0.0766239 9.01434 0.213015C9.15073 0.349407 9.22736 0.534394 9.22736 0.72728V9.88082L12.3496 6.75861C12.4867 6.62613 12.6704 6.55283 12.8611 6.55448C13.0518 6.55614 13.2342 6.63263 13.3691 6.76747C13.5039 6.90231 13.5804 7.08472 13.5821 7.27541C13.5837 7.46611 13.5104 7.64982 13.3779 7.78698L9.01427 12.1507C8.87788 12.287 8.69293 12.3636 8.50008 12.3636C8.30723 12.3636 8.12228 12.287 7.98589 12.1507L3.62221 7.78698C3.48973 7.64982 3.41643 7.46611 3.41808 7.27541C3.41974 7.08472 3.49623 6.90231 3.63107 6.76747C3.76592 6.63263 3.94833 6.55614 4.13902 6.55448C4.32971 6.55283 4.51342 6.62613 4.65059 6.75861Z\"\n fill=\"#161616\"\n />\n </svg>\n Print receipt\n </button>\n <button className=\"charge-success-btn1\" onClick={(e)=>HandleSubmit(e , 'share' , tranId )}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n >\n <g clipPath=\"url(#clip0_12420_50683)\">\n <path\n d=\"M9.30194 4.78664V2.31152C9.30194 2.09629 9.3862 1.88988 9.53631 1.73768C9.68634 1.5855 9.8899 1.5 10.1021 1.5C10.312 1.50089 10.5132 1.58542 10.6622 1.73534L16.2633 7.41595C16.3383 7.49142 16.3978 7.58117 16.4385 7.68001C16.4791 7.77894 16.5 7.885 16.5 7.99212C16.5 8.09924 16.4791 8.20531 16.4385 8.30423C16.3978 8.40307 16.3383 8.49283 16.2633 8.5683L10.6622 14.2489C10.5499 14.3606 10.4076 14.4362 10.2531 14.4663C10.0987 14.4964 9.93887 14.4797 9.79372 14.4182C9.64857 14.3568 9.52455 14.2532 9.43701 14.1206C9.34955 13.9881 9.30258 13.8323 9.30194 13.6727V11.157H8.62181C7.35764 11.1379 6.10443 11.3981 4.94932 11.9193C3.79422 12.4406 2.76481 13.2107 1.93249 14.1759C1.83215 14.3113 1.6926 14.4115 1.53337 14.4624C1.37406 14.5134 1.20306 14.5125 1.04431 14.4599C0.882759 14.4046 0.742811 14.2984 0.644952 14.1568C0.547092 14.0152 0.496363 13.8456 0.500203 13.6727C0.500203 6.27171 6.96548 5.00575 9.30194 4.78664ZM8.62181 9.51777C9.15695 9.51607 9.69162 9.55129 10.2221 9.62327C10.4115 9.6524 10.5844 9.74954 10.7092 9.89699C10.834 10.0444 10.9025 10.2324 10.9023 10.4267V11.717L14.567 7.99212L10.9023 4.26727V5.55758C10.9023 5.77281 10.8179 5.97922 10.6679 6.13141C10.5178 6.28359 10.3143 6.36909 10.1021 6.36909C9.37396 6.36909 3.61282 6.5314 2.36457 11.5871C4.17637 10.2324 6.3708 9.50665 8.62181 9.51777Z\"\n fill=\"#161616\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_12420_50683\">\n <rect\n width=\"16\"\n height=\"16\"\n fill=\"white\"\n transform=\"translate(0.5)\"\n />\n </clipPath>\n </defs>\n </svg>\n Send receipt\n </button>\n </div>\n </div>\n <div className=\"charge-payment-success-btn-div\">\n <button className=\"charge-payment-success-btn1\" onClick={(e)=>HandleSubmit(e , 'tran' , tranId )}>Go to Transactions</button>\n <button className=\"charge-payment-success-btn2\" onClick={(e)=>{\n onClose()\n HandleSubmit(e , 'close' , tranId )\n }}>Close</button>\n </div>\n </div>\n </>\n )\n}\n","\n// 'use client'\n// import Script from 'next/script';\n// import { useEffect } from 'react';\n\n// // Add a declaration for the DatacapWebToken to avoid TypeScript errors\n// declare global {\n// interface Window {\n// DatacapWebToken: any; // You can replace 'any' with a more specific type if you know the shape of DatacapWebToken\n// }\n// }\n\n// export default function DataScript() {\n// const src = \"https://token-cert.dcap.com/v1/client\";\n// useEffect(() => {\n// console.log(\"datacap useeffect called\");\n \n// if (!document.querySelector(`script[src=\"${src}\"]`)) {\n// console.log(\"datacap useeffect called an if section called\");\n\n// alert(\"in data\")\n// const script = document.createElement(\"script\");\n// script.src = src;\n// script.onload = () => console.log(\"Script loaded\");\n// script.onerror = (e) => console.error(\"Failed to load script\", e);\n// document.head.appendChild(script);\n// }\n// }, []);\n// return (\n// <>\n// hi</>\n// )\n\n// }\n\n'use client';\n\nimport { useEffect } from 'react';\nimport { datacapUrl } from './baseurl';\n\n// Add a declaration for the DatacapWebToken\ndeclare global {\n interface Window {\n DatacapWebToken: any;\n }\n \n\n interface Window {\n forge: any;\n }\n}\n\nexport default function DataScript() {\n useEffect(() => {\n const src = datacapUrl;\n\n if (typeof window === 'undefined') return;\n\n if (window.DatacapWebToken) {\n // console.log('✅ Datacap already available');\n return;\n }\n\n if (!document.querySelector(`script[src=\"${src}\"]`)) {\n const script = document.createElement('script');\n script.src = src;\n script.async = true;\n\n script.onload = () => {\n // console.log('✅ Datacap script loaded');\n\n if (window.DatacapWebToken) {\n // console.log('✅ DatacapWebToken is ready:', window.DatacapWebToken);\n } else {\n console.warn('⚠️ Script loaded, but DatacapWebToken not found');\n }\n };\n\n script.onerror = (err) => {\n console.error('❌ Failed to load Datacap script', err);\n };\n\n document.head.appendChild(script);\n } else {\n // console.log('ℹ️ Script already in DOM, waiting for Datacap...');\n }\n }, []);\n\nuseEffect(() => {\n const scriptId = 'forge-cdn-script';\n\n // Avoid re-injecting the script\n if (!document.getElementById(scriptId)) {\n const forgeScript = document.createElement('script');\n forgeScript.src = 'https://cdn.jsdelivr.net/npm/node-forge@1.0.0/dist/forge.min.js';\n forgeScript.id = scriptId;\n forgeScript.async = true;\n document.head.appendChild(forgeScript);\n }\n\n // Optional cleanup\n return () => {\n const existingScript = document.getElementById(scriptId);\n if (existingScript) {\n document.head.removeChild(existingScript);\n }\n };\n}, []);\n\n return null; // ⚠️ No need to return <Script />, it's handled manually\n}\n","import React from 'react'\n\nexport default function ErrorCardMszStyle() {\n return (\n <style>\n {\n `\n .card-error .logo-container {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: -50px; /* Adjust this to overlap the content */\n z-index: 10;\n }\n\n .card-error .client-logo {\n max-width: 100px;\n height: auto;\n object-fit: contain;\n display: block;\n }\n\n .card-error .payment-error-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 18px 20px 24px;\n // width: 335px;\n min-height: 250px; /* Fixed height */\n background: #FFFFFF;\n border-radius: 12px;\n position: relative;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n border: 1px solid #e3e3e3;\n justify-content: center;\n text-align: center;\n // margin-top: 50px; /* Adjust this to move the content down */\n margin: 50px auto 0 auto !important;\n }\n\n .card-error .error-icon {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n min-height: 116px;\n z-index: 2;\n }\n\n .card-error .circle {\n width: 50px;\n height: 50px;\n border: 1px solid red;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom:20px\n }\n\n .card-error .circle .fa-times {\n font-size: 30px;\n color: red;\n }\n\n .card-error .error-text {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 4px;\n // width: 227px;\n }\n\n .card-error .payment-error-text {\n font-family: 'Inter', sans-serif;\n font-weight: 500;\n font-size: 18px;\n line-height: 21px;\n text-align: center;\n letter-spacing: -0.02em;\n color: #161616;\n }\n\n .card-error .thank-you-text {\n font-family: 'Inter', sans-serif;\n font-weight: 500;\n font-size: 16px;\n line-height: 18px;\n text-align: center;\n letter-spacing: -0.02em;\n color: #161616 !important;\n opacity: 0.5;\n padding-top:10px\n }\n\n .card-error .error-btn-div{\n padding-top:30px;\n \n }\n .card-error .error-btn-div button{\n border-radius: 0.25em;\n border:none;\n background: initial;\n background-color: #7066e0;\n box-shadow: var(--swal2-confirm-button-box-shadow);\n color: white;\n font-size: 1em;\n padding:10px 17px;\n cursor:pointer;\n }\n `\n }\n </style>\n )}","import React from 'react'\nimport ErrorCardMszStyle from './ErrorCardMessageStyle';\n// import SuccessCardMszStyle from './SuccessCardMszStyle'\n\ntype ErrorCardMessage = {\n onClose: () => void;\n error : string\n};\nconst ErrorCardMessage: React.FC<ErrorCardMessage> = ({ onClose , error }) => {\n return (\n <>\n <ErrorCardMszStyle/>\n <div className='card-error'>\n \n <div className=\"payment-error-container\">\n <div className=\"error-icon\">\n <div className=\"circle\">\n {/* <i className=\"fa fa-check-circle\" aria-hidden=\"true\"></i> */}\n {/* <i className=\"fa fa-exclamation-circle\" aria-hidden=\"true\"></i> */}\n <i className=\"fa fa-times\" aria-hidden=\"true\"></i>\n </div>\n <div className=\"error-text\">\n <div className=\"payment-error-text\">{error}</div>\n <div className=\"thank-you-text\">Try again later </div>\n </div>\n \n <div className=\"error-btn-div\">\n <button onClick={onClose}>OK</button>\n </div>\n </div>\n </div>\n </div>\n </>\n \n )\n}\nexport default ErrorCardMessage","// socketClient.js\nimport { io } from 'socket.io-client';\nimport { baseUrl } from './baseurl';\n\nconst socket = io(baseUrl, {\n transports: ['websocket'], // Optional: force WebSocket\n withCredentials: false,\n});\n\nexport default socket;\n","import React from 'react'\nimport { S3Url } from '../../baseurl'\nimport { bankNew, defaultcard, formatUSD, pax } from '@/app/utils/Common'\n\ntype Props = {\n label: string\n amount: string\n value: string\n onChange: (resp: any) => void\n activetab: string\n}\n\nexport const CardBankRadio = (props: Props) => {\n\n\n return (\n <>\n <div className={`frac-card-bank-radio ${props.activetab === props.value ? 'frac-active' : ''}`}\n onClick={() => props.onChange(props.value)} // click anywhere on the div\n role=\"radio\"\n >\n <div className='frac-card-title-main'>\n <img src={(props.label).toLowerCase() === 'card' ? defaultcard : (props.label).toLowerCase() === 'reader' ? pax : bankNew} className='frac-payment-type-logo' alt=\"\" />\n <div className='frac-card-label' >\n <div className='frac-card-label-text' >{props.label}</div>\n <div className='frac-card-label-amount' >{formatUSD(props.amount)}</div>\n </div>\n </div>\n <div>\n <input name='paymenttype' checked={props.activetab === props.value} type=\"radio\" value={props.value} onChange={(e) => { props.onChange(e.target.value) }} />\n </div>\n </div>\n </>\n )\n}\n","import React from 'react'\n\ntype Props = {}\n\nexport default function CardBankRadioStyles({ }: Props) {\n return (\n <style>\n {\n `\n .frac-card-bank-radio-main{\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n align-self: stretch;\n border-radius: 14px;\n border: 1px solid #E0DFE2;\n overflow: hidden;\n }\n\n .frac-card-bank-radio{\n display: flex;\n padding: 12px 16px;\n justify-content: space-between;\n align-items: center;\n align-self: stretch;\n }\n \n input[type=\"radio\"] {\n accent-color: #000;\n }\n\n .frac-card-title-main{\n display: flex;\n align-items: center;\n gap: 12px;\n }\n \n .frac-card-label{\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 2px;\n }\n\n .frac-card-label-text{\n color: #727272;\n font-family: Inter;\n font-size: 12px;\n font-style: normal;\n font-weight: 500;\n line-height: 18px;\n letter-spacing: -0.24px;\n }\n\n .frac-card-label-amount{\n color: #161616;\n text-align: center;\n font-family: Inter;\n font-size: 16px;\n font-style: normal;\n font-weight: 500;\n line-height: 140%;\n letter-spacing: -0.32px;\n }\n\n .frac-payment-type-logo{\n width: 24px;\n height: 24px;\n aspect-ratio: 1/1;\n }\n\n .frac-card-bank-radio-main .frac-card-bank-radio:nth-child(2) {\n border-top: 1px solid #E0DFE2;\n }\n\n .frac-card-bank-radio-main .frac-card-bank-radio:nth-child(3) {\n border-top: 1px solid #E0DFE2;\n }\n\n .frac-card-bank-radio.frac-active {\n background: #F6F6F7;\n }\n `\n \n }\n </style>\n )\n}","import { defaultcard, getCardType } from '@/app/utils/Common';\nimport React from 'react'\nimport { S3Url } from '../../baseurl';\n\ninterface Card {\n id: string;\n firstname: string;\n lastname: string;\n primary_card: number;\n expmonth: number;\n expyear: number;\n card_type: string;\n cardlastfourdigit: string;\n}\n\ninterface SelectedCard {\n card_type: string;\n cardlastfourdigit: string;\n expmonth: number;\n expyear: number;\n primary_card: number;\n firstname: string;\n id: string;\n lastname: string;\n}\n\ntype Props = {\n listHeading: string\n ListItems: Card[] | undefined\n selectedCard: SelectedCard | undefined\n setSelectedCard: React.Dispatch<React.SetStateAction<SelectedCard | undefined>>\n paymentGateway?: number | undefined,\n handleDeleteCard: (resp: any) => void\n otherButtonAction: (resp: any) => void\n otherButtonLabel: string\n headingClass?: string\n}\n\nexport const CardList = ({ listHeading = 'Card', ListItems, selectedCard, setSelectedCard, paymentGateway, handleDeleteCard, otherButtonAction, otherButtonLabel,headingClass }: Props) => {\n\n let trash = S3Url + 'widget/Trash.svg'\n\n // console.log(selectedCard, \"selectedCard another\",ListItems);\n\n\n return (\n <>\n <h6 className={headingClass || 'card-ach-heading'} style={{ marginBottom: '10px !important' }}>{listHeading}</h6>\n <div className='card-lint-div-in'>\n <div className='card-list-div'>\n {\n ListItems && ListItems?.length > 0 && ListItems?.map((card: any, index) => {\n let isDisabled = false\n if(paymentGateway){\n isDisabled = paymentGateway != card?.payment_method_type && card?.card_type != \"Bank\"\n }\n return (\n <div key={card?.id} className='card-list-single-div'>\n <div className=\"card-number-radio\">\n <input\n disabled={isDisabled}\n type=\"radio\" className='cardRadio' name=\"selected_card\"\n id=\"\" checked={selectedCard?.id === card?.id}\n onChange={(e) => setSelectedCard(card)} />\n <label htmlFor=\"\" className='card-number-last-four'>**** {card?.cardlastfourdigit}</label>\n {\n card?.card_type != \"Bank\" && (<h6 className='card-expiry-date'>{card?.expmonth}/{card?.expyear}</h6>)\n }\n </div>\n <div className=\"card-number-radio\">\n <span className='visa-card'>\n <img src={getCardType(card?.card_type)} alt=\"\" />\n </span>\n <span className='visa-card' style={{ cursor: \"pointer\" }} onClick={() => handleDeleteCard(card?.id)}>\n <img src={trash} alt=\"\" />\n </span>\n </div>\n </div>\n )\n })\n }\n </div>\n <div className='pay-with-other-card' onClick={otherButtonAction}>\n {otherButtonLabel}\n <img src={defaultcard} alt=\"\" />\n </div>\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { pax as paximage } from '@/app/utils/Common'\n\ninterface Pax {\n id: number;\n device_id: number;\n device_name: string;\n}\n\ntype Props = {\n listHeading: string\n ListItems: Pax[] | undefined\n selectedPax: Pax | null | undefined\n setSlectedPax: React.Dispatch<React.SetStateAction<Pax | null | undefined>>\n headingClass?: string\n\n}\n\nexport const PaxList = ({ listHeading = 'Readers', ListItems, selectedPax, setSlectedPax, headingClass }: Props) => {\n return (\n <>\n <h6 className={headingClass || 'card-ach-heading'} style={{ marginBottom: '10px !important' }}>{listHeading}</h6>\n <div className='card-lint-div-in'>\n <div className='card-list-div'>\n {\n ListItems && ListItems?.length > 0 && ListItems?.map((pax: any, index) => {\n return (\n <div key={pax?.id} className='card-list-single-div'>\n <div className=\"card-number-radio\">\n <input type=\"radio\" className='cardRadio' name=\"selected_reader\" id=\"\" checked={selectedPax?.id === pax?.id}\n onChange={(e) => setSlectedPax(pax)} />\n <label htmlFor=\"\" className='card-number-last-four'>{pax?.device_name}</label>\n </div>\n <div className=\"card-number-radio\">\n <span className='visa-card'>\n <img src={paximage} alt=\"\" />\n </span>\n </div>\n </div>\n )\n })\n }\n </div>\n </div>\n </>\n )\n}","'use client';\n\nimport { useEffect } from 'react';\nimport { fractalGatewayUrl } from './baseurl';\n\nexport default function FractalTokenizerScript() {\n useEffect(() => {\n const src = `${fractalGatewayUrl}tokenizer/static/js/fractal_tokenizer.js`;\n\n if (document.querySelector(`script[src=\"${src}\"]`)) return;\n\n const script = document.createElement('script');\n script.src = src;\n script.async = true;\n\n script.onload = () => {\n try {\n // Grab class from global scope\n // eslint-disable-next-line no-eval\n const TokenizerClass = eval('FractalTokenizer');\n\n if (TokenizerClass) {\n (window as any).FractalTokenizer = TokenizerClass;\n }\n } catch (err) {\n console.error('FractalTokenizer not accessible:', err);\n }\n };\n\n document.head.appendChild(script);\n }, []);\n\n return null;\n}\n","'use client'\nimport { useEffect, useRef } from \"react\";\n\ninterface Props {\n fractalStyles: any;\n tokenizerRef: React.MutableRefObject<any>;\n isAddCard?: boolean;\n isSky?: boolean;\n}\n\nconst FractalFields = ({ fractalStyles, tokenizerRef, isAddCard = false, isSky = false }: Props) => {\n const instanceRef = useRef<any>(null);\n\n useEffect(() => {\n if (!(window as any).FractalTokenizer) return;\n\n const instance = new (window as any).FractalTokenizer({\n styles: fractalStyles,\n });\n\n instanceRef.current = instance;\n tokenizerRef.current = instance;\n\n instance.mountField(\"card_number\", \"card_number\");\n instance.mountField(\"exp_month\", \"exp_month\");\n instance.mountField(\"exp_year\", \"exp_year\");\n instance.mountField(\"cvv\", \"cvv\");\n\n console.log(\"Fractal fields mounted\");\n\n return () => {\n try {\n instance.destroy?.();\n } catch (err) { }\n\n tokenizerRef.current = null;\n };\n }, []);\n\n return (\n <>\n {\n isAddCard ? (\n <>\n <div\n id=\"card_number\"\n className=\"form-control card-number-new\"\n style={{ height: \"46px\" }}\n />\n <div className=\"card-dtl\">\n <div className=\"exp-cvc-container exp-cvc-container-wrap\" style={{ margin: 0 }}>\n <div className=\"form-group\" style={{ marginTop: 0 }}>\n <label htmlFor=\"expMonth\">MM</label>\n <div\n id=\"exp_month\"\n className=\"form-control required card-cvv-in\"\n\n />\n </div>\n\n <div className=\"form-group\" style={{ marginTop: 0 }}>\n <label htmlFor=\"expYear\">YY</label>\n <div\n id=\"exp_year\"\n className=\"form-control required card-cvv-in\"\n\n />\n </div>\n\n <div className=\"form-group\" style={{ marginTop: 0 }}>\n <label htmlFor=\"cvc\">CVC</label>\n <div\n id=\"cvv\"\n className=\"form-control card-cvv-in required\"\n\n />\n </div>\n </div>\n </div>\n </>) : (\n <>\n\n <div\n id=\"card_number\"\n className=\"form-control card-number-new\"\n style={{ height: `${isSky ? \"36px\" : \"46px\"}` }}\n />\n\n <div className=\"card-crdi card-expiry-new\">\n <div className=\"exp-date-year-container\">\n <div className=\"exp-date form-group\">\n <div\n id=\"exp_month\"\n className=\"form-control required card-cvv-in\"\n style={{ height: \"36px\" }}\n />\n </div>\n\n <div className=\"exp-year form-group\">\n <div\n id=\"exp_year\"\n className=\"form-control required card-cvv-in\"\n style={{ height: \"36px\" }}\n />\n </div>\n\n <div className=\"security-digit form-group\">\n <div\n id=\"cvv\"\n className=\"form-control card-cvv-in required\"\n style={{ height: \"36px\" }}\n />\n </div>\n </div>\n </div>\n </>\n )\n }\n </>\n );\n};\n\nexport default FractalFields;\n","import { useEffect } from \"react\";\n\nlet scriptLoaded = false;\n\nexport const DataCapScriptLoader = () => {\n useEffect(() => {\n console.log(\"🔵 DataCapScriptLoader mounted\");\n console.log(\"🔵 scriptLoaded flag:\", scriptLoaded);\n\n if (scriptLoaded) {\n console.log(\"🟡 Script already marked as loaded. Skipping injection.\");\n return;\n }\n\n const existingScript = document.querySelector(\n 'script[src=\"https://token-cert.dcap.com/v1/client/hosted\"]'\n );\n\n console.log(\"🔵 existingScript found:\", !!existingScript);\n\n if (!existingScript) {\n console.log(\"🟢 Injecting DataCap hosted script...\");\n\n const script = document.createElement(\"script\");\n script.src = \"https://token-cert.dcap.com/v1/client/hosted\";\n script.async = true;\n\n script.onload = () => {\n console.log(\"✅ DataCap script loaded successfully\");\n scriptLoaded = true;\n console.log(\"🔵 scriptLoaded flag updated to:\", scriptLoaded);\n console.log(\"🔵 window.dcap:\", (window as any).DatacapHostedWebToken);\n };\n\n script.onerror = (err) => {\n console.error(\"❌ DataCap script failed to load\", err);\n };\n\n document.head.appendChild(script);\n } else {\n console.log(\"🟡 Script already exists in DOM.\");\n scriptLoaded = true;\n console.log(\"🔵 scriptLoaded flag updated to:\", scriptLoaded);\n console.log(\"🔵 window.dcap:\", (window as any).dcap);\n }\n }, []);\n\n return null;\n};","// import React, { useEffect, useRef } from \"react\";\n\n// const customCSS = `\n// body { \n// margin: 0; \n// font-family: 'IBM Plex Mono', monospace !important; \n// }\n\n// .card-data {\n// display: flex;\n// flex-direction: column;\n// gap: 12px;\n// padding: 6px;\n// }\n\n// input {\n// height: 40px !important;\n// width: 100% !important;\n// border: 1px solid #d1d5db !important;\n// border-radius: 8px !important;\n// padding: 10px !important;\n// font-size: 14px !important;\n// }\n\n// input:focus {\n// border-color: #2563eb !important;\n// outline: none !important;\n// }\n// `;\n\n// export const DataCapFields = ({ isOpen, tokenKey }: any) => {\n// const iframeId = \"datacap-iframe\";\n// const resolverRef = useRef<any>(null);\n\n// useEffect(() => {\n// if (!isOpen || !tokenKey) return;\n\n// const initialize = async () => {\n// // 1️⃣ Wait until SDK is ready\n// const waitForSDK = () =>\n// new Promise<void>((resolve) => {\n// const interval = setInterval(() => {\n// if ((window as any).DatacapHostedWebToken) {\n// clearInterval(interval);\n// resolve();\n// }\n// }, 100);\n// });\n\n// await waitForSDK();\n\n// // 2️⃣ Wait until iframe exists in DOM\n// const waitForIframe = () =>\n// new Promise<void>((resolve) => {\n// const interval = setInterval(() => {\n// const iframe = document.getElementById(iframeId);\n// if (iframe) {\n// clearInterval(interval);\n// resolve();\n// }\n// }, 100);\n// });\n\n// await waitForIframe();\n\n// console.log(\"🟢 Iframe found. Initializing Datacap...\");\n\n// const sdk = (window as any).DatacapHostedWebToken;\n\n// sdk.init(\n// tokenKey,\n// iframeId,\n// (response: any) => {\n\n// if (!resolverRef.current) return;\n\n// if (response?.Error || response?.Errors) {\n// console.log(\"📦 Datacap response:\", response);\n// resolverRef.current.reject(response.Error || response.Errors);\n// } else {\n// resolverRef.current.resolve(response);\n// }\n\n// resolverRef.current = null;\n// },\n// customCSS\n// );\n// };\n\n// initialize();\n// }, [isOpen, tokenKey]);\n\n// // Promise-based request\n// (window as any).requestDcToken = () => {\n// return new Promise((resolve, reject) => {\n// resolverRef.current = { resolve, reject };\n// (window as any).DatacapHostedWebToken.requestToken();\n// });\n// };\n\n// return (\n// <iframe\n// id={iframeId}\n// style={{ width: \"100%\", height: \"300px\", border: \"none\" }}\n// />\n// );\n// };\n\n\nimport React, { useEffect, useRef, useState } from \"react\";\n\nconst customCSS = `\n body { \n margin: 0; \n font-family: 'IBM Plex Mono', monospace !important; \n }\n\n \n\n input {\n display: block;\n width: stretch;\n padding: .375rem .75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #dee2e6;\n border-radius: 0.375rem;\n transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n margin-bottom: 10px;\n }\n\n input:focus {\n border-color: #2563eb !important;\n outline: none !important;\n }\n select {\n display: block;\n width: 100%;\n padding: .375rem .75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #dee2e6;\n border-radius: 0.375rem;\n\n transition: border-color .15s ease-in-out,\n box-shadow .15s ease-in-out;\n margin-bottom: 10px;\n}\n select:focus {\n border-color: #2563eb !important;\n outline: none !important;\n }\n label {\n font-family: 'IBM Plex Mono', monospace !important;\n color: #727272 !important;\n margin-bottom: 2px !important;\n font-weight: 600 !important;\n font-size: 12px !important;\n display: block !important;\n text-align: left !important;\n text-transform: uppercase !important;\n}\n input.card-data.card-data-cvv{\n margin-bottom: 0px;\n }\n \n `;\n\nexport const DataCapFields = ({\n isOpen,\n tokenKey,\n setLoader,\n}: any) => {\n const iframeId = \"datacap-iframe\";\n const resolverRef = useRef<any>(null);\n const [iframeReady, setIframeReady] = useState(false);\n\n useEffect(() => {\n if (!isOpen || !tokenKey) return;\n\n const initialize = async () => {\n setLoader?.(true);\n setIframeReady(false);\n\n const waitForSDK = () =>\n new Promise<void>((resolve) => {\n const interval = setInterval(() => {\n if ((window as any).DatacapHostedWebToken) {\n clearInterval(interval);\n resolve();\n }\n }, 100);\n });\n\n await waitForSDK();\n\n const sdk = (window as any).DatacapHostedWebToken;\n\n sdk.init(\n tokenKey,\n iframeId,\n (response: any) => {\n setLoader?.(false);\n\n if (!resolverRef.current) return;\n\n if (response?.Error || response?.Errors) {\n resolverRef.current.reject(response.Error || response.Errors);\n } else {\n resolverRef.current.resolve(response);\n }\n\n resolverRef.current = null;\n },\n customCSS\n );\n };\n\n initialize();\n }, [isOpen, tokenKey]);\n\n // Promise-based request\n (window as any).requestDcToken = () => {\n return new Promise((resolve, reject) => {\n setLoader?.(true);\n resolverRef.current = { resolve, reject };\n (window as any).DatacapHostedWebToken.requestToken();\n });\n };\n\n return (\n <iframe\n id={iframeId}\n onLoad={() => {\n console.log(\"🟢 Iframe visually loaded\");\n setIframeReady(true);\n setLoader?.(false);\n }}\n style={{\n width: \"100%\",\n height: \"250px\",\n border: \"none\",\n opacity: iframeReady ? 1 : 0,\n transition: \"opacity 0.3s ease\",\n }}\n />\n );\n};","'use client'\nimport React, { useEffect, useRef, useState } from 'react'\nimport Chargewidgetstyles from '../Charge/Chargewidgetstyles';\nimport CustomModal2 from '../CustomModal/CustomModal2';\nimport { baseUrl, masterBaseUrl, fractalGatewayUrl, S3Url } from '../baseurl';\nimport axios, { AxiosError } from 'axios';\nimport Loader from '../Loader/Loader';\nimport SuccessMsz from '../SuccessMessage/SuccessMsz';\nimport Swal from 'sweetalert2';\nimport { IoArrowBack } from \"react-icons/io5\";\nimport DataScript from '../Datascript';\nimport ErrorCardMessage from '../ErrorCardMessage/ErrorCardMessage';\nimport socket from '../socketClient'\nimport { formatCardNumberWithCursor, formatUSD, numberToBoolean } from '@/app/utils/Common';\nimport { CardBankRadio } from '../Atoms/CardBankRadio/CardBankRadio';\nimport { CardList } from '../Atoms/CardList/CardList';\nimport { PaxList } from '../Atoms/PaxList/PaxList';\nimport CardBankRadioStyles from '../Atoms/CardBankRadio/CardBankRadioStyles';\nimport FractalFields from '../Atoms/FractalForm/FractalFields';\nimport FractalTokenizerScript from '../FractalTokenizer';\n\ndeclare let DatacapWebToken: any;\ndeclare let forge: any;\ndeclare let FractalTokenizer: any;\n\ntype Props = {\n merchantPublicKey: string;\n customerId?: string;\n orderID?: string;\n from?: string;\n amount: string;\n discount?: string;\n tax?: string;\n surcharge?: string;\n pass_fee?: boolean;\n isReader?: boolean;\n onTriggerPay?: (fn: () => void) => void;\n preauthId?: string;\n showButton?: boolean;\n sessionToken?: string;\n}\n\ntype activeinTabs = 'form' | 'list'\n\nexport function PreAuthPayment({ showButton = true, ...props }: Props) {\n const [loading, setLoading] = useState<boolean>(false);\n const [loading2, setLoading2] = useState<boolean>(false);\n const [error, setError] = useState<string>(\"\");\n const [success, setSuccess] = useState<boolean>(false);\n const [show, setShow] = useState<boolean>(false);\n const [activetab, setActive] = useState<string>('card');\n const [saveCardInfo, setSaveCardInfo] = useState<boolean>(false);\n const [activeList, setActiveList] = useState<string>('card')\n const [activeinCard, setActiveinCard] = useState<activeinTabs>('form')\n const fractalpayClientKey = props.merchantPublicKey;\n const [selectedReader, setSelectedReader] = useState<PaymentDevice | null | undefined>(undefined)\n\n const tokenizerRef = useRef<any>(null);\n\n const fractalStyles = {\n input: {\n 'font-family': \"'Inter', sans-serif\" ,\n 'font-size': '16px',\n 'color': '#212529',\n 'background-color': 'transparent',\n 'padding': '0px',\n 'appearance': 'none',\n 'outline': 'none',\n 'border': 'none',\n 'box-shadow': 'none'\n },\n ':focus': {\n 'color': '#212529',\n 'outline': 'none',\n 'border': 'none'\n },\n '::placeholder': {\n 'color': '#212529'\n }\n };\n\n useEffect(() => {\n if (props.onTriggerPay) {\n props.onTriggerPay(() => {\n handleShow();\n });\n }\n }, [props]);\n\n let mastercard = S3Url + 'widget/mc-img.svg'\n let visa = S3Url + 'widget/visa-img.svg'\n let americanexp = S3Url + 'widget/ae-img.svg'\n let discover = S3Url + 'widget/discover-img.svg'\n let defaultcard = S3Url + 'widget/card.svg'\n let trash = S3Url + 'widget/Trash.svg'\n let bank = S3Url + 'widget/bank.svg'\n let secure = S3Url + 'widget/secure-img.png'\n let pov = S3Url + 'widget/pov-by.png'\n\n interface CardDetails {\n cardName: string,\n cardNumber: string;\n expiryMonth: string;\n expiryYear: string;\n cvv: string;\n orderId: string;\n zipCode: string;\n }\n\n interface Card {\n id: string;\n firstname: string;\n lastname: string;\n primary_card: number;\n expmonth: number;\n expyear: number;\n card_type: string;\n cardlastfourdigit: string;\n }\n\n interface PaymentDevice {\n id: number;\n device_id: number;\n device_name: string;\n }\n\n interface PaymentData {\n paymentGateway: number;\n isSkyFiAccount: boolean;\n logo: string;\n bname: string;\n card_list: Card[];\n customer_name: string;\n is_primary: string;\n dctoken: string;\n paymentDeviceList: PaymentDevice[];\n showSurcharge?: boolean\n }\n interface SelectedCard {\n card_type: string;\n cardlastfourdigit: string;\n expmonth: number;\n expyear: number;\n primary_card: number;\n firstname: string;\n id: string;\n lastname: string;\n }\n\n const [cardData, setCardData] = useState<CardDetails>()\n const [cardError, setCardError] = useState<Partial<Record<keyof CardDetails, string>>>({});\n const [cardList, setCardList] = useState([])\n const [selectedCard, setSelectedCard] = useState<SelectedCard>()\n const [cashDiscount, setCashDiscount] = useState<number | undefined>(undefined);\n const [paymentData, setPaymentData] = useState<PaymentData>()\n let [tranId, setTranId] = useState(\"\")\n\n const CalculateCashDiscount = (amount: any, surcharge: any) => {\n const surchargeVal = (parseFloat(surcharge) || 0) / 100;\n const originalAmount = amount / (1 + surchargeVal);\n return Math.round(originalAmount * 100) / 100; // rounding to 2 decimals\n };\n\n useEffect(() => {\n if (props?.pass_fee) {\n let cash_discount = CalculateCashDiscount(props?.amount, props?.surcharge);\n setCashDiscount(cash_discount);\n }\n }, [props?.pass_fee])\n\n const showLoader = () => setLoading(true);\n const hideLoader = () => setLoading(false);\n const handleClose = () => {\n setShow(false);\n setActive('card')\n setLoading2(false)\n setError(\"\")\n setSuccess(false)\n setTranId(\"\")\n setCardData({\n cardName: \"\",\n cardNumber: \"\",\n expiryMonth: \"\",\n expiryYear: \"\",\n cvv: \"\",\n orderId: \"\",\n zipCode: \"\"\n })\n setCardError({\n cardName: \"\",\n cardNumber: \"\",\n expiryMonth: \"\",\n expiryYear: \"\",\n cvv: \"\",\n orderId: \"\",\n zipCode: \"\"\n })\n setSaveCardInfo(false)\n setSelectedCard({\n card_type: \"\",\n cardlastfourdigit: \"\",\n expmonth: 1,\n expyear: 2025,\n primary_card: 0,\n firstname: \"\",\n id: \"\",\n lastname: \"\",\n })\n };\n const handleShow = () => setShow(true);\n\n const handleCardChange = (field: string, value: any) => {\n const name = field\n const numericFields = [\"expiryMonth\", \"expiryYear\", \"zipCode\", \"cvv\"];\n\n if (numericFields.includes(name)) {\n // Agar value empty hai (backspace ke liye) ya sirf digits hain, tabhi set karenge\n if (value === \"\" || /^[0-9]+$/.test(value)) {\n setCardError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setCardData((prev: any) => ({\n ...prev,\n [name]: value,\n }));\n }\n return;\n }\n\n setCardError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setCardData((prev: any) => ({\n ...prev, [name]: value\n }))\n\n }\n const handleCardNumberChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target;\n const rawValue = input.value.replace(/\\D/g, \"\"); // Remove all non-digits\n\n const { formatted, cursor } = formatCardNumberWithCursor(\n input.value,\n input.selectionStart ?? 0\n );\n setCardError((prev: any) => ({\n ...prev,\n cardNumber: \"\"\n }))\n\n setCardData((prev: any) => ({\n ...prev,\n cardNumber: formatted\n }));\n\n requestAnimationFrame(() => {\n input.setSelectionRange(cursor, cursor);\n });\n };\n\n\n\n\n const validateCardData = (): boolean => {\n const errors: Partial<Record<keyof CardDetails, string>> = {};\n const data = cardData\n if (paymentData?.paymentGateway !== 32) {\n const month = parseInt(data?.expiryMonth || \"\", 10);\n const year = data?.expiryYear || \"\";\n if (!data?.cardNumber?.trim()) errors.cardNumber = \"Card number is required\";\n if (!data?.expiryMonth?.trim() || !data?.expiryYear?.trim()) {\n errors.expiryMonth = \"Invalid Expiration Date.\"\n }\n // else if (data?.expiryMonth < 1 || data?.expiryMonth > 12 || data?.expiryYear.length !== 4){\n // errors.expiryMonth = \"Invalid Expiration Date.\";\n // }\n else if (isNaN(month) || month < 1 || month > 12 || year.length !== 4) {\n errors.expiryMonth = \"Invalid Expiration Date.\";\n }\n\n if (!data?.cvv?.trim()) errors.cvv = \"CVV is required\";\n\n // Additional check for expired card\n if (data?.expiryMonth && data?.expiryYear && data.expiryMonth.length <= 2 && data.expiryYear.length === 4) {\n const month = parseInt(data.expiryMonth, 10);\n const year = parseInt(data.expiryYear, 10);\n const now = new Date();\n const currentMonth = now.getMonth() + 1; // JS month is 0-indexed\n const currentYear = now.getFullYear();\n\n if (year < currentYear || (year === currentYear && month < currentMonth)) {\n errors.expiryMonth = \"Card is expired\";\n }\n }\n }\n if (!data?.cardName?.trim()) errors.cardName = \"Card name is required\";\n if (!data?.zipCode?.trim()) errors.zipCode = \"ZIP code is required\";\n\n\n setCardError(errors);\n\n // Return true if there is any error\n\n\n return Object.keys(errors).length > 0;\n };\n\n\n const submitFunc = async (e: any) => {\n e.preventDefault();\n const el = document.activeElement;\n if (el instanceof HTMLElement) {\n el.blur();\n }\n if (loading2) return;\n debugger\n if (activetab == 'card') {\n const hasError = validateCardData()\n if (hasError) return\n else {\n\n let validCard = true;\n let validExpirationDate = true;\n let validCVV = true;\n\n if (paymentData?.paymentGateway !== 32) {\n let validCard = DatacapWebToken.validateCardNumber(cardData?.cardNumber.replaceAll(\" \", ''));\n let validExpirationDate = DatacapWebToken.validateExpirationDate(cardData?.expiryMonth, cardData?.expiryYear);\n let validCVV = DatacapWebToken.validateCVV(cardData?.cvv);\n let errors: Partial<Record<keyof CardDetails, string>> = {}\n if (!validCard) errors.cardNumber = \"Invalid card Number\"\n if (!validExpirationDate) errors.expiryMonth = \"Invalid Expiration Date.\"\n if (!validCVV) errors.cvv = \"Invalid CVV\"\n setCardError(errors)\n }\n\n if (validCard && validCVV && validExpirationDate) {\n // showLoader()\n setLoading2(true)\n try {\n\n let tokenCallback = async function (response: any) {\n\n if (response.Error) {\n setError(response.Error)\n // hideLoader();\n setLoading2(false)\n\n } else {\n let name = cardData?.cardName;\n let postal_code = cardData?.zipCode;\n\n response.name = name;\n response.postal_code = postal_code;\n response.fractalpayPublicKey = props?.merchantPublicKey\n response.amount = props?.amount\n response.order_id = props?.orderID\n response.preAuth_id = props?.preauthId || \"\"\n response.isCardSave = saveCardInfo\n response.customer_id = props?.customerId\n response.link_token = \"\"\n response.gateway_id = paymentData?.paymentGateway\n response.discount = props?.discount\n response.tax = props?.tax\n response.surcharge = props?.surcharge\n response.pass_fee = props?.pass_fee\n\n const myHeaders = new Headers();\n myHeaders.append(\"Content-Type\", \"application/json\");\n const requestOptions = {\n method: \"POST\",\n body: JSON.stringify(response),\n redirect: \"follow\"\n };\n\n socket.emit(\"sendMessage\", { ...requestOptions, \"isChargePreauth\": true, ...(props?.sessionToken && { sessionToken: props.sessionToken }) })\n socket.on('charge-preauth', (data: any) => {\n // console.log(data, \"datdata\");\n if (data?.status == \"Failed\") {\n setLoading2(false)\n setError(data?.message || \"Something went wrong. Please try again later.\")\n } else {\n setSuccess(true)\n setTranId(data?.data?.transaction_id)\n setLoading2(false)\n setCardData({\n cardName: \"\",\n cardNumber: \"\",\n expiryMonth: \"\",\n expiryYear: \"\",\n cvv: \"\",\n orderId: \"\",\n zipCode: \"\"\n })\n }\n })\n // try {\n // let apiResponse = await axios.post(`${baseUrl}preauth`, response)\n\n // // handleClose()\n // setCardData({\n // cardName: \"\",\n // cardNumber: \"\",\n // expiryMonth: \"\",\n // expiryYear: \"\",\n // cvv: \"\",\n // orderId: \"\",\n // zipCode: \"\"\n // })\n // console.log(apiResponse, '+++++++++++++++');\n\n // setSuccess(true)\n // setTranId(apiResponse?.data?.data?.transaction_id)\n // // hideLoader()\n // setLoading2(false)\n // } catch (err: any) {\n // console.log(err);\n // // hideLoader()\n // setLoading2(false)\n // setError(err?.response?.data?.message || err?.message || \"Something went wrong..\")\n\n // }\n\n }\n }\n if (paymentData?.paymentGateway === 32) {\n const requestOptions = {\n method: \"POST\",\n redirect: \"follow\"\n };\n try {\n let sesionResult = await axios.post(`${masterBaseUrl}api/v1/widget/generate-session`, requestOptions)\n // let expYear = (Number(cardData?.expiryYear)) % 100;\n // let cardNumber = cardData?.cardNumber;\n // cardNumber = cardNumber?.replace(/\\s+/g, '');\n // let track2_data = `${cardNumber}=${expYear}${cardData?.expiryMonth} ${cardData?.cvv}`;\n // const publicKey = forge.pki.publicKeyFromPem(sesionResult?.data?.data?.publicKeyPem);\n // const encrypted = publicKey.encrypt(track2_data, 'RSA-OAEP', {\n // md: forge.md.sha1.create(),\n // mgf1: {\n // md: forge.md.sha1.create()\n // }\n // });\n // const encryptedBase64 = forge.util.encode64(encrypted);\n // // Create Token\n // const myHeaders = {\n // \"Content-Type\": \"application/json\",\n // \"x-app-session-key\": sesionResult.data?.data?.session_key\n // }\n\n // const raw = JSON.stringify({\n // \"enc_track2_data\": `${encryptedBase64}`,\n // \"algorithm\": \"RSAES_OAEP_SHA_1\",\n // session_key: `${sesionResult?.data?.data?.session_key}`\n // });\n\n try {\n // const tokenizeData = await axios.post(`${fractalGatewayUrl}tokenizer/tokenize`, raw, { headers: myHeaders })\n\n const tokenizeData = await tokenizerRef.current.createToken({\n public_key_pem: sesionResult?.data?.data?.publicKeyPem || sesionResult?.data?.data?.public_key_pem,\n session_key: sesionResult?.data?.data?.session_key\n });\n\n const reqData = JSON.stringify({\n // ...tokenizeData?.data?.data,\n // isSaveCardChecked: saveCardInfo,\n ...tokenizeData,\n name: cardData?.cardName,\n postal_code: cardData?.zipCode,\n customer_id: props?.customerId,\n \"amount\": props?.amount,\n \"Token\": `${tokenizeData?.token}`,\n \"fractalpayPublicKey\": fractalpayClientKey,\n \"order_id\": props?.orderID,\n \"preAuth_id\": props?.preauthId || \"\",\n \"isCardSave\": saveCardInfo,\n 'discount': props?.discount,\n 'surcharge': props?.surcharge,\n 'tax': props?.tax,\n 'link_token': \"\",\n \"ExpirationYear\": cardData?.expiryYear,\n \"ExpirationMonth\": cardData?.expiryMonth,\n \"CVV\": cardData?.cvv,\n \"Last4\": tokenizeData?.last4,\n \"Brand\": tokenizeData?.brand,\n \"gateway_id\": paymentData?.paymentGateway,\n \"pass_fee\": props?.pass_fee,\n })\n\n\n\n let myHeaders2 = {\n \"Content-Type\": \"application/json\"\n }\n\n const requestOptions = {\n method: \"POST\",\n headers: myHeaders2,\n body: reqData,\n redirect: \"follow\"\n };\n\n socket.emit(\"sendMessage\", { ...requestOptions, \"isFractalPreauth\": true, ...(props?.sessionToken && { sessionToken: props.sessionToken }) })\n socket.on('fractal-charge-preauth', (data: any) => {\n if (data?.status == \"Failed\") {\n setLoading2(false)\n setError(data?.message || \"Something went wrong , Try again later\")\n } else {\n setTranId(data?.data?.transaction_id)\n setSuccess(true)\n setLoading2(false)\n }\n })\n\n // try {\n // let paymentRes = await axios.post(`${baseUrl}preauth`, reqData,\n // {\n // headers: myHeaders2\n // }\n // )\n // console.log(paymentRes);\n\n // if (paymentRes?.data?.result) {\n // setTranId(paymentRes?.data?.data?.transaction_id)\n // setSuccess(true)\n // // hideLoader()\n // setLoading2(false)\n // }\n\n // } catch (err: any) {\n // // hideLoader()\n // setLoading2(false)\n // setError(err?.response?.data?.message || err?.message || \"Something went wrong , Try again later\")\n // }\n } catch (err: any) {\n console.log(err);\n // hideLoader()\n setLoading2(false)\n setError(err?.response?.data?.message || err?.message || \"Something went wrong , Try again later\")\n }\n\n } catch (err: any) {\n // hideLoader()\n setLoading2(false)\n setError(err?.response?.data?.message || err?.message || \"Something went wrong , Try again later\")\n }\n } else {\n DatacapWebToken.requestToken(paymentData?.dctoken, \"PaymentForm\", tokenCallback);\n }\n } catch (err: any) {\n // Swal.fire(\"Error\", error.message || \"Something went wrong!\", \"error\");\n // hideLoader()\n setLoading2(false)\n setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n }\n }\n }\n }\n }\n\n\n const getPaymentDetails = async () => {\n showLoader()\n try {\n const data = {\n fractalpayPublicKey: fractalpayClientKey,\n \"customer_id\": props?.customerId,\n preauth: true,\n isReader: props?.isReader ? true : false\n\n\n }\n let paymentData = await axios.post(`${baseUrl}get-payment-details`, data)\n setPaymentData(paymentData?.data?.data)\n if (!paymentData?.data?.data?.paymentGateway) {\n handleClose()\n setError(\"Something went wrong.\")\n }\n if (paymentData?.data?.data?.card_list && paymentData?.data?.data?.card_list?.length > 0) {\n setActive('card')\n setCardList(paymentData?.data?.data?.card_list)\n if (paymentData?.data?.data?.card_list?.length > 0) {\n setActiveinCard('list')\n }\n // setActive('cardList')\n let primary_card = paymentData?.data?.data?.card_list?.filter((card: any) => card?.primary_card == 1)\n if (primary_card?.[0] && primary_card?.[0]?.payment_method_type == paymentData?.data?.data?.paymentGateway) {\n setSelectedCard(primary_card[0])\n }\n } else {\n setActive('card')\n\n }\n hideLoader()\n } catch (err: any) {\n console.log(err);\n // setActive('card')\n hideLoader()\n // handleClose()\n setError(err?.response?.data?.message || err?.message || \"Something went wrong\")\n }\n }\n\n const handlechargeCustomer = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.currentTarget.blur();\n if (loading2) return;\n let customer_id = props?.customerId\n let discount = props?.discount\n let surcharge = props?.surcharge\n let tax = props?.tax\n let fractalpayPublicKey = props?.merchantPublicKey\n let order_id = props?.orderID\n let amount = props?.amount\n let card_id = selectedCard?.id\n let card_type = selectedCard?.card_type\n let preAuth_id = props?.preauthId || ''\n\n if (fractalpayPublicKey && order_id && amount) {\n if (customer_id) {\n if (card_id) {\n let chargeobj = {\n amount,\n order_id,\n customer_id,\n card_id,\n fractalpayPublicKey,\n isCardSave: card_type != \"Bank\",\n discount,\n surcharge,\n tax,\n preAuth_id\n\n }\n let { isCardSave, ...rest } = chargeobj\n\n let endpoint = \"authorize-by-card\"\n\n let chargeurl = baseUrl + endpoint\n const headers = {\n 'Content-Type': 'application/json',\n ...(props?.sessionToken && { 'X-Session-Token': props.sessionToken })\n }\n // showLoader()\n setLoading2(true)\n try {\n let result = await axios.post(chargeurl, card_type == 'Bank' ? rest : chargeobj, { headers })\n if (result?.data?.result) {\n setTranId(result?.data?.data?.transaction_id)\n setSuccess(true)\n // hideLoader()\n setLoading2(false)\n }\n } catch (err: any) {\n // hideLoader()\n setLoading2(false)\n console.log(err);\n setError(err?.response?.data?.message || err?.response?.data?.status || \"Something went erong\")\n }\n } else {\n setError(\"Please Select A Card/ACH\")\n }\n } else {\n setError(\"Please Select Customer\")\n }\n } else {\n setError(\"Something went wrong.\")\n }\n }\n\n\n useEffect(() => {\n if (show && fractalpayClientKey) {\n getPaymentDetails()\n }\n }, [fractalpayClientKey, show])\n\n const handleDeleteCard = async (cardId: any) => {\n Swal.fire({\n icon: 'warning',\n text: 'Do you want to delete the card?',\n showCancelButton: true,\n confirmButtonText: 'Yes',\n cancelButtonText: 'No',\n reverseButtons: true,\n buttonsStyling: false,\n customClass: {\n confirmButton: 'swal2-confirm btn btn-dark',\n cancelButton: 'swal2-cancel btn btn-dark',\n popup: 'custom-swal-popup',\n icon: 'custom-swal-icon'\n }\n }).then(async (result) => {\n if (result.isConfirmed) {\n setLoading2(true)\n try {\n let obj = {\n card_id: cardId,\n customer_id: props?.customerId,\n fractalpayPublicKey: props?.merchantPublicKey\n }\n\n const res = await axios.post(`${baseUrl}delete-customer-card`, obj)\n // hideLoader()\n setLoading2(false)\n getPaymentDetails()\n Swal.fire({\n icon: 'success',\n title: 'Deleted!',\n text: 'The card has been deleted.',\n confirmButtonText: 'OK',\n customClass: {\n confirmButton: 'btn btn-dark'\n }\n });\n } catch (err) {\n // hideLoader()\n setLoading2(false)\n Swal.fire({\n icon: 'error',\n title: 'Error!',\n text: 'Failed to delete the card.',\n confirmButtonText: 'OK',\n customClass: {\n confirmButton: 'btn btn-dark'\n }\n });\n }\n\n\n }\n });\n };\n\n\n const getCardType = (card: string) => {\n let card_type = card?.toLowerCase();\n\n switch (card_type) {\n case 'visa':\n return visa;\n case 'mastercard':\n case 'mc':\n case 'm/c':\n return mastercard;\n case 'amex':\n case 'american express':\n case 'ae':\n return americanexp;\n case 'discover':\n case 'dcvr':\n return discover;\n case 'bank':\n return bank;\n default:\n return card;\n }\n };\n\n const handletabchange = (id: string) => {\n setActive(id)\n }\n\n\n const handleChargewithEMV = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.currentTarget.blur();\n if (loading2) return;\n let fractalpayPublicKey = props?.merchantPublicKey\n let customer_order_id = props?.orderID\n let amount = String(props?.amount)\n let customer_id = props?.customerId\n\n if (!selectedReader?.device_id) {\n setError(\"Please Select A Payment Device\")\n return\n }\n\n if (fractalpayPublicKey && customer_order_id && amount) {\n setLoading2(true)\n let obj = {\n amount,\n fractalpayPublicKey,\n customer_order_id,\n device_id: selectedReader?.device_id,\n customer_id: customer_id || \"\",\n is_auth: true\n }\n\n try {\n let response = await axios.post(`${baseUrl}charge-with-reader`, obj)\n\n\n if (response?.data?.result == true) {\n setTranId(response?.data?.data?.transaction_id)\n setSuccess(true)\n setLoading2(false)\n } else {\n setError(response?.data?.message || \"Something went wrong.\")\n setLoading2(false)\n }\n\n } catch (error: any) {\n setError(error?.response?.data?.message || \"Something went wrong.\")\n setLoading2(false)\n }\n } else {\n setError(\"Something went wrong.\")\n }\n }\n\n const handlepayment = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (activeList === 'card') {\n handlechargeCustomer(e)\n } else if (activeList === 'reader') {\n handleChargewithEMV(e)\n }\n }\n\n useEffect(() => {\n if (typeof FractalTokenizer === 'undefined') return;\n\n const tokenizer = new FractalTokenizer({\n styles: {},\n });\n\n \n }, []);\n\n\n return (\n <>\n <DataScript />\n <FractalTokenizerScript />\n <Chargewidgetstyles />\n <CardBankRadioStyles />\n <>\n {\n showButton && (\n <button className=\"paymentBtn\" onClick={handleShow}\n >\n PreAuth Payment\n </button>\n )\n }\n\n <CustomModal2\n open={show}\n onClose={handleClose}\n\n >\n\n\n {error && <div style={{ maxHeight: '606px', minHeight: '60vh', padding: '40px' }}>\n <ErrorCardMessage error={error} onClose={handleClose} />\n </div>}\n {success && <SuccessMsz onClose={handleClose} tranId={tranId} />}\n\n {!error && !success &&\n <>\n {(loading || loading2) && <Loader loading={loading || loading2} />}\n <div >\n <div className='frac-card-payment-page frac-form'>\n <div className='parent-pay-container'>\n <span className=\"request-payment-close-popup\" onClick={handleClose}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <g clipPath=\"url(#clip0_12425_52336)\">\n <path d=\"M9.46585 8.01168L15.6959 1.7814C16.1014 1.37615 16.1014 0.720912 15.6959 0.315659C15.2907 -0.0895946 14.6354 -0.0895946 14.2302 0.315659L7.99991 6.54593L1.76983 0.315659C1.36438 -0.0895946 0.709336 -0.0895946 0.304082 0.315659C-0.101361 0.720912 -0.101361 1.37615 0.304082 1.7814L6.53416 8.01168L0.304082 14.2419C-0.101361 14.6472 -0.101361 15.3024 0.304082 15.7077C0.506045 15.9098 0.771595 16.0114 1.03695 16.0114C1.30232 16.0114 1.56768 15.9098 1.76983 15.7077L7.99991 9.47742L14.2302 15.7077C14.4323 15.9098 14.6977 16.0114 14.9631 16.0114C15.2284 16.0114 15.4938 15.9098 15.6959 15.7077C16.1014 15.3024 16.1014 14.6472 15.6959 14.2419L9.46585 8.01168Z\" fill=\"#727272\" />\n </g>\n <defs>\n <clipPath id=\"clip0_12425_52336\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <div className=\"pay-container\" >\n\n <div className=\"pay-header pay-conatiner-one\" >\n\n <div className=\"pay-conatiner-one-first\">\n\n <div className=\"pay-logo-container\" >\n <div className='pay-main-logo'>\n <img src={paymentData?.logo} id='pay-logos' /></div>\n {/* <h1 className='pay-heading' >Pay</h1> */}\n\n {/* {cardList?.length > 0 && activetab !== \"cardList\" &&\n <button className='res-charge-payment-back-btn ' onClick={() => setActive('cardList')}> <IoArrowBack /> Back</button>\n } */}\n </div>\n <div className='amt-pay-con'>\n\n <div className='pay-amount-conatiner' >\n <small className='pay-payment-amount' >Select paymet type</small>\n </div>\n\n <div className='frac-card-bank-radio-main' >\n <CardBankRadio label='Card' amount={Number(props?.amount)?.toFixed(2)} value='card' onChange={handletabchange} activetab={activetab} />\n {\n props?.isReader && paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 && (\n <CardBankRadio label='Reader' amount={Number(props?.amount)?.toFixed(2)} value='reader' onChange={handletabchange} activetab={activetab} />\n )\n }\n </div>\n\n {/* <div className='pay-amount-conatiner' >\n <small className='pay-payment-amount' >Payment Amount</small>\n <strong className='pay-amount'>{formatUSD(Number(props?.amount)?.toFixed(2))}</strong>\n {cashDiscount && cashDiscount > 0 && <div style={{ width: '80%' }} className='frac-cash-discount' >\n <div className='frac-cashlabel' >Cash Discount</div>\n <div>{formatUSD(cashDiscount.toFixed(2))}</div>\n </div>}\n </div> */}\n {/* {\n activetab != \"ach\" &&\n <div style={{ display: 'flex', gap: '8px', margin: '8px 0' }}>\n <img src={visa} alt=\"\" width={33} />\n <img src={mastercard} width={33} alt=\"\" />\n <img src={americanexp} alt=\"\" width={33} />\n <img src={discover} width={33} alt=\"\" />\n </div>\n } */}\n </div>\n </div>\n <div className='pay-conatiner-one-last'>\n <img src={secure} alt=\"\" />\n <img src={pov} alt=\"\" />\n Secure payments powered by Fractal\n </div>\n\n\n\n\n <div>\n\n </div>\n </div>\n {!loading &&\n <div className=\"pay-tab pay-conatiner-two\">\n <div className=\"col-md-12\">\n <div id='payment-form-div' >\n {\n activetab !== \"cardList\" ?\n <div>\n {/* {cardList?.length > 0 &&\n <button className='charge-payment-back-btn ' onClick={() => setActive('cardList')}> <IoArrowBack /> Back</button>\n } */}\n\n <div className=\"\">\n\n <div className='res-pay-con'>\n\n <div className='pay-amount-conatiner' style={{ margin: 0 }} >\n <small className='pay-payment-amount' >Payment Amount</small>\n <strong className='pay-amount'>{formatUSD(Number(props?.amount)?.toFixed(2))}</strong>\n </div>\n\n\n <div >\n <div >\n\n <img src={visa} alt=\"\" width={35} style={{ paddingRight: '5px' }} />\n <img src={mastercard} width={35} alt=\"\" />\n </div>\n <div>\n\n <img src={americanexp} alt=\"\" width={35} style={{ paddingRight: '5px' }} />\n <img src={discover} width={35} alt=\"\" />\n </div>\n </div>\n\n </div>\n {\n cashDiscount && cashDiscount > 0 && <div className='res-pay-con frac-cash-discount' >\n {/* <div className='frac-cashlabel' >Cash Discount</div> */}\n <div className='frac-cashlabel' >{numberToBoolean(paymentData?.showSurcharge) ? 'Surcharge' : 'Cash Discount'}</div>\n <div>{formatUSD(cashDiscount.toFixed(2))}</div>\n </div>\n }\n\n\n </div>\n\n </div>\n :\n <div>\n <h6 className='charge-customer-name' style={{ marginBottom: '16px !important' }}> Charge {paymentData?.customer_name}</h6>\n <div className='res-pay-con'>\n\n <div className='pay-amount-conatiner' style={{ margin: 0 }} >\n <small className='pay-payment-amount' >Payment Amount</small>\n <strong className='pay-amount'>{formatUSD(Number(props?.amount)?.toFixed(2))}</strong>\n </div>\n\n\n <div >\n <div >\n\n <img src={visa} alt=\"\" width={35} style={{ paddingRight: '5px' }} />\n <img src={mastercard} width={35} alt=\"\" />\n </div>\n <div>\n\n <img src={americanexp} alt=\"\" width={35} style={{ paddingRight: '5px' }} />\n <img src={discover} width={35} alt=\"\" />\n </div>\n </div>\n\n </div>\n <h6 className='card-ach-heading' style={{ marginBottom: '10px !important' }}> Cards</h6>\n </div>\n }\n\n {/* Card Section */}\n {/* active tab home card list */}\n\n {/* active tab card */}\n <div id=\"card\" style={{ display: activetab === 'card' ? 'block' : 'none' }} className=\"tabcontent\">\n <div className=\"frac-card-payment\">\n <div className=\"frac-heading-card-wrap\">\n <div className='frac-backarrow'>\n {cardList?.length > 0 && activeinCard === 'form' &&\n <button className='charge-payment-back-btn ' onClick={() => setActiveinCard('list')}> <IoArrowBack /></button>\n }\n {\n cashDiscount && cashDiscount > 0 && <div className='res-pay-con frac-cash-discount' >\n {/* <div className='frac-cashlabel' >Cash Discount</div> */}\n <div className='frac-cashlabel' >{numberToBoolean(paymentData?.showSurcharge) ? 'Surcharge' : 'Cash Discount'}</div>\n <div>{formatUSD(cashDiscount.toFixed(2))}</div>\n </div>\n }\n </div>\n <h6 className='frac-card-payment-heading'>Card Authorization</h6>\n </div>\n {\n activetab != \"ach\" &&\n (<div style={{ display: 'flex', gap: '8px', margin: '8px 0px 19px 0px' }}>\n <img src={visa} alt=\"\" width={33} />\n <img src={mastercard} width={33} alt=\"\" />\n <img src={americanexp} alt=\"\" width={33} />\n <img src={discover} width={33} alt=\"\" />\n </div>)\n }\n </div>\n {\n activeinCard === 'list' ? (\n\n <>\n <CardList listHeading='Cards' paymentGateway={paymentData?.paymentGateway} ListItems={cardList} selectedCard={selectedCard} setSelectedCard={setSelectedCard} handleDeleteCard={handleDeleteCard} otherButtonLabel='Pay With Other Card' otherButtonAction={() => { setActiveinCard('form') }} />\n {/* <div className='pay-with-other-card' onClick={() => setActiveinCard('form')}>\n Pay With Other Card\n <img src={defaultcard} alt=\"\" />\n </div> */}\n <div className=\"form-group\" style={{ padding: '0' }} >\n <button className='pay-button' style={{ margin: '0px' }} type='submit' onClick={handlepayment}>{formatUSD(Number(props?.amount)?.toFixed(2))}</button>\n </div>\n </>\n\n // < div style={{ display: activetab === 'cardList' ? 'block' : 'none' }} className=\"tabcontent\">\n\n\n // <div className='card-lint-div-in'>\n // <div className='card-list-div'>\n\n // {paymentData?.card_list && paymentData?.card_list?.length > 0 &&\n // paymentData?.card_list?.map((card: any, index) => (\n // <div className='card-list-single-div' key={index}>\n // <div className=\"card-number-radio\">\n // <input disabled={paymentData?.paymentGateway != card?.payment_method_type} type=\"radio\" className='cardRadio' name=\"selected_card\" id=\"\" checked={selectedCard === card}\n // onChange={(e) => setSelectedCard(card)} />\n // <label htmlFor=\"\" className='card-number-last-four'>**** {card?.cardlastfourdigit}</label>\n // <h6 className='card-expiry-date'>{card?.expmonth}/{card?.expyear}</h6>\n // </div>\n // <div className=\"card-number-radio\">\n // <span className='visa-card'>\n // <img src={getCardType(card?.card_type)} alt=\"\" />\n // </span>\n // <span className='visa-card' style={{ cursor: \"pointer\" }} onClick={() => handleDeleteCard(card?.id)}>\n // <img src={trash} alt=\"\" />\n // </span>\n // </div>\n // </div>\n // ))\n // }\n // </div>\n // <div className='pay-with-other-card ' onClick={() => setActive('card')}>\n // Authorize With Other Card\n // <img src={defaultcard} alt=\"\" />\n // </div>\n // </div>\n\n\n // <div className=\"form-group\" >\n // <button className='pay-button' style={{ margin: '0px' }} type='submit' onClick={handlechargeCustomer}>{formatUSD(Number(props?.amount)?.toFixed(2))}</button>\n // </div>\n\n // </div>\n ) : (\n <div id=\"card\" style={{ display: activetab === 'card' ? 'block' : 'none' }} className=\"tabcontent\">\n\n {\n paymentData?.paymentGateway === 32 ? (\n <form\n id=\"paymentForm\"\n onSubmit={submitFunc}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && loading2) {\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n >\n <div className='ach-scrl' style={{ minHeight: cardList?.length > 0 ? \"462px\" : '520px', overflow: 'auto', marginRight: '5px' }}>\n <div className=\"form-group\">\n <label htmlFor=\"cardHolderName\" >Name on Card</label>\n <input type=\"text\" className='form-control' placeholder=\"John Doe\" value={cardData?.cardName || \"\"}\n onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange('cardName', value);\n }\n }} />\n {cardError?.cardName && <span className='error-span'>{cardError?.cardName}</span>}\n </div>\n {/* CARD NUMBER (Fractal Secure Field) */}\n <div className=\"form-group\">\n <label>CARD NUMBER</label>\n\n <div className=\"toggle-num-wrapper\">\n {show && paymentData?.paymentGateway === 32 && (\n <FractalFields\n fractalStyles={fractalStyles}\n tokenizerRef={tokenizerRef}\n />\n )}\n </div>\n </div>\n\n <div className=\"form-group\">\n <label htmlFor=\"OrderId\">Order ID / Description</label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"Enter Order id\" disabled value={props?.orderID} onChange={(e) => handleCardChange('orderId', e.target.value)}\n style={{ background: '#F6F6F7', color: '#727272' }} />\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"zip\">ZIP</label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"000000\" value={cardData?.zipCode ?? \"\"} onChange={(e) => handleCardChange('zipCode', e.target.value)} />\n {cardError?.zipCode && <span className='error-span'>{cardError?.zipCode}</span>}\n </div>\n\n\n\n {\n props?.customerId &&\n <div className='form-group'>\n\n <div className=\"frac-tooltip-mn\" style={{ display: 'flex', alignItems: 'center', gap: '10px', paddingTop: '10px' }}>\n\n <input\n type=\"checkbox\"\n id=\"save_card\"\n className=\"toggle-checkbox\"\n checked={saveCardInfo}\n onChange={(e) => setSaveCardInfo(e.target.checked)}\n />\n <label htmlFor=\"save_card\" className=\"toggle-label\"></label>\n <label htmlFor='save_card'>Save card for future payments </label>\n <div className=\"frac-tooltip-wrapper\">\n <div className=\"frac-tooltip-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <g clipPath=\"url(#clip0_12420_50192)\">\n <rect width=\"20\" height=\"20\" fill=\"white\"></rect>\n <circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"#E0DFE2\"></circle>\n <path d=\"M9.03406 12.0979V12.0072C9.04055 11.4153 9.10057 10.9443 9.21411 10.5943C9.3309 10.2442 9.49635 9.96102 9.71046 9.74463C9.92457 9.52824 10.1825 9.33095 10.4842 9.15274C10.6788 9.03182 10.854 8.89658 11.0097 8.74702C11.1655 8.59745 11.2887 8.42562 11.3796 8.2315C11.4704 8.03739 11.5158 7.82259 11.5158 7.58711C11.5158 7.3039 11.4477 7.05887 11.3114 6.85203C11.1752 6.64519 10.9935 6.48608 10.7664 6.3747C10.5426 6.26014 10.2928 6.20286 10.017 6.20286C9.76723 6.20286 9.52879 6.25378 9.3017 6.35561C9.07461 6.45744 8.88646 6.61655 8.73723 6.83294C8.588 7.04614 8.50203 7.3214 8.47932 7.65871H7C7.02271 7.08592 7.17032 6.60223 7.44282 6.20764C7.71533 5.80986 8.07543 5.50915 8.52311 5.30549C8.97405 5.10183 9.47202 5 10.017 5C10.6139 5 11.1363 5.10979 11.5839 5.32936C12.0316 5.54574 12.3788 5.84964 12.6253 6.24105C12.8751 6.62928 13 7.08274 13 7.60143C13 7.95784 12.9432 8.27924 12.8297 8.56563C12.7161 8.84885 12.5539 9.10183 12.3431 9.32458C12.1354 9.54733 11.8856 9.74463 11.5937 9.91647C11.3179 10.0851 11.0941 10.2601 10.9221 10.4415C10.7534 10.6229 10.6302 10.8377 10.5523 11.0859C10.4745 11.3341 10.4323 11.6412 10.4258 12.0072V12.0979H9.03406ZM9.76886 15C9.50284 15 9.27413 14.9077 9.08273 14.7232C8.89132 14.5354 8.79562 14.3095 8.79562 14.0453C8.79562 13.7844 8.89132 13.5617 9.08273 13.3771C9.27413 13.1893 9.50284 13.0955 9.76886 13.0955C10.0316 13.0955 10.2587 13.1893 10.4501 13.3771C10.6448 13.5617 10.7421 13.7844 10.7421 14.0453C10.7421 14.2204 10.6967 14.3811 10.6058 14.5274C10.5182 14.6706 10.4015 14.7852 10.2555 14.8711C10.1095 14.957 9.94728 15 9.76886 15Z\" fill=\"#161616\"></path>\n </g>\n <defs>\n <clipPath id=\"clip0_12420_50192\">\n <rect width=\"20\" height=\"20\" fill=\"white\"></rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n <div className=\"frac-tooltip-text\">\n <p>\n If checked, I agree to give the <b>{paymentData?.bname || 'merchant'}</b> permission to charge this credit card for agreed-upon purchases in the future.\n </p>\n </div>\n </div>\n </div>\n\n </div>\n }\n </div>\n\n <div className=\"form-group\" style={{ marginTop: '20px', padding: 0 }}>\n <button type=\"submit\" style={{ margin: 0 }} className='pay-button'>{formatUSD(Number(props?.amount)?.toFixed(2))}</button>\n </div>\n </form>\n ) : (\n <form id='PaymentForm' onSubmit={submitFunc} onKeyDown={\n (e) => {\n if (e.key === \"Enter\" && loading2) {\n e.preventDefault();\n e.stopPropagation();\n }\n }} >\n <div className='ach-scrl' style={{ minHeight: cardList?.length > 0 ? \"462px\" : '520px', overflow: 'auto', marginRight: '5px' }}>\n\n <div className=\"form-group\">\n <label htmlFor=\"cardHolderName\" >Name on Card</label>\n <input type=\"text\" className='form-control' placeholder=\"John Doe\" value={cardData?.cardName || \"\"}\n onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange('cardName', value);\n }\n }} />\n {cardError?.cardName && <span className='error-span'>{cardError?.cardName}</span>}\n </div>\n\n <div className=\"form-group\">\n <label htmlFor=\"cardNumber\">Card Number</label>\n <div className='toggle-num-wrapper'>\n <input className='form-control card-number-new' type='text' maxLength={19} inputMode=\"numeric\" placeholder='0000 0000 0000 0000' value={cardData?.cardNumber || \"\"} onChange={(e) => handleCardNumberChange(e)}\n data-token=\"card_number\"\n />\n\n <div className='card-crdi card-expiry-new'>\n <div className=\"exp-date-year-container\">\n <div className=\"exp-date form-group\">\n <input data-token=\"exp_month\" className=\"form-control required card-cvv-in\" type=\"text\" style={{ maxHeight: '36px' }}\n placeholder=\"MM\" maxLength={2} value={cardData?.expiryMonth || \"\"}\n onChange={(e) => handleCardChange('expiryMonth', e.target.value)} />\n </div>\n <div className=\"exp-year form-group\">\n <input data-token=\"exp_year\" className=\"form-control required card-cvv-in\" type=\"text\"\n style={{ maxHeight: '36px' }}\n placeholder=\"YYYY\" maxLength={4} value={cardData?.expiryYear || \"\"} onChange={(e) => handleCardChange('expiryYear', e.target.value)} />\n </div>\n <div className=\"security-digit form-group\">\n <input data-token=\"cvv\" className=\"form-control required card-cvv-in\" type=\"text\"\n style={{ maxHeight: '36px' }}\n maxLength={4} placeholder=\"CVC\" value={cardData?.cvv || \"\"} onChange={(e) => handleCardChange('cvv', e.target.value)}\n />\n </div>\n </div>\n </div>\n {cardError?.cardNumber &&\n <span className='error-span'>{cardError?.cardNumber}</span>\n }\n <p style={{ margin: '0' }}>\n {cardError?.expiryMonth || cardError?.expiryYear ?\n <span className='error-span' style={{ paddingRight: '4px' }}>{cardError?.expiryMonth}</span>\n : \"\"\n }\n {cardError?.cvv &&\n <span className='error-span' >{cardError?.cvv}</span>\n\n }\n </p>\n\n </div>\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"OrderId\">Order ID / Description</label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"Enter Order id\" disabled value={props?.orderID} onChange={(e) => handleCardChange('orderId', e.target.value)}\n style={{ background: '#F6F6F7', color: '#727272' }} />\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"zip\">ZIP</label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"000000\" value={cardData?.zipCode ?? \"\"} onChange={(e) => handleCardChange('zipCode', e.target.value)} />\n {cardError?.zipCode && <span className='error-span'>{cardError?.zipCode}</span>}\n </div>\n\n\n\n {\n props?.customerId &&\n <div className='form-group'>\n\n <div className=\"frac-tooltip-mn\" style={{ display: 'flex', alignItems: 'center', gap: '10px', paddingTop: '10px' }}>\n\n <input\n type=\"checkbox\"\n id=\"save_card\"\n className=\"toggle-checkbox\"\n checked={saveCardInfo}\n onChange={(e) => setSaveCardInfo(e.target.checked)}\n />\n <label htmlFor=\"save_card\" className=\"toggle-label\"></label>\n <label htmlFor='save_card'>Save card for future payments </label>\n <div className=\"frac-tooltip-wrapper\">\n <div className=\"frac-tooltip-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <g clipPath=\"url(#clip0_12420_50192)\">\n <rect width=\"20\" height=\"20\" fill=\"white\"></rect>\n <circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"#E0DFE2\"></circle>\n <path d=\"M9.03406 12.0979V12.0072C9.04055 11.4153 9.10057 10.9443 9.21411 10.5943C9.3309 10.2442 9.49635 9.96102 9.71046 9.74463C9.92457 9.52824 10.1825 9.33095 10.4842 9.15274C10.6788 9.03182 10.854 8.89658 11.0097 8.74702C11.1655 8.59745 11.2887 8.42562 11.3796 8.2315C11.4704 8.03739 11.5158 7.82259 11.5158 7.58711C11.5158 7.3039 11.4477 7.05887 11.3114 6.85203C11.1752 6.64519 10.9935 6.48608 10.7664 6.3747C10.5426 6.26014 10.2928 6.20286 10.017 6.20286C9.76723 6.20286 9.52879 6.25378 9.3017 6.35561C9.07461 6.45744 8.88646 6.61655 8.73723 6.83294C8.588 7.04614 8.50203 7.3214 8.47932 7.65871H7C7.02271 7.08592 7.17032 6.60223 7.44282 6.20764C7.71533 5.80986 8.07543 5.50915 8.52311 5.30549C8.97405 5.10183 9.47202 5 10.017 5C10.6139 5 11.1363 5.10979 11.5839 5.32936C12.0316 5.54574 12.3788 5.84964 12.6253 6.24105C12.8751 6.62928 13 7.08274 13 7.60143C13 7.95784 12.9432 8.27924 12.8297 8.56563C12.7161 8.84885 12.5539 9.10183 12.3431 9.32458C12.1354 9.54733 11.8856 9.74463 11.5937 9.91647C11.3179 10.0851 11.0941 10.2601 10.9221 10.4415C10.7534 10.6229 10.6302 10.8377 10.5523 11.0859C10.4745 11.3341 10.4323 11.6412 10.4258 12.0072V12.0979H9.03406ZM9.76886 15C9.50284 15 9.27413 14.9077 9.08273 14.7232C8.89132 14.5354 8.79562 14.3095 8.79562 14.0453C8.79562 13.7844 8.89132 13.5617 9.08273 13.3771C9.27413 13.1893 9.50284 13.0955 9.76886 13.0955C10.0316 13.0955 10.2587 13.1893 10.4501 13.3771C10.6448 13.5617 10.7421 13.7844 10.7421 14.0453C10.7421 14.2204 10.6967 14.3811 10.6058 14.5274C10.5182 14.6706 10.4015 14.7852 10.2555 14.8711C10.1095 14.957 9.94728 15 9.76886 15Z\" fill=\"#161616\"></path>\n </g>\n <defs>\n <clipPath id=\"clip0_12420_50192\">\n <rect width=\"20\" height=\"20\" fill=\"white\"></rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n <div className=\"frac-tooltip-text\">\n <p>\n If checked, I agree to give the <b>{paymentData?.bname || 'merchant'}</b> permission to charge this credit card for agreed-upon purchases in the future.\n </p>\n </div>\n </div>\n </div>\n\n </div>\n }\n\n </div>\n\n <div className=\"form-group\" style={{ marginTop: '20px', padding: 0 }}>\n <button type=\"submit\" style={{ margin: 0 }} className='pay-button'>{formatUSD(Number(props?.amount)?.toFixed(2))}</button>\n </div>\n </form>\n )\n }\n\n </div>\n )\n }\n </div>\n\n {/* active tab Pax if any */}\n <div id=\"reader\" style={{ display: activetab === 'reader' ? 'block' : 'none' }} className=\"tabcontent\">\n <div className=\"frac-card-payment\">\n <div className=\"frac-heading-card-wrap\">\n <div className='frac-backarrow'>\n {\n cashDiscount && cashDiscount > 0 && <div className='res-pay-con frac-cash-discount' >\n {/* <div className='frac-cashlabel' >Cash Discount</div> */}\n <div className='frac-cashlabel' >{numberToBoolean(paymentData?.showSurcharge) ? 'Surcharge' : 'Cash Discount'}</div>\n <div>{formatUSD(cashDiscount.toFixed(2))}</div>\n </div>\n }\n </div>\n <h6 className='frac-card-payment-heading'>Reader Authorization</h6>\n </div>\n </div>\n <PaxList listHeading='Reader' ListItems={paymentData?.paymentDeviceList} selectedPax={selectedReader} setSlectedPax={setSelectedReader} />\n\n <button onClick={handleChargewithEMV} className='pay-button'>${Number(props?.amount)?.toFixed(2)}</button>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n\n </div>\n </>\n }\n </CustomModal2>\n </>\n </>\n )\n}","import React, { useEffect, useRef, useState } from 'react'\nimport DataScript from '../Datascript';\nimport Swal from 'sweetalert2';\nimport axios, { AxiosError } from 'axios';\nimport { baseUrl, masterBaseUrl, fractalGatewayUrl } from '../baseurl';\nimport CustomModal2 from '../CustomModal/CustomModal2';\nimport Loader from '../Loader/Loader';\nimport SuccessMsz from '../SuccessMessage/SuccessMsz';\nimport AddCardStyle from './AddCardStyles';\nimport CustomModal from '../CustomModal/CustomModal';\nimport SuccessCardMsz from '../SuccessCardMessage/SuccessCardMsz';\nimport { HandleSubmit } from '../SuccessMessage/HandleSubmit';\nimport ErrorCardMessage from '../ErrorCardMessage/ErrorCardMessage';\nimport { formatCardNumberWithCursor } from '@/app/utils/Common';\nimport FractalTokenizerScript from '../FractalTokenizer';\nimport FractalFields from '../Atoms/FractalForm/FractalFields';\ndeclare let DatacapWebToken: any;\ndeclare let forge: any;\n\ntype Props = {\n merchantPublicKey: string;\n customerId?: string;\n}\n\nexport function AddCardEasyPay(props: Props) {\n const [loading, setLoading] = useState<boolean>(false);\n const [success, setSuccess] = useState<boolean>(false);\n const [error, setError] = useState<string>(\"\");\n const [show, setShow] = useState<boolean>(false);\n const card_number_ref = useRef<HTMLInputElement>(null)\n const exp_month_ref = useRef<HTMLInputElement>(null)\n const exp_year_ref = useRef<HTMLInputElement>(null)\n const cvv_ref = useRef<HTMLInputElement>(null)\n const name_ref = useRef<HTMLInputElement>(null)\n\n const tokenizerRef = useRef<any>(null);\n\n const fractalStyles = {\n input: {\n 'font-family': \"'Inter', sans-serif\",\n 'font-size': '14px',\n 'font-weight': '500',\n 'color': '#35254D',\n 'background-color': 'transparent',\n 'padding': '0px',\n 'appearance': 'none',\n 'outline': 'none',\n 'border': 'none',\n 'box-shadow': 'none'\n },\n ':focus': {\n 'color': '#35254D',\n 'outline': 'none',\n 'border': 'none'\n },\n '::placeholder': {\n 'color': '#35254D'\n }\n };\n\n interface Card {\n id: string;\n firstname: string;\n lastname: string;\n primary_card: number;\n expmonth: number;\n expyear: number;\n card_type: string;\n cardlastfourdigit: string;\n }\n\n interface PaymentData {\n paymentGateway: number;\n isSkyFiAccount: boolean;\n logo: string;\n bname: string;\n card_list: Card[];\n customer_name: string;\n is_primary: string;\n dctoken: string\n }\n interface CardDetails {\n cardName: string,\n cardNumber: string;\n expiryMonth: string;\n expiryYear: string;\n cvv: string;\n orderId: string;\n zipCode: string;\n }\n\n const [cardData, setCardData] = useState<CardDetails>()\n const [cardError, setCardError] = useState<Partial<Record<keyof CardDetails, string>>>({});\n const [paymentData, setPaymentData] = useState<PaymentData>()\n\n const showLoader = () => setLoading(true);\n const hideLoader = () => setLoading(false);\n\n const showError = (msz: string) => {\n Swal.fire({\n icon: 'error',\n text: msz,\n customClass: {\n popup: 'custom-z-index'\n }\n });\n };\n\n\n\n // for payment popup\n const handleClose = () => {\n setShow(false);\n setSuccess(false)\n setError(\"\")\n setCardData({\n cardName: \"\",\n cardNumber: \"\",\n expiryMonth: \"\",\n expiryYear: \"\",\n cvv: \"\",\n orderId: \"\",\n zipCode: \"\"\n })\n // setActive('cardList')\n };\n const handleShow = () => setShow(true);\n\n const handleCloseSeccess = () => {\n handleClose()\n }\n\n const handleCardChange = (field: string, value: any) => {\n const name = field\n const numericFields = [\"expiryMonth\", \"expiryYear\", \"zipCode\", \"cvv\"];\n\n // console.log(name, value?.length, \"dfih\", name === 'expiryMonth' && value?.length === 2);\n\n if (name === 'expiryMonth' && value?.length === 2) {\n exp_year_ref?.current?.focus();\n }\n\n if (name === 'expiryYear' && value?.length === 4) {\n cvv_ref?.current?.focus();\n }\n\n if (name === 'cvv' && value?.length === 3) {\n name_ref?.current?.focus();\n }\n\n\n\n if (numericFields.includes(name)) {\n // Agar value empty hai (backspace ke liye) ya sirf digits hain, tabhi set karenge\n if (value === \"\" || /^[0-9]+$/.test(value)) {\n setCardError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setCardData((prev: any) => ({\n ...prev,\n [name]: value,\n }));\n }\n return;\n }\n\n setCardError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n console.log(value, name);\n setCardData((prev: any) => ({\n ...prev, [name]: value\n }))\n\n }\n\n const handleCardNumberChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target;\n const rawValue = input.value.replace(/\\D/g, \"\"); // Remove all non-digits\n\n const { formatted, cursor } = formatCardNumberWithCursor(\n input.value,\n input.selectionStart ?? 0\n );\n setCardError((prev: any) => ({\n ...prev,\n cardNumber: \"\"\n }))\n\n setCardData((prev: any) => ({\n ...prev,\n cardNumber: formatted\n }));\n\n console.log(rawValue?.length, \"length\");\n\n if (rawValue?.length === 16) {\n exp_month_ref?.current?.focus()\n }\n\n requestAnimationFrame(() => {\n input.setSelectionRange(cursor, cursor);\n });\n\n };\n\n const validateCardData = (): boolean => {\n const errors: Partial<Record<keyof CardDetails, string>> = {};\n const data = cardData\n if (paymentData?.paymentGateway !== 32) {\n const month = parseInt(data?.expiryMonth || \"\", 10);\n const year = data?.expiryYear || \"\";\n if (!data?.cardNumber?.trim()) errors.cardNumber = \"Card number is required\";\n if (!data?.expiryMonth?.trim()) {\n errors.expiryMonth = \"Expiration month is required\"\n } else if (Number(data?.expiryMonth) > 12 || Number(data?.expiryMonth) < 1) {\n errors.expiryMonth = \"Invalid Expiration Month.\"\n }\n if (!data?.expiryYear?.trim()) {\n errors.expiryYear = \"Expiration year is required\"\n } else if (data?.expiryYear?.trim().length !== 4 || Number(data?.expiryYear) < 2025) {\n errors.expiryYear = \"Invalid Expiration Year.\"\n }\n\n else if (isNaN(month) || month < 1 || month > 12 || year.length !== 4) {\n errors.expiryMonth = \"Invalid Expiration Date.\";\n }\n\n if (!data?.cvv?.trim()) errors.cvv = \"CVC is required\";\n\n // Additional check for expired card\n if (data?.expiryMonth && data?.expiryYear && data.expiryMonth.length <= 2 && data.expiryYear.length === 4) {\n const month = parseInt(data.expiryMonth, 10);\n const year = parseInt(data.expiryYear, 10);\n const now = new Date();\n const currentMonth = now.getMonth() + 1; // JS month is 0-indexed\n const currentYear = now.getFullYear();\n\n if (year < currentYear || (year === currentYear && month < currentMonth)) {\n errors.expiryMonth = \"Card is expired\";\n }\n }\n\n }\n\n if (!data?.cardName?.trim()) errors.cardName = \"Card name is required\";\n // if (!data?.zipCode?.trim()) errors.zipCode = \"ZIP code is required\";\n setCardError(errors);\n\n // Return true if there is any error\n\n\n return Object.keys(errors).length > 0;\n };\n\n\n const getPaymentDetails = async () => {\n showLoader()\n try {\n const data = {\n fractalpayPublicKey: props?.merchantPublicKey,\n \"customer_id\": props?.customerId,\n addcard: true\n }\n let paymentData = await axios.post(`${baseUrl}get-payment-details`, data)\n console.log(paymentData);\n setPaymentData(paymentData?.data?.data)\n if (!paymentData?.data?.data?.paymentGateway) {\n handleClose()\n setError(\"Something went wrong.\")\n }\n hideLoader()\n\n\n } catch (err: any) {\n console.log(err);\n hideLoader()\n handleClose()\n setError(\"Something went wrong.\")\n }\n }\n\n useEffect(() => {\n if (props?.merchantPublicKey) {\n\n getPaymentDetails()\n }\n }, [props?.merchantPublicKey])\n\n\n const addCardFunc = async (e: any) => {\n e.preventDefault();\n e.currentTarget.blur();\n const el = document.activeElement;\n if (el instanceof HTMLElement) {\n el.blur();\n }\n if (loading) return;\n const hasError = validateCardData()\n console.log(cardData)\n if (hasError) return\n else {\n\n let validCard = true;\n let validExpirationDate = true;\n let validCVV = true;\n\n if (paymentData?.paymentGateway !== 32) {\n let validCard = DatacapWebToken.validateCardNumber(cardData?.cardNumber.replaceAll(\" \", ''));\n let validExpirationDate = DatacapWebToken.validateExpirationDate(cardData?.expiryMonth, cardData?.expiryYear);\n let validCVV = DatacapWebToken.validateCVV(cardData?.cvv);\n let errors: Partial<Record<keyof CardDetails, string>> = {}\n if (!validCard) errors.cardNumber = \"Invalid card Number\"\n if (!validExpirationDate) errors.expiryMonth = \"Invalid Expiration Date.\"\n if (!validCVV) errors.cvv = \"Invalid CVV\"\n setCardError(errors)\n }\n\n if (validCard && validCVV && validExpirationDate) {\n showLoader()\n try {\n let getTokenCallback = async function (token: any) {\n console.log(token)\n if (token.Error) {\n console.log(token?.Error);\n setError(token.Error)\n hideLoader();\n } else {\n const reqData = {\n userId: props?.customerId,\n cardName: cardData?.cardName,\n zip: cardData?.zipCode,\n fractalpayPublicKey: props?.merchantPublicKey,\n token: token\n }\n try {\n let apiResponse = await axios.post(`${baseUrl}add-card`, reqData)\n console.log(apiResponse);\n if (apiResponse?.data?.result) {\n setSuccess(true)\n hideLoader()\n setCardData({\n cardName: \"\",\n cardNumber: \"\",\n expiryMonth: \"\",\n expiryYear: \"\",\n cvv: \"\",\n orderId: \"\",\n zipCode: \"\"\n })\n HandleSubmit(e, 'close', \"\")\n }\n // let formData = {\n // fractalpayPublicKey: props?.merchantPublicKey,\n // wallet_id: '',\n // card_number: cardData?.cardNumber.replaceAll(\" \", ''),\n // exp_month: cardData?.expiryMonth,\n // exp_year: cardData?.expiryYear?.slice(-2),\n // cvv: cardData?.cvv,\n // }\n // try {\n // const result = await axios.post(`${baseUrl}link-wallet`, formData)\n // console.log(result);\n // setSuccess(true)\n // hideLoader()\n // setCardData({\n // cardName: \"\",\n // cardNumber: \"\",\n // expiryMonth: \"\",\n // expiryYear: \"\",\n // cvv: \"\",\n // orderId: \"\",\n // zipCode: \"\"\n // })\n // HandleSubmit(e, 'close', \"\")\n // } catch (err: any) {\n // console.log(err);\n // hideLoader()\n // setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n // }\n } catch (err: any) {\n console.log(err);\n hideLoader()\n setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n }\n }\n }\n if (paymentData?.paymentGateway === 32) {\n const requestOptions = {\n method: \"POST\",\n redirect: \"follow\"\n };\n try {\n let sesionResult = await axios.post(`${masterBaseUrl}api/v1/widget/generate-session`, requestOptions)\n // let expYear = (Number(cardData?.expiryYear)) % 100;\n // let cardNumber = cardData?.cardNumber;\n // cardNumber = cardNumber?.replace(/\\s+/g, '');\n // let track2_data = `${cardNumber}=${expYear}${cardData?.expiryMonth} ${cardData?.cvv}`;\n // const publicKey = forge.pki.publicKeyFromPem(sesionResult?.data?.data?.publicKeyPem);\n // const encrypted = publicKey.encrypt(track2_data, 'RSA-OAEP', {\n // md: forge.md.sha1.create(),\n // mgf1: {\n // md: forge.md.sha1.create()\n // }\n // });\n // const encryptedBase64 = forge.util.encode64(encrypted);\n // // Create Token\n // const myHeaders = {\n // \"Content-Type\": \"application/json\",\n // \"x-app-session-key\": sesionResult.data?.data?.session_key\n // }\n\n // const raw = JSON.stringify({\n // \"enc_track2_data\": `${encryptedBase64}`,\n // \"algorithm\": \"RSAES_OAEP_SHA_1\",\n // session_key: `${sesionResult?.data?.data?.session_key}`\n // });\n\n try {\n // const tokenizeData = await axios.post(`${fractalGatewayUrl}tokenizer/tokenize`, raw, { headers: myHeaders })\n\n const tokenizeData = await tokenizerRef.current.createToken({\n public_key_pem: sesionResult?.data?.data?.publicKeyPem || sesionResult?.data?.data?.public_key_pem,\n session_key: sesionResult?.data?.data?.session_key\n });\n const reqData = JSON.stringify({\n ...tokenizeData,\n cvv: cardData?.cvv,\n cardName: cardData?.cardName,\n zip: cardData?.zipCode,\n userId: props?.customerId,\n fractalpayPublicKey: props?.merchantPublicKey,\n })\n\n\n let myHeaders2 = {\n \"Content-Type\": \"application/json\"\n }\n\n\n try {\n let addCardRes = await axios.post(`${baseUrl}add-card`, reqData,\n {\n headers: myHeaders2\n }\n )\n console.log((addCardRes));\n if (addCardRes?.data?.result) {\n setSuccess(true)\n hideLoader()\n HandleSubmit(e, 'close', \"\")\n }\n\n } catch (err: any) {\n hideLoader()\n setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n }\n } catch (err: any) {\n hideLoader()\n setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n }\n\n } catch (err: any) {\n hideLoader()\n setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n }\n } else {\n if (typeof DatacapWebToken !== 'undefined') {\n DatacapWebToken.requestToken(paymentData?.dctoken, \"creditCardForm\", getTokenCallback);\n }\n }\n } catch (err: any) {\n hideLoader()\n setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n }\n }\n }\n }\n\n useEffect(() => {\n if (typeof FractalTokenizer === 'undefined') return;\n\n const tokenizer = new FractalTokenizer({\n styles: {},\n });\n\n\n }, []);\n\n return (\n\n <>\n {/* data cap */}\n <DataScript />\n {/* Fractal Gateway */}\n <FractalTokenizerScript />\n {/* STYLE */}\n <AddCardStyle />\n\n\n {/* <button className=\"paymentBtn\" onClick={handleShow}\n >\n Pay\n </button> */}\n\n\n {/* <CustomModal\n open={show}\n onClose={handleClose}\n\n > */}\n\n <Loader loading={loading} />\n\n {\n error && <div style={{ maxHeight: '606px', minHeight: '60vh', padding: '40px' }}>\n <ErrorCardMessage error={error} onClose={handleClose} />\n </div>\n }\n\n {success && <SuccessCardMsz onClose={handleCloseSeccess} />}\n {!error && !success &&\n <>\n\n\n\n <div\n className=\"container-creditcard add-card modal-content\"\n id=\"add-credit-card-panel\" style={{ margin: 'auto' }}\n >\n {\n paymentData?.paymentGateway === 32 ? (\n <form\n id=\"paymentForm\"\n onSubmit={addCardFunc}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && loading) {\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n >\n <div style={{ maxHeight: '350px', minHeight: '0' }} className='card-scrl'>\n <div className=\"form-group\" style={{ marginTop: '0', marginBottom: '10px' }}>\n <label htmlFor=\"cardNumber\" >Card Number</label>\n {paymentData?.paymentGateway === 32 &&\n <FractalFields\n fractalStyles={fractalStyles}\n tokenizerRef={tokenizerRef}\n isAddCard={true}\n />\n }\n </div>\n <div className=\"form-group\" style={{ marginTop: '0' }}>\n <label htmlFor=\"cardholderName\">Name on card<sup style={{fontSize : '12px'}}>*</sup></label>\n <input\n type=\"text\"\n id=\"cardholderName\"\n name=\"cardholderName\"\n placeholder=\"Name on card\"\n value={cardData?.cardName || \"\"}\n onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange('cardName', value);\n }\n }}\n ref={name_ref}\n />\n {cardError?.cardName && <span className='error-span' style={{ color: 'red', fontSize: '12px' }}>{cardError?.cardName}</span>}\n </div>\n <div className=\"form-group\" style={{ marginTop: '0' }}>\n <label htmlFor=\"zipcode\">Zip</label>\n <input type=\"text\"\n id=\"\"\n name=\"zipcode\"\n placeholder=\"Zip\"\n value={cardData?.zipCode ?? \"\"}\n onChange={(e) => handleCardChange('zipCode', e.target.value)} />\n {cardError?.zipCode && <span className='error-span' style={{ color: 'red', fontSize: '12px' }}>{cardError?.zipCode}</span>}\n </div>\n </div>\n <input\n type=\"submit\"\n // onClick=\"handleCardFormSubmission()\"\n className=\"idle-green-btn w-100\"\n defaultValue=\"Submit\"\n disabled={loading}\n />\n </form>\n ) : (\n <form id=\"creditCardForm\" onSubmit={addCardFunc} onKeyDown={\n (e) => {\n if (e.key === \"Enter\" && loading) {\n e.preventDefault();\n e.stopPropagation();\n }\n }}>\n\n <div style={{ maxHeight: '350px', minHeight: '0' }} className='card-scrl'>\n\n\n <div className=\"form-group\" style={{ marginTop: '0', marginBottom: '10px' }}>\n <label htmlFor=\"cardNumber\" >Card Number</label>\n <input\n type=\"text\"\n data-token=\"card_number\"\n placeholder=\"Enter card number\"\n maxLength={19}\n inputMode=\"numeric\"\n value={cardData?.cardNumber || \"\"}\n onChange={(e) => handleCardNumberChange(e)}\n ref={card_number_ref}\n // onInput=\"formatCardNumber(this)\"\n // required=\"\"\n />\n {cardError?.cardNumber &&\n <span className='error-span' style={{ color: 'red', fontSize: '12px' }}>{cardError?.cardNumber}</span>\n }\n <br />\n </div>\n {/* <div class=\"form-group\"> */}\n <div className=\"card-dtl\">\n <div className=\"exp-cvc-container\" style={{ margin: '0' }}>\n <div className=\"form-group\" style={{ marginTop: '0' }}>\n <label htmlFor=\"expMonth\">MM</label>\n <input\n data-token=\"exp_month\"\n className=\"form-control required\"\n type=\"text\"\n placeholder=\"MM\"\n maxLength={2}\n value={cardData?.expiryMonth || \"\"}\n onChange={(e) => handleCardChange('expiryMonth', e.target.value)}\n ref={exp_month_ref}\n\n />\n {cardError?.expiryMonth &&\n <span className='error-span' style={{ color: 'red', fontSize: '12px' }}>{cardError?.expiryMonth}</span>\n }\n </div>\n <div className=\"form-group\" style={{ marginTop: '0' }}>\n <label htmlFor=\"expYear\">YYYY</label>\n <input\n data-token=\"exp_year\"\n className=\"form-control required\"\n type=\"text\"\n placeholder=\"YYYY\"\n maxLength={4}\n value={cardData?.expiryYear || \"\"}\n onChange={(e) => handleCardChange('expiryYear', e.target.value)}\n ref={exp_year_ref}\n />\n {cardError?.expiryYear &&\n <span className='error-span' style={{ color: 'red', fontSize: '12px' }}>{cardError?.expiryYear}</span>\n }\n </div>\n <div className=\"form-group\" style={{ marginTop: '0' }}>\n <label htmlFor=\"cvc\">CVC</label>\n <input\n data-token=\"cvv\"\n className=\"form-control required\"\n type=\"text\"\n placeholder=\"CVC\"\n maxLength={4}\n value={cardData?.cvv || \"\"}\n onChange={(e) => handleCardChange('cvv', e.target.value)}\n ref={cvv_ref}\n />\n {cardError?.cvv &&\n <span className='error-span' style={{ color: 'red', fontSize: '12px' }}>{cardError?.cvv}</span>\n\n }\n {/* <span id=\"cvv-error\" style={{ color: \"red\", display: \"none\" }} /> */}\n </div>\n </div>\n </div>\n <div className=\"form-group\" style={{ marginTop: '0' }}>\n <label htmlFor=\"cardholderName\">Name on card<sup style={{fontSize : '12px'}} >*</sup></label>\n <input\n type=\"text\"\n id=\"cardholderName\"\n name=\"cardholderName\"\n placeholder=\"Name on card\"\n value={cardData?.cardName || \"\"}\n onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange('cardName', value);\n }\n }}\n ref={name_ref}\n />\n {cardError?.cardName && <span className='error-span' style={{ color: 'red', fontSize: '12px' }}>{cardError?.cardName}</span>}\n </div>\n <div className=\"form-group\" style={{ marginTop: '0' }}>\n <label htmlFor=\"zipcode\">Zip</label>\n <input type=\"text\"\n id=\"\"\n name=\"zipcode\"\n placeholder=\"Zip\"\n value={cardData?.zipCode ?? \"\"}\n onChange={(e) => handleCardChange('zipCode', e.target.value)} />\n {cardError?.zipCode && <span className='error-span' style={{ color: 'red', fontSize: '12px' }}>{cardError?.zipCode}</span>}\n </div>\n </div>\n\n\n <input\n type=\"submit\"\n // onClick=\"handleCardFormSubmission()\"\n className=\"idle-green-btn w-100\"\n defaultValue=\"Submit\"\n disabled={loading}\n />\n </form>\n )\n }\n\n </div>\n\n </>\n }\n {/* </CustomModal> */}\n </>\n )\n}\n","import React from \"react\";\n\nexport default function AddCardStyle() {\n const primarycolor = \"#000\";\n const primarybgcolor = \"#fff\";\n const primarybodycolor = \"#212529\";\n const primarybordercolor = \"#dee2e6\";\n return (\n <style>\n {`\n .add-card {\n max-width:380px;\n padding: 0 20px\n }\n .add-card .form-group {\n margin-bottom: 5px;\n }\n\n .add-card .idle-green-btn {\n color: white;\n background-color: rgba(97, 198, 153, 1);\n border-radius: 100px;\n border: none !important;\n padding: 12px 24px 12px 24px;\n width: 100%;\n cursor:pointer\n }\n\n .add-card .idle-green-btn:hover {\n background-color: rgba(65, 164, 120, 1) !important;\n }\n\n .add-card .idle-green-btn:focus {\n border: 2px solid rgba(90, 172, 136, 1) !important;\n background-color: rgba(97, 198, 153, 1) !important;\n padding: 10px 24px 10px 24px;\n }\n \n .add-card .container-creditcard {\n width: 426px;\n padding: 24px;\n background-color: #FFFFFF;\n border-radius: 24px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n }\n .add-card .container-creditcard .request-payment-close-popup{\n position:absolute;\n // background:red\n }\n \n .add-card h2 {\n font-size: 24px;\n line-height: 32px;\n font-weight: 500;\n color: #35254D;\n margin-bottom: 24px;\n text-align: center;\n }\n .add-card .form-group {\n margin-top: 20px;\n margin-bottom : 10px\n }\n \n .add-card .credit-card {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: flex-start;\n padding: 20px;\n background-color: #35254D;\n color: #FFFFFF;\n border-radius: 15px;\n margin-bottom: 20px;\n }\n \n .add-card .credit-card .chip {\n width: 50px;\n height: 30px;\n background-image: url('https://raw.githubusercontent.com/danieldasilvaa/creditcard-html-css/main/chip.png');\n background-size: cover;\n margin-bottom: 10px;\n }\n \n .add-card .credit-card .card-number {\n font-size: 18px;\n letter-spacing: 2px;\n margin-bottom: 10px;\n }\n \n .add-card .credit-card .card-info {\n font-size: 14px;\n margin-bottom: 5px;\n }\n \n .add-card label {\n font-size: 12px;\n font-family: 'IBM Plex Mono', monospace;\n font-weight: 400;\n text-transform: uppercase;\n color: #35254D;\n margin-bottom: 6px;\n }\n \n .add-card input[type=\"text\"],\n .add-card input[type=\"number\"],\n .add-card input[type=\"date\"],\n .add-card input[type=\"email\"],\n .add-card select {\n width: 100%;\n padding: 12px;\n font-size: 14px;\n font-weight: 500;\n color: #35254D;\n border: 1px solid #D4CDDF;\n border-radius: 6px;\n background-color: #FFFFFF;\n box-sizing: border-box;\n // margin-bottom: 20px;\n }\n \n .add-card input[type=\"text\"]::placeholder {\n color: #867C94;\n }\n \n // .add-card input[type=\"submit\"] {\n // width: 100%;\n // padding: 12px;\n // background-color: #161616;\n // color: #FFFFFF;\n // font-size: 14px;\n // font-weight: 500;\n // border: none;\n // border-radius: 1000px;\n // cursor: pointer;\n // text-align: center;\n // }\n \n .add-card input[type=\"submit\"]:hover {\n background-color: #000000;\n }\n \n .add-card .error {\n font-size: 12px;\n color: red;\n margin-top: -15px;\n margin-bottom: 15px;\n }\n \n /* Tab Styling */\n .add-card .tabs {\n display: flex;\n gap: 4px;\n margin-bottom: 24px;\n justify-content: center;\n }\n \n .add-card .tab {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 6px 16px;\n font-size: 14px;\n font-weight: 500;\n border: 1px solid #D4CDDF;\n border-radius: 1000px;\n cursor: pointer;\n }\n \n .add-card .tab.active {\n border-color: #35254D;\n color: #35254D;\n }\n \n .add-card .tab:hover {\n border-color: #867C94;\n }\n \n /* Buttons */\n .add-card .button-close {\n display: inline-block;\n background-color: #161616;\n color: #FFFFFF;\n font-size: 14px;\n font-weight: 500;\n padding: 12px 32px;\n border-radius: 1000px;\n text-align: center;\n cursor: pointer;\n width: 48%;\n box-sizing: border-box;\n }\n \n .add-card .button-close:hover {\n background-color: #000000;\n }\n \n .add-card .btn-add1 {\n display: inline-block;\n background-color: #61c699;\n color: #FFFFFF;\n font-size: 14px;\n font-weight: 500;\n padding: 12px 32px;\n border-radius: 1000px;\n text-align: center;\n cursor: pointer;\n width: 48%;\n box-sizing: border-box;\n }\n \n .add-card .btn-add1:hover {\n background-color: #B5E1CB;\n }\n \n /* Combined Expiration Date and CVC Row */\n .add-card .exp-cvc-container {\n display: flex;\n justify-content: space-between;\n gap: 16px;\n margin-bottom: 5px;\n }\n \n .add-card .exp-cvc-container input {\n flex: 1;\n padding: 12px;\n font-size: 14px;\n font-weight: 500;\n color: #35254D;\n border: 1px solid #D4CDDF;\n border-radius: 6px;\n background-color: #FFFFFF;\n box-sizing: border-box;\n }\n \n .add-card .exp-cvc-container input::placeholder {\n color: #867C94;\n }\n \n .card-scrl {\n overflow-y: auto;\n padding-right: 6px !important;\n }\n .card-scrl::-webkit-scrollbar {\n width: 3px;\n background-color: #F5F5F5;\n }\n .card-scrl::-webkit-scrollbar-thumb {\n background-color: #35254D;\n }\n\n .custom-z-index {\n z-index: 9999 !important;\n}\n #add-credit-card-panel{\n padding: 15px !important}\n /* Responsive Design */\n @media screen and (max-width: 768px) {\n .add-card .container-creditcard {\n width: 90%;\n padding: 20px;\n }\n \n .add-card input[type=\"submit\"] {\n font-size: 12px;\n padding: 10px;\n }\n }\n .exp-cvc-container-wrap div#exp_month, .exp-cvc-container-wrap div#exp_year, .exp-cvc-container-wrap div#cvv {\n border: 1px solid #dee2e6;\n height: 47px;\n border-radius: 0.375rem;\n padding: 0px 12px;\n\n}\ndiv#card_number{\n border: 1px solid #dee2e6 !important;\n border-radius: 0.375rem !important;\n padding: 0px 12px;\n}\n input#cardholderName::placeholder {\n font-family: \"Segoe UI\", Tahoma, Geneva, Verdana, sans-serif;\n color: #35254D;\n} \n `}\n </style>\n );\n}\n","import React from 'react'\n\nexport default function SuccessCardMszStyle() {\n return (\n <style>\n {\n `\n .card-success .logo-container {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: -50px; /* Adjust this to overlap the content */\n z-index: 10;\n }\n\n .card-success .client-logo {\n max-width: 100px;\n height: auto;\n object-fit: contain;\n display: block;\n }\n\n .card-success .payment-success-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 18px 20px 24px;\n width: 335px;\n height: 400px; /* Fixed height */\n background: #FFFFFF;\n border-radius: 12px;\n position: relative;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n border: 1px solid #e3e3e3;\n justify-content: center;\n text-align: center;\n // margin-top: 50px; /* Adjust this to move the content down */\n margin: 50px auto 0 auto !important;\n }\n\n .card-success .success-icon {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n width: 227px;\n height: 116px;\n z-index: 2;\n }\n\n .card-success .circle {\n width: 40px;\n height: 40px;\n border: 1px solid #49B182;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .card-success .circle .fa-check-circle {\n font-size: 20px;\n color: #49B182;\n }\n\n .card-success .success-text {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 4px;\n width: 227px;\n }\n\n .card-success .payment-success-text {\n font-family: 'Inter', sans-serif;\n font-weight: 500;\n font-size: 18px;\n line-height: 21px;\n text-align: center;\n letter-spacing: -0.02em;\n color: #161616;\n }\n\n .card-success .thank-you-text {\n font-family: 'Inter', sans-serif;\n font-weight: 500;\n font-size: 14px;\n line-height: 18px;\n text-align: center;\n letter-spacing: -0.02em;\n color: #161616;\n opacity: 0.5;\n }\n `\n }\n </style>\n )}","import React from 'react'\nimport SuccessCardMszStyle from './SuccessCardMszStyle'\n\ntype SuccessCardMszProps = {\n onClose: () => void;\n};\nconst SuccessCardMsz: React.FC<SuccessCardMszProps> = ({ onClose }) => {\n return (\n <>\n <SuccessCardMszStyle/>\n <div className='card-success'>\n {/* <div className=\"logo-container\">\n <img src=\"<%= merchant_logo %>\" alt=\"\" className=\"client-logo\" />\n\n\n\n </div> */}\n <div className=\"payment-success-container\">\n <div className=\"success-icon\">\n <div className=\"circle\">\n <i className=\"fa fa-check-circle\" aria-hidden=\"true\"></i>\n </div>\n <div className=\"success-text\">\n <div className=\"payment-success-text\">Your card was added successfully.</div>\n <div className=\"thank-you-text\">Thank you </div>\n </div>\n </div>\n </div>\n </div>\n </>\n )\n}\nexport default SuccessCardMsz","import React, { useEffect, useRef, useState } from 'react'\nimport DataScript from '../Datascript';\nimport Loader from '../Loader/Loader';\nimport axios from 'axios';\nimport { fractalGatewayUrl, masterBaseUrl } from '../baseurl';\nimport ErrorCardMessage from '../ErrorCardMessage/ErrorCardMessage';\nimport { PaymentMethodKeys } from '../../utils/Constant'\nimport AddCardSkyStyle from './AddCardSkyStyle'\nimport { formatCardNumberWithCursor } from '@/app/utils/Common';\nimport FractalFieldsAddCardSky from '../Atoms/FractalForm/FractalFieldsAddCardSky';\ndeclare let DatacapWebToken: any;\ndeclare let forge: any;\n\ntype Props = {\n session_token: string,\n callback: (resp: any) => void,\n isloading: boolean,\n onCancel: () => void,\n showChecks: boolean,\n merchantName: string,\n signCheckbox: boolean,\n checkedSignCheckbox: boolean,\n onCheckSign: (val: boolean) => void,\n cancelbtnClass: string,\n savebtnClass: string,\n inputClass: string,\n isDual?: boolean,\n}\n\ninterface CardDetails {\n firstName: string,\n lastName: string,\n cardNumber: string;\n expiryMonth: string;\n expiryYear: string;\n cvv: string;\n zipCode: string;\n authHold: boolean;\n authorise: boolean;\n checkSign: boolean\n\n}\n\nexport function CardOnFile({ session_token, callback, isloading, onCancel, showChecks, merchantName, signCheckbox, checkedSignCheckbox, onCheckSign, cancelbtnClass, savebtnClass, inputClass, isDual }: Props) {\n const [loading, setLoading] = useState<boolean>(false);\n const [seeMore, setSeeMore] = useState<boolean>(false)\n const [cardData, setCardData] = useState<CardDetails>()\n const [cardError, setCardError] = useState<Partial<Record<keyof CardDetails, string>>>({});\n const [error, setError] = useState<string>(\"\");\n const showLoader = () => setLoading(true);\n const hideLoader = () => setLoading(false);\n const [passFee, setPassFee] = useState(false);\n const [paymentGateway, setPaymentGateway] = useState<number | undefined>();\n\n const tokenizerRef = useRef<any>(null);\n\n const fractalStyles = {\n input: {\n 'font-family': \"'Inter', sans-serif\" ,\n 'font-size': '14px',\n 'font-weight': '500',\n 'color': '#35254D',\n 'background-color': 'transparent',\n 'padding': '0px',\n 'appearance': 'none',\n 'outline': 'none',\n 'border': 'none',\n 'box-shadow': 'none'\n },\n ':focus': {\n 'color': '#35254D',\n 'outline': 'none',\n 'border': 'none'\n },\n '::placeholder': {\n 'color': '#35254D'\n }\n };\n\n\n const validateCardData = (): boolean => {\n const errors: Partial<Record<keyof CardDetails, string>> = {};\n const data = cardData\n if (paymentGateway != 32) {\n const month = parseInt(data?.expiryMonth || \"\", 10);\n const year = data?.expiryYear || \"\";\n if (!data?.cardNumber?.trim()) errors.cardNumber = \"Please enter a card number.\";\n if (!data?.expiryMonth?.trim()) {\n errors.expiryMonth = \"Please enter an expiry month.\"\n } else if (Number(data?.expiryMonth) > 12 || Number(data?.expiryMonth) < 1) {\n errors.expiryMonth = \"Invalid Expiration Month.\"\n }\n if (!data?.expiryYear?.trim()) {\n errors.expiryYear = \"Please enter an expiry year.\"\n } else if (data?.expiryYear?.trim().length !== 4 || Number(data?.expiryYear) < 2025) {\n errors.expiryYear = \"Invalid Expiration Year.\"\n }\n\n else if (isNaN(month) || month < 1 || month > 12 || year.length !== 4) {\n errors.expiryMonth = \"Invalid Expiration Date.\";\n }\n\n if (!data?.cvv?.trim()) errors.cvv = \"Please enter a CVV.\";\n\n }\n if (!data?.firstName?.trim()) errors.firstName = \"Please enter a first name.\";\n if (!data?.lastName?.trim()) errors.lastName = \"Please enter a last name.\";\n if (!data?.zipCode?.trim()) errors.zipCode = \"Please enter a zip code.\";\n\n if (signCheckbox && !checkedSignCheckbox) errors.checkSign = \"You must authorize this before proceeding.\";\n if (showChecks && !data?.authHold) errors.authHold = \"You must authorize this before proceeding.\";\n if (showChecks && !data?.authorise) errors.authorise = \"Please confirm your authorization to continue.\";\n\n // Additional check for expired card\n // if (data?.expiryMonth && data?.expiryYear && data.expiryMonth.length <= 2 && data.expiryYear.length === 4) {\n // const month = parseInt(data.expiryMonth, 10);\n // const year = parseInt(data.expiryYear, 10);\n // const now = new Date();\n // const currentMonth = now.getMonth() + 1; // JS month is 0-indexed\n // const currentYear = now.getFullYear();\n\n // if (year < currentYear || (year === currentYear && month < currentMonth)) {\n // errors.expiryMonth = \"Card is expired\";\n // }\n // }\n setCardError(errors);\n\n // Return true if there is any error\n\n\n return Object.keys(errors).length > 0;\n };\n\n const handleCardNumberChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target;\n const rawValue = input.value.replace(/\\D/g, \"\"); // Remove all non-digits\n\n const { formatted, cursor } = formatCardNumberWithCursor(\n input.value,\n input.selectionStart ?? 0\n );\n setCardError((prev: any) => ({\n ...prev,\n cardNumber: \"\"\n }))\n\n setCardData((prev: any) => ({\n ...prev,\n cardNumber: formatted\n }));\n\n requestAnimationFrame(() => {\n input.setSelectionRange(cursor, cursor);\n });\n };\n\n const handleCardChange = (field: string, value: any) => {\n const name = field\n const numericFields = [\"expiryMonth\", \"expiryYear\", \"zipCode\", \"cvv\"];\n\n if (numericFields.includes(name)) {\n // Agar value empty hai (backspace ke liye) ya sirf digits hain, tabhi set karenge\n if (value === \"\" || /^[0-9]+$/.test(value)) {\n setCardError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setCardData((prev: any) => ({\n ...prev,\n [name]: value,\n }));\n }\n return;\n }\n\n setCardError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n // console.log(value, name);\n setCardData((prev: any) => ({\n ...prev, [name]: value\n }))\n\n }\n\n const validateCardInputs = (): boolean => {\n let validCard = DatacapWebToken.validateCardNumber(cardData?.cardNumber.replaceAll(\" \", ''));\n let validExpirationDate = DatacapWebToken.validateExpirationDate(cardData?.expiryMonth, cardData?.expiryYear);\n let validCVV = DatacapWebToken.validateCVV(cardData?.cvv);\n\n let errors: Partial<Record<keyof CardDetails, string>> = {}\n if (!validCard) errors.cardNumber = \"Invalid card Number\"\n if (!validExpirationDate) errors.expiryMonth = \"Invalid Expiration Date.\"\n if (!validCVV) errors.cvv = \"Invalid CVV\"\n\n setCardError(errors)\n\n return validCard && validCVV && validExpirationDate\n }\n\n const handleTokenCallback = async (token: any) => {\n if (token.Error) {\n // console.log(token?.Error);\n setError(token.Error);\n hideLoader();\n } else {\n let data = {\n token: token.Token,\n resp: token\n };\n const updateToken = await axios.post(`${masterBaseUrl}api/v1/gateway/update/token/${session_token}`, data);\n // console.log(updateToken, \"jkdvfhsdjkhf\");\n\n if (updateToken?.status == 200) {\n let respData = {\n Token: updateToken?.data?.data?.gateway_token,\n Brand: token.Brand,\n ExpirationMonth: token.ExpirationMonth,\n ExpirationYear: token.ExpirationYear,\n Last4: token.Last4,\n Bin: token.Bin,\n CVV: token.CVV,\n postalCode: cardData?.zipCode,\n ...(showChecks && { authHold: cardData?.authHold }),\n ...(showChecks && { authorise: cardData?.authorise }),\n };\n hideLoader();\n // console.log(respData, \"respspsp\");\n callback(respData);\n }\n }\n };\n\n const handleFractalTokenFlow = async () => {\n try {\n const requestOptions = {\n method: \"POST\",\n redirect: \"follow\"\n };\n\n let sesionResult = await axios.post(`${masterBaseUrl}api/v1/widget/generate-session`, requestOptions)\n // let expYear = (Number(cardData?.expiryYear)) % 100;\n // let cardNumber = cardData?.cardNumber?.replace(/\\s+/g, '');\n // let track2_data = `${cardNumber}=${expYear}${cardData?.expiryMonth} ${cardData?.cvv}`;\n\n // const publicKey = forge.pki.publicKeyFromPem(sesionResult?.data?.data?.publicKeyPem);\n // const encrypted = publicKey.encrypt(track2_data, 'RSA-OAEP', {\n // md: forge.md.sha1.create(),\n // mgf1: { md: forge.md.sha1.create() }\n // });\n // const encryptedBase64 = forge.util.encode64(encrypted);\n\n // const myHeaders = {\n // \"Content-Type\": \"application/json\",\n // \"x-app-session-key\": sesionResult.data?.data?.session_key\n // }\n\n // const raw = JSON.stringify({\n // enc_track2_data: encryptedBase64,\n // algorithm: \"RSAES_OAEP_SHA_1\",\n // session_key: sesionResult?.data?.data?.session_key\n // });\n\n // const tokenizeData = await axios.post(`${fractalGatewayUrl}tokenizer/tokenize`, raw, { headers: myHeaders });\n\n const tokenizeData = await tokenizerRef.current.createToken({\n public_key_pem: sesionResult?.data?.data?.publicKeyPem || sesionResult?.data?.data?.public_key_pem,\n session_key: sesionResult?.data?.data?.session_key\n });\n\n // console.log(tokenizeData, \"tokeni\");\n\n if (tokenizeData?.token) {\n let token = tokenizeData?.token;\n try {\n let verifyandsaveresp = await axios.post(`${masterBaseUrl}api/v1/gateway/verify-and-save/${session_token}`, { token });\n // console.log(verifyandsaveresp, \"verifyandsaveresp\");\n\n if (verifyandsaveresp?.status == 200) {\n let responsetemp = verifyandsaveresp?.data?.data;\n let respData = {\n Token: responsetemp.gateway_token,\n Brand: responsetemp.card_data.brand,\n ExpirationMonth: responsetemp.card_data.expire_mm,\n ExpirationYear: responsetemp.card_data.expire_yy,\n Last4: responsetemp.card_data.last4,\n Bin: responsetemp.card_data.bin,\n postalCode: cardData?.zipCode\n };\n callback(respData);\n hideLoader();\n }\n } catch (error) {\n console.log(error, \"error\");\n hideLoader();\n }\n }\n } catch (error: any) {\n\n let readableMessage = \"Something went wrong!\";\n\n try {\n const rawError = error?.response?.data || error?.message || \"\";\n\n // Convert to string safely\n const errorText = typeof rawError === \"string\" ? rawError : JSON.stringify(rawError);\n\n // Split safely (avoid crashes even if empty or non-string)\n const lines = errorText.split?.(\"\\n\")?.filter(Boolean) || [];\n const lastLine = lines.at(-1) || \"\";\n\n // Extract message after last colon (if any)\n const parts: any = lastLine.split?.(\": \");\n readableMessage = parts?.length > 1 ? parts.pop().trim() : lastLine.trim() || readableMessage;\n } catch {\n // If *anything* above fails, fallback to a generic message\n readableMessage = \"Something went wrong!\";\n }\n hideLoader()\n setError(readableMessage)\n }\n };\n\n\n\n const handleCardAdd = async (e: any) => {\n e.preventDefault();\n const el = document.activeElement;\n if (el instanceof HTMLElement) {\n el.blur();\n }\n if (loading) return;\n const hasError = validateCardData();\n if (hasError) return;\n\n let isValid = true;\n if (paymentGateway != 32) {\n isValid = validateCardInputs();\n }\n if (!isValid) return;\n showLoader();\n try {\n const result = await axios.get(`${masterBaseUrl}api/v1/gateway/token/${session_token}`, {\n params: {\n pass_fee: passFee\n }\n });\n if (result?.status == 200) {\n const gatewayToken = result?.data?.data?.gateway_token;\n const paymentGateway = result?.data?.data?.paymentGateway;\n\n if (paymentGateway == PaymentMethodKeys?.FRACTALKEY) {\n await handleFractalTokenFlow();\n } else {\n DatacapWebToken.requestToken(gatewayToken, 'creditCardForm', handleTokenCallback);\n }\n }\n } catch (error: any) {\n // console.log(error, \"svuiuhd\");\n hideLoader();\n setError(error?.response?.data?.message || \"Something went wrong!\");\n }\n }\n\n // console.log(cardData, \"uifgudasgf\", cardError);\n\n const handleClose = () => {\n setError(\"\")\n // setCardData({\n // firstName: \"\",\n // lastName: \"\",\n // cardNumber: \"\",\n // expiryMonth: \"\",\n // expiryYear: \"\",\n // cvv: \"\",\n // zipCode: \"\"\n // })\n };\n\n const handleCancel = () => {\n setError(\"\")\n setCardData({\n firstName: \"\",\n lastName: \"\",\n cardNumber: \"\",\n expiryMonth: \"\",\n expiryYear: \"\",\n cvv: \"\",\n zipCode: \"\",\n authHold: false,\n authorise: false,\n checkSign: false\n })\n onCancel()\n }\n\n console.log(passFee, \"aoapoaa\");\n\n const getPaymentDetails = async () => {\n try {\n showLoader()\n const res = await axios.get(`${masterBaseUrl}api/v1/gateway/get-payment-details/${session_token}`);\n // console.log(res, \"respinse\");\n if (res?.status == 200) {\n setPaymentGateway(res?.data?.data?.paymentGateway);\n hideLoader();\n }\n\n } catch (error: any) {\n console.log(error?.response?.data?.result, \"error while getting payment details\");\n callback({\n error: error?.response?.data?.message || \"Something went wrong!\",\n result: error?.response?.data?.result,\n statusCode: error?.response?.status\n })\n // setError(error?.response?.data?.message || error?.message || \"Something went wrong\")\n hideLoader()\n }\n\n }\n\n useEffect(() => {\n getPaymentDetails();\n }, [])\n\n useEffect(() => {\n if (typeof FractalTokenizer === 'undefined') return;\n\n const tokenizer = new FractalTokenizer({\n styles: {},\n });\n }, []);\n\n\n return (\n <>\n <DataScript />\n <AddCardSkyStyle />\n <Loader loading={loading || isloading} />\n {error && <div style={{ maxHeight: '606px', minHeight: '60vh', padding: '40px' }}>\n <ErrorCardMessage error={error} onClose={handleClose} />\n </div>}\n {\n !error && (\n <div className='creditformbox'>\n {\n paymentGateway == 32 ? (\n <form id='paymentForm' onSubmit={handleCardAdd} onKeyDown={(e) => {\n if (e.key === \"Enter\" && loading) {\n e.preventDefault();\n e.stopPropagation();\n }\n }} >\n <div className=\"name-row\">\n <div className=\"form-group\">\n <label> First Name <span className=\"text-danger\">*</span></label>\n <input\n type=\"text\"\n name='first_name'\n placeholder='First Name'\n value={cardData?.firstName || \"\"}\n onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange('firstName', value);\n }\n }}\n className={inputClass}\n />\n {\n cardError?.firstName && (\n <small className='error'>{cardError?.firstName}</small>\n )\n }\n </div>\n <div className=\"form-group\">\n <label> Last Name <span className=\"text-danger\">*</span></label>\n <input\n type=\"text\"\n name='last_name'\n placeholder='Last Name'\n value={cardData?.lastName || \"\"}\n onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange('lastName', value);\n }\n }}\n className={inputClass}\n />\n {\n cardError?.lastName && (\n <small className='error'>{cardError?.lastName}</small>\n )\n }\n </div>\n </div>\n <FractalFieldsAddCardSky\n fractalStyles={fractalStyles}\n tokenizerRef={tokenizerRef}\n extraInputs={\n <div className=\"form-group\">\n <label> Zip <span className=\"text-danger\">*</span></label>\n <input\n type=\"text\"\n name=\"zipcode\"\n placeholder='Zip Code'\n value={cardData?.zipCode ?? \"\"}\n onChange={(e) => handleCardChange('zipCode', e.target.value)}\n className={inputClass}\n />\n {\n cardError?.zipCode && (\n <small className='error'>{cardError?.zipCode}</small>\n )\n }\n </div>\n }\n />\n {/* <div className=\"form-pay-row\">\n <div className=\"form-group\">\n <label> Card Number <span className=\"text-danger\">*</span></label>\n <input\n type=\"text\"\n data-token=\"card_number\"\n placeholder='Card Number'\n maxLength={19}\n inputMode=\"numeric\"\n value={cardData?.cardNumber || \"\"}\n onChange={(e) => handleCardNumberChange(e)}\n className={inputClass}\n />\n {\n cardError?.cardNumber && (\n <small className='error'>{cardError?.cardNumber}</small>\n )\n }\n </div>\n </div>\n <div className=\"card-pay-row\">\n <div className=\"form-group\">\n <label> Exp Month <span className=\"text-danger\">*</span></label>\n <input\n type=\"text\"\n data-token=\"exp_month\"\n placeholder='MM'\n maxLength={2}\n value={cardData?.expiryMonth || \"\"}\n onChange={(e) => handleCardChange('expiryMonth', e.target.value)}\n className={inputClass}\n />\n {\n cardError?.expiryMonth && (\n <small className='error'>{cardError?.expiryMonth}</small>\n )\n }\n </div>\n <div className=\"form-group\">\n <label> Exp Year <span className=\"text-danger\">*</span></label>\n <input\n type=\"text\"\n data-token=\"exp_year\"\n placeholder='YYYY'\n maxLength={4}\n value={cardData?.expiryYear || \"\"}\n onChange={(e) => handleCardChange('expiryYear', e.target.value)}\n className={inputClass}\n />\n {\n cardError?.expiryYear && (\n <small className='error'>{cardError?.expiryYear}</small>\n )\n }\n </div>\n <div className=\"form-group\">\n <label> CVV <span className=\"text-danger\">*</span></label>\n <input\n type=\"text\"\n data-token=\"cvv\"\n placeholder='CVV'\n maxLength={4}\n value={cardData?.cvv || \"\"}\n onChange={(e) => handleCardChange('cvv', e.target.value)}\n className={inputClass}\n />\n {\n cardError?.cvv && (\n <small className='error'>{cardError?.cvv}</small>\n )\n }\n </div>\n <div className=\"form-group\">\n <label> Zip <span className=\"text-danger\">*</span></label>\n <input\n type=\"text\"\n name=\"zipcode\"\n placeholder='Zip Code'\n value={cardData?.zipCode ?? \"\"}\n onChange={(e) => handleCardChange('zipCode', e.target.value)}\n className={inputClass}\n />\n {\n cardError?.zipCode && (\n <small className='error'>{cardError?.zipCode}</small>\n )\n }\n </div>\n </div> */}\n {\n isDual && (\n <div className='pass-fee-toggle-div'>\n <input\n type=\"checkbox\"\n id=\"pass_fee\"\n className=\"toggle-checkbox\"\n checked={passFee}\n onChange={(e) => { setPassFee(e.target.checked) }}\n />\n <label htmlFor=\"pass_fee\" className=\"toggle-label\"></label>\n <label htmlFor='save_card'>Cash Discount</label>\n </div>\n )\n }\n {signCheckbox &&\n <div className=\"checks-row\">\n <input\n name=\"discalosure\"\n type=\"checkbox\"\n id=\"disclosureCheck\"\n checked={checkedSignCheckbox}\n onChange={(e) => onCheckSign(e.target.checked)}\n />\n <label htmlFor=\"disclosureCheck\" className=\"form-check-label\">\n Please agree to the following in order to add Payment method.\n </label>\n </div>}\n {\n signCheckbox && cardError?.checkSign && (\n <small className='check-error'>{cardError?.checkSign}</small>\n )\n }\n {showChecks &&\n <>\n <div className=\"checks-row\">\n <input\n name=\"authHold\"\n type=\"checkbox\"\n id=\"authHold\"\n checked={!!cardData?.authHold}\n onChange={(e) => handleCardChange('authHold', e.target.checked)}\n />\n <label htmlFor=\"authHold\" className=\"form-check-label\">\n To securely save your card on file, we will place a temporary\n authorization hold of $1.00. This is not a charge and will be released\n by your card issuer shortly after verification.\n </label>\n </div>\n {\n cardError?.authHold && (\n <small className='check-error'>{cardError?.authHold}</small>\n )\n }\n <div className=\"checks-row \">\n <input\n name=\"authorise\"\n type=\"checkbox\"\n id=\"authorise\"\n checked={!!cardData?.authorise}\n onChange={(e) => handleCardChange('authorise', e.target.checked)} />\n\n <label htmlFor=\"authorise\" className=\"form-check-label see-more\">\n {!seeMore ?\n <>\n <span>\n By providing your payment information, you authorize {merchantName}, a\n Sky Systemz merchant, to securely store your card on file for future\n pay...{\" \"}\n </span>\n <a href=\"#\" onClick={(e) => { e.preventDefault(); setSeeMore(true); }}>See more ...</a>\n </>\n :\n <>\n <span >\n By providing your payment information, you authorize{\" \"}\n <strong>{merchantName}</strong>, a Sky Systemz merchant, to securely\n store your card on file for future payments. Your card information\n will be encrypted and stored in compliance with PCI-DSS (Payment\n Card Industry Data Security Standard) regulations using Sky\n Systemz’s secure payment technology. This information will be used\n solely for transactions you authorize with{\" \"}\n <strong>{merchantName}</strong>. You may request the removal of your\n stored payment information at any time by contacting{\" \"}\n <strong>{merchantName}</strong> directly. By signing or proceeding with\n this transaction, you acknowledge and agree to this card on file\n authorization.\n <a href=\"#\" onClick={(e) => { e.preventDefault(); setSeeMore(false); }}>See less ...</a>\n </span>\n </>\n\n }\n </label>\n </div>\n {\n cardError?.authorise && (\n <small className='check-error'>{cardError?.authorise}</small>\n )\n }\n </>\n }\n <div className='button-row'>\n <button className={`cancelbtn ${cancelbtnClass} `} type=\"button\" onClick={handleCancel} >Cancel</button>\n <button className={`savebtn ${savebtnClass} `} disabled={loading} type='submit' >Save</button>\n </div>\n </form>\n ) : (\n <form id='creditCardForm' onSubmit={handleCardAdd} onKeyDown={(e) => {\n if (e.key === \"Enter\" && loading) {\n e.preventDefault();\n e.stopPropagation();\n }\n }} >\n <div className=\"name-row\">\n <div className=\"form-group\">\n <label> First Name <span className=\"text-danger\">*</span></label>\n <input\n type=\"text\"\n name='first_name'\n placeholder='First Name'\n value={cardData?.firstName || \"\"}\n onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange('firstName', value);\n }\n }}\n className={inputClass}\n />\n {\n cardError?.firstName && (\n <small className='error'>{cardError?.firstName}</small>\n )\n }\n </div>\n <div className=\"form-group\">\n <label> Last Name <span className=\"text-danger\">*</span></label>\n <input\n type=\"text\"\n name='last_name'\n placeholder='Last Name'\n value={cardData?.lastName || \"\"}\n onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange('lastName', value);\n }\n }}\n className={inputClass}\n />\n {\n cardError?.lastName && (\n <small className='error'>{cardError?.lastName}</small>\n )\n }\n </div>\n </div>\n <div className=\"form-pay-row\">\n <div className=\"form-group\">\n <label> Card Number <span className=\"text-danger\">*</span></label>\n <input\n type=\"text\"\n data-token=\"card_number\"\n placeholder='Card Number'\n maxLength={19}\n inputMode=\"numeric\"\n value={cardData?.cardNumber || \"\"}\n onChange={(e) => handleCardNumberChange(e)}\n className={inputClass}\n />\n {\n cardError?.cardNumber && (\n <small className='error'>{cardError?.cardNumber}</small>\n )\n }\n </div>\n </div>\n <div className=\"card-pay-row\">\n <div className=\"form-group\">\n <label> Exp Month <span className=\"text-danger\">*</span></label>\n <input\n type=\"text\"\n data-token=\"exp_month\"\n placeholder='MM'\n maxLength={2}\n value={cardData?.expiryMonth || \"\"}\n onChange={(e) => handleCardChange('expiryMonth', e.target.value)}\n className={inputClass}\n />\n {\n cardError?.expiryMonth && (\n <small className='error'>{cardError?.expiryMonth}</small>\n )\n }\n </div>\n <div className=\"form-group\">\n <label> Exp Year <span className=\"text-danger\">*</span></label>\n <input\n type=\"text\"\n data-token=\"exp_year\"\n placeholder='YYYY'\n maxLength={4}\n value={cardData?.expiryYear || \"\"}\n onChange={(e) => handleCardChange('expiryYear', e.target.value)}\n className={inputClass}\n />\n {\n cardError?.expiryYear && (\n <small className='error'>{cardError?.expiryYear}</small>\n )\n }\n </div>\n <div className=\"form-group\">\n <label> CVV <span className=\"text-danger\">*</span></label>\n <input\n type=\"text\"\n data-token=\"cvv\"\n placeholder='CVV'\n maxLength={4}\n value={cardData?.cvv || \"\"}\n onChange={(e) => handleCardChange('cvv', e.target.value)}\n className={inputClass}\n />\n {\n cardError?.cvv && (\n <small className='error'>{cardError?.cvv}</small>\n )\n }\n </div>\n <div className=\"form-group\">\n <label> Zip <span className=\"text-danger\">*</span></label>\n <input\n type=\"text\"\n name=\"zipcode\"\n placeholder='Zip Code'\n value={cardData?.zipCode ?? \"\"}\n onChange={(e) => handleCardChange('zipCode', e.target.value)}\n className={inputClass}\n />\n {\n cardError?.zipCode && (\n <small className='error'>{cardError?.zipCode}</small>\n )\n }\n </div>\n </div>\n {\n isDual && (\n <div className='pass-fee-toggle-div'>\n <input\n type=\"checkbox\"\n id=\"pass_fee\"\n className=\"toggle-checkbox\"\n checked={passFee}\n onChange={(e) => { setPassFee(e.target.checked) }}\n />\n <label htmlFor=\"pass_fee\" className=\"toggle-label\"></label>\n <label htmlFor='save_card'>Cash Discount</label>\n </div>\n )\n }\n {signCheckbox &&\n <div className=\"checks-row\">\n <input\n name=\"discalosure\"\n type=\"checkbox\"\n id=\"disclosureCheck\"\n checked={checkedSignCheckbox}\n onChange={(e) => onCheckSign(e.target.checked)}\n />\n <label htmlFor=\"disclosureCheck\" className=\"form-check-label\">\n Please agree to the following in order to add Payment method.\n </label>\n </div>}\n {\n signCheckbox && cardError?.checkSign && (\n <small className='check-error'>{cardError?.checkSign}</small>\n )\n }\n {showChecks &&\n <>\n <div className=\"checks-row\">\n <input\n name=\"authHold\"\n type=\"checkbox\"\n id=\"authHold\"\n checked={!!cardData?.authHold}\n onChange={(e) => handleCardChange('authHold', e.target.checked)}\n />\n <label htmlFor=\"authHold\" className=\"form-check-label\">\n To securely save your card on file, we will place a temporary\n authorization hold of $1.00. This is not a charge and will be released\n by your card issuer shortly after verification.\n </label>\n </div>\n {\n cardError?.authHold && (\n <small className='check-error'>{cardError?.authHold}</small>\n )\n }\n <div className=\"checks-row \">\n <input\n name=\"authorise\"\n type=\"checkbox\"\n id=\"authorise\"\n checked={!!cardData?.authorise}\n onChange={(e) => handleCardChange('authorise', e.target.checked)} />\n\n <label htmlFor=\"authorise\" className=\"form-check-label see-more\">\n {!seeMore ?\n <>\n <span>\n By providing your payment information, you authorize {merchantName}, a\n Sky Systemz merchant, to securely store your card on file for future\n pay...{\" \"}\n </span>\n <a href=\"#\" onClick={(e) => { e.preventDefault(); setSeeMore(true); }}>See more ...</a>\n </>\n :\n <>\n <span >\n By providing your payment information, you authorize{\" \"}\n <strong>{merchantName}</strong>, a Sky Systemz merchant, to securely\n store your card on file for future payments. Your card information\n will be encrypted and stored in compliance with PCI-DSS (Payment\n Card Industry Data Security Standard) regulations using Sky\n Systemz’s secure payment technology. This information will be used\n solely for transactions you authorize with{\" \"}\n <strong>{merchantName}</strong>. You may request the removal of your\n stored payment information at any time by contacting{\" \"}\n <strong>{merchantName}</strong> directly. By signing or proceeding with\n this transaction, you acknowledge and agree to this card on file\n authorization.\n <a href=\"#\" onClick={(e) => { e.preventDefault(); setSeeMore(false); }}>See less ...</a>\n </span>\n </>\n\n }\n </label>\n </div>\n {\n cardError?.authorise && (\n <small className='check-error'>{cardError?.authorise}</small>\n )\n }\n </>\n }\n <div className='button-row'>\n <button className={`cancelbtn ${cancelbtnClass} `} type=\"button\" onClick={handleCancel} >Cancel</button>\n <button className={`savebtn ${savebtnClass} `} disabled={loading} type='submit' >Save</button>\n </div>\n </form>\n )\n }\n </div>\n )\n }\n </>\n )\n}","export const PaymentMethodKeys = {\n PROPAYKEY: '25',\n PAYARCKEY: '26',\n STRIPEKEYCC: '27',\n PAYRIXKEY: '28',\n SKYFIACHKEY: '29',\n JUSTIFIKEY: '30',\n INFINICEPTKEY: '31',\n FRACTALKEY: '32'\n}","import React from 'react'\n\ntype Props = {}\n\nexport default function AddCardSkyStyle({ }: Props) {\n return (\n <style>\n {`\n @import url(\"https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700;800;900&display=swap\");\n\n .creditformbox {\n // max-width: 550px;\n margin: 0 auto;\n font-family: Poppins !important;\n }\n\n .name-row {\n display: grid;\n grid-gap: 10px;\n grid-template-columns:1fr 1fr;\n }\n\n label {\n display: block;\n color: #383838;\n font-size: 16px;\n }\n\n .form-group span.text-danger{\n color:red;\n }\n .form-group small.error{\n color:red;\n font-size:11px;\n }\n .name-row .form-group {\n display: block;\n width: 100%;\n margin-bottom: 15px;\n }\n\n .creditformbox input, .creditformbox select {\n border: 1.25px solid rgba(234, 236, 239, 1);\n color: rgba(94, 94, 94, 0.75);\n border-radius: 10px;\n width: -webkit-fill-available;\n padding: 10px 12px;\n font-size: .875rem;\n min-height: 20px;\n }\n\n .form-pay-row {\n display: block;\n width: 100%;\n }\n\n .form-pay-row .form-group {\n display: block;\n width: 100%;\n margin-bottom: 15px;\n }\n\n .card-pay-row {\n display: flex;\n width: 100%;\n gap: 10px;\n flex-wrap: wrap;\n }\n\n .card-pay-row .form-group {\n flex: 1;\n margin-bottom: 15px;\n min-width: 100px;\n }\n .card-pay-row #exp_month , .card-pay-row #exp_year, .card-pay-row #cvv , .form-pay-row #card_number{\n height: 20px;\n border: 1.25px solid rgba(234, 236, 239, 1);\n color: rgba(94, 94, 94, 0.75);\n border-radius: 10px;\n width: -webkit-fill-available;\n padding: 10px 12px;\n font-size: .875rem;\n }\n\n .creditformbox input:focus {\n color: #212529;\n background-color: #fff;\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);\n }\n\n .checks-row{\n display:flex;\n align-items:start;\n gap:10px\n }\n .checks-row input {\n border: 1.25px solid rgba(234, 236, 239, 1);\n color: rgba(94, 94, 94, 0.75);\n border-radius: 10px;\n min-width: 16px !important;\n width:16px !important;\n padding: 10px 12px;\n font-size: .875rem;\n max-height: 16px !important;\n height: 16px !important;\n }\n // .checks-row input.is-valid:checked{\n // background-color: #198754;\n // border-color: #198754;\n // background-image: url(data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e);\n // }\n .check-error{\n color:red;\n font-size:11px;\n padding-left:25px\n }\n .button-row{\n display: flex;\n width: 100%;\n gap: 10px;\n flex-wrap: wrap;\n margin-top: 20px !important\n }\n .button-row .btn{\n flex: 1;\n margin-top:20px;\n }\n\n .cancelbtn {\n font-size:15px;\n color: #000000 !important;\n background-color: transparent !important;\n background: transparent !important;\n border:1px solid #000000 !important;\n border-radius: 10px !important;\n padding: 10px 25px !important;\n cursor:pointer;\n font-size: 16px;\n }\n .cancelbtn:hover {\n background:#000000 !important;\n color:#ffffff !important;\n }\n\n .savebtn {\n font-size:15px;\n color: #2979FF;\n background-color: transparent;\n background: transparent;\n border:1px solid #2979FF;\n border-radius: 10px;\n padding: 10px 25px;\n cursor:pointer;\n font-size: 16px;\n }\n .savebtn:hover {\n background:#2979FF;\n color:#ffffff;\n }\n \n .toggle-label {\n position: relative;\n display: inline-block;\n width: 40px;\n height: 24px;\n background-color: #ccc;\n border-radius: 12px;\n cursor: pointer;\n transition: background-color 0.3s;\n }\n\n .toggle-label::before {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 20px;\n height: 20px;\n background: #ffffff;\n border-radius: 50%;\n transition: left 300ms linear;\n }\n\n .toggle-checkbox {\n display: none;\n }\n\n .toggle-checkbox:checked + .toggle-label {\n background-color: #4caf50;\n }\n\n .toggle-checkbox:checked + .toggle-label::before {\n left: 18px;\n }\n .pass-fee-toggle-div {\n display: flex;\n align-items: center;\n gap: 10px;\n padding-top: 10px;\n }\n `}\n\n\n </style>\n )\n}","'use client'\nimport { useEffect, useRef } from \"react\";\n\ninterface Props {\n fractalStyles: any;\n tokenizerRef: React.MutableRefObject<any>;\n extraInputs?: any;\n}\n\nconst FractalFieldsAddCardSky = ({ fractalStyles, tokenizerRef, extraInputs }: Props) => {\n const instanceRef = useRef<any>(null);\n\n useEffect(() => {\n if (!(window as any).FractalTokenizer) return;\n\n const instance = new (window as any).FractalTokenizer({\n styles: fractalStyles,\n });\n\n instanceRef.current = instance;\n tokenizerRef.current = instance;\n\n instance.mountField(\"card_number\", \"card_number\");\n instance.mountField(\"exp_month\", \"exp_month\");\n instance.mountField(\"exp_year\", \"exp_year\");\n instance.mountField(\"cvv\", \"cvv\");\n\n console.log(\"Fractal fields mounted\");\n\n return () => {\n try {\n instance.destroy?.();\n } catch (err) { }\n\n tokenizerRef.current = null;\n };\n }, []);\n\n return (\n <>\n <div className=\"form-pay-row\">\n <div className=\"form-group\">\n <label> Card Number <span className=\"text-danger\">*</span></label>\n <div\n id=\"card_number\"\n className=\"form-control card-number-new\"\n \n />\n </div>\n </div>\n <div className=\"card-pay-row\">\n <div className=\"form-group\">\n <label> Exp Month <span className=\"text-danger\">*</span></label>\n <div\n id=\"exp_month\"\n className=\"form-control required card-cvv-in\"\n />\n </div>\n <div className=\"form-group\">\n <label> Exp Year <span className=\"text-danger\">*</span></label>\n <div\n id=\"exp_year\"\n className=\"form-control required card-cvv-in\"\n \n />\n </div>\n <div className=\"form-group\">\n <label> CVV <span className=\"text-danger\">*</span></label>\n <div\n id=\"cvv\"\n className=\"form-control card-cvv-in required\"\n \n />\n </div>\n {extraInputs}\n </div>\n </>\n );\n};\n\nexport default FractalFieldsAddCardSky;\n","import React, { useEffect, useRef, useState } from 'react'\nimport DataScript from '../Datascript'\nimport Chargewidgetstyles from '../Charge/Chargewidgetstyles'\nimport CardBankRadioStyles from '../Atoms/CardBankRadio/CardBankRadioStyles'\nimport { baseUrl, fractalGatewayUrl, masterBaseUrl, S3Url } from '../baseurl'\nimport axios from 'axios'\nimport socket from '../socketClient'\nimport { accountTypes, formatCardNumberWithCursor, formatUSD, isValidJson, numberToBoolean } from '@/app/utils/Common'\nimport Swal from 'sweetalert2'\nimport CustomModal2 from '../CustomModal/CustomModal2'\nimport ErrorCardMessage from '../ErrorCardMessage/ErrorCardMessage'\nimport SuccessMsz from '../SuccessMessage/SuccessMsz'\nimport Loader from '../Loader/Loader'\nimport { CardBankRadio } from '../Atoms/CardBankRadio/CardBankRadio'\nimport { IoArrowBack } from 'react-icons/io5'\nimport { CardList } from '../Atoms/CardList/CardList'\nimport { NumericFormat } from 'react-number-format'\nimport { toast } from 'react-toastify'\nimport FractalFields from '../Atoms/FractalForm/FractalFields'\nimport FractalTokenizerScript from '../FractalTokenizer'\n\n\ndeclare let DatacapWebToken: any;\ndeclare let forge: any;\ndeclare let FractalTokenizer: any;\n\ntype Props = {\n merchantPublicKey: string;\n customerId?: string;\n orderID?: string;\n from?: string;\n amount: string;\n discount?: string;\n tax?: string;\n surcharge?: string;\n pass_fee?: boolean;\n orderGuid: string;\n onTriggerPay?: (fn: () => void) => void;\n allowPartial: boolean;\n cashDiscount?: string;\n}\n\ntype activeinTabs = 'form' | 'list'\n\n\ninterface CardDetails {\n cardName: string,\n cardNumber: string;\n expiryMonth: string;\n expiryYear: string;\n cvv: string;\n orderId: string;\n zipCode: string;\n}\ninterface achDetails {\n name: string;\n routingNumber: string;\n accountNumber: string;\n confirmAccountNumber: string;\n bankName: string;\n accountType: string;\n companyName?: string;\n}\n\ninterface Card {\n id: string;\n firstname: string;\n lastname: string;\n primary_card: number;\n expmonth: number;\n expyear: number;\n card_type: string;\n cardlastfourdigit: string;\n}\n\ninterface PaymentDevice {\n id: number;\n device_id: number;\n device_name: string;\n}\n\ninterface OrderDetails {\n orderId?: string;\n}\n\ninterface PaymentData {\n paymentGateway: number;\n isSkyFiAccount: boolean;\n logo: string;\n bname: string;\n card_list: Card[];\n customer_name: string;\n is_primary: string;\n paymentDeviceList: PaymentDevice[];\n orderDetails: OrderDetails;\n dctoken: string;\n showSurcharge?: number;\n}\ninterface SelectedCard {\n card_type: string;\n cardlastfourdigit: string;\n expmonth: number;\n expyear: number;\n primary_card: number;\n firstname: string;\n id: string;\n lastname: string;\n}\n\ninterface SelectedReader {\n id?: number;\n device_id?: number;\n device_name?: string;\n}\n\nexport function PartialPayment(props: Props) {\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n if (props.onTriggerPay) {\n props.onTriggerPay(() => {\n handleShow();\n });\n }\n }, [props]);\n\n let mastercard = S3Url + 'widget/mc-img.svg'\n let visa = S3Url + 'widget/visa-img.svg'\n let americanexp = S3Url + 'widget/ae-img.svg'\n let discover = S3Url + 'widget/discover-img.svg'\n let defaultcard = S3Url + 'widget/card.svg'\n let trash = S3Url + 'widget/Trash.svg'\n let bank = S3Url + 'widget/bank.svg'\n let secure = S3Url + 'widget/secure-img.png'\n let pov = S3Url + 'widget/pov-by.png'\n let pax = S3Url + 'widget/pax.svg'\n\n const [loading, setLoading] = useState<boolean>(false);\n const [loading2, setLoading2] = useState<boolean>(false);\n const [error, setError] = useState<string>(\"\");\n const [success, setSuccess] = useState<boolean>(false);\n const [show, setShow] = useState<boolean>(false);\n const [activetab, setActive] = useState<string>('card');\n const [activeList, setActiveList] = useState<string>('card')\n const [activeinCard, setActiveinCard] = useState<activeinTabs>('form')\n const [activeinBank, setActiveinBank] = useState<activeinTabs>('form')\n const [activeForm, setActiveForm] = useState<boolean>(true)\n const [saveCardInfo, setSaveCardInfo] = useState<boolean>(false);\n const [saveACHinfo, setSaveACHinfo] = useState<boolean>(false);\n const fractalpayClientKey = props.merchantPublicKey;\n const [cardData, setCardData] = useState<CardDetails>()\n const [cardError, setCardError] = useState<Partial<Record<keyof CardDetails, string>>>({});\n const [achData, setAchData] = useState<achDetails>()\n const [achError, setAchError] = useState<Partial<Record<keyof achDetails, string>>>({});\n const [cardList, setCardList] = useState([])\n const [bankList, setBankList] = useState([])\n const [selectedCard, setSelectedCard] = useState<SelectedCard>()\n const [selectedReader, setSelectedReader] = useState<SelectedReader>()\n const [cashDiscount, setCashDiscount] = useState<number | undefined>(Number(props?.amount));\n const [aftertaxAmount, setAfterTaxAmount] = useState<number>(Number(props?.amount));\n const [partialAmount, setPartialAmount] = useState<string | undefined>('');\n const [partialError, setPartialError] = useState<string>(\"\")\n\n const tokenizerRef = useRef<any>(null);\n\n const fractalStyles = {\n input: {\n 'font-family': \"'Inter', sans-serif\" ,\n 'font-size': '16px',\n 'color': '#212529',\n 'background-color': 'transparent',\n 'padding': '0px',\n 'appearance': 'none',\n 'outline': 'none',\n 'border': 'none',\n 'box-shadow': 'none'\n },\n ':focus': {\n 'color': '#212529',\n 'outline': 'none',\n 'border': 'none'\n },\n '::placeholder': {\n 'color': '#212529'\n }\n };\n\n\n const [paymentData, setPaymentData] = useState<PaymentData>()\n let [tranId, setTranId] = useState(\"\")\n\n\n const showLoader = () => setLoading(true);\n const hideLoader = () => setLoading(false);\n\n const CalculateCashDiscount = (amount: any, surcharge: any) => {\n const surchargeVal = (parseFloat(surcharge) || 0) / 100;\n const originalAmount = amount - (amount * surchargeVal);\n return originalAmount; // rounding to 2 decimals\n };\n\n\n const CalculateAfterTaxAmount = (amount: any, surcharge: any) => {\n const surchargeVal = (Number(surcharge) || 0) / 100;\n const originalAmount = +amount + +(amount * surchargeVal);\n return originalAmount; // rounding to 2 decimals\n };\n\n useEffect(() => {\n if (show) {\n if (props?.pass_fee) {\n setAfterTaxAmount(Number(props?.amount));\n setCashDiscount(Number(props?.cashDiscount));\n } else {\n setAfterTaxAmount(Number(props?.amount));\n setCashDiscount(Number(props?.amount));\n }\n }\n\n // if (props?.pass_fee) {\n // } else {\n // setCashDiscount(undefined);\n // }\n }, [show, props?.pass_fee, props?.amount, props?.surcharge])\n\n // for payment popup\n const handleClose = () => {\n setShow(false);\n setActive('card')\n setError(\"\")\n setSuccess(false)\n setTranId(\"\")\n setAchData({\n name: \"\",\n routingNumber: \"\",\n accountNumber: \"\",\n confirmAccountNumber: \"\",\n bankName: \"\",\n accountType: \"\"\n })\n setAchError({\n name: \"\",\n routingNumber: \"\",\n accountNumber: \"\",\n confirmAccountNumber: \"\",\n bankName: \"\",\n accountType: \"\"\n })\n setCardData({\n cardName: \"\",\n cardNumber: \"\",\n expiryMonth: \"\",\n expiryYear: \"\",\n cvv: \"\",\n orderId: \"\",\n zipCode: \"\"\n })\n setCardError({\n cardName: \"\",\n cardNumber: \"\",\n expiryMonth: \"\",\n expiryYear: \"\",\n cvv: \"\",\n orderId: \"\",\n zipCode: \"\"\n })\n setSaveACHinfo(false)\n setSaveCardInfo(false)\n setSelectedCard({\n card_type: \"\",\n cardlastfourdigit: \"\",\n expmonth: 1,\n expyear: 2025,\n primary_card: 0,\n firstname: \"\",\n id: \"\",\n lastname: \"\",\n })\n setSelectedReader({})\n setCashDiscount(0)\n setActiveList('card')\n setActiveForm(true)\n setActiveinBank('form')\n setActiveinCard('form')\n setLoading2(false);\n setLoading(false);\n setBankList([]);\n setCardList([]);\n setPartialAmount('');\n setPartialError('');\n };\n const handleShow = () => setShow(true);\n\n\n const handletabchange = (id: string) => {\n setActive(id)\n }\n\n const handleCardChange = (field: string, value: any) => {\n const name = field\n const numericFields = [\"expiryMonth\", \"expiryYear\", \"zipCode\", \"cvv\"];\n\n if (numericFields.includes(name)) {\n // Agar value empty hai (backspace ke liye) ya sirf digits hain, tabhi set karenge\n if (value === \"\" || /^[0-9]+$/.test(value)) {\n setCardError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setCardData((prev: any) => ({\n ...prev,\n [name]: value,\n }));\n }\n return;\n }\n\n setCardError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setCardData((prev: any) => ({\n ...prev, [name]: value\n }))\n\n }\n const handleCardNumberChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target;\n const rawValue = input.value.replace(/\\D/g, \"\"); // Remove all non-digits\n\n const { formatted, cursor } = formatCardNumberWithCursor(\n input.value,\n input.selectionStart ?? 0\n );\n setCardError((prev: any) => ({\n ...prev,\n cardNumber: \"\"\n }))\n\n setCardData((prev: any) => ({\n ...prev,\n cardNumber: formatted\n }));\n\n requestAnimationFrame(() => {\n input.setSelectionRange(cursor, cursor);\n });\n };\n\n\n const handleChangeAch = (e: any) => {\n const { name, value } = e.target\n const numericFields = [\"routingNumber\", \"accountNumber\", \"confirmAccountNumber\"];\n if (name == \"name\") {\n\n\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n setAchError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setAchData((prev: any) => ({\n ...prev,\n [name]: value,\n }));\n }\n return\n\n }\n if (numericFields.includes(name)) {\n // Agar value empty hai (backspace ke liye) ya sirf digits hain, tabhi set karenge\n if (value === \"\" || /^[0-9]+$/.test(value)) {\n setAchError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setAchData((prev: any) => ({\n ...prev,\n [name]: value,\n }));\n }\n return;\n }\n\n\n setAchError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setAchData((prev: any) => ({\n ...prev, [name]: value\n }))\n\n }\n\n const validateCardData = (): boolean => {\n const errors: Partial<Record<keyof CardDetails, string>> = {};\n const data = cardData\n if (paymentData?.paymentGateway !== 32) {\n\n if (!data?.cardNumber?.trim()) errors.cardNumber = \"Card number is required\";\n const month = parseInt(data?.expiryMonth || \"\", 10);\n const year = data?.expiryYear || \"\";\n if (!data?.expiryMonth?.trim() || !data?.expiryYear?.trim()) {\n errors.expiryMonth = \"Invalid Expiration Date.\"\n } else if (isNaN(month) || month < 1 || month > 12 || year.length !== 4) {\n errors.expiryMonth = \"Invalid Expiration Date.\";\n }\n if (!data?.cvv?.trim()) errors.cvv = \"CVV is required\";\n // Additional check for expired card\n if (data?.expiryMonth && data?.expiryYear && data.expiryMonth.length <= 2 && data.expiryYear.length === 4) {\n const month = parseInt(data.expiryMonth, 10);\n const year = parseInt(data.expiryYear, 10);\n const now = new Date();\n const currentMonth = now.getMonth() + 1; // JS month is 0-indexed\n const currentYear = now.getFullYear();\n\n if (year < currentYear || (year === currentYear && month < currentMonth)) {\n errors.expiryMonth = \"Card is expired\";\n }\n }\n }\n if (!data?.cardName?.trim()) errors.cardName = \"Card name is required\";\n if (!data?.zipCode?.trim()) errors.zipCode = \"ZIP code is required\";\n setCardError(errors);\n\n // Return true if there is any error\n return Object.keys(errors).length > 0;\n };\n const validateAchData = (): boolean => {\n const errors: Partial<Record<keyof achDetails, string>> = {};\n const data = achData\n if (!data?.name?.trim()) errors.name = \"Name is required\";\n if (!data?.accountNumber?.trim()) errors.accountNumber = \"Account number is required\";\n if (data?.accountNumber?.trim() && data?.accountNumber?.trim() !== data?.confirmAccountNumber?.trim()) errors.confirmAccountNumber = \"Account numbers must match\";\n if (!data?.bankName?.trim()) errors.bankName = \"Bank name is required\";\n if (!data?.routingNumber?.trim()) errors.routingNumber = \"Routing Number is required\";\n\n\n if (data?.routingNumber && data?.routingNumber?.length !== 9) errors.routingNumber = \"Routing number must be 9 digits\";\n\n\n if ((data?.accountType === 'business saving' || data?.accountType === 'business checking')) {\n if (!data?.companyName || data?.companyName === \"\") {\n errors.companyName = \"Company Name is required for business accounts\";\n }\n }\n\n // Routing Number Validation removed du to new validation \n // if (data?.routingNumber?.length == 9) {\n\n // let routingNumber = data?.routingNumber\n // const weights = [3, 7, 1];\n // let sum = 0;\n\n // for (let i = 0; i < routingNumber.length; i++) {\n // sum += parseInt(routingNumber[i], 10) * weights[i % 3];\n // }\n // if (sum % 10 !== 0) {\n // errors.routingNumber = \"Invalid routing number\"\n // }\n\n // }\n setAchError(errors);\n return Object.keys(errors).length > 0;\n };\n\n\n\n const submitFunc = async (e: any) => {\n e.preventDefault();\n const el = document.activeElement;\n if (el instanceof HTMLElement) {\n el.blur();\n }\n if (loading2) return;\n if (partialError) {\n return\n }\n if (activetab !== 'ach') {\n const hasError = validateCardData()\n if (hasError) return\n else {\n let validCard = true;\n let validExpirationDate = true;\n let validCVV = true;\n\n if (paymentData?.paymentGateway !== 32) {\n let validCard = DatacapWebToken.validateCardNumber(cardData?.cardNumber.replaceAll(\" \", ''));\n let validExpirationDate = DatacapWebToken.validateExpirationDate(cardData?.expiryMonth, cardData?.expiryYear);\n let validCVV = DatacapWebToken.validateCVV(cardData?.cvv);\n let errors: Partial<Record<keyof CardDetails, string>> = {}\n if (!validCard) errors.cardNumber = \"Invalid card Number\"\n if (!validExpirationDate) errors.expiryMonth = \"Invalid Expiration Date.\"\n if (!validCVV) errors.cvv = \"Invalid CVV\"\n setCardError(errors)\n }\n\n if (validCard && validCVV && validExpirationDate) {\n\n // showLoader()\n setLoading2(true)\n try {\n // const formData = {\n // ...cardData,\n // amount: `${props.amount || 0}`,\n // fractalpayPublicKey: fractalpayClientKey,\n // orderId: props?.orderID,\n // customer_id: props?.customerId,\n // discount: props?.discount,\n // surcharge: props?.surcharge,\n // tax: props?.tax,\n // pass_fee: props?.pass_fee\n // }\n // const result = await axios.post(`${baseUrl}create-widget-order`, formData)\n let tokenCallback = async function (response: any) {\n\n if (response.Error) {\n setError(response.Error)\n // hideLoader();\n setLoading2(false)\n\n\n } else {\n let name = cardData?.cardName;\n let postal_code = cardData?.zipCode;\n\n response.name = name;\n response.postal_code = postal_code;\n response.isCardSave = `${saveCardInfo}`\n response.isCharge = true;\n response.posSalesIdEncode = paymentData?.orderDetails?.orderId;\n response.partial_amount = partialAmount && !partialError ? partialAmount : aftertaxAmount\n\n\n socket.emit(\"sendMessage\", response)\n let eventName: string = paymentData?.orderDetails?.orderId!\n socket.on(eventName, (data: any) => {\n if (isValidJson(data?.data)) {\n let apiResponse = JSON.parse(data.data);\n if (apiResponse?.result) {\n setCardData({\n cardName: \"\",\n cardNumber: \"\",\n expiryMonth: \"\",\n expiryYear: \"\",\n cvv: \"\",\n orderId: \"\",\n zipCode: \"\"\n })\n setSaveCardInfo(false)\n setTranId(apiResponse?.transactionId)\n setSuccess(true)\n // hideLoader()\n setLoading2(false)\n } else {\n setLoading2(false)\n setError(apiResponse?.message || \"Something went wrong.\")\n }\n } else {\n setError(\"Something went wrong.\")\n }\n })\n\n\n // try {\n // let apiResponse = await axios.post(`${masterBaseUrl}quick-pay/${result?.data.data.posSalesIdEncode}`, response)\n // setCardData({\n // cardName: \"\",\n // cardNumber: \"\",\n // expiryMonth: \"\",\n // expiryYear: \"\",\n // cvv: \"\",\n // orderId: \"\",\n // zipCode: \"\"\n // })\n // setSaveCardInfo(false)\n // setTranId(apiResponse?.data?.transactionId)\n // setSuccess(true)\n // // hideLoader()\n // setLoading2(false)\n\n // } catch (err: any) {\n // // hideLoader()\n // setLoading2(false)\n\n // setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n\n // }\n\n }\n }\n\n if (paymentData?.paymentGateway === 32) {\n const requestOptions = {\n method: \"POST\",\n redirect: \"follow\"\n };\n try {\n let sesionResult = await axios.post(`${masterBaseUrl}api/v1/widget/generate-session`, requestOptions)\n // let expYear = (Number(cardData?.expiryYear)) % 100;\n // let cardNumber = cardData?.cardNumber;\n // cardNumber = cardNumber?.replace(/\\s+/g, '');\n // let track2_data = `${cardNumber}=${expYear}${cardData?.expiryMonth} ${cardData?.cvv}`;\n // const publicKey = forge.pki.publicKeyFromPem(sesionResult?.data?.data?.publicKeyPem);\n // const encrypted = publicKey.encrypt(track2_data, 'RSA-OAEP', {\n // md: forge.md.sha1.create(),\n // mgf1: {\n // md: forge.md.sha1.create()\n // }\n // });\n // const encryptedBase64 = forge.util.encode64(encrypted);\n // // Create Token\n // const myHeaders = {\n // \"Content-Type\": \"application/json\",\n // \"x-app-session-key\": sesionResult.data?.data?.session_key\n // }\n\n // const raw = JSON.stringify({\n // \"enc_track2_data\": `${encryptedBase64}`,\n // \"algorithm\": \"RSAES_OAEP_SHA_1\",\n // session_key: `${sesionResult?.data?.data?.session_key}`\n // });\n\n try {\n // const tokenizeData = await axios.post(`${fractalGatewayUrl}tokenizer/tokenize`, raw, { headers: myHeaders })\n const tokenizeData = await tokenizerRef.current.createToken({\n public_key_pem: sesionResult?.data?.data?.publicKeyPem || sesionResult?.data?.data?.public_key_pem,\n session_key: sesionResult?.data?.data?.session_key\n });\n const reqData = JSON.stringify({\n ...tokenizeData,\n isSaveCardChecked: saveCardInfo,\n name: cardData?.cardName,\n postal_code: cardData?.zipCode,\n customer_id: props?.customerId,\n partial_amount: partialAmount && !partialError ? partialAmount : aftertaxAmount\n })\n\n const reqData2 = JSON.stringify({\n \"pre_sales_id\": `${paymentData?.orderDetails?.orderId!}`,\n \"token\": `${tokenizeData?.token}`,\n \"json_response\": `${reqData}`\n })\n let myHeaders2 = JSON.stringify({\n \"Content-Type\": \"application/json\"\n })\n const requestOptions = {\n method: \"POST\",\n headers: myHeaders2,\n body: reqData2,\n redirect: \"follow\",\n isChargeviafractal: true,\n };\n\n socket.emit(\"sendMessage\", requestOptions)\n socket.on('chargeviafractalgateway', (data: any) => {\n if (isValidJson(data?.data)) {\n let paymentRes = JSON.parse(data?.data)\n if (paymentRes?.result) {\n setTranId(paymentRes?.data?.transactionId)\n setSuccess(true)\n // hideLoader()\n setLoading2(false)\n } else {\n setLoading2(false)\n setError(paymentRes?.message || \"Something went wrong.\")\n }\n } else {\n setError(\"Something went wrong.\")\n }\n })\n\n\n // try {\n // let paymentRes = await axios.post(`${masterBaseUrl}api/v1/payment-gateway/charge`, requestOptions,\n // {\n // headers: myHeaders2\n // }\n // )\n // if (paymentRes?.data?.result) {\n // setTranId(paymentRes?.data?.data?.transactionId)\n // setSuccess(true)\n // // hideLoader()\n // setLoading2(false)\n\n // }\n\n // } catch (err: any) {\n // // hideLoader()\n // setLoading2(false)\n\n // setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n // }\n } catch (err: any) {\n // hideLoader()\n setLoading2(false)\n\n setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n }\n\n } catch (err: any) {\n // hideLoader()\n setLoading2(false)\n setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n }\n } else {\n if (typeof DatacapWebToken !== 'undefined') {\n DatacapWebToken.requestToken(paymentData?.dctoken, \"PaymentForm\", tokenCallback);\n }\n }\n } catch (err: any) {\n // hideLoader()\n setLoading2(false)\n\n setError(err?.response?.data?.message || err?.message || \"Something went wrong.\")\n }\n }\n }\n } else {\n const hasError = validateAchData()\n if (hasError) return\n else {\n setLoading2(true)\n let dataForm = {\n fractalpayPublicKey: fractalpayClientKey,\n label: achData?.name || \"John Doe\",\n account_number: achData?.accountNumber,\n routing_number: achData?.routingNumber,\n bank_name: achData?.bankName,\n account_type: achData?.accountType,\n amount: partialAmount && !partialError ? partialAmount : String(cashDiscount || 0),\n isSaveAch: saveACHinfo,\n customer_id: props?.customerId,\n order_id: props?.orderID,\n tax: props?.tax,\n discount: props?.discount,\n surcharge: props?.surcharge,\n isChargeACH: true,\n company_name: achData?.companyName || \"\",\n orderGuid: props?.orderGuid\n }\n // showLoader()\n socket.emit(\"sendMessage\", dataForm)\n socket.on('ach-incoming', (data: any) => {\n if (data?.status == \"Failed\") {\n if (typeof (data?.message) == \"object\") {\n Object.values(data?.message).forEach((message: any) => {\n setError(message || \"Something went wrong\");\n });\n } else {\n setError(data?.message || \"Something went wrong\")\n }\n } else {\n setTranId(data?.data?.transaction_id)\n setSuccess(true)\n setLoading2(false)\n // Swal.fire({\n // icon: 'success',\n // title: 'Congrats...',\n // text: data?.message,\n // }).then((res) => {\n // if (res.isConfirmed) {\n // // OK button was clicked\n // handleClose()\n // }\n // });\n }\n })\n\n // try {\n // let result = await axios.post(`${baseUrl}ach-incoming`, dataForm)\n // // hideLoader()\n // setLoading2(false)\n\n // Swal.fire({\n // icon: 'success',\n // title: 'Congrats...',\n // text: result?.data?.message,\n // }).then((res) => {\n // if (res.isConfirmed) {\n // // OK button was clicked\n // handleClose()\n // }\n // });\n // } catch (error) {\n // if (axios.isAxiosError(error)) {\n // // hideLoader()\n // setLoading2(false)\n\n // setError(error.response?.data?.message?.error ?? error.response?.data?.message?.amount ?? \"Something went wrong\")\n // }\n // else {\n // console.error('Unexpected error', error);\n // }\n // }\n }\n }\n\n }\n\n\n const getPaymentDetails = async () => {\n showLoader()\n try {\n const data = {\n fractalpayPublicKey: fractalpayClientKey,\n \"customer_id\": props?.customerId,\n pass_fee: props?.pass_fee,\n orderGuid: props?.orderGuid\n }\n let paymentData = await axios.post(`${baseUrl}get-payment-details`, data)\n setPaymentData(paymentData?.data?.data)\n if (!paymentData?.data?.data?.paymentGateway) {\n handleClose()\n setError(\"Something went wrong.\")\n }\n if (paymentData?.data?.data?.card_list && paymentData?.data?.data?.card_list?.length > 0) {\n // setActive('cardList')\n let banklists = paymentData?.data?.data?.card_list?.filter((card: any) => card?.card_type == 'Bank')\n let cardlists = paymentData?.data?.data?.card_list?.filter((card: any) => card?.card_type !== 'Bank')\n console.log(banklists, \"hohgohoo\", cardlists);\n if (cardlists?.length > 0) {\n setActiveinCard('list')\n }\n if (banklists?.length > 0) {\n setActiveinBank('list')\n }\n setCardList(cardlists)\n setBankList(banklists)\n // let primary_card = paymentData?.data?.data?.card_list?.filter((card: any) => card?.primary_card == 1)\n // if (primary_card?.[0] && primary_card?.[0]?.payment_method_type == paymentData?.data?.data?.paymentGateway) {\n // setSelectedCard(primary_card[0])\n // } else if (primary_card?.[0]?.card_type === \"Bank\") {\n // setSelectedCard(primary_card[0])\n // }\n } else {\n setActive('card')\n }\n\n if (paymentData?.data?.data?.paymentDeviceList && paymentData?.data?.data?.paymentDeviceList?.length > 0) {\n setSelectedReader(paymentData?.data?.data?.paymentDeviceList[0])\n }\n\n hideLoader()\n } catch (err: any) {\n console.log(err);\n hideLoader()\n setError(err?.response?.data?.message || err?.message || \"Something went wrong\")\n }\n }\n\n const handlechargeCustomer = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.currentTarget.blur();\n if (loading2) return;\n let customer_id = props?.customerId\n let discount = String(props?.discount)\n let surcharge = String(props?.surcharge)\n let tax = String(props?.tax)\n let fractalpayPublicKey = props?.merchantPublicKey\n let order_id = props?.orderID\n let amount = partialAmount && !partialError ? partialAmount : String(aftertaxAmount)\n let card_id = selectedCard?.id\n let card_type = selectedCard?.card_type\n\n if (partialError) {\n return\n }\n\n if (fractalpayPublicKey && order_id && amount && cashDiscount) {\n if (customer_id) {\n if (card_id) {\n let amount\n if (partialAmount && !partialError) {\n amount = partialAmount;\n } else if (card_type === \"Bank\") {\n amount = cashDiscount;\n } else {\n amount = aftertaxAmount;\n }\n\n let chargeobj: any = {\n amount: amount,\n order_id,\n customer_id,\n card_id,\n fractalpayPublicKey,\n isCardSave: saveCardInfo,\n discount,\n surcharge,\n tax,\n orderGuid: props?.orderGuid,\n pass_fee: props?.pass_fee,\n require3ds: false\n }\n\n if (partialAmount && !partialError && card_type !== \"Bank\") {\n chargeobj.ispartialPayment = true;\n }\n\n let { isCardSave, ...rest } = chargeobj\n\n\n let endpoint = card_type === \"Bank\" ? \"charge-ach\" : \"charge-by-card\"\n\n let chargeurl = baseUrl + endpoint\n const headers = {\n 'Content-Type': 'application/json'\n }\n // showLoader()\n setLoading2(true)\n socket.emit(\"sendMessage\", { url: chargeurl, body: card_type == 'Bank' ? rest : chargeobj, isChargebycard: true })\n socket.on('charge-by-card', (response: any) => {\n if (response?.result == true || response?.status == true) {\n setTranId(response.data?.transaction_id)\n setSuccess(true)\n // hideLoader()\n setLoading2(false)\n } else {\n setError(response?.message || \"Something went wrong.\")\n }\n })\n // try {\n // let result = await axios.post(chargeurl, card_type == 'Bank' ? rest : chargeobj, { headers })\n // if (result?.data?.result) {\n // setTranId(result?.data?.data?.transaction_id)\n // setSuccess(true)\n // // hideLoader()\n // setLoading2(false)\n\n // }\n // // hideLoader()\n\n // } catch (err: any) {\n // // hideLoader()\n // setLoading2(false)\n\n // setError(err?.response?.data?.message || err?.response?.data?.status || \"Something went erong\")\n\n // }\n\n } else {\n setError(\"Please Select A Card/ACH\")\n // swal(\"Please Select A Card/ACH\", '', \"error\");\n }\n } else {\n // swal(\"Please Select Customer\", '', \"error\");\n setError(\"Please Select Customer\")\n }\n } else {\n // swal(\"Something went wrong\", 'Please try again later !!!', \"error\");\n setError(\"Something went wrong.\")\n }\n }\n\n const handleChargewithEMV = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.currentTarget.blur();\n if (loading2) return;\n let fractalpayPublicKey = props?.merchantPublicKey\n let customer_order_id = props?.orderID\n let amount = partialAmount && !partialError ? partialAmount : String(aftertaxAmount)\n let customer_id = props?.customerId\n\n if (!selectedReader?.device_id) {\n setError(\"Please Select A Payment Device\")\n return\n }\n\n if (fractalpayPublicKey && customer_order_id && amount) {\n setLoading2(true)\n let obj = {\n amount,\n fractalpayPublicKey,\n customer_order_id,\n device_id: selectedReader?.device_id,\n customer_id: customer_id || \"\"\n }\n\n try {\n let response = await axios.post(`${baseUrl}charge-with-reader`, obj)\n\n\n if (response?.data?.result == true) {\n setTranId(response?.data?.data?.transaction_id)\n setSuccess(true)\n setLoading2(false)\n } else {\n setError(response?.data?.message || \"Something went wrong.\")\n setLoading2(false)\n }\n\n } catch (error: any) {\n setError(error?.response?.data?.message || \"Something went wrong.\")\n setLoading2(false)\n }\n } else {\n setError(\"Something went wrong.\")\n }\n }\n\n const handlepayment = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (activeList === 'card') {\n handlechargeCustomer(e)\n } else if (activeList === 'reader') {\n handleChargewithEMV(e)\n }\n }\n\n\n useEffect(() => {\n if (show && fractalpayClientKey) {\n\n getPaymentDetails()\n }\n }, [fractalpayClientKey, show])\n\n const handleDeleteCard = async (cardId: any) => {\n Swal.fire({\n icon: 'warning',\n text: 'Do you want to delete the card?',\n showCancelButton: true,\n confirmButtonText: 'Yes',\n cancelButtonText: 'No',\n reverseButtons: true,\n buttonsStyling: false,\n customClass: {\n confirmButton: 'swal2-confirm btn btn-dark',\n cancelButton: 'swal2-cancel btn btn-dark',\n popup: 'custom-swal-popup',\n icon: 'custom-swal-icon'\n }\n }).then(async (result) => {\n if (result.isConfirmed) {\n // 👇 Yahan aap apna API call karo\n // showLoader()\n setLoading2(true)\n try {\n let obj = {\n card_id: cardId,\n customer_id: props?.customerId,\n fractalpayPublicKey: props?.merchantPublicKey\n }\n\n const res = await axios.post(`${baseUrl}delete-customer-card`, obj)\n // hideLoader()\n setLoading2(false)\n\n getPaymentDetails()\n Swal.fire({\n icon: 'success',\n title: 'Deleted!',\n text: 'Card deleted.',\n confirmButtonText: 'OK',\n showConfirmButton: true,\n timer: 1000, // auto-close after 1 second\n timerProgressBar: true,\n customClass: {\n confirmButton: 'btn btn-dark'\n }\n })\n\n } catch (err) {\n // hideLoader()\n setLoading2(false)\n Swal.fire({\n icon: 'error',\n title: 'Error!',\n text: 'Failed to delete the card.',\n confirmButtonText: 'OK',\n customClass: {\n confirmButton: 'btn btn-dark'\n }\n });\n }\n\n\n } else if (result.dismiss === Swal.DismissReason.cancel) {\n // 👇 Show new popup on \"No\"\n Swal.fire({\n icon: 'info',\n text: 'Card not deleted',\n confirmButtonText: 'OK',\n buttonsStyling: false,\n customClass: {\n confirmButton: 'btn btn-dark float-end',\n actions: 'swal2-actions-end'\n }\n });\n\n }\n });\n };\n\n const getCardType = (card: string) => {\n let card_type = card?.toLowerCase();\n\n switch (card_type) {\n case 'visa':\n return visa;\n case 'mastercard':\n case 'mc':\n case 'm/c':\n return mastercard;\n case 'amex':\n case 'american express':\n case 'ae':\n return americanexp;\n case 'discover':\n case 'dcvr':\n return discover;\n case 'bank':\n return bank;\n default:\n return card;\n }\n };\n\n const getCashDiscount = () => {\n let cashDiscountNew = cashDiscount || 0\n let diff = Number(aftertaxAmount) - cashDiscountNew\n return diff.toFixed(0)\n }\n\n console.log(activeinCard, \"activeinCard\", \"activeinBank\", activeinBank);\n\n const handlePartialChange = (values: any) => {\n console.log(values, \"values\");\n if (activetab === 'ach') {\n if ((Number(cashDiscount)?.toFixed(2) < values?.floatValue) || (values?.floatValue <= 0)) {\n setPartialAmount(values?.value);\n setPartialError(`Partial amount cannot exceed ${formatUSD(Number(cashDiscount)?.toFixed(2))}`);\n } else {\n setPartialAmount(values?.value);\n setPartialError(\"\");\n }\n } else {\n if ((Number(aftertaxAmount)?.toFixed(2) < values?.floatValue) || (values?.floatValue <= 0)) {\n setPartialAmount(values?.value);\n setPartialError(`Partial amount cannot exceed ${formatUSD(Number(aftertaxAmount)?.toFixed(2))}`);\n } else {\n setPartialAmount(values?.value);\n setPartialError(\"\");\n }\n }\n\n }\n\n // useEffect(() => {\n\n // if (activetab === 'ach') {\n // if (partialAmount && (Number(cashDiscount)?.toFixed(2) < partialAmount) || (Number(partialAmount) <= 0)) {\n // setPartialError(`Partial amount cannot exceed ${formatUSD(Number(cashDiscount)?.toFixed(2))}`);\n // } else {\n // setPartialError(\"\");\n // }\n // } else {\n // if (partialAmount && (Number(aftertaxAmount)?.toFixed(2) < partialAmount) || (Number(partialAmount) <= 0)) {\n // setPartialError(`Partial amount cannot exceed ${formatUSD(Number(aftertaxAmount)?.toFixed(2))}`);\n // } else {\n // setPartialError(\"\");\n // }\n // }\n\n // }, [activetab])\n\n useEffect(() => {\n const baseAmount = activetab === \"ach\"\n ? Number(cashDiscount)\n : Number(aftertaxAmount);\n\n const partial = Number(partialAmount);\n\n if (partialAmount) {\n if (partial <= 0 || partial > baseAmount) {\n setPartialError(`Partial amount cannot exceed ${formatUSD(baseAmount.toFixed(2))}`);\n } else {\n setPartialError(\"\");\n }\n } else {\n setPartialError(\"\");\n }\n }, [activetab, partialAmount, cashDiscount, aftertaxAmount]);\n\n\n console.log(activetab, \"activetab\");\n\n useEffect(() => {\n if (typeof FractalTokenizer === 'undefined') return;\n\n const tokenizer = new FractalTokenizer({\n styles: {},\n });\n\n\n }, []);\n\n return (\n <>\n <DataScript />\n <Chargewidgetstyles />\n <CardBankRadioStyles />\n <FractalTokenizerScript />\n <>\n <button ref={buttonRef} style={{ display: 'none' }} className=\"paymentBtn\" onClick={handleShow}>\n Pay\n </button>\n\n <CustomModal2\n open={show}\n onClose={handleClose}\n >\n {error && <div style={{ maxHeight: '606px', minHeight: '60vh', padding: '40px' }}>\n <ErrorCardMessage error={error} onClose={handleClose} />\n </div>}\n {success && <SuccessMsz onClose={handleClose} tranId={tranId} />}\n {!error && !success &&\n <>\n {(loading || loading2) && <Loader loading={loading || loading2} />}\n <div className='frac-card-payment-page frac-form'>\n <div className='parent-pay-container'>\n <span className=\"request-payment-close-popup\" onClick={handleClose}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <g clipPath=\"url(#clip0_12425_52336)\">\n <path d=\"M9.46585 8.01168L15.6959 1.7814C16.1014 1.37615 16.1014 0.720912 15.6959 0.315659C15.2907 -0.0895946 14.6354 -0.0895946 14.2302 0.315659L7.99991 6.54593L1.76983 0.315659C1.36438 -0.0895946 0.709336 -0.0895946 0.304082 0.315659C-0.101361 0.720912 -0.101361 1.37615 0.304082 1.7814L6.53416 8.01168L0.304082 14.2419C-0.101361 14.6472 -0.101361 15.3024 0.304082 15.7077C0.506045 15.9098 0.771595 16.0114 1.03695 16.0114C1.30232 16.0114 1.56768 15.9098 1.76983 15.7077L7.99991 9.47742L14.2302 15.7077C14.4323 15.9098 14.6977 16.0114 14.9631 16.0114C15.2284 16.0114 15.4938 15.9098 15.6959 15.7077C16.1014 15.3024 16.1014 14.6472 15.6959 14.2419L9.46585 8.01168Z\" fill=\"#727272\" />\n </g>\n <defs>\n <clipPath id=\"clip0_12425_52336\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n\n <div className='pay-main-logo-res'>\n <img src={paymentData?.logo} id='pay-logos' /></div>\n <div className=\"pay-container\" >\n <div className=\"pay-header pay-conatiner-one frac-pay-conatiner-one\" >\n\n <div className=\"pay-conatiner-one-first\">\n\n <div className=\"pay-logo-container\" >\n <div className='pay-main-logo'>\n <img src={paymentData?.logo} id='pay-logos' /></div>\n {/* <h1 className='pay-heading' >Pay</h1> */}\n\n {cardList?.length > 0 && activetab !== \"cardList\" &&\n <button className='res-charge-payment-back-btn ' onClick={() => setActive('cardList')}> <IoArrowBack /> Back</button>\n }\n </div>\n <div className='amt-pay-con'>\n\n <div className='pay-amount-conatiner' >\n <small className='pay-payment-amount' >Select payment type</small>\n {/* <strong className='pay-amount'>${Number(props?.amount)?.toFixed(2)}</strong>\n {cashDiscount && cashDiscount > 0 && <div style={{ width: '80%' }} className='frac-cash-discount' >\n <div className='frac-cashlabel' >Cash Discount</div>\n <div>${cashDiscount.toFixed(2)}</div>\n </div>} */}\n </div>\n {/* {\n activetab != \"ach\" &&\n <div style={{ display: 'flex', gap: '8px', margin: '8px 0' }}>\n <img src={visa} alt=\"\" width={33} />\n <img src={mastercard} width={33} alt=\"\" />\n <img src={americanexp} alt=\"\" width={33} />\n <img src={discover} width={33} alt=\"\" />\n </div>\n } */}\n <div className='frac-card-bank-radio-main' >\n <CardBankRadio label='Card' amount={Number(aftertaxAmount)?.toFixed(2)} value='card' onChange={handletabchange} activetab={activetab} />\n {\n paymentData?.isSkyFiAccount &&\n <CardBankRadio label='Bank' amount={Number(cashDiscount)?.toFixed(2)} value='ach' onChange={handletabchange} activetab={activetab} />\n }\n </div>\n {\n numberToBoolean(paymentData?.showSurcharge) ? (\n ((cashDiscount && cashDiscount > 0 && props?.pass_fee)) ? (\n <div className=\"frac-cash-discount-fee\">\n <small>{(activetab === 'card') ? 'Cash Discount' : 'Cash Discount Savings'} </small>\n <p>{formatUSD((Number(aftertaxAmount) - cashDiscount).toFixed(2))}</p>\n </div>\n ) : null\n ) : ((cashDiscount && cashDiscount > 0 && props?.pass_fee && ((activetab === 'card'))) ? (\n <div className=\"frac-cash-discount-fee\">\n <small>{(activetab === 'card') ? 'Surcharge' : null} </small>\n <p>{formatUSD((Number(aftertaxAmount) - cashDiscount).toFixed(2))}</p>\n </div>\n ) : null)\n }\n {/* {\n (cashDiscount && cashDiscount > 0 && props?.pass_fee && activetab === 'card') ? (\n <div className=\"frac-cash-discount-fee\">\n <small>{activetab === 'card' ? 'Surcharge' : null} </small>\n <p>{formatUSD((Number(aftertaxAmount) - cashDiscount).toFixed(2))}</p>\n </div>\n ) : null\n } */}\n\n {\n props?.allowPartial && (\n <div className=\"frac-partial-payment-input\">\n <label htmlFor=\"partialpayment\">Partial Payment</label>\n <NumericFormat\n prefix='$'\n className='form-control'\n value={partialAmount}\n onValueChange={(values) => {\n handlePartialChange(values)\n }}\n thousandSeparator\n placeholder='Enter partial amount'\n allowNegative={false}\n allowLeadingZeros={false}\n decimalScale={2}\n fixedDecimalScale\n />\n\n {partialError && <span className='error-span'>{partialError}</span>}\n </div>\n )\n }\n </div>\n </div>\n <div className='pay-conatiner-one-last'>\n <img src={secure} alt=\"\" />\n <img src={pov} alt=\"\" />\n Secure payments powered by Fractal\n </div>\n\n </div>\n <div className=\"pay-tab pay-conatiner-two\">\n {!loading &&\n <div className=\"col-md-12\">\n <div id='payment-form-div' >\n {\n activetab !== \"cardList\" ?\n <div className='frac-charge-payment-back-btn-wrap '>\n {cardList?.length > 0 &&\n <button className='charge-payment-back-btn ' onClick={() => setActive('cardList')}> <IoArrowBack /> Back</button>\n }\n {paymentData?.isSkyFiAccount &&\n <div className=\"tab\">\n <button className=\"tablinks\" onClick={(e) => { handletabchange('card') }} style={{ border: activetab === 'card' ? '1px solid' : '' }} ><i className=\"fas fa-credit-card me-2\" style={{ marginRight: '8px', fontSize: '15px' }}></i>Card</button>\n\n <button className=\"tablinks\" onClick={(e) => { handletabchange('ach') }} style={{ border: activetab === 'ach' ? '1px solid' : '' }} ><i className=\"fas fa-university me-2\" style={{ marginRight: '8px', fontSize: '15px' }}></i>Bank</button>\n </div>\n }\n\n <div className='res-pay-con'>\n\n <div className='pay-amount-conatiner' style={{ margin: 0 }} >\n <small className='pay-payment-amount' >Payment Amount</small>\n <strong className='pay-amount'>${Number(aftertaxAmount)?.toFixed(2)}</strong>\n </div>\n {\n activetab != \"ach\" &&\n <div >\n <div >\n\n <img src={visa} alt=\"\" width={35} style={{ paddingRight: '5px' }} />\n <img src={mastercard} width={35} alt=\"\" />\n </div>\n <div>\n\n <img src={americanexp} alt=\"\" width={35} style={{ paddingRight: '5px' }} />\n <img src={discover} width={35} alt=\"\" />\n </div>\n </div>\n }\n </div>\n {/* {\n cashDiscount && cashDiscount > 0 && <div className='res-pay-con frac-cash-discount' >\n <div className='frac-cashlabel' >Cash Discount</div>\n <div>${cashDiscount}</div>\n </div>\n } */}\n {\n !loading && numberToBoolean(paymentData?.showSurcharge) ? (\n ((cashDiscount && cashDiscount > 0 && props?.pass_fee)) ? (\n <div className=\"frac-cash-discount-fee\">\n <small>{(activetab === 'card') ? 'Cash Discount' : 'Cash Discount Savings'} </small>\n <p>{formatUSD((Number(aftertaxAmount) - cashDiscount).toFixed(2))}</p>\n </div>\n ) : null\n ) : ((cashDiscount && cashDiscount > 0 && props?.pass_fee && ((activetab === 'card'))) ? (\n <div className=\"frac-cash-discount-fee\">\n <small>{(activetab === 'card') ? 'Surcharge' : null} </small>\n <p>{formatUSD((Number(aftertaxAmount) - cashDiscount).toFixed(2))}</p>\n </div>\n ) : null)\n }\n </div>\n :\n <div>\n <h6 className='charge-customer-name' style={{ marginBottom: '16px !important' }}> Charge {paymentData?.customer_name}</h6>\n <h6 className='card-ach-heading' style={{ marginBottom: '10px !important' }}> {activeList === 'card' ? 'Cards/Banks' : 'Readers'} </h6>\n <div className='res-pay-con'>\n\n <div className='pay-amount-conatiner' style={{ margin: 0 }} >\n <small className='pay-payment-amount' >Payment Amount</small>\n <strong className='pay-amount'>${Number(aftertaxAmount)?.toFixed(2)}</strong>\n </div>\n\n\n <div >\n <div >\n\n <img src={visa} alt=\"\" width={35} style={{ paddingRight: '5px' }} />\n <img src={mastercard} width={35} alt=\"\" />\n </div>\n <div>\n\n <img src={americanexp} alt=\"\" width={35} style={{ paddingRight: '5px' }} />\n <img src={discover} width={35} alt=\"\" />\n </div>\n </div>\n\n </div>\n </div>\n }\n\n {/* active tab home card list */}\n {/* <div id=\"ach\" style={{ display: activetab === 'cardList' ? 'block' : 'none' }} className=\"tabcontent\">\n\n <CardList listHeading='Banks' paymentGateway={paymentData?.paymentGateway} ListItems={bankList} selectedCard={selectedCard} setSelectedCard={setSelectedCard} handleDeleteCard={handleDeleteCard} />\n\n <div className='card-lint-div-in'>\n <div className='card-list-div'>\n\n {\n activeList === 'card' ? (\n <>\n {\n paymentData?.card_list && paymentData?.card_list?.length > 0 &&\n paymentData?.card_list?.map((card: any, index) => (\n <div className='card-list-single-div' key={index}>\n <div className=\"card-number-radio\">\n <input disabled={paymentData?.paymentGateway != card?.payment_method_type && card?.card_type != \"Bank\"} type=\"radio\" className='cardRadio' name=\"selected_card\" id=\"\" checked={selectedCard === card}\n onChange={(e) => setSelectedCard(card)} />\n <label htmlFor=\"\" className='card-number-last-four'>**** {card?.cardlastfourdigit}</label>\n {\n card?.card_type != \"Bank\" && (<h6 className='card-expiry-date'>{card?.expmonth}/{card?.expyear}</h6>)\n }\n </div>\n <div className=\"card-number-radio\">\n <span className='visa-card'>\n <img src={getCardType(card?.card_type)} alt=\"\" />\n </span>\n <span className='visa-card' style={{ cursor: \"pointer\" }} onClick={() => handleDeleteCard(card?.id)}>\n <img src={trash} alt=\"\" />\n </span>\n </div>\n </div>\n ))\n }\n </>\n ) : (\n <>\n {\n paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 &&\n paymentData?.paymentDeviceList?.map((reader: any, index) => (\n <div className='card-list-single-div' key={index}>\n <div className=\"card-number-radio\">\n <input type=\"radio\" className='cardRadio' name=\"selected_reader\" id=\"\" checked={selectedReader === reader}\n onChange={(e) => setSelectedReader(reader)} />\n <label htmlFor=\"\" className='card-number-last-four'>{reader?.device_name}</label>\n </div>\n <div className=\"card-number-radio\">\n <span className='visa-card'>\n <img src={pax} alt=\"\" />\n </span>\n </div>\n </div>\n ))\n }\n </>\n )\n\n }\n\n </div>\n <div className='pay-with-other-card' onClick={() => setActive('card')}>\n Pay With Other Card\n <img src={defaultcard} alt=\"\" />\n </div>\n {activeList === 'card' && paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 && (\n <div className='pay-with-other-card ' onClick={() => setActiveList('reader')}>\n Pay With Reader\n <img src={pax} alt=\"\" />\n </div>\n )\n }\n {activeList === 'reader' && paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 && (\n <div className='pay-with-other-card ' onClick={() => setActiveList('card')}>\n Pay With Saved Card\n <img src={defaultcard} alt=\"\" />\n </div>\n )\n }\n </div>\n\n\n <div className=\"form-group\" style={{ padding: '0' }} >\n <button className='pay-button' style={{ margin: '0px' }} type='submit' onClick={handlepayment}>${Number(props?.amount)?.toFixed(2)}</button>\n </div>\n\n </div> */}\n {/* active tab card */}\n <div id=\"card\" style={{ display: activetab === 'card' ? 'block' : 'none' }} className=\"tabcontent\">\n <div className=\"frac-card-payment\">\n <div className=\"frac-heading-card-wrap\">\n <div className='frac-backarrow'>\n {cardList?.length > 0 && activeinCard === 'form' &&\n <button className='charge-payment-back-btn ' onClick={() => setActiveinCard('list')}> <IoArrowBack /></button>\n }\n {/* {paymentData?.isSkyFiAccount &&\n <div className=\"tab frac-tab-2\">\n <button className=\"tablinks\" onClick={(e) => { handletabchange('card') }} style={{ border: activetab === 'card' ? '1px solid' : '' }} ><i className=\"fas fa-credit-card me-2\" style={{ marginRight: '8px', fontSize: '15px' }}></i>Card</button>\n\n <button className=\"tablinks\" onClick={(e) => { handletabchange('ach') }} style={{ border: activetab === 'ach' ? '1px solid' : '' }} ><i className=\"fas fa-university me-2\" style={{ marginRight: '8px', fontSize: '15px' }}></i>Bank</button>\n </div>\n } */}\n\n\n {/* {\n cashDiscount && cashDiscount > 0 && <div className='res-pay-con frac-cash-discount' >\n <div className='frac-cashlabel' >Cash Discount</div>\n <div>${cashDiscount}</div>\n </div>\n } */}\n </div>\n <h6 className='frac-card-payment-heading'>Card Payment</h6>\n </div>\n {\n activetab != \"ach\" &&\n (<div style={{ display: 'flex', gap: '8px', margin: '8px 0px 19px 0px' }}>\n <img src={visa} alt=\"\" width={33} />\n <img src={mastercard} width={33} alt=\"\" />\n <img src={americanexp} alt=\"\" width={33} />\n <img src={discover} width={33} alt=\"\" />\n </div>)\n }\n </div>\n\n {\n activeinCard === 'list' ?\n (\n <>\n <CardList listHeading='Cards' paymentGateway={paymentData?.paymentGateway} ListItems={cardList} selectedCard={selectedCard} setSelectedCard={setSelectedCard} handleDeleteCard={handleDeleteCard} otherButtonLabel='Pay With Other Card' otherButtonAction={() => { setActiveinCard('form') }} />\n {/* <div className='pay-with-other-card' onClick={() => setActiveinCard('form')}>\n Pay With Other Card\n <img src={defaultcard} alt=\"\" />\n </div> */}\n <div className=\"form-group\" style={{ padding: '0' }} >\n <button className='pay-button' style={{ margin: '0px' }} type='submit' onClick={handlepayment}>{partialAmount && !partialError ? formatUSD(Number(partialAmount)?.toFixed(2)) : formatUSD(Number(aftertaxAmount)?.toFixed(2))}</button>\n </div>\n </>\n ) : (\n paymentData?.paymentGateway === 32 ? (\n <form\n id=\"paymentForm\"\n onSubmit={submitFunc}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && loading2) {\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n >\n <div className='ach-scrl' style={{ minHeight: paymentData?.isSkyFiAccount && cardList?.length > 0 ? \"444px\" : paymentData?.isSkyFiAccount && cardList?.length == 0 ? \"456px\" : cardList?.length > 0 ? '462px' : '520px', overflow: 'auto', marginRight: '5px' }}>\n <div className=\"form-group\">\n <label htmlFor=\"cardHolderName\">NAME ON CARD </label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"John Doe\" value={cardData?.cardName || \"\"} onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange('cardName', value);\n }\n }} />\n {cardError?.cardName && <span className='error-span'>{cardError?.cardName}</span>}\n </div>\n {/* CARD NUMBER (Fractal Secure Field) */}\n <div className=\"form-group\">\n <label>CARD NUMBER</label>\n\n <div className=\"toggle-num-wrapper\">\n {show && paymentData?.paymentGateway === 32 && (\n <FractalFields\n fractalStyles={fractalStyles}\n tokenizerRef={tokenizerRef}\n />\n )}\n </div>\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"OrderId\">Order ID / Description</label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"Order Id\" disabled value={props?.orderID ?? \"\"}\n style={{ background: '#F6F6F7', color: '#727272' }} />\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"zip\">ZIP</label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"000000\" value={cardData?.zipCode ?? \"\"} onChange={(e) => handleCardChange('zipCode', e.target.value)} />\n {cardError?.zipCode && <span className='error-span'>{cardError?.zipCode}</span>}\n </div>\n\n {\n props?.customerId &&\n <div className='form-group'>\n\n <div style={{ display: 'flex', alignItems: 'center', gap: '10px', paddingTop: '10px' }}>\n\n <input\n type=\"checkbox\"\n id=\"save_card\"\n className=\"toggle-checkbox\"\n checked={saveCardInfo}\n onChange={(e) => setSaveCardInfo(e.target.checked)}\n />\n <label htmlFor=\"save_card\" className=\"toggle-label\"></label>\n <label htmlFor='save_card'>Save card for future payments </label>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <g clipPath=\"url(#clip0_12420_50192)\">\n <rect width=\"20\" height=\"20\" fill=\"white\"></rect>\n <circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"#E0DFE2\"></circle>\n <path d=\"M9.03406 12.0979V12.0072C9.04055 11.4153 9.10057 10.9443 9.21411 10.5943C9.3309 10.2442 9.49635 9.96102 9.71046 9.74463C9.92457 9.52824 10.1825 9.33095 10.4842 9.15274C10.6788 9.03182 10.854 8.89658 11.0097 8.74702C11.1655 8.59745 11.2887 8.42562 11.3796 8.2315C11.4704 8.03739 11.5158 7.82259 11.5158 7.58711C11.5158 7.3039 11.4477 7.05887 11.3114 6.85203C11.1752 6.64519 10.9935 6.48608 10.7664 6.3747C10.5426 6.26014 10.2928 6.20286 10.017 6.20286C9.76723 6.20286 9.52879 6.25378 9.3017 6.35561C9.07461 6.45744 8.88646 6.61655 8.73723 6.83294C8.588 7.04614 8.50203 7.3214 8.47932 7.65871H7C7.02271 7.08592 7.17032 6.60223 7.44282 6.20764C7.71533 5.80986 8.07543 5.50915 8.52311 5.30549C8.97405 5.10183 9.47202 5 10.017 5C10.6139 5 11.1363 5.10979 11.5839 5.32936C12.0316 5.54574 12.3788 5.84964 12.6253 6.24105C12.8751 6.62928 13 7.08274 13 7.60143C13 7.95784 12.9432 8.27924 12.8297 8.56563C12.7161 8.84885 12.5539 9.10183 12.3431 9.32458C12.1354 9.54733 11.8856 9.74463 11.5937 9.91647C11.3179 10.0851 11.0941 10.2601 10.9221 10.4415C10.7534 10.6229 10.6302 10.8377 10.5523 11.0859C10.4745 11.3341 10.4323 11.6412 10.4258 12.0072V12.0979H9.03406ZM9.76886 15C9.50284 15 9.27413 14.9077 9.08273 14.7232C8.89132 14.5354 8.79562 14.3095 8.79562 14.0453C8.79562 13.7844 8.89132 13.5617 9.08273 13.3771C9.27413 13.1893 9.50284 13.0955 9.76886 13.0955C10.0316 13.0955 10.2587 13.1893 10.4501 13.3771C10.6448 13.5617 10.7421 13.7844 10.7421 14.0453C10.7421 14.2204 10.6967 14.3811 10.6058 14.5274C10.5182 14.6706 10.4015 14.7852 10.2555 14.8711C10.1095 14.957 9.94728 15 9.76886 15Z\" fill=\"#161616\"></path>\n </g>\n <defs>\n <clipPath id=\"clip0_12420_50192\">\n <rect width=\"20\" height=\"20\" fill=\"white\"></rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n\n </div>\n }\n </div>\n\n <div className=\"form-group\" style={{ marginTop: '20px', padding: '0' }}>\n {\n paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 && (\n <button type='button' style={{ marginBottom: '10px' }} className='pay-button' onClick={() => setActiveForm(!activeForm)}>\n {activeForm ? 'Pay With Reader' : 'Pay With Card'}\n </button>\n )\n }\n <button type=\"submit\" style={{ margin: 0 }} className='pay-button'>{partialAmount && !partialError ? formatUSD(Number(partialAmount)?.toFixed(2)) : formatUSD(Number(aftertaxAmount)?.toFixed(2))}</button>\n </div>\n </form>\n ) : (\n <form id='PaymentForm' style={{ textAlign: 'start' }} onSubmit={submitFunc} onKeyDown={(e) => {\n if (e.key === \"Enter\" && loading2) {\n e.preventDefault();\n e.stopPropagation();\n }\n }} >\n {/* <div style={{minHeight: '482px'}}> */}\n <div className='ach-scrl' style={{ minHeight: paymentData?.isSkyFiAccount && cardList?.length > 0 ? \"444px\" : paymentData?.isSkyFiAccount && cardList?.length == 0 ? \"456px\" : cardList?.length > 0 ? '462px' : '520px', overflow: 'auto', marginRight: '5px' }}>\n\n <div className=\"form-group\">\n <label htmlFor=\"cardHolderName\">NAME ON CARD </label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"John Doe\" value={cardData?.cardName || \"\"} onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange('cardName', value);\n }\n }} />\n {cardError?.cardName && <span className='error-span'>{cardError?.cardName}</span>}\n </div>\n\n <div className=\"form-group\">\n <label htmlFor=\"cardNumber\">CARD NUMBER</label>\n <div className='toggle-num-wrapper'>\n <input className='form-control card-number-new' type='text' maxLength={19} inputMode=\"numeric\" placeholder='0000 0000 0000 0000' value={cardData?.cardNumber || \"\"} onChange={(e) => handleCardNumberChange(e)}\n data-token=\"card_number\"\n />\n\n <div className='card-crdi card-expiry-new'>\n <div className=\"exp-date-year-container\">\n <div className=\"exp-date form-group\">\n <input data-token=\"exp_month\" className=\"form-control required card-cvv-in\" type=\"text\"\n style={{ maxHeight: '36px' }}\n placeholder=\"MM\" maxLength={2} value={cardData?.expiryMonth || \"\"}\n onChange={(e) => handleCardChange('expiryMonth', e.target.value)} />\n </div>\n <div className=\"exp-year form-group\">\n <input data-token=\"exp_year\" className=\"form-control required card-cvv-in\" type=\"text\"\n style={{ maxHeight: '36px' }}\n placeholder=\"YYYY\" maxLength={4} value={cardData?.expiryYear || \"\"} onChange={(e) => handleCardChange('expiryYear', e.target.value)} />\n </div>\n <div className=\"security-digit form-group\">\n <input data-token=\"cvv\" className=\"form-control card-cvv-in required\" type=\"text\"\n style={{ maxHeight: '36px' }}\n maxLength={4} placeholder=\"CVC\" value={cardData?.cvv || \"\"} onChange={(e) => handleCardChange('cvv', e.target.value)}\n />\n </div>\n </div>\n </div>\n {cardError?.cardNumber &&\n <span className='error-span'>{cardError?.cardNumber}</span>\n }\n <p style={{ margin: '0' }}>\n {cardError?.expiryMonth || cardError?.expiryYear ?\n <span className='error-span' style={{ paddingRight: '4px' }}>{cardError?.expiryMonth}</span>\n : \"\"\n }\n {cardError?.cvv &&\n <span className='error-span' >{cardError?.cvv}</span>\n\n }\n </p>\n\n </div>\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"OrderId\">Order ID / Description</label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"Order Id\" disabled value={props?.orderID ?? \"\"}\n style={{ background: '#F6F6F7', color: '#727272' }} />\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"zip\">ZIP</label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"000000\" value={cardData?.zipCode ?? \"\"} onChange={(e) => handleCardChange('zipCode', e.target.value)} />\n {cardError?.zipCode && <span className='error-span'>{cardError?.zipCode}</span>}\n </div>\n\n {\n props?.customerId &&\n <div className='form-group'>\n\n <div style={{ display: 'flex', alignItems: 'center', gap: '10px', paddingTop: '10px' }}>\n\n <input\n type=\"checkbox\"\n id=\"save_card\"\n className=\"toggle-checkbox\"\n checked={saveCardInfo}\n onChange={(e) => setSaveCardInfo(e.target.checked)}\n />\n <label htmlFor=\"save_card\" className=\"toggle-label\"></label>\n <label htmlFor='save_card'>Save card for future payments </label>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <g clipPath=\"url(#clip0_12420_50192)\">\n <rect width=\"20\" height=\"20\" fill=\"white\"></rect>\n <circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"#E0DFE2\"></circle>\n <path d=\"M9.03406 12.0979V12.0072C9.04055 11.4153 9.10057 10.9443 9.21411 10.5943C9.3309 10.2442 9.49635 9.96102 9.71046 9.74463C9.92457 9.52824 10.1825 9.33095 10.4842 9.15274C10.6788 9.03182 10.854 8.89658 11.0097 8.74702C11.1655 8.59745 11.2887 8.42562 11.3796 8.2315C11.4704 8.03739 11.5158 7.82259 11.5158 7.58711C11.5158 7.3039 11.4477 7.05887 11.3114 6.85203C11.1752 6.64519 10.9935 6.48608 10.7664 6.3747C10.5426 6.26014 10.2928 6.20286 10.017 6.20286C9.76723 6.20286 9.52879 6.25378 9.3017 6.35561C9.07461 6.45744 8.88646 6.61655 8.73723 6.83294C8.588 7.04614 8.50203 7.3214 8.47932 7.65871H7C7.02271 7.08592 7.17032 6.60223 7.44282 6.20764C7.71533 5.80986 8.07543 5.50915 8.52311 5.30549C8.97405 5.10183 9.47202 5 10.017 5C10.6139 5 11.1363 5.10979 11.5839 5.32936C12.0316 5.54574 12.3788 5.84964 12.6253 6.24105C12.8751 6.62928 13 7.08274 13 7.60143C13 7.95784 12.9432 8.27924 12.8297 8.56563C12.7161 8.84885 12.5539 9.10183 12.3431 9.32458C12.1354 9.54733 11.8856 9.74463 11.5937 9.91647C11.3179 10.0851 11.0941 10.2601 10.9221 10.4415C10.7534 10.6229 10.6302 10.8377 10.5523 11.0859C10.4745 11.3341 10.4323 11.6412 10.4258 12.0072V12.0979H9.03406ZM9.76886 15C9.50284 15 9.27413 14.9077 9.08273 14.7232C8.89132 14.5354 8.79562 14.3095 8.79562 14.0453C8.79562 13.7844 8.89132 13.5617 9.08273 13.3771C9.27413 13.1893 9.50284 13.0955 9.76886 13.0955C10.0316 13.0955 10.2587 13.1893 10.4501 13.3771C10.6448 13.5617 10.7421 13.7844 10.7421 14.0453C10.7421 14.2204 10.6967 14.3811 10.6058 14.5274C10.5182 14.6706 10.4015 14.7852 10.2555 14.8711C10.1095 14.957 9.94728 15 9.76886 15Z\" fill=\"#161616\"></path>\n </g>\n <defs>\n <clipPath id=\"clip0_12420_50192\">\n <rect width=\"20\" height=\"20\" fill=\"white\"></rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n\n </div>\n }\n {/* </div> */}\n\n </div>\n\n <div className=\"form-group\" style={{ marginTop: '20px', padding: '0' }}>\n {\n paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 && (\n <button type='button' style={{ marginBottom: '10px' }} className='pay-button' onClick={() => setActiveForm(!activeForm)}>\n {activeForm ? 'Pay With Reader' : 'Pay With Card'}\n </button>\n )\n }\n <button type=\"submit\" style={{ margin: 0 }} className='pay-button'>{partialAmount && !partialError ? formatUSD(Number(partialAmount)?.toFixed(2)) : formatUSD(Number(aftertaxAmount)?.toFixed(2))}</button>\n </div>\n </form>\n )\n )\n }\n\n\n\n {/* <div style={{minHeight: '482px'}}> */}\n {/* </div> */}\n {/* {activeForm ? (\n <form id='PaymentForm' style={{ textAlign: 'start' }} onSubmit={submitFunc}>\n <div className='ach-scrl' style={{ minHeight: paymentData?.isSkyFiAccount && cardList?.length > 0 ? \"398px\" : paymentData?.isSkyFiAccount && cardList?.length == 0 ? \"456px\" : cardList?.length > 0 ? '462px' : '520px', overflow: 'auto', marginRight: '5px' }}>\n\n <div className=\"form-group\">\n <label htmlFor=\"cardHolderName\">NAME ON CARD </label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"John Doe\" value={cardData?.cardName || \"\"} onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange('cardName', value);\n }\n }} />\n {cardError?.cardName && <span className='error-span'>{cardError?.cardName}</span>}\n </div>\n\n <div className=\"form-group\">\n <label htmlFor=\"cardNumber\">CARD NUMBER</label>\n <div className='toggle-num-wrapper'>\n <input className='form-control card-number-new' type='text' maxLength={19} inputMode=\"numeric\" placeholder='0000 0000 0000 0000' value={cardData?.cardNumber || \"\"} onChange={(e) => handleCardNumberChange(e)}\n data-token=\"card_number\"\n />\n\n <div className='card-crdi card-expiry-new'>\n <div className=\"exp-date-year-container\">\n <div className=\"exp-date form-group\">\n <input data-token=\"exp_month\" className=\"form-control required card-cvv-in\" type=\"text\"\n style={{ maxHeight: '36px' }}\n placeholder=\"MM\" maxLength={2} value={cardData?.expiryMonth || \"\"}\n onChange={(e) => handleCardChange('expiryMonth', e.target.value)} />\n </div>\n <div className=\"exp-year form-group\">\n <input data-token=\"exp_year\" className=\"form-control required card-cvv-in\" type=\"text\"\n style={{ maxHeight: '36px' }}\n placeholder=\"YYYY\" maxLength={4} value={cardData?.expiryYear || \"\"} onChange={(e) => handleCardChange('expiryYear', e.target.value)} />\n </div>\n <div className=\"security-digit form-group\">\n <input data-token=\"cvv\" className=\"form-control card-cvv-in required\" type=\"text\"\n style={{ maxHeight: '36px' }}\n maxLength={4} placeholder=\"CVC\" value={cardData?.cvv || \"\"} onChange={(e) => handleCardChange('cvv', e.target.value)}\n />\n </div>\n </div>\n </div>\n {cardError?.cardNumber &&\n <span className='error-span'>{cardError?.cardNumber}</span>\n }\n <p style={{ margin: '0' }}>\n {cardError?.expiryMonth || cardError?.expiryYear ?\n <span className='error-span' style={{ paddingRight: '4px' }}>{cardError?.expiryMonth}</span>\n : \"\"\n }\n {cardError?.cvv &&\n <span className='error-span' >{cardError?.cvv}</span>\n\n }\n </p>\n\n </div>\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"OrderId\">Order ID / Description</label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"OID123456\" disabled value={props?.orderID ?? \"\"}\n style={{ background: '#F6F6F7', color: '#727272' }} />\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"zip\">ZIP</label>\n <input type=\"text\" className='form-control' maxLength={100} placeholder=\"000000\" value={cardData?.zipCode ?? \"\"} onChange={(e) => handleCardChange('zipCode', e.target.value)} />\n {cardError?.zipCode && <span className='error-span'>{cardError?.zipCode}</span>}\n </div>\n\n {\n props?.customerId &&\n <div className='form-group'>\n\n <div style={{ display: 'flex', alignItems: 'center', gap: '10px', paddingTop: '10px' }}>\n\n <input\n type=\"checkbox\"\n id=\"save_card\"\n className=\"toggle-checkbox\"\n checked={saveCardInfo}\n onChange={(e) => setSaveCardInfo(e.target.checked)}\n />\n <label htmlFor=\"save_card\" className=\"toggle-label\"></label>\n <label htmlFor='save_card'>Save card for future payments </label>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <g clipPath=\"url(#clip0_12420_50192)\">\n <rect width=\"20\" height=\"20\" fill=\"white\"></rect>\n <circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"#E0DFE2\"></circle>\n <path d=\"M9.03406 12.0979V12.0072C9.04055 11.4153 9.10057 10.9443 9.21411 10.5943C9.3309 10.2442 9.49635 9.96102 9.71046 9.74463C9.92457 9.52824 10.1825 9.33095 10.4842 9.15274C10.6788 9.03182 10.854 8.89658 11.0097 8.74702C11.1655 8.59745 11.2887 8.42562 11.3796 8.2315C11.4704 8.03739 11.5158 7.82259 11.5158 7.58711C11.5158 7.3039 11.4477 7.05887 11.3114 6.85203C11.1752 6.64519 10.9935 6.48608 10.7664 6.3747C10.5426 6.26014 10.2928 6.20286 10.017 6.20286C9.76723 6.20286 9.52879 6.25378 9.3017 6.35561C9.07461 6.45744 8.88646 6.61655 8.73723 6.83294C8.588 7.04614 8.50203 7.3214 8.47932 7.65871H7C7.02271 7.08592 7.17032 6.60223 7.44282 6.20764C7.71533 5.80986 8.07543 5.50915 8.52311 5.30549C8.97405 5.10183 9.47202 5 10.017 5C10.6139 5 11.1363 5.10979 11.5839 5.32936C12.0316 5.54574 12.3788 5.84964 12.6253 6.24105C12.8751 6.62928 13 7.08274 13 7.60143C13 7.95784 12.9432 8.27924 12.8297 8.56563C12.7161 8.84885 12.5539 9.10183 12.3431 9.32458C12.1354 9.54733 11.8856 9.74463 11.5937 9.91647C11.3179 10.0851 11.0941 10.2601 10.9221 10.4415C10.7534 10.6229 10.6302 10.8377 10.5523 11.0859C10.4745 11.3341 10.4323 11.6412 10.4258 12.0072V12.0979H9.03406ZM9.76886 15C9.50284 15 9.27413 14.9077 9.08273 14.7232C8.89132 14.5354 8.79562 14.3095 8.79562 14.0453C8.79562 13.7844 8.89132 13.5617 9.08273 13.3771C9.27413 13.1893 9.50284 13.0955 9.76886 13.0955C10.0316 13.0955 10.2587 13.1893 10.4501 13.3771C10.6448 13.5617 10.7421 13.7844 10.7421 14.0453C10.7421 14.2204 10.6967 14.3811 10.6058 14.5274C10.5182 14.6706 10.4015 14.7852 10.2555 14.8711C10.1095 14.957 9.94728 15 9.76886 15Z\" fill=\"#161616\"></path>\n </g>\n <defs>\n <clipPath id=\"clip0_12420_50192\">\n <rect width=\"20\" height=\"20\" fill=\"white\"></rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n\n </div>\n }\n \n\n </div>\n\n <div className=\"form-group\" style={{ marginTop: '20px', padding: '0' }}>\n {\n paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 && (\n <button type='button' style={{ marginBottom: '10px' }} className='pay-button' onClick={() => setActiveForm(!activeForm)}>\n {activeForm ? 'Pay With Reader' : 'Pay With Card'}\n </button>\n )\n }\n <button type=\"submit\" style={{ margin: 0 }} className='pay-button'>${Number(props?.amount)?.toFixed(2)}</button>\n </div>\n </form>\n ) : (\n <>\n <h6 className='card-ach-heading' style={{ marginBottom: '10px !important' }}>Readers</h6>\n <div className='card-lint-div-in'>\n <div className='card-list-div'>\n {\n paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 &&\n paymentData?.paymentDeviceList?.map((reader: any, index) => (\n <div className='card-list-single-div' key={index}>\n <div className=\"card-number-radio\">\n <input type=\"radio\" className='cardRadio' name=\"selected_reader\" id=\"\" checked={selectedReader === reader}\n onChange={(e) => setSelectedReader(reader)} />\n <label htmlFor=\"\" className='card-number-last-four'>{reader?.device_name}</label>\n </div>\n <div className=\"card-number-radio\">\n <span className='visa-card'>\n <img src={pax} alt=\"\" />\n </span>\n </div>\n </div>\n ))\n }\n </div>\n </div>\n <div className=\"form-group\" style={{ marginTop: '20px', padding: '0' }}>\n {\n paymentData?.paymentDeviceList && paymentData?.paymentDeviceList?.length > 0 && (\n <button type='button' style={{ marginBottom: '10px' }} className='pay-button' onClick={() => setActiveForm(!activeForm)}>\n {activeForm ? 'Pay With Reader' : 'Pay With Card'}\n </button>\n )\n }\n <button onClick={handleChargewithEMV} className='pay-button'>${Number(props?.amount)?.toFixed(2)}</button>\n </div>\n </>\n )\n } */}\n\n </div>\n {/* active tab ach */}\n <div id=\"ach\" style={{ display: activetab === 'ach' ? 'block' : 'none' }} className=\"tabcontent\">\n <div className=\"frac-card-payment\">\n <div className=\"frac-heading-card-wrap\">\n <div className='frac-backarrow'>\n {bankList?.length > 0 && activeinBank === 'form' &&\n <button className='charge-payment-back-btn ' onClick={() => setActiveinBank('list')}> <IoArrowBack /></button>\n }\n {/* {paymentData?.isSkyFiAccount &&\n <div className=\"tab frac-tab-2\">\n <button className=\"tablinks\" onClick={(e) => { handletabchange('card') }} style={{ border: activetab === 'card' ? '1px solid' : '' }} ><i className=\"fas fa-credit-card me-2\" style={{ marginRight: '8px', fontSize: '15px' }}></i>Card</button>\n\n <button className=\"tablinks\" onClick={(e) => { handletabchange('ach') }} style={{ border: activetab === 'ach' ? '1px solid' : '' }} ><i className=\"fas fa-university me-2\" style={{ marginRight: '8px', fontSize: '15px' }}></i>Bank</button>\n </div>\n } */}\n {/* {\n cashDiscount && cashDiscount > 0 && <div className='res-pay-con frac-cash-discount' >\n <div className='frac-cashlabel' >Cash Discount Savings</div>\n <div>${getCashDiscount()}</div>\n </div>\n } */}\n </div>\n <h6 className='frac-card-payment-heading'>Bank Payment</h6>\n </div>\n </div>\n {\n activeinBank === 'list' ? (\n <>\n <CardList listHeading='Banks' paymentGateway={paymentData?.paymentGateway} ListItems={bankList} selectedCard={selectedCard} setSelectedCard={setSelectedCard} handleDeleteCard={handleDeleteCard} otherButtonLabel='Pay With Other Bank' otherButtonAction={() => { setActiveinBank('form') }} />\n {/* <div className='pay-with-other-card' onClick={() => setActiveinCard('form')}>\n Pay With Other Card\n <img src={defaultcard} alt=\"\" />\n </div> */}\n <div className=\"form-group\" style={{ padding: '0' }} >\n <button className='pay-button' style={{ margin: '0px' }} type='submit' onClick={handlepayment}>{partialAmount && !partialError ? formatUSD(Number(partialAmount)?.toFixed(2)) : formatUSD(Number(cashDiscount)?.toFixed(2))}</button>\n </div>\n </>\n\n ) : (\n\n <form id='ACHPaymentForm' style={{ textAlign: 'start' }} onSubmit={submitFunc} autoComplete=\"off\" onKeyDown={(e) => {\n if (e.key === \"Enter\" && loading2) {\n e.preventDefault();\n e.stopPropagation();\n }\n }} >\n <div className='ach-scrl' style={{\n minHeight: paymentData?.isSkyFiAccount && cardList?.length > 0 ? \"444px\" : paymentData?.isSkyFiAccount && cardList?.length == 0 ? \"436px\" : cardList?.length > 0 ? '462px' : '520px',\n maxHeight: paymentData?.isSkyFiAccount && cardList?.length > 0 ? \"444px\" : cardList?.length > 0 ? '380px' : '380px',\n }}>\n\n <div className=\"form-group mb-4\">\n <label htmlFor=\"nameonaccount\">Name on account</label>\n <input type=\"text\" id='nameonaccount' className='form-control' maxLength={100} placeholder=\"John Doe\" name=\"name\" value={achData?.name ?? \"\"} onChange={handleChangeAch} />\n {achError?.name && <span className='error-span'>{achError?.name}</span>}\n </div>\n <div className=\"form-group mb-4\">\n <label htmlFor=\"routingnumber\">Routing number</label>\n <input type=\"text\" id='routingnumber' className='form-control' maxLength={9} placeholder=\"000000000\"\n name=\"routingNumber\" value={achData?.routingNumber ?? \"\"} onChange={handleChangeAch} />\n {achError?.routingNumber && <span className='error-span'>{achError?.routingNumber}</span>}\n </div>\n <div className=\"form-group mb-4\">\n <label htmlFor=\"accountnumber\">Account number</label>\n <input type=\"text\" id='accountnumber' className='form-control' maxLength={16} placeholder=\"0000000000\"\n name=\"accountNumber\" value={achData?.accountNumber ?? \"\"} onChange={handleChangeAch} />\n {achError?.accountNumber && <span className='error-span'>{achError?.accountNumber}</span>}\n </div>\n <div className=\"form-group mb-4\">\n <label htmlFor=\"confirmaccountnumber\">Confirm account number</label>\n <input type=\"text\" id='confirmaccountnumber' className='form-control' maxLength={16} placeholder=\"0000000000\"\n name=\"confirmAccountNumber\" value={achData?.confirmAccountNumber ?? \"\"} onChange={handleChangeAch} />\n {achError?.confirmAccountNumber && <span className='error-span'>{achError?.confirmAccountNumber}</span>}\n </div>\n <div className=\"form-group mb-4\">\n <label htmlFor=\"bankname\">Bank name</label>\n <input type=\"text\" id='bankname' className='form-control' maxLength={100} placeholder=\"My Bank\"\n name=\"bankName\" value={achData?.bankName ?? \"\"} onChange={handleChangeAch}\n />\n {achError?.bankName && <span className='error-span'>{achError?.bankName}</span>}\n </div>\n {(achData?.accountType === 'business saving' || achData?.accountType === 'business checking') && (\n <div className=\"form-group mb-4\">\n <label htmlFor=\"companyName\">Company name</label>\n <input type=\"text\" id='companyName' className='form-control' maxLength={100} placeholder=\"My Company\"\n name=\"companyName\" value={achData?.companyName ?? \"\"} onChange={handleChangeAch}\n />\n {achError?.companyName && <span className='error-span'>{achError?.companyName}</span>}\n </div>\n )}\n <div className=\"form-group mb-4\">\n <label htmlFor=\"accounttype\">Select account type</label>\n <select name=\"accountType\" id=\"accounttype\" className='form-control' value={achData?.accountType ?? \"\"} onChange={handleChangeAch} >\n <option value=\"\">Select account</option>\n {accountTypes.map((type) => (\n <option key={type.value} value={type.value}>\n {type.label}\n </option>\n ))}\n </select>\n\n </div>\n {\n props?.customerId && (\n <div className=\"form-group mb-4 save-ach-div\" style={{ paddingTop: '5px' }}>\n <input type=\"checkbox\" id='saveACH' className='' maxLength={100} placeholder=\"My Bank\" checked={saveACHinfo} onChange={(e) => setSaveACHinfo(e.target.checked)} />\n <label htmlFor=\"saveACH\">Save ACH</label>\n </div>\n )\n }\n {saveACHinfo &&\n <div className=\"form-group mb-4\" style={{ fontSize: '12px', color: '#727272' }}>\n <p>If checked, I agree for <b>ecommerce</b> to have my permission to charge this credit card for agreed upon purchases in the future.</p>\n </div>\n }\n </div>\n\n\n\n <div className=\"form-group \" >\n <button className='pay-button' style={{ margin: '20px 0 0' }} type='submit'>{partialAmount && !partialError ? formatUSD(Number(partialAmount)?.toFixed(2)) : formatUSD(Number(cashDiscount)?.toFixed(2))}</button>\n </div>\n </form>\n\n )\n }\n </div>\n\n {/* active tab Pax if any */}\n\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n\n </div>\n </>\n }\n\n\n\n\n\n </CustomModal2>\n\n </>\n </>\n )\n}","'use client';\nimport React, { useEffect, useState, useMemo, useRef } from 'react';\nimport DataScript from '../Datascript';\nimport SkyChargewidgetstyles from './SkyChargewidgetstyles';\nimport CustomModal2 from '../CustomModal/CustomModal2';\nimport CardBankRadioStyles from '../Atoms/CardBankRadio/CardBankRadioStyles';\nimport CustomModal2styles from '../CustomModal/CustomModal2styles';\nimport ModelContentSky from '../Atoms/ModelContentSky/ModelContentSky';\nimport axios from 'axios';\nimport { masterBaseUrl } from '../baseurl';\nimport FractalTokenizerScript from '../FractalTokenizer';\n\ntype Props = {\n session_token: string;\n surcharge: string;\n amount: string;\n submitBtnText?: string;\n submitBtnClass?: string;\n customerId?: string;\n callback: (resp: any) => void;\n merchantName: string;\n isPreAuth: boolean;\n submitBtnIcon?: any;\n isRequest?: boolean;\n pass_fee?: boolean;\n pass_fee_amount?: number | string;\n bankAmount: string;\n bankSurcharge?: string;\n require3ds: boolean;\n autoTrigger: boolean;\n isPartial?: boolean;\n partialRef?: string;\n};\n\nexport const PaymentWidget = ({\n amount,\n bankAmount,\n submitBtnText = 'Pay',\n session_token,\n customerId,\n callback,\n merchantName = 'merchant',\n isPreAuth,\n surcharge = '0',\n submitBtnClass,\n submitBtnIcon,\n isRequest,\n pass_fee,\n pass_fee_amount,\n require3ds = false,\n autoTrigger = false,\n isPartial,\n bankSurcharge,\n partialRef\n}: Props) => {\n\n const [show, setShow] = useState(false);\n const [loading, setLoading] = useState(false);\n const [childHandleClose, setChildHandleClose] = useState<() => void>(() => () => { });\n const [orderGuid, setOrderGuid] = useState(null);\n const [remainingAmount, setRemainingAmount] = useState(null)\n // -----------------------------------------------\n // ✅ Build fresh commonProps whenever parent props change\n // -----------------------------------------------\n const initialCommonProps = useMemo(\n () => ({\n amount,\n bankAmount,\n submitBtnText,\n session_token,\n customerId,\n callback,\n merchantName,\n isPreAuth,\n surcharge,\n submitBtnClass,\n submitBtnIcon,\n isRequest,\n pass_fee,\n pass_fee_amount,\n require3ds,\n autoTrigger,\n setShow,\n setHandleCloseRef: setChildHandleClose,\n isPartial,\n bankSurcharge,\n partialRef\n }),\n [\n amount,\n bankAmount,\n submitBtnText,\n session_token,\n customerId,\n callback,\n merchantName,\n isPreAuth,\n surcharge,\n submitBtnClass,\n submitBtnIcon,\n isRequest,\n pass_fee,\n pass_fee_amount,\n require3ds,\n autoTrigger,\n isPartial,\n bankSurcharge,\n partialRef\n ]\n );\n // -----------------------------------------------\n // Current working props passed to modal content\n // -----------------------------------------------\n const [commonProps, setCommonProps] = useState(initialCommonProps);\n\n // -----------------------------------------------\n // Reset commonProps every time modal opens\n // -----------------------------------------------\n useEffect(() => {\n if (show) {\n setCommonProps(initialCommonProps);\n }\n }, [show, initialCommonProps]);\n\n // -----------------------------------------------\n // Fetch updated amounts for partial payments\n // -----------------------------------------------\n const getskyosOrderDetails = async () => {\n setLoading(true);\n try {\n const res = await axios.get(\n `${masterBaseUrl}api/v1/gateway/get-order-details/${session_token}`,\n { params: { isPartial, partialRef } }\n );\n\n if (res?.data?.result) {\n const data = res.data.data;\n if (data?.orderGuid) {\n setOrderGuid(data?.orderGuid);\n setRemainingAmount(data?.remainingAmount);\n }\n setCommonProps(prev => ({\n ...prev,\n amount: data.amount,\n pass_fee_amount: data.pass_fee_amount,\n pass_fee: data.pass_fee\n }));\n }\n } catch (error) {\n console.log('error while getting skyosorderdeatils', error);\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n if (show && isPartial && partialRef) {\n getskyosOrderDetails();\n }\n }, [show, isPartial, partialRef]);\n\n // -----------------------------------------------\n // Render UI\n // -----------------------------------------------\n return (\n <>\n <link href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css\" />\n\n <DataScript />\n <FractalTokenizerScript />\n <SkyChargewidgetstyles />\n <CardBankRadioStyles />\n <CustomModal2styles />\n\n\n\n {!autoTrigger && (\n <button className={submitBtnClass || 'paymentBtn'} onClick={() => setShow(true)}>\n {submitBtnText}\n {submitBtnIcon}\n </button>\n )}\n\n {!autoTrigger ? (\n <CustomModal2 open={show} onClose={childHandleClose}>\n <ModelContentSky show={show} loadingPrev={loading} {...commonProps} orderGuid={orderGuid} remainingAmount={remainingAmount} />\n </CustomModal2>\n ) : (\n <ModelContentSky show={show} loadingPrev={loading} {...commonProps} orderGuid={orderGuid} remainingAmount={remainingAmount} />\n )}\n </>\n );\n};\n","import React from \"react\";\n\nexport default function SkyChargewidgetstyles() {\n const primarycolor = \"#000\";\n const primarybgcolor = \"#fff\";\n const primarybodycolor = \"#212529\";\n const primarybordercolor = \"#dee2e6\";\n return (\n <style>\n {`\n @import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap'); \n body\n {\n font-family: 'Inter', sans-serif;\n }\n input\n {\n font-family: 'Inter', sans-serif !important;\n } \n .frac-form .form-group-frac{\n margin:0 !important;\n padding: 5px 0;\n }\n .frac-form .mb-4{\n margin-bottom : 10px !important\n }\n .frac-form .save-ach-div{\n display:flex !important;\n gap:5px !important;\n align-items:center\n }\n \n .frac-form .card-cvv-in{\n height : 36px !importantt; \n }\n\n .frac-form .pay-payment-amount{\n text-align:start !important\n }\n .frac-form .pay-amount{\n text-align:start !important\n }\n .frac-form .pay-main-logo{\n text-align:start !important\n }\n\n\n \n .paymentBtn {\n background-color: black;\n border: none;\n color: white;\n padding: 15px 32px;\n text-align: center;\n text-decoration: none;\n display: inline-block;\n font-size: 16px;\n margin: 4px 2px;\n cursor: pointer;\n border-radius: 180px;\n /* width: auto; */\n } \n \n .main-logo {\n text-align: center;\n margin-bottom: 20px;\n }\n\n .main-logo img {\n max-width: 180px;\n }\n\n .pay-main-box {\n width: 365px !important;\n height: 93%;\n background: 0 0 #ffffff;\n border-radius: 12px;\n\n\n border: 1px solid #E0DFE2;\n margin: 0 auto;\n display: block;\n padding: 0px 26px !important\n }\n .pay-main-box .pay-header {\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n }\n \n .pay-main-box .pay-header button {\n border: 0;\n background: none;\n padding: 0;\n box-shadow: 0;\n outline: inherit;\n }\n \n .pay-main-box h1 {\n margin: 0;\n flex: 1;\n padding: 10px 0;\n font-size: 23px;\n font-weight: 500;\n color: #35254D;\n align-items: start;\n display: flex;\n }\n .tab {\n overflow: hidden;\n padding: 5px;\n border-radius: 8px;\n display: flex;\n justify-content: space-around;\n margin-bottom:12px\n }\n\n /* Style the buttons inside the tab */\n .tab button {\n float: left;\n border: none;\n outline: none;\n cursor: pointer;\n background:white;\n padding: 11px 16px;\n transition: 0.3s;\n font-size: 16px;\n width: 143px;\n border-radius: 5px;\n box-shadow: inherit;\n outline: none;\n color: ${primarycolor};\n }\n\n /* Change background color of buttons on hover */\n .tab button:hover {\n background-color: #f0f0f0;\n }\n\n /* Create an active/current tablink class */\n // .tab button.active {\n // background-color: #ccc;\n // }\n\n /* Style the tab content */\n \n \n .parent-pay-container{\n padding: 24px;\n }\n .pay-container{\n display: grid;\n grid-template-columns: 2fr 3fr;\n \n }\n .pay-main{\n padding-y: 20px}\n\n .request-payment-close-popup {\n position: absolute;\n right: 20px;\n top: 20px;\n cursor: pointer;\n}\n .pay-conatiner-one{\n border-right: 1px solid #E0DFE2;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n }\n .pay-conatiner-one-first{\n \n min-height:inherit !important;\n }\n .pay-conatiner-one-last{\n display:flex;\n font-size:12px;\n gap:5px;\n max-width:250px;\n align-items:center;\n color:black !important\n }\n .pay-conatiner-one-last img{\n width : 17px;\n height:17px\n }\n .pay-conatiner-two{\n padding: 0 5% 0;\n }\n .pay-logo-container{\n border-bottom: 1px solid #E0DFE2\n }\n .pay-heading{\n margin: 0;\n flex: 1;\n padding: 10px 0;\n font-size: 23px;\n font-weight: 500;\n color: #35254D;\n align-items: start;\n display: flex;\n }\n .pay-main-logo > img{\n width: 50%;\n }\n .pay-main-logo-res > img{\n width: 50%;\n display : none\n }\n \n .pay-payment-amount{\n display: block;\n font-size: 12px;\n color: #727272;\n margin-bottom: 8px;\n }\n .pay-amount-conatiner{\n margin-top: 6%;\n }\n .pay-amount{\n color: #000000;\n font-size: 38px;\n display: block;\n line-height: 110%;\n letter-spacing: -1px;\n }\n .frac-form label{\n font-family: 'IBM Plex Mono', monospace !important;\n color: #727272 !important;\n margin-bottom: 2px !important;\n font-weight: 600 !important;\n font-size: 12px !important;\n display:block !important;\n text-align : left !important;\n text-transform: uppercase !important;\n }\n .form-control-frac{\n display: block;\n width: 100%;\n padding: .375rem .75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: ${primarybodycolor};\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: ${primarybgcolor};\n background-clip: padding-box;\n border: 1px solid ${primarybordercolor};\n border-radius: 0.375rem;\n transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n }\n .form-control-frac:focus{\n border-color: #86b7fe;\n outline: 0;\n }\n .toggle-num-wrapper {\n position: relative;\n }\n .card-number-new{\n border: 1px solid #dee2e6;\n border-radius: 0.375rem;\n border-bottom: none;\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n padding-left: .75rem;\n }\n .exp-date-year-container .form-group {\n flex: 1;\n padding-left:.75rem;\n}\n .card-crdi {\n display: flex;\n border: 1px solid ${primarybordercolor};\n border-radius: 0.375rem;\n }\n .card-expiry-new{\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n }\n .exp-date-year-container{\n display: flex;\n flex-wrap: wrap;\n }\n .exp-date-year-container .form-group-frac{\n flex:1;\n padding: 0px !important\n \n }\n\n .exp-date {\n float: left;\n // width: 30%\n }\n\n .exp-date input {\n width: calc(100% + 1px);\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border: 0;\n border-right: 1px solid ${primarybordercolor};\n }\n\n\n .exp-year {\n float: left;\n // width: 30%\n }\n\n .exp-year input {\n width: calc(100% + 1px);\n border-radius: 0;\n border-top: 0;\n border-bottom: 0;\n border-right: 1px solid ${primarybordercolor};\n }\n\n .exp-date input:focus {\n position: relative;\n z-index: 10;\n }\n\n .security-digit {\n float: right;\n // width: 40%;\n position: relative;\n }\n\n .security-digit input {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-top: 0;\n border-bottom: 0;\n border-right:0;\n }\n .card-expiry-new{\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n }\n .form-control-frac{box-sizing: border-box ;}\n #PaymentForm .form-group-frac{\n padding:5px 0 ;\n matgin: 0 !important\n }\n \n .toggle-label {\n position: relative;\n display: inline-block;\n width: 40px;\n height: 24px;\n background-color: #ccc;\n border-radius: 12px;\n cursor: pointer;\n transition: background-color 0.3s;\n }\n\n .toggle-label::before {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 20px;\n height: 20px;\n background: #ffffff;\n border-radius: 50%;\n transition: left 300ms linear;\n }\n\n .toggle-checkbox {\n display: none;\n }\n\n .toggle-checkbox:checked + .toggle-label {\n background-color: #4caf50;\n }\n\n .toggle-checkbox:checked + .toggle-label::before {\n left: 18px;\n }\n .ach-scrl {\n max-height: 380px;\n min-height: 380px;\n overflow-y: auto;\n padding-right: 6px;\n }\n .mb-4{\n margin-bottom:4px\n }\n .ach-scrl::-webkit-scrollbar {\n width: 3px;\n background-color: #F5F5F5;\n }\n .ach-scrl::-webkit-scrollbar-thumb {\n background-color: #35254D;\n }\n\n .error-span{\n color:red !important;\n font-size:12px !important;\n text-align: left !important;\n width: 100% !important;\n display: block;\n }\n\n .charge-customer-name-frac{\n color: #161616;\n font-family: Inter;\n font-size: 24px;\n font-style: normal;\n font-weight: 600;\n line-height: 32px;\n letter-spacing: -0.48px;\n text-transform: capitalize;\n margin-top:0;\n margin-bottom:16px !important;\n text-align:left !important\n }\n .card-ach-heading-frac {\n color: #727272;\n font-family: Inter;\n font-size: 12px;\n font-style: normal;\n font-weight: 500;\n line-height: 18px;\n letter-spacing: -0.24px;\n margin : 0 0 10px !important; \n text-align : left\n}\n .card-list-div{\n max-height : 190px;\n overflow-y : auto;\n border:1px solid #E0DFE2;\n border-radius : 8px\n }\n \n \n .card-list-div::-webkit-scrollbar{\n width:2px;\n background-color:#F5F5F5\n }\n .card-list-div::-webkit-scrollbar-thumb{\n background-color:#35254D\n }\n \n .card-list-single-div{\n border-bottom: 1px solid #E0DFE2;\n padding : 8px 11px;\n display : flex ;\n align-items:center;\n justify-content : space-between;\n gap:12px\n }\n .card-list-single-div:last-child {\n border-bottom: none;\n}\n .card-lint-div-in{\n min-height:444px}\n .card-number-radio{\n display:flex;\n gap:12px;\n }\n .card-number-radio .card-number-last-four{\n color:#161616 !important;\n font-family:Inter !important;\n font-size:14px !important;\n font-weight:500 !important;\n font-style:normal !important;\n line-height : 18px !important;\n latter-spacing:-0.18px !important\n }\n .card-expiry-date{\n margin:0;\n color:#00000080;\n font-family:Inter;\n font-size:14px;\n font-weight:500;\n font-style\"normal;\n line-height : 18px;\n latter-spacing:-0.18px\n }\n .pay-with-other-card {\n margin-top : 12px;\n padding:12px 32px;\n border :1px solid #E0DFE2;\n border-radius : 1000px;\n display: flex;\n justify-content : center;\n align-items:center;\n gap:10px;\n // width:100%;\n background:white;\n cursor:pointer;\n color:#161616;\n text-align:center\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: 24px;\n letter-spacing: -0.28px;\n // margin-bottom: 50px;\n }\n .charge-payment-back-btn {\n display: flex;\n padding: 6px 12px !important ;\n align-items: center;\n gap: 6px;\n border-radius: 1000px;\n border: 1px solid #E0DFE2;\n background: #FFF;\n box-shadow: 0px 6px 12px 0px rgba(206, 197, 221, 0.31);\n font-size:16px;\n curso:pointer;\n color:black\n}\n .res-charge-payment-back-btn{\n padding: 9px 16px;\n align-items: center;\n gap: 6px;\n margin-bottom: 20px;\n border-radius: 1000px;\n border: 1px solid #E0DFE2;\n background: #FFF;\n box-shadow: 0px 6px 12px 0px rgba(206, 197, 221, 0.31);\n font-size:16px;\n curso:pointer;\n color:black;\n display:none \n }\n .btn {\n padding: 11px 23px;\n background-color: black;\n color: white;\n border: none;\n border-radius: 6px;\n font-weight: bold;\n margin: 0 10px;\n cursor: pointer;\n}\n\n.custom-swal-icon {\n margin: 20px auto;\n}\n\n.custom-swal-popup {\n font-size: 16px;\n text-align: center;\n}\n\n .frac-form .res-pay-con{\n display:none\n }\n\n .saveachtext p, .saveachtext b {\n font-size: 12px !important;\n color: #727272 !important;\n }\n\n .cardicon-img img {\n margin-top: -2px !important;\n }\n\n .bankicon-img img {\n margin-top: -4px !important;\n }\n\n .cardicon {\n margin-right : 8px !important;\n width : 18px !important;\n }\n\n .bankicon {\n margin-right : 8px !important;\n width : 18px !important;\n }\n\n \n.frac-tooltip-wrapper {\n position: absolute;\n right:0;\n}\n\n.frac-tooltip-icon {\n cursor: pointer;\n}\n.frac-tooltip-mn{\nposition:relative;\n}\n.frac-tooltip-text {\n display: none;\n position: absolute;\n top:-15px;\n right: 22px;\n background: #161616;\n color: white;\n padding: 15px;\n border-radius: 10px;\n width: 200px;\n font-size:12px;\n word-break: break-word;\n white-space: normal;\n z-index: 999;\n}\n\n.frac-tooltip-wrapper:hover .frac-tooltip-text {\n display: block;\n}\n\n.frac-tooltip-text p,.frac-tooltip-text b {\n font-size : 12px !important;\n line-height : 1.5 !important;\n margin-bottom : 10px !important;\n}\n\n .amt-pay-con {\n padding-right: 24px;\n}\n\n\n\n@media (max-width: 768px) {\n.card-lint-div-in {\n min-height: auto;\n margin-bottom: 10px;\n}\n .ach-scrl {\n min-height: auto !important;\n margin-bottom: 10px;\n}\n.request-payment-close-popup {\n right: 12px !important;\n top: 12px !important;\n}\n\n .parent-pay-container{\n padding:24px;\n }\n .pay-container {\n grid-template-columns: 1fr;\n padding: 10px 5%;\n border:1px solid #E0DFE2;\n border-radius : 12px\n }\n .pay-conatiner-one{\n border-right: none;\n }\n .pay-conatiner-one-first{\n min-height:0\n }\n .pay-main-logo > img{\n display: none;\n }\n .pay-main-logo-res > img {\n display:block;\n margin:auto\n }\n \n .pay-logo-container{\n border :none\n }\n // .res-charge-payment-back-btn {\n // display:flex !important\n // }\n // .charge-payment-back-btn{\n // display:none !important\n // }\n \n .frac-new-form .pay-amount-conatiner {\n margin-top: 0px;\n margin-bottom: 24px;\n }\n .frac-form .res-pay-con{\n display:flex;\n justify-content :space-between;\n align-items:center;\n padding-bottom : 10px\n }\n .amt-pay-con {\n padding-right: 0px;\n }\n .pay-conatiner-one-last{\n display:none}\n .pay-conatiner-two{\n padding:0\n }\n\n \n }\n @media (max-width : 512px){\n .tab button {\n padding: 6px 16px;\n }\n \n} \n\n\n.frac-cash-discount-fee {\n display: flex;\n padding: 11px;\n justify-content: space-between;\n align-items: center;\n align-self: stretch;\n border-radius: 8px;\n border: 1px solid #E0DFE2;\n background: #F6F6F7;\n margin-top: 24px;\n }\n .frac-cash-discount-fee small {\n color:#727272;\n font-size: 12px;\n font-weight: 500;\n }\n .frac-cash-discount-fee p{\n margin:0px;\n font-size: 14px;\n font-weight: 500;\n }\n .frac-card-payment-heading {\n font-size: 24px;\n font-style: normal;\n font-weight: 600;\n margin:0px;\n }\n\n .frac-heading-card-wrap {\n display: flex;\n align-items: center;\n margin-bottom:12px;\n }\n .frac-backarrow {\n margin-right: 10px;\n }\n .frac-charge-payment-back-btn-wrap , .frac-tab-2{\n display: none;\n }\n .frac-pay-conatiner-one{\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n min-height: auto;\n }\n\n .frac-form .saveachlabel {\n margin-bottom : 0px !important;\n }\n\n .frac-partial-payment-input{\n margin-top: 12px !important; \n }\n \n .challengeUrlclass-frac{\n height : 90vh;\n width : 100%;\n border-radius : 8px;\n border : none;\n }\n\n\n div#cvv {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-top: 0;\n border-bottom: 0;\n border-right: 0;\n }\n div#exp_year {\n height: 36px;\n width: calc(100% + 1px);\n border-radius: 0;\n border-top: 0;\n border-bottom: 0;\n border-right: 1px solid #dee2e6;\n }\n div#exp_month {\n width: calc(100% + 1px);\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border: 0;\n border-right: 1px solid #dee2e6;\n }\n .exp-date-year-container .form-group {\n flex: 1;\n }\n\n\n \n\n `}\n </style>\n );\n}\n","import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react'\nimport Loader from '../../Loader/Loader'\nimport ErrorCardMessage from '../../ErrorCardMessage/ErrorCardMessage'\nimport { fractalGatewayUrl, masterBaseUrl, S3Url } from '../../baseurl'\nimport axios from 'axios'\nimport { PaymentMethodKeys } from '@/app/utils/Constant'\nimport Swal from 'sweetalert2'\nimport { ThreeDSChallenge } from '../ThreedsCheckout/ThreeDSChallenge'\nimport { CardBankRadio } from '../CardBankRadio/CardBankRadio'\nimport { accountTypes, formatCardNumberWithCursor, formatUSD } from '@/app/utils/Common'\nimport CheckoutWrapper from '../ThreedsCheckout/ThreedsCheckout'\nimport { IoArrowBack } from 'react-icons/io5'\nimport { CardList } from '../CardList/CardList'\nimport { NumericFormat } from 'react-number-format'\nimport FractalFields from '../FractalForm/FractalFields'\n\ndeclare let DatacapWebToken: any;\ndeclare let forge: any;\n\ntype Props = {\n session_token: string,\n // callback: (resp: any) => void,\n // isloading: boolean,\n // onCancel: () => void,\n // showChecks: boolean,\n // merchantName: string,\n surcharge: string\n amount: string,\n submitBtnText?: string,\n submitBtnClass?: string,\n customerId?: string,\n callback: (resp: any) => void,\n merchantName: string,\n isPreAuth: boolean,\n submitBtnIcon?: any,\n isRequest?: boolean,\n pass_fee?: boolean,\n pass_fee_amount?: number | string;\n bankAmount: string;\n bankSurcharge?: string,\n require3ds: boolean,\n autoTrigger: boolean,\n show: boolean,\n setShow: React.Dispatch<React.SetStateAction<boolean>>\n setHandleCloseRef?: React.Dispatch<React.SetStateAction<() => void>>;\n isPartial?: boolean\n partialRef?: string,\n loadingPrev?: boolean,\n orderGuid?: string | null,\n remainingAmount?: string | null\n}\n\ninterface CardDetails {\n cardName: string,\n cardNumber: string;\n expiryMonth: string;\n expiryYear: string;\n cvv: string;\n orderId: string;\n zipCode: string;\n}\ninterface achDetails {\n name: string;\n routingNumber: string;\n accountNumber: string;\n confirmAccountNumber: string;\n bankName: string;\n accountType: string;\n companyName?: string;\n}\n\n\ninterface SelectedCard {\n card_type: string;\n cardlastfourdigit: string;\n expmonth: number;\n expyear: number;\n primary_card: number;\n firstname: string;\n id: string;\n lastname: string;\n}\n\n\n\ninterface Card {\n id: string;\n firstname: string;\n lastname: string;\n primary_card: number;\n expmonth: number;\n expyear: number;\n card_type: string;\n cardlastfourdigit: string;\n}\n\n\ninterface PaymentDevice {\n id: number;\n device_id: number;\n device_name: string;\n}\n\ntype activeinTabs = 'form' | 'list'\n\nconst ModelContentSky = ({ amount, bankAmount, submitBtnText = 'Pay', session_token, customerId, callback, merchantName = \"merchant\", isPreAuth, surcharge = \"0\", submitBtnClass, submitBtnIcon, isRequest, pass_fee, pass_fee_amount, require3ds = false, autoTrigger = false, show, setShow, setHandleCloseRef, isPartial, bankSurcharge, partialRef, loadingPrev = false, orderGuid: ordGuid, remainingAmount: remAmount }: Props) => {\n const hasRunRef = useRef(false);\n const cardListRunRef = useRef(false);\n const threeDSContainerRef = useRef<HTMLDivElement>(null);\n const [activetab, setActive] = useState<string>('card');\n const [activeList, setActiveList] = useState<string>('card')\n const [cardData, setCardData] = useState<CardDetails>()\n const [cardError, setCardError] = useState<Partial<Record<keyof CardDetails, string>>>({});\n const [achData, setAchData] = useState<achDetails>()\n const [achError, setAchError] = useState<Partial<Record<keyof achDetails, string>>>({});\n const [saveACHinfo, setSaveACHinfo] = useState<boolean>(false);\n const [saveCardInfo, setSaveCardInfo] = useState<boolean>(false);\n const [error, setError] = useState<string>(\"\");\n const [success, setSuccess] = useState<boolean>(false);\n let [tranId, setTranId] = useState(\"\")\n const [loading, setLoading] = useState<boolean>(false);\n const [loading2, setLoading2] = useState<boolean>(false);\n const [cardList, setCardList] = useState([]);\n const [bankList, setBankList] = useState([]);\n const [selectedCard, setSelectedCard] = useState<SelectedCard>()\n const [cashDiscount, setCashDiscount] = useState<number>(Number(amount));\n const [activeinCard, setActiveinCard] = useState<activeinTabs>('form')\n const [activeinBank, setActiveinBank] = useState<activeinTabs>('form')\n const [isBankActive, setIsBankActive] = useState<boolean>(false);\n const [processingFee, setProcessingFee] = useState<number>(0);\n const [clientSecret, setClientSecret] = useState<string | null>('');\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const [initialLoader, setInitialLoader] = useState<boolean>(false)\n const [is3DSEnable, setIs3DSEnable] = useState<boolean>(false)\n const [stripeResponse, setStripeResponse] = useState<any>(null);\n const [orderLoader, setOrderLoader] = useState<boolean>(false);\n const [orderGuid, setOrderGuid] = useState<string | null>(ordGuid || null);\n const [partialAmount, setPartialAmount] = useState<string | undefined>('');\n const [partialError, setPartialError] = useState<string>(\"\")\n const [remainingAmount, setRemainingAmount] = useState<string | undefined>('');\n const [paymentGateway, setPaymentGateway] = useState<number | undefined>();\n // console.log(cashDiscount, \"cashDiscount\");\n\n\n let mastercard = S3Url + 'widget/mc-img.svg'\n let visa = S3Url + 'widget/visa-img.svg'\n let americanexp = S3Url + 'widget/ae-img.svg'\n let discover = S3Url + 'widget/discover-img.svg'\n let defaultcard = S3Url + 'widget/card.svg'\n let trash = S3Url + 'widget/Trash.svg'\n let bank = S3Url + 'widget/bank.svg'\n let secure = S3Url + 'widget/secure-img.png'\n let pov = S3Url + 'widget/pov-by.png'\n let pax = S3Url + 'widget/pax.svg'\n let cardicon = S3Url + 'widget/cardicon.svg'\n let bankicon = S3Url + 'widget/bankicon.svg'\n\n const showLoader = () => setLoading(true);\n const hideLoader = () => setLoading(false);\n\n const CalculateCashDiscount = (amount: any, surcharge: any) => {\n const surchargeVal = (parseFloat(surcharge) || 0) / 100;\n const originalAmount = amount / (1 + surchargeVal);\n return Math.round(originalAmount * 100) / 100; // rounding to 2 decimals\n };\n\n const tokenizerRef = useRef<any>(null);\n\n const fractalStyles = {\n input: {\n 'font-family': \"'Inter', sans-serif\",\n 'font-size': '16px',\n 'color': '#212529',\n 'background-color': 'transparent',\n 'padding': '0px',\n 'appearance': 'none',\n 'outline': 'none',\n 'border': 'none',\n 'box-shadow': 'none'\n },\n ':focus': {\n 'color': '#212529',\n 'outline': 'none',\n 'border': 'none'\n },\n '::placeholder': {\n 'color': '#212529'\n }\n };\n\n\n\n const handleCharge = async (data: any) => {\n // console.log(data, \"ndfkjhdskjfhds\");\n try {\n let dataObj: any = {\n pass_fee_amount: Number(amount) - cashDiscount,\n pass_fee: pass_fee,\n Token: data?.Token,\n amount: partialAmount ? partialAmount : amount,\n postal_code: data?.postalCode,\n require3ds,\n isPartial,\n orderGuid: orderGuid || ordGuid\n }\n\n if (require3ds && data?.stripe_3ds_auth_id) {\n dataObj.stripe_3ds_auth_id = data?.stripe_3ds_auth_id\n }\n\n const chargeResponse = await axios.post(`${masterBaseUrl}api/v1/gateway/charge/${session_token}`, dataObj);\n if (chargeResponse?.data?.result) {\n let addCard\n if (saveCardInfo && customerId) {\n try {\n let obj = {\n postal_code: cardData?.zipCode,\n customer_id: customerId,\n gateway_token: data?.gateway_token || data?.Token\n }\n addCard = await axios.post(`${masterBaseUrl}api/v1/gateway/add-card/${session_token}`, obj)\n // console.log(addCard?.data?.data, \"addCard?.data?.data\");\n\n if (addCard?.data?.result) {\n addCard = addCard?.data?.data\n }\n\n } catch (error: any) {\n console.log(error, \"error\");\n hideLoader();\n callback({\n error: error?.response?.data?.message || \"Something went wrong!\",\n result: error?.response?.data?.result,\n statusCode: error?.response?.status\n })\n setError(error?.response?.data?.message || \"Something went wrong!\");\n }\n }\n let callbackdata = {\n cardDetails: { ...addCard, ...data },\n callback: { ...chargeResponse?.data?.data, name: cardData?.cardName, isPreAuth }\n }\n if (!saveCardInfo) {\n delete callbackdata.cardDetails\n }\n callback(callbackdata)\n hideLoader();\n handleClose()\n }\n } catch (error: any) {\n setError(error?.response?.data?.message || \"Something went wrong!\");\n callback({\n error: error?.response?.data?.message || \"Something went wrong!\",\n result: error?.response?.data?.result,\n statusCode: error?.response?.status\n })\n hideLoader();\n }\n }\n\n const handlePreAuth = async (data: any) => {\n try {\n let dataObj = {\n Token: data?.Token,\n amount,\n postal_code: data?.postalCode\n }\n const preAuthResponse = await axios.post(`${masterBaseUrl}api/v1/gateway/preauth/${session_token}`, dataObj);\n if (preAuthResponse?.data?.result) {\n let addCard\n if (saveCardInfo && customerId) {\n try {\n // console.log(preAuthResponse, \"preAuthResponse\");\n let obj = {\n postal_code: cardData?.zipCode,\n customer_id: customerId,\n gateway_token: data?.Token || data?.gateway_token\n }\n addCard = await axios.post(`${masterBaseUrl}api/v1/gateway/add-card/${session_token}`, obj)\n\n if (addCard?.data?.result) {\n addCard = addCard?.data?.data\n }\n\n } catch (error: any) {\n console.log(error, \"error\");\n hideLoader();\n setError(error?.response?.data?.message || \"Something went wrong!\");\n callback({\n error: error?.response?.data?.message || \"Something went wrong!\",\n result: error?.response?.data?.result,\n statusCode: error?.response?.status\n })\n }\n }\n let callbackdata = {\n cardDetails: { ...addCard, ...data },\n callback: { ...preAuthResponse?.data?.data, name: cardData?.cardName, isPreAuth }\n }\n if (!saveCardInfo) {\n delete callbackdata.cardDetails\n }\n callback(callbackdata)\n hideLoader();\n handleClose()\n }\n } catch (error: any) {\n setError(error?.response?.data?.message || \"Something went wrong!\");\n callback({\n error: error?.response?.data?.message || \"Something went wrong!\",\n result: error?.response?.data?.result,\n statusCode: error?.response?.status\n })\n hideLoader();\n }\n }\n\n const handleTokenCallback = async (token: any) => {\n if (token.Error) {\n setError(token.Error);\n callback({\n error: token.Error || \"Something went wrong!\"\n })\n hideLoader();\n } else {\n let data = {\n token: token.Token,\n resp: token\n };\n try {\n const updateToken = await axios.post(`${masterBaseUrl}api/v1/gateway/update/token/${session_token}`, data);\n\n if (updateToken?.status == 200) {\n let respData = {\n Token: updateToken?.data?.data?.gateway_token,\n Brand: token.Brand,\n ExpirationMonth: token.ExpirationMonth,\n ExpirationYear: token.ExpirationYear,\n Last4: token.Last4,\n Bin: token.Bin,\n CVV: token.CVV,\n postalCode: cardData?.zipCode,\n };\n let addCard\n\n if (isPreAuth) {\n handlePreAuth(respData)\n } else {\n handleCharge(respData)\n }\n }\n } catch (error: any) {\n console.log(error, \"error\");\n hideLoader();\n setError(error?.response?.data?.message || \"Something went wrong!\");\n callback({\n error: error?.response?.data?.message || \"Something went wrong!\",\n result: error?.response?.data?.result,\n statusCode: error?.response?.status\n })\n }\n }\n };\n\n const handletabchange = (id: string) => {\n setActive(id)\n }\n\n const validateAchData = (): boolean => {\n const errors: Partial<Record<keyof achDetails, string>> = {};\n const data = achData\n if (!data?.name?.trim()) errors.name = \"Name is required\";\n if (!data?.accountNumber?.trim()) errors.accountNumber = \"Account number is required\";\n if (data?.accountNumber?.trim() && data?.accountNumber?.trim() !== data?.confirmAccountNumber?.trim()) errors.confirmAccountNumber = \"Account numbers must match\";\n if (!data?.bankName?.trim()) errors.bankName = \"Bank name is required\";\n if (!data?.routingNumber?.trim()) errors.routingNumber = \"Routing Number is required\";\n\n\n if (data?.routingNumber && data?.routingNumber?.length !== 9) errors.routingNumber = \"Routing number must be 9 digits\";\n\n if ((data?.accountType === 'business saving' || data?.accountType === 'business checking')) {\n if (!data?.companyName || data?.companyName === \"\") {\n errors.companyName = \"Company Name is required for business accounts\";\n }\n }\n\n // Routing Number Validation removed du to new validation \n // if (data?.routingNumber?.length == 9) {\n\n // let routingNumber = data?.routingNumber\n // const weights = [3, 7, 1];\n // let sum = 0;\n\n // for (let i = 0; i < routingNumber.length; i++) {\n // sum += parseInt(routingNumber[i], 10) * weights[i % 3];\n // }\n // if (sum % 10 !== 0) {\n // errors.routingNumber = \"Invalid routing number\"\n // }\n\n // }\n setAchError(errors);\n return Object.keys(errors).length > 0;\n };\n\n const completeFractalFlow = async (tokenizeData: string, intentid?: string | null) => {\n // console.log(tokenizeData, intentid, \"fjahfgyuhgad\");\n try {\n let token = tokenizeData;\n let verifyandsaveresp = await axios.post(`${masterBaseUrl}api/v1/gateway/verify-and-save/${session_token}`, {\n token,\n require3ds,\n pass_fee\n });\n\n if (verifyandsaveresp?.status == 200) {\n let responsetemp = verifyandsaveresp?.data?.data;\n let respData = {\n Token: responsetemp.gateway_token,\n Brand: responsetemp.card_data.brand,\n ExpirationMonth: responsetemp.card_data.expire_mm,\n ExpirationYear: responsetemp.card_data.expire_yy,\n Last4: responsetemp.card_data.last4,\n Bin: responsetemp.card_data.bin,\n postalCode: cardData?.zipCode,\n stripe_3ds_auth_id: intentid\n };\n\n // let addCard\n\n // if (saveCardInfo && customerId) {\n // try {\n // let data = {\n // postal_code: cardData?.zipCode,\n // customer_id: customerId,\n // gateway_token: responsetemp.gateway_token\n // }\n // addCard = await axios.post(`${masterBaseUrl}api/v1/gateway/add-card/${session_token}`, data)\n\n\n // } catch (error: any) {\n // console.log(error, \"error\");\n // hideLoader();\n // setError(error?.response?.data?.message || \"Something went wrong!\");\n // }\n // }\n\n if (isPreAuth) {\n handlePreAuth(respData)\n } else {\n handleCharge(respData)\n }\n }\n } catch (error: any) {\n console.log(error, \"error\");\n setError(error?.response?.data?.message || \"Something went wrong!\");\n callback({\n error: error?.response?.data?.message || \"Something went wrong!\",\n result: error?.response?.data?.result,\n statusCode: error?.response?.status\n })\n hideLoader();\n }\n }\n\n const handleFractalTokenFlow = async () => {\n try {\n const requestOptions = {\n method: \"POST\",\n redirect: \"follow\"\n };\n\n let sesionResult = await axios.post(`${masterBaseUrl}api/v1/widget/generate-session`, requestOptions)\n // let expYear = (Number(cardData?.expiryYear)) % 100;\n // let cardNumber = cardData?.cardNumber?.replace(/\\s+/g, '');\n // let track2_data = `${cardNumber}=${expYear}${cardData?.expiryMonth} ${cardData?.cvv}`;\n\n // const publicKey = forge.pki.publicKeyFromPem(sesionResult?.data?.data?.publicKeyPem);\n // const encrypted = publicKey.encrypt(track2_data, 'RSA-OAEP', {\n // md: forge.md.sha1.create(),\n // mgf1: { md: forge.md.sha1.create() }\n // });\n // const encryptedBase64 = forge.util.encode64(encrypted);\n\n // const myHeaders = {\n // \"Content-Type\": \"application/json\",\n // \"x-app-session-key\": sesionResult.data?.data?.session_key\n // }\n\n // let objtokenize: any = {\n // enc_track2_data: encryptedBase64,\n // algorithm: \"RSAES_OAEP_SHA_1\",\n // session_key: sesionResult?.data?.data?.session_key\n // }\n\n let objtokenize: any = {\n public_key_pem: sesionResult?.data?.data?.publicKeyPem || sesionResult?.data?.data?.public_key_pem,\n session_key: sesionResult?.data?.data?.session_key\n }\n\n if (require3ds) {\n // Ensure we are in the browser (Next.js SSR safety)\n if (typeof window !== 'undefined' && typeof navigator !== 'undefined') {\n const languages = navigator.languages ?? [navigator.language];\n const language = Array.isArray(languages) ? languages[0] : languages;\n\n objtokenize.three_ds_data = {\n amount: partialAmount ? Math.round(parseFloat(partialAmount) * 100) : Math.round(parseFloat(amount) * 100), // convert dollars → cents\n currency: 'usd',\n channel: {\n type: 'browser',\n browser: {\n language: typeof language === 'string' ? language : null,\n color_depth: window.screen?.colorDepth ?? null,\n java_enabled: typeof navigator.javaEnabled === 'function' ? navigator.javaEnabled() : false,\n screen_height: window.screen?.height ?? null,\n screen_width: window.screen?.width ?? null,\n timezoneOffset: new Date().getTimezoneOffset(),\n },\n },\n };\n }\n }\n\n\n // const raw = JSON.stringify(objtokenize);\n\n // const tokenizeData = await axios.post(`${fractalGatewayUrl}tokenizer/tokenize`, raw, { headers: myHeaders });\n\n const tokenizeData = await tokenizerRef.current.createToken(objtokenize);\n\n if (tokenizeData?.token) {\n\n // console.log(tokenizeData, \"tokenizeData\");\n let ThreedsData = tokenizeData?.stripe_three_ds_response\n // console.log(ThreedsData, \"ThreedsData\");\n\n if (require3ds && !ThreedsData && ThreedsData?.status === \"200 OK\" && ThreedsData?.data?.challenge_url) {\n setError(\"Something went wrong. Please try again later.\")\n }\n\n if (require3ds) {\n if (!ThreedsData?.data?.challenge_url) {\n completeFractalFlow(tokenizeData?.token, ThreedsData?.data?.id)\n } else {\n hideLoader()\n setStripeResponse({\n ...ThreedsData?.data,\n fractalToken: tokenizeData?.token\n });\n }\n } else {\n completeFractalFlow(tokenizeData?.token, null)\n }\n }\n } catch (error: any) {\n hideLoader();\n console.log(error, \"error\");\n let readableMessage = \"Something went wrong!\";\n\n try {\n const rawError = error?.response?.data || error?.message || \"\";\n\n // Convert to string safely\n const errorText = typeof rawError === \"string\" ? rawError : JSON.stringify(rawError);\n\n // Split safely (avoid crashes even if empty or non-string)\n const lines = errorText.split?.(\"\\n\")?.filter(Boolean) || [];\n const lastLine = lines.at(-1) || \"\";\n\n // Extract message after last colon (if any)\n const parts: any = lastLine.split?.(\": \");\n readableMessage = parts?.length > 1 ? parts.pop().trim() : lastLine.trim() || readableMessage;\n } catch {\n // If *anything* above fails, fallback to a generic message\n readableMessage = \"Something went wrong!\";\n }\n setError(readableMessage);\n callback({\n error: readableMessage,\n result: error?.response?.data?.result,\n statusCode: error?.response?.status\n })\n }\n }\n\n const validateCardData = (): boolean => {\n const errors: Partial<Record<keyof CardDetails, string>> = {};\n const data = cardData\n if (paymentGateway !== 32) {\n const month = parseInt(data?.expiryMonth || \"\", 10);\n const year = data?.expiryYear || \"\";\n if (!data?.cardNumber?.trim()) errors.cardNumber = \"Card number is required\";\n if (!data?.expiryMonth?.trim() || !data?.expiryYear?.trim()) {\n errors.expiryMonth = \"Invalid Expiration Date.\"\n }\n else if (isNaN(month) || month < 1 || month > 12 || year.length !== 4) {\n errors.expiryMonth = \"Invalid Expiration Date.\";\n }\n\n if (!data?.cvv?.trim()) errors.cvv = \"CVV is required\";\n\n // Additional check for expired card\n if (data?.expiryMonth && data?.expiryYear && data.expiryMonth.length <= 2 && data.expiryYear.length === 4) {\n const month = parseInt(data.expiryMonth, 10);\n const year = parseInt(data.expiryYear, 10);\n const now = new Date();\n const currentMonth = now.getMonth() + 1; // JS month is 0-indexed\n const currentYear = now.getFullYear();\n\n if (year < currentYear || (year === currentYear && month < currentMonth)) {\n errors.expiryMonth = \"Card is expired\";\n }\n }\n }\n if (!data?.cardName?.trim()) errors.cardName = \"Card name is required\";\n // else if (data?.expiryMonth < 1 || data?.expiryMonth > 12 || data?.expiryYear.length !== 4){\n // errors.expiryMonth = \"Invalid Expiration Date.\";\n // }\n if (!data?.zipCode?.trim()) errors.zipCode = \"ZIP code is required\";\n\n\n\n setCardError(errors);\n\n // Return true if there is any error\n\n\n return Object.keys(errors).length > 0;\n };\n\n const validateCardInputs = (): boolean => {\n let validCard = DatacapWebToken.validateCardNumber(cardData?.cardNumber.replaceAll(\" \", ''));\n let validExpirationDate = DatacapWebToken.validateExpirationDate(cardData?.expiryMonth, cardData?.expiryYear);\n let validCVV = DatacapWebToken.validateCVV(cardData?.cvv);\n\n let errors: Partial<Record<keyof CardDetails, string>> = {}\n if (!validCard) errors.cardNumber = \"Invalid card Number\"\n if (!validExpirationDate) errors.expiryMonth = \"Invalid Expiration Date.\"\n if (!validCVV) errors.cvv = \"Invalid CVV\"\n\n setCardError(errors)\n\n return validCard && validCVV && validExpirationDate\n }\n\n const submitFunc = async (e: any) => {\n //handle function submit here\n e.preventDefault()\n const el = document.activeElement;\n if (el instanceof HTMLElement) {\n el.blur();\n }\n if (loading) return;\n if (partialError) {\n return\n }\n if (activetab !== 'ach') {\n const hasError = validateCardData()\n if (hasError) return\n let isValid = true;\n if (paymentGateway !== 32) {\n isValid = validateCardInputs();\n }\n if (!isValid) return;\n } else {\n const hasError = validateAchData()\n if (hasError) return\n }\n try {\n showLoader()\n const result = await axios.get(`${masterBaseUrl}api/v1/gateway/token/${session_token}`, {\n params: {\n require3ds,\n pass_fee\n }\n });\n if (result?.status == 200) {\n let gatewayToken = result?.data?.data?.gateway_token;\n let paymentGateway = result?.data?.data?.paymentGateway;\n\n if (activetab !== 'ach') {\n //handle card actions here \n if (paymentGateway == PaymentMethodKeys?.FRACTALKEY) {\n await handleFractalTokenFlow();\n } else {\n DatacapWebToken.requestToken(gatewayToken, 'PaymentForm', handleTokenCallback);\n }\n } else {\n let callbackdata\n try {\n const payByBank = await axios.post(`${masterBaseUrl}api/v1/gateway/bank-charge/${session_token}`, {\n label: achData?.name,\n account_number: achData?.accountNumber,\n routing_number: achData?.routingNumber,\n bank_name: achData?.bankName,\n account_type: achData?.accountType,\n amount: `${bankAmount}`,\n customer_id: null,\n isSaveAch: false,\n tax: \"0.00\",\n discount: \"0.00\",\n surcharge: \"0.00\",\n order_id: '',\n company_name: achData?.companyName || \"\"\n })\n if (payByBank?.data?.result) {\n if (saveACHinfo && customerId) {\n try {\n const result = await axios.post(`${masterBaseUrl}api/v1/gateway/add-bank/${session_token}`, {\n name: achData?.name,\n account_number: achData?.accountNumber,\n routing_number: achData?.routingNumber,\n bank_name: achData?.bankName,\n account_type: achData?.accountType,\n customer_id: customerId || \"\",\n company_name: achData?.companyName || \"\"\n })\n if (result.data.result) {\n\n callbackdata = {\n bankDetails: { ...result?.data?.data, account_type: achData?.accountType }\n }\n }\n } catch (error: any) {\n hideLoader();\n setError(error?.response?.data?.message || \"Something went wrong!\");\n callback({\n error: error?.response?.data?.message || \"Something went wrong!\",\n result: error?.response?.data?.result,\n statusCode: error?.response?.status\n })\n }\n }\n\n callbackdata = {\n ...callbackdata,\n callback: { ...payByBank?.data?.data, name: achData?.name, isPreAuth }\n }\n callback(callbackdata)\n handleClose()\n hideLoader()\n }\n } catch (error: any) {\n console.log(error, \"errororor\");\n let data = error?.response?.data\n if (typeof (data?.message) == \"object\") {\n Object.values(data?.message).forEach((message: any) => {\n setError(message || \"Something went wrong\");\n callback({\n error: message || \"Something went wrong!\",\n result: data?.result || false,\n statusCode: error?.response?.status\n })\n });\n } else {\n setError(data?.message || \"Something went wrong\")\n callback({\n error: data?.message || \"Something went wrong!\",\n result: data?.result || false,\n statusCode: error?.response?.status\n })\n }\n hideLoader()\n }\n }\n }\n } catch (error: any) {\n hideLoader();\n callback({\n error: error?.response?.data?.message || \"Something went wrong!\",\n result: error?.response?.data?.result,\n statusCode: error?.response?.status\n })\n setError(error?.response?.data?.message || \"Something went wrong!\");\n }\n }\n\n const handleCardChange = (field: string, value: any) => {\n const name = field\n const numericFields = [\"expiryMonth\", \"expiryYear\", \"zipCode\", \"cvv\"];\n\n if (numericFields.includes(name)) {\n // Agar value empty hai (backspace ke liye) ya sirf digits hain, tabhi set karenge\n if (value === \"\" || /^[0-9]+$/.test(value)) {\n setCardError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setCardData((prev: any) => ({\n ...prev,\n [name]: value,\n }));\n }\n return;\n }\n\n setCardError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setCardData((prev: any) => ({\n ...prev, [name]: value\n }))\n\n }\n\n const handleCardNumberChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target;\n const rawValue = input.value.replace(/\\D/g, \"\"); // Remove all non-digits\n\n const { formatted, cursor } = formatCardNumberWithCursor(\n input.value,\n input.selectionStart ?? 0\n );\n\n setCardError((prev: any) => ({\n ...prev,\n cardNumber: \"\"\n }))\n\n setCardData((prev: any) => ({\n ...prev,\n cardNumber: formatted\n }));\n\n requestAnimationFrame(() => {\n input.setSelectionRange(cursor, cursor);\n });\n };\n\n\n\n const handleChangeAch = (e: any) => {\n const { name, value } = e.target\n const numericFields = [\"routingNumber\", \"accountNumber\", \"confirmAccountNumber\"];\n if (name == \"name\") {\n\n\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n setAchError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setAchData((prev: any) => ({\n ...prev,\n [name]: value,\n }));\n }\n return\n\n }\n if (numericFields.includes(name)) {\n // Agar value empty hai (backspace ke liye) ya sirf digits hain, tabhi set karenge\n if (value === \"\" || /^[0-9]+$/.test(value)) {\n setAchError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setAchData((prev: any) => ({\n ...prev,\n [name]: value,\n }));\n }\n return;\n }\n\n setAchError((prev: any) => ({\n ...prev,\n [name]: \"\"\n }))\n setAchData((prev: any) => ({\n ...prev, [name]: value\n }))\n\n }\n\n const handleClose = () => {\n setShow(false);\n setActive('card')\n setError(\"\")\n setSuccess(false)\n setTranId(\"\")\n setAchData({\n name: \"\",\n routingNumber: \"\",\n accountNumber: \"\",\n confirmAccountNumber: \"\",\n bankName: \"\",\n accountType: \"\"\n })\n setAchError({\n name: \"\",\n routingNumber: \"\",\n accountNumber: \"\",\n confirmAccountNumber: \"\",\n bankName: \"\",\n accountType: \"\"\n })\n setCardData({\n cardName: \"\",\n cardNumber: \"\",\n expiryMonth: \"\",\n expiryYear: \"\",\n cvv: \"\",\n orderId: \"\",\n zipCode: \"\"\n })\n setCardError({\n cardName: \"\",\n cardNumber: \"\",\n expiryMonth: \"\",\n expiryYear: \"\",\n cvv: \"\",\n orderId: \"\",\n zipCode: \"\"\n })\n setSaveACHinfo(false)\n setSaveCardInfo(false)\n setActiveinBank('form')\n setActiveinCard('form')\n setIsBankActive(false)\n setProcessingFee(0)\n setCashDiscount(0)\n setCardList([])\n setErrorMessage(null)\n setClientSecret(null)\n setInitialLoader(false)\n setIs3DSEnable(false)\n setStripeResponse(null)\n setOrderGuid(null);\n setPartialAmount('');\n setPartialError('');\n setRemainingAmount('')\n };\n\n const getCardList = async () => {\n showLoader()\n try {\n const data = {\n isPreAuth: isPreAuth,\n \"customerId\": customerId\n }\n let cardListData = await axios.post(`${masterBaseUrl}api/v1/gateway/card-list/${session_token}`, data)\n // console.log(\"cardListData\", cardListData);\n let savedpaymentsList = cardListData?.data?.data?.cardList || []\n let banklists = savedpaymentsList?.filter((card: any) => card?.card_type == 'Bank')\n let cardlists = savedpaymentsList?.filter((card: any) => card?.card_type !== 'Bank')\n if (cardlists && cardlists?.length > 0) {\n setActive('card')\n setActiveinCard('list')\n setCardList(cardlists)\n // let primary_card = cardlists?.find((card: any) => card?.primary_card == 1)\n // if (primary_card) {\n // setSelectedCard(primary_card)\n // }\n } else {\n setActive('card')\n setCardList([])\n }\n if (banklists && banklists?.length > 0) {\n setActiveinBank('list')\n setBankList(banklists)\n // let primary_card = banklists?.find((card: any) => card?.primary_card == 1)\n // if (primary_card) {\n // setSelectedCard(primary_card)\n // }\n } else {\n setBankList([])\n }\n\n hideLoader()\n } catch (err: any) {\n console.log(err);\n hideLoader()\n callback({\n error: err?.response?.data?.message || \"Something went wrong!\",\n result: err?.response?.data?.result,\n statusCode: err?.response?.status\n })\n setError(err?.response?.data?.message || err?.message || \"Something went wrong\")\n }\n }\n\n // console.log(bankList, \"lists\", cardList);\n\n const getCardType = (card: string) => {\n let card_type = card?.toLowerCase();\n\n switch (card_type) {\n case 'visa':\n return visa;\n case 'mastercard':\n case 'mc':\n case 'm/c':\n return mastercard;\n case 'amex':\n case 'american express':\n case 'ae':\n return americanexp;\n case 'discover':\n case 'dcvr':\n return discover;\n case 'bank':\n return bank;\n default:\n return card;\n }\n };\n\n const handleDeleteCard = async (cardId: any) => {\n Swal.fire({\n icon: 'warning',\n text: 'Do you want to delete the card?',\n showCancelButton: true,\n confirmButtonText: 'Yes',\n cancelButtonText: 'No',\n reverseButtons: true,\n buttonsStyling: false,\n customClass: {\n confirmButton: 'swal2-confirm btn btn-dark',\n cancelButton: 'swal2-cancel btn btn-dark',\n popup: 'custom-swal-popup',\n icon: 'custom-swal-icon'\n }\n }).then(async (result) => {\n if (result.isConfirmed) {\n // 👇 Yahan aap apna API call karo\n // showLoader()\n setLoading2(true)\n try {\n let obj = {\n card_id: cardId,\n customer_id: customerId\n }\n\n const res = await axios.patch(`${masterBaseUrl}api/v1/gateway/delete-card/${session_token}`, obj)\n // hideLoader()\n if (res?.data?.result) {\n setLoading2(false)\n getCardList()\n Swal.fire({\n icon: 'success',\n title: 'Deleted!',\n text: res?.data?.message || 'Card deleted.',\n confirmButtonText: 'OK',\n showConfirmButton: true,\n timer: 1000, // auto-close after 1 second\n timerProgressBar: true,\n customClass: {\n confirmButton: 'btn btn-dark'\n }\n })\n } else {\n setLoading2(false)\n Swal.fire({\n icon: 'error',\n title: 'Failure!',\n text: 'Card not deleted.',\n timer: 1000, // auto-close after 1 second\n timerProgressBar: true,\n customClass: {\n confirmButton: 'btn btn-dark'\n }\n })\n }\n\n } catch (err) {\n // hideLoader()\n setLoading2(false)\n Swal.fire({\n icon: 'error',\n title: 'Error!',\n text: 'Failed to delete the card.',\n confirmButtonText: 'OK',\n customClass: {\n confirmButton: 'btn btn-dark'\n }\n });\n }\n\n\n } else if (result.dismiss === Swal.DismissReason.cancel) {\n // 👇 Show new popup on \"No\"\n Swal.fire({\n icon: 'info',\n text: 'Card not deleted',\n confirmButtonText: 'OK',\n buttonsStyling: false,\n customClass: {\n confirmButton: 'btn btn-dark float-end',\n actions: 'swal2-actions-end'\n }\n });\n\n }\n });\n };\n const handlechargeCustomer = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.currentTarget.blur();\n if (loading) return;\n let customer_id = customerId\n // let discount = String(props?.discount)\n // let surcharge = String(props?.surcharge)\n // let tax = String(props?.tax)\n // let order_id = props?.orderID\n let card_id = selectedCard?.id\n let card_type = selectedCard?.card_type\n\n if (partialError) {\n return\n }\n\n\n if (amount) {\n if (customer_id) {\n if (card_id) {\n let chargeobj: any = {\n amount: (card_type)?.toLowerCase() === 'bank' ? `${bankAmount}` : partialAmount ? partialAmount : amount,\n customer_id,\n card_id,\n pass_fee,\n pass_fee_amount: Number(amount) - cashDiscount,\n }\n // let { isCardSave, ...rest } = chargeobj\n\n if (isPartial) {\n chargeobj.orderGuid = orderGuid || ordGuid\n if (partialAmount) {\n chargeobj.ispartialPayment = true\n }\n }\n\n\n\n if (isPreAuth) {\n chargeobj.isPreauth = true\n }\n // console.log(chargeobj, \"chargeobj\");\n\n let chargeurl = masterBaseUrl + 'api/v1/gateway/charge-by-saved-details/' + session_token\n\n const headers = {\n 'Content-Type': 'application/json'\n }\n\n try {\n showLoader()\n const response = await axios.post(chargeurl, chargeobj);\n // console.log(response, \"res\");\n if (response?.data?.result) {\n callback({ callback: { ...response?.data?.data, isPreAuth } });\n hideLoader();\n handleClose();\n }\n } catch (error: any) {\n console.log(error?.response, \"error by saved details\");\n callback({\n error: error?.response?.data?.message || \"Something went wrong!\",\n result: error?.response?.data?.result,\n statusCode: error?.response?.status\n })\n hideLoader();\n setError(error?.response?.data?.message || \"Something went wrong!\");\n }\n\n // showLoader()\n // socket.emit(\"sendMessage\", { url: chargeurl, body: card_type == 'Bank' ? rest : chargeobj, isChargebycard: true })\n // socket.on('charge-by-card', (response: any) => {\n // if (response?.result == true || response?.status == true) {\n // setTranId(response.data?.transaction_id)\n // setSuccess(true)\n // // hideLoader()\n // setLoading2(false)\n // } else {\n // setError(response?.message || \"Something went wrong.\")\n // }\n // })\n\n } else {\n setError(\"Please Select A Card/Bank\")\n callback({\n error: \"Please Select A Card/Bank\",\n })\n }\n } else {\n setError(\"Please Select Customer\")\n callback({\n error: \"Please Select Customer\",\n })\n }\n } else {\n setError(\"Something went wrong.\")\n callback({\n error: \"Something went wrong.\",\n })\n }\n }\n\n // console.log(show, amount, customerId);\n\n const getPaymentDetails = async () => {\n try {\n showLoader()\n const res = await axios.get(`${masterBaseUrl}api/v1/gateway/get-payment-details/${session_token}`);\n // console.log(res, \"respinse\");\n if (res?.status == 200) {\n setIsBankActive(res?.data?.data?.isBankActive);\n setProcessingFee(Number(res?.data?.data?.fee) || 0);\n setPaymentGateway(res?.data?.data?.paymentGateway);\n hideLoader();\n }\n\n } catch (error: any) {\n console.log(error?.response?.data?.result, \"error while getting payment details\");\n callback({\n error: error?.response?.data?.message || \"Something went wrong!\",\n result: error?.response?.data?.result,\n statusCode: error?.response?.status\n })\n // setError(error?.response?.data?.message || error?.message || \"Something went wrong\")\n hideLoader()\n }\n\n }\n\n const crateOrderFrac = async () => {\n if (orderLoader) return;\n setOrderLoader(true);\n try {\n const res = await axios.post(`${masterBaseUrl}api/v1/gateway/create-pay-order/${session_token}`, {\n amount,\n cashDiscount,\n bankAmount,\n bankSurcharge,\n customerId,\n passFee: pass_fee,\n passFeeAmount: pass_fee_amount ? pass_fee_amount : Number(amount) - cashDiscount,\n require3ds,\n isPartial\n })\n\n // console.log(res, \"res of order create\");\n if (res?.data?.result) {\n setOrderLoader(false);\n // console.log(res?.data?.data, \"res?.data?.data\");\n setOrderGuid(res?.data?.data?.orderGuid);\n setRemainingAmount(res?.data?.data?.remainingAmount)\n hasRunRef.current = true;\n }\n\n } catch (error) {\n console.log(\"error in creating order\", error);\n setOrderLoader(false);\n }\n }\n\n\n\n useEffect(() => {\n if (!show && !autoTrigger) {\n hasRunRef.current = false; // reset when modal is closed\n cardListRunRef.current = false;\n }\n }, [show, autoTrigger]);\n\n useEffect(() => {\n if (!hasRunRef.current && (show || autoTrigger)) {\n getPaymentDetails();\n if (isPartial && !partialRef) {\n crateOrderFrac();\n }\n\n }\n }, [show, autoTrigger, isPartial]);\n\n // console.log(hasRunRef, \"hasRunRef\", show, \"show\", isPartial, \"isPartial\", remainingAmount, \"remainingAmount\", remAmount, \"remAmount\");\n\n\n useEffect(() => {\n // setActive('cardList')\n if ((show || autoTrigger) && pass_fee_amount) {\n let cashdisc = Number(amount) - Number(pass_fee_amount);\n if (cashdisc && !isNaN(cashdisc)) {\n setCashDiscount(cashdisc)\n }\n } else if ((show || autoTrigger) && pass_fee && processingFee) {\n let cashdisc = CalculateCashDiscount(amount, processingFee)\n if (cashdisc && !isNaN(cashdisc)) {\n setCashDiscount(cashdisc)\n }\n } else {\n setCashDiscount(Number(amount))\n }\n if (!cardListRunRef.current && customerId && (show || autoTrigger) && !isRequest) {\n cardListRunRef.current = true;\n getCardList()\n }\n }, [customerId, show, amount, processingFee, autoTrigger])\n\n const getHeading = () => {\n if (isPreAuth) {\n return \"Cards\"\n } else {\n return \"Cards/Bank\"\n }\n }\n\n // console.log(isBankActive, \"scdgfhasgcf\");\n // \n\n const fetchClientSecret = useCallback(async () => {\n try {\n setInitialLoader(true)\n const res = await fetch(`${masterBaseUrl}api/v1/gateway/create-payment-intent/${session_token}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ amount, require3ds, pass_fee }),\n });\n\n const data = await res.json();\n if (data.is3dEnable) {\n setInitialLoader(false)\n setClientSecret(data.clientSecret);\n setIs3DSEnable(data.is3dEnable)\n } else {\n setInitialLoader(false)\n setIs3DSEnable(data.is3dEnable)\n }\n if (!data.result) {\n setError(data.error || data?.message || \"Failed to get client secret\");\n }\n } catch (err: any) {\n console.log(err.response, \"err.response\");\n setError(err.message);\n }\n }, [amount]);\n\n // useEffect(() => {\n // if (show) {\n // if (!clientSecret) {\n // fetchClientSecret();\n // }\n // }\n // }, [fetchClientSecret, is3DSEnable, show, clientSecret]);\n\n // if (errorMessage) return <div>Error: {errorMessage}</div>;\n // if (!clientSecret) return <div>Loading payment...</div>;\n\n\n const onSuccess = () => {\n // alert(\"sucess\")\n // console.log(\"successsssssss\");\n\n }\n\n // console.log(clientSecret, \"clientSecret\");\n\n const handleSuccess = (token: string, intentId: string) => {\n // console.log(\"3DS Auth successful ✅\", token, intentId);\n showLoader()\n completeFractalFlow(token, intentId);\n setStripeResponse(null)\n };\n\n const handleError = (status: string) => {\n console.error(\"3DS Auth failed ❌\", status);\n setError(`3DS Authentication ${status}`);\n };\n\n\n // console.log(stripeResponse, \"stripeResponse\");\n\n\n useEffect(() => {\n if (setHandleCloseRef) {\n setHandleCloseRef(() => handleClose);\n }\n }, []);\n\n\n const handlePartialChange = (values: any) => {\n // console.log(values, \"values\");\n // if (activetab === 'ach') {\n // if ((Number(cashDiscount)?.toFixed(2) < values?.floatValue) || (values?.floatValue <= 0)) {\n // setPartialAmount(values?.value);\n // setPartialError(`Partial amount cannot exceed ${formatUSD(Number(cashDiscount)?.toFixed(2))}`);\n // } else {\n // setPartialAmount(values?.value);\n // setPartialError(\"\");\n // }\n // } else {\n if ((Number(remainingAmount || remAmount)?.toFixed(2) < values?.floatValue) || (values?.floatValue < 0)) {\n setPartialAmount(values?.value);\n setPartialError(`Partial amount cannot exceed ${formatUSD(Number(remainingAmount || remAmount)?.toFixed(2))}`);\n } else if (values?.floatValue == 0) {\n setPartialAmount(values?.value);\n setPartialError(\"Partial amount must be greater than 0\");\n } else {\n setPartialAmount(values?.value);\n setPartialError(\"\");\n }\n // }\n\n }\n\n useEffect(() => {\n if (typeof FractalTokenizer === 'undefined') return;\n\n const tokenizer = new FractalTokenizer({\n styles: {},\n });\n\n }, []);\n // console.log(remainingAmount, \"remainingAmount\", Number(remainingAmount));\n\n\n\n return (\n <>\n {/* initial loader screen */}\n {\n initialLoader && <Loader loading={initialLoader} />\n }\n {/* Error screen */}\n {error &&\n <div style={{ maxHeight: '606px', minHeight: '60vh', padding: '40px' }}>\n <ErrorCardMessage error={error} onClose={handleClose} />\n </div>\n }\n {!error &&\n <>\n {/* Loader Screen */}\n {(loading || loading2) && <Loader loading={loading || loading2 || loadingPrev || orderLoader} />}\n {/* widget screen */}\n <div className='frac-card-payment-page frac-form frac-new-form'>\n <div ref={threeDSContainerRef} style={{ width: \"100%\", height: \"100%\" }} />\n {\n stripeResponse?.challenge_url ? (\n <ThreeDSChallenge\n containerRef={threeDSContainerRef} // 👈 pass ref\n challengeUrl={stripeResponse.challenge_url}\n fractalToken={stripeResponse.fractalToken}\n stripeIntentId={stripeResponse.id}\n onSuccess={handleSuccess}\n onError={handleError}\n />\n ) : (\n <div className='parent-pay-container'>\n <span style={{ display: autoTrigger ? 'none' : 'block' }} className=\"request-payment-close-popup\" onClick={handleClose}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <g clipPath=\"url(#clip0_12425_52336)\">\n <path d=\"M9.46585 8.01168L15.6959 1.7814C16.1014 1.37615 16.1014 0.720912 15.6959 0.315659C15.2907 -0.0895946 14.6354 -0.0895946 14.2302 0.315659L7.99991 6.54593L1.76983 0.315659C1.36438 -0.0895946 0.709336 -0.0895946 0.304082 0.315659C-0.101361 0.720912 -0.101361 1.37615 0.304082 1.7814L6.53416 8.01168L0.304082 14.2419C-0.101361 14.6472 -0.101361 15.3024 0.304082 15.7077C0.506045 15.9098 0.771595 16.0114 1.03695 16.0114C1.30232 16.0114 1.56768 15.9098 1.76983 15.7077L7.99991 9.47742L14.2302 15.7077C14.4323 15.9098 14.6977 16.0114 14.9631 16.0114C15.2284 16.0114 15.4938 15.9098 15.6959 15.7077C16.1014 15.3024 16.1014 14.6472 15.6959 14.2419L9.46585 8.01168Z\" fill=\"#727272\" />\n </g>\n <defs>\n <clipPath id=\"clip0_12425_52336\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <div className='pay-main-logo-res'>\n {/* space for logo responsive */}\n </div>\n <div className=\"pay-container\">\n <div className=\"pay-header pay-conatiner-one\">\n <div className=\"pay-conatiner-one-first\">\n <div className=\"pay-logo-container\" >\n <div className='pay-main-logo'>\n {/* space for logo */}\n </div>\n <h1 className='pay-heading' >Pay</h1>\n {cardList?.length > 0 && activetab !== \"cardList\" &&\n <button className='res-charge-payment-back-btn ' onClick={() => setActive('cardList')}> <IoArrowBack /> Back</button>\n }\n </div>\n <div className='amt-pay-con'>\n\n <div className='pay-amount-conatiner' >\n <small className='pay-payment-amount' >Select payment type</small>\n\n <div className='frac-card-bank-radio-main' >\n <CardBankRadio label='Card' amount={Number(amount)?.toFixed(2)} value='card' onChange={handletabchange} activetab={activetab} />\n {\n !isPreAuth && isBankActive && !isPartial &&\n <CardBankRadio label='Bank' amount={Number(bankAmount)?.toFixed(2)} value='ach' onChange={handletabchange} activetab={activetab} />\n }\n </div>\n {/* <div className=\"frac-card-bank-radio-main\">\n <div className=\"frac-card-bank-radio frac-active\" role=\"radio\">\n <div className=\"frac-card-title-main\">\n <img\n className=\"frac-payment-type-logo\"\n alt=\"\"\n src=\"https://fractal-userdata-upload.s3.us-east-1.amazonaws.com/widget/card.svg\"\n />\n <div className=\"frac-card-label\">\n <div className=\"frac-card-label-text\">Card</div>\n <div className=\"frac-card-label-amount\">$3.39</div>\n </div>\n </div>\n <div>\n <input type=\"radio\" value=\"card\" checked name=\"paymenttype\" />\n </div>\n </div>\n\n <div className=\"frac-card-bank-radio\" role=\"radio\">\n <div className=\"frac-card-title-main\">\n <img\n className=\"frac-payment-type-logo\"\n alt=\"\"\n src={bankNew}\n />\n <div className=\"frac-card-label\">\n <div className=\"frac-card-label-text\">Bank</div>\n <div className=\"frac-card-label-amount\">$3.20</div>\n </div>\n </div>\n <div>\n <input type=\"radio\" value=\"ach\" name=\"paymenttype\" />\n </div>\n </div>\n </div> */}\n {\n pass_fee && activetab === 'card' && cashDiscount && (Number(amount) - Number(cashDiscount)) > 0 ? (\n <div className=\"frac-cash-discount-fee\">\n <small>{activetab === 'card' ? 'Cash Discount' : 'Cash Discount Savings'} </small>\n <p>{formatUSD((Number(amount) - Number(cashDiscount)).toFixed(2))}</p>\n </div>\n ) : null\n }\n\n {\n isPartial && (\n <div className=\"frac-partial-payment-input\">\n <label htmlFor=\"partialpayment\">Partial Payment</label>\n <NumericFormat\n prefix='$'\n className='form-control-frac'\n value={partialAmount}\n onValueChange={(values) => {\n handlePartialChange(values)\n }}\n thousandSeparator\n placeholder='Enter partial amount'\n allowNegative={false}\n allowLeadingZeros={false}\n decimalScale={2}\n fixedDecimalScale\n isAllowed={(values) => {\n const { floatValue = 0, value } = values;\n\n // allow empty\n if (value === '') return true;\n\n // allow typing like 0, 0., 0.0 (intermediate states)\n if (value === '0' || value.startsWith('0.')) return true;\n\n // block final zero\n if (floatValue === 0) return false;\n\n return floatValue > 0;\n }}\n />\n\n {partialError && <span className='error-span'>{partialError}</span>}\n </div>\n )\n }\n\n </div>\n </div>\n {/* <div className='amt-pay-con'>\n\n <div className='pay-amount-conatiner' >\n <small className='pay-payment-amount' >Payment Amount</small>\n <strong className='pay-amount'>{formatUSD(Number(amount)?.toFixed(2))}</strong> }\n { <strong className='pay-amount'>${Number(amount)?.toFixed(2)}</strong>}\n </div>\n {\n activetab != \"ach\" &&\n <div style={{ display: 'flex', gap: '8px', margin: '8px 0' }}>\n <img src={visa} alt=\"\" width={33} />\n <img src={mastercard} width={33} alt=\"\" />\n <img src={americanexp} alt=\"\" width={33} />\n <img src={discover} width={33} alt=\"\" />\n </div>\n }\n </div> */}\n </div>\n <div className='pay-conatiner-one-last'>\n <img src={secure} alt=\"\" />\n <img src={pov} alt=\"\" />\n Secure payments powered by Fractal\n </div>\n </div>\n <div className=\"pay-tab pay-conatiner-two\">\n <div className=\"col-md-12\">\n <div id='payment-form-div' >\n\n {\n is3DSEnable ? (\n clientSecret && <CheckoutWrapper onSuccess={onSuccess} clientSecret={clientSecret} amount={amount} showLoader={showLoader} hideLoader={hideLoader} callback={callback} session_token={session_token} handleClose={handleClose} setError={setError} isPreAuth={isPreAuth} />\n ) : (\n <>\n {/* active tab card form */}\n <div id=\"ach\" style={{ display: activetab === 'card' ? 'block' : 'none' }} className=\"tabcontent\">\n\n <div className=\"frac-heading-card-wrap\">\n <div className='frac-backarrow'>\n {cardList?.length > 0 && activeinCard === 'form' &&\n <button className='charge-payment-back-btn ' onClick={() => setActiveinCard('list')}> <IoArrowBack /></button>\n }\n </div>\n <h6 className='frac-card-payment-heading'>Card Payment</h6>\n </div>\n <div style={{ display: 'flex', gap: '8px', margin: '8px 0px 19px 0px' }}>\n <img src={visa} alt=\"\" width={33} />\n <img src={mastercard} width={33} alt=\"\" />\n <img src={americanexp} alt=\"\" width={33} />\n <img src={discover} width={33} alt=\"\" />\n </div>\n\n {\n activeinCard === 'list' && cardList?.length > 0 ? (\n <>\n <CardList headingClass='card-ach-heading-frac' listHeading='Card' ListItems={cardList} selectedCard={selectedCard} setSelectedCard={setSelectedCard} handleDeleteCard={handleDeleteCard} otherButtonLabel='Pay With Other Card' otherButtonAction={() => { setActiveinCard('form') }} />\n <div className=\"form-group-frac\" style={{ padding: '0' }} >\n <button className='pay-button' style={{ margin: '0px' }} type='submit' onClick={handlechargeCustomer}>{partialAmount ? formatUSD(Number(partialAmount)?.toFixed(2)) : formatUSD(Number(amount)?.toFixed(2))}</button>\n </div>\n </>\n ) : (\n\n paymentGateway == 32 ? (\n <form id='paymentForm' style={{ textAlign: 'start' }} onSubmit={submitFunc} onKeyDown={(e) => {\n if (e.key === \"Enter\" && loading) {\n e.preventDefault();\n e.stopPropagation();\n }\n }}>\n <div className='ach-scrl' style={{ minHeight: '398px', maxHeight: '398px', overflow: 'auto', marginRight: '5px' }}>\n <div className=\"form-group-frac\">\n <label htmlFor=\"cardHolderName\">NAME ON CARD </label>\n <input type=\"text\" className='form-control-frac' maxLength={100} placeholder=\"John Doe\" value={cardData?.cardName || \"\"} onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange('cardName', value);\n }\n }} />\n {cardError?.cardName && <span className='error-span'>{cardError?.cardName}</span>}\n </div>\n\n <div className=\"form-group-frac\">\n <label htmlFor=\"cardNumber\">CARD NUMBER</label>\n <div className=\"toggle-num-wrapper\">\n {show && paymentGateway === 32 && (\n <FractalFields\n fractalStyles={fractalStyles}\n tokenizerRef={tokenizerRef}\n isSky={true}\n />\n )}\n </div>\n </div>\n {/* <div className=\"form-group-frac\">\n <label htmlFor=\"OrderId\">Order ID / Description</label>\n <input type=\"text\" className='form-control-frac' maxLength={100} placeholder=\"OID123456\" disabled value={orderID ?? \"\"}\n style={{ background: '#F6F6F7', color: '#727272' }} />\n </div> */}\n <div className=\"form-group-frac\">\n <label htmlFor=\"zip\">ZIP</label>\n <input type=\"text\" className='form-control-frac' maxLength={100} placeholder=\"000000\" value={cardData?.zipCode ?? \"\"} onChange={(e) => handleCardChange('zipCode', e.target.value)} />\n {cardError?.zipCode && <span className='error-span'>{cardError?.zipCode}</span>}\n </div>\n {\n customerId &&\n <div className='form-group-frac'>\n <div className=\"frac-tooltip-mn\" style={{ display: 'flex', alignItems: 'center', gap: '10px', paddingTop: '10px' }}>\n <input\n type=\"checkbox\"\n id=\"save_card\"\n className=\"toggle-checkbox\"\n checked={saveCardInfo}\n onChange={(e) => setSaveCardInfo(e.target.checked)}\n />\n <label htmlFor=\"save_card\" className=\"toggle-label\"></label>\n <label htmlFor='save_card'>Save card for future payments </label>\n <div className=\"frac-tooltip-wrapper\">\n <div className=\"frac-tooltip-icon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n >\n <circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"#E0DFE2\"></circle>\n <path\n d=\"M9.03406 12.0979V12.0072C9.04055 11.4153 9.10057 10.9443 9.21411 10.5943C9.3309 10.2442 9.49635 9.96102 9.71046 9.74463C9.92457 9.52824 10.1825 9.33095 10.4842 9.15274C10.6788 9.03182 10.854 8.89658 11.0097 8.74702C11.1655 8.59745 11.2887 8.42562 11.3796 8.2315C11.4704 8.03739 11.5158 7.82259 11.5158 7.58711C11.5158 7.3039 11.4477 7.05887 11.3114 6.85203C11.1752 6.64519 10.9935 6.48608 10.7664 6.3747C10.5426 6.26014 10.2928 6.20286 10.017 6.20286C9.76723 6.20286 9.52879 6.25378 9.3017 6.35561C9.07461 6.45744 8.88646 6.61655 8.73723 6.83294C8.588 7.04614 8.50203 7.3214 8.47932 7.65871H7C7.02271 7.08592 7.17032 6.60223 7.44282 6.20764C7.71533 5.80986 8.07543 5.50915 8.52311 5.30549C8.97405 5.10183 9.47202 5 10.017 5C10.6139 5 11.1363 5.10979 11.5839 5.32936C12.0316 5.54574 12.3788 5.84964 12.6253 6.24105C12.8751 6.62928 13 7.08274 13 7.60143C13 7.95784 12.9432 8.27924 12.8297 8.56563C12.7161 8.84885 12.5539 9.10183 12.3431 9.32458C12.1354 9.54733 11.8856 9.74463 11.5937 9.91647C11.3179 10.0851 11.0941 10.2601 10.9221 10.4415C10.7534 10.6229 10.6302 10.8377 10.5523 11.0859C10.4745 11.3341 10.4323 11.6412 10.4258 12.0072V12.0979H9.03406ZM9.76886 15C9.50284 15 9.27413 14.9077 9.08273 14.7232C8.89132 14.5354 8.79562 14.3095 8.79562 14.0453C8.79562 13.7844 8.89132 13.5617 9.08273 13.3771C9.27413 13.1893 9.50284 13.0955 9.76886 13.0955C10.0316 13.0955 10.2587 13.1893 10.4501 13.3771C10.6448 13.5617 10.7421 13.7844 10.7421 14.0453C10.7421 14.2204 10.6967 14.3811 10.6058 14.5274C10.5182 14.6706 10.4015 14.7852 10.2555 14.8711C10.1095 14.957 9.94728 15 9.76886 15Z\"\n fill=\"#161616\"\n />\n </svg>\n </div>\n <div className=\"frac-tooltip-text\">\n <p>\n If checked, I agree to give the <b>{merchantName || 'merchant'}</b> permission to charge this credit card for agreed-upon purchases in the future.\n </p>\n </div>\n </div>\n\n </div>\n </div>\n }\n </div>\n <div className=\"form-group-frac\" style={{ marginTop: '20px', padding: '0' }}>\n <button type=\"submit\" style={{ margin: 0 }} className='pay-button'>{partialAmount ? formatUSD(Number(partialAmount)?.toFixed(2)) : formatUSD(Number(amount)?.toFixed(2))}</button>\n </div>\n </form>\n ) : (\n <form id='PaymentForm' style={{ textAlign: 'start' }} onSubmit={submitFunc} onKeyDown={(e) => {\n if (e.key === \"Enter\" && loading) {\n e.preventDefault();\n e.stopPropagation();\n }\n }}>\n {/* <div style={{minHeight: '482px'}}> */}\n <div className='ach-scrl' style={{ minHeight: '398px', maxHeight: '398px', overflow: 'auto', marginRight: '5px' }}>\n <div className=\"form-group-frac\">\n <label htmlFor=\"cardHolderName\">NAME ON CARD </label>\n <input type=\"text\" className='form-control-frac' maxLength={100} placeholder=\"John Doe\" value={cardData?.cardName || \"\"} onChange={(e: any) => {\n const value = e.target.value;\n if (/^[a-zA-Z\\s]*$/.test(value)) {\n handleCardChange('cardName', value);\n }\n }} />\n {cardError?.cardName && <span className='error-span'>{cardError?.cardName}</span>}\n </div>\n\n <div className=\"form-group-frac\">\n <label htmlFor=\"cardNumber\">CARD NUMBER</label>\n <div className='toggle-num-wrapper'>\n <input className='form-control-frac card-number-new' type='text' maxLength={19} inputMode=\"numeric\" placeholder='0000 0000 0000 0000' value={cardData?.cardNumber || \"\"} onChange={(e) => handleCardNumberChange(e)}\n data-token=\"card_number\"\n />\n\n <div className='card-crdi card-expiry-new'>\n <div className=\"exp-date-year-container\">\n <div className=\"exp-date form-group-frac\">\n <input data-token=\"exp_month\" className=\"form-control-frac required card-cvv-in\" type=\"text\"\n style={{ maxHeight: '36px' }}\n placeholder=\"MM\" maxLength={2} value={cardData?.expiryMonth || \"\"}\n onChange={(e) => handleCardChange('expiryMonth', e.target.value)} />\n </div>\n <div className=\"exp-year form-group-frac\">\n <input data-token=\"exp_year\" className=\"form-control-frac required card-cvv-in\" type=\"text\"\n style={{ maxHeight: '36px' }}\n placeholder=\"YYYY\" maxLength={4} value={cardData?.expiryYear || \"\"} onChange={(e) => handleCardChange('expiryYear', e.target.value)} />\n </div>\n <div className=\"security-digit form-group-frac\">\n <input data-token=\"cvv\" className=\"form-control-frac card-cvv-in required\" type=\"text\"\n style={{ maxHeight: '36px' }}\n maxLength={4} placeholder=\"CVC\" value={cardData?.cvv || \"\"} onChange={(e) => handleCardChange('cvv', e.target.value)}\n />\n </div>\n </div>\n </div>\n {cardError?.cardNumber &&\n <span className='error-span'>{cardError?.cardNumber}</span>\n }\n <p style={{ margin: '0' }}>\n {cardError?.expiryMonth || cardError?.expiryYear ?\n <span className='error-span' style={{ paddingRight: '4px' }}>{cardError?.expiryMonth}</span>\n : \"\"\n }\n {cardError?.cvv &&\n <span className='error-span' >{cardError?.cvv}</span>\n\n }\n </p>\n\n </div>\n </div>\n {/* <div className=\"form-group-frac\">\n <label htmlFor=\"OrderId\">Order ID / Description</label>\n <input type=\"text\" className='form-control-frac' maxLength={100} placeholder=\"OID123456\" disabled value={orderID ?? \"\"}\n style={{ background: '#F6F6F7', color: '#727272' }} />\n </div> */}\n <div className=\"form-group-frac\">\n <label htmlFor=\"zip\">ZIP</label>\n <input type=\"text\" className='form-control-frac' maxLength={100} placeholder=\"000000\" value={cardData?.zipCode ?? \"\"} onChange={(e) => handleCardChange('zipCode', e.target.value)} />\n {cardError?.zipCode && <span className='error-span'>{cardError?.zipCode}</span>}\n </div>\n {\n customerId &&\n <div className='form-group-frac'>\n <div className=\"frac-tooltip-mn\" style={{ display: 'flex', alignItems: 'center', gap: '10px', paddingTop: '10px' }}>\n <input\n type=\"checkbox\"\n id=\"save_card\"\n className=\"toggle-checkbox\"\n checked={saveCardInfo}\n onChange={(e) => setSaveCardInfo(e.target.checked)}\n />\n <label htmlFor=\"save_card\" className=\"toggle-label\"></label>\n <label htmlFor='save_card'>Save card for future payments </label>\n <div className=\"frac-tooltip-wrapper\">\n <div className=\"frac-tooltip-icon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n >\n <circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"#E0DFE2\"></circle>\n <path\n d=\"M9.03406 12.0979V12.0072C9.04055 11.4153 9.10057 10.9443 9.21411 10.5943C9.3309 10.2442 9.49635 9.96102 9.71046 9.74463C9.92457 9.52824 10.1825 9.33095 10.4842 9.15274C10.6788 9.03182 10.854 8.89658 11.0097 8.74702C11.1655 8.59745 11.2887 8.42562 11.3796 8.2315C11.4704 8.03739 11.5158 7.82259 11.5158 7.58711C11.5158 7.3039 11.4477 7.05887 11.3114 6.85203C11.1752 6.64519 10.9935 6.48608 10.7664 6.3747C10.5426 6.26014 10.2928 6.20286 10.017 6.20286C9.76723 6.20286 9.52879 6.25378 9.3017 6.35561C9.07461 6.45744 8.88646 6.61655 8.73723 6.83294C8.588 7.04614 8.50203 7.3214 8.47932 7.65871H7C7.02271 7.08592 7.17032 6.60223 7.44282 6.20764C7.71533 5.80986 8.07543 5.50915 8.52311 5.30549C8.97405 5.10183 9.47202 5 10.017 5C10.6139 5 11.1363 5.10979 11.5839 5.32936C12.0316 5.54574 12.3788 5.84964 12.6253 6.24105C12.8751 6.62928 13 7.08274 13 7.60143C13 7.95784 12.9432 8.27924 12.8297 8.56563C12.7161 8.84885 12.5539 9.10183 12.3431 9.32458C12.1354 9.54733 11.8856 9.74463 11.5937 9.91647C11.3179 10.0851 11.0941 10.2601 10.9221 10.4415C10.7534 10.6229 10.6302 10.8377 10.5523 11.0859C10.4745 11.3341 10.4323 11.6412 10.4258 12.0072V12.0979H9.03406ZM9.76886 15C9.50284 15 9.27413 14.9077 9.08273 14.7232C8.89132 14.5354 8.79562 14.3095 8.79562 14.0453C8.79562 13.7844 8.89132 13.5617 9.08273 13.3771C9.27413 13.1893 9.50284 13.0955 9.76886 13.0955C10.0316 13.0955 10.2587 13.1893 10.4501 13.3771C10.6448 13.5617 10.7421 13.7844 10.7421 14.0453C10.7421 14.2204 10.6967 14.3811 10.6058 14.5274C10.5182 14.6706 10.4015 14.7852 10.2555 14.8711C10.1095 14.957 9.94728 15 9.76886 15Z\"\n fill=\"#161616\"\n />\n </svg>\n </div>\n <div className=\"frac-tooltip-text\">\n <p>\n If checked, I agree to give the <b>{merchantName || 'merchant'}</b> permission to charge this credit card for agreed-upon purchases in the future.\n </p>\n </div>\n </div>\n\n </div>\n </div>\n }\n </div>\n <div className=\"form-group-frac\" style={{ marginTop: '20px', padding: '0' }}>\n <button type=\"submit\" style={{ margin: 0 }} className='pay-button'>{partialAmount ? formatUSD(Number(partialAmount)?.toFixed(2)) : formatUSD(Number(amount)?.toFixed(2))}</button>\n </div>\n </form>\n )\n )\n }\n\n </div>\n\n {/* active tab ach */}\n <div id=\"ach\" style={{ display: activetab === 'ach' ? 'block' : 'none' }} className=\"tabcontent\">\n <>\n <div className=\"frac-heading-card-wrap\">\n <div className='frac-backarrow'>\n {bankList?.length > 0 && activeinBank === 'form' &&\n <button className='charge-payment-back-btn ' onClick={() => setActiveinBank('list')}> <IoArrowBack /></button>\n }\n </div>\n <h6 className='frac-card-payment-heading'>Bank Payment</h6>\n </div>\n {/* {\n activetab != \"ach\" &&\n (<div style={{ display: 'flex', gap: '8px', margin: '8px 0px 19px 0px' }}>\n <img src={visa} alt=\"\" width={33} />\n <img src={mastercard} width={33} alt=\"\" />\n <img src={americanexp} alt=\"\" width={33} />\n <img src={discover} width={33} alt=\"\" />\n </div>)\n } */}\n\n {\n activeinBank === 'list' && bankList?.length > 0 ? (\n <>\n <CardList headingClass='card-ach-heading-frac' listHeading='Banks' ListItems={bankList} selectedCard={selectedCard} setSelectedCard={setSelectedCard} handleDeleteCard={handleDeleteCard} otherButtonLabel='Pay With Other Bank' otherButtonAction={() => { setActiveinBank('form') }} />\n <div className=\"form-group-frac\" style={{ padding: '0' }} >\n <button className='pay-button' style={{ margin: '0px' }} type='submit' onClick={handlechargeCustomer}>{formatUSD(Number(bankAmount)?.toFixed(2))}</button>\n </div>\n </>\n ) : (\n <form id='ACHPaymentForm' style={{ textAlign: 'start' }} onSubmit={submitFunc} autoComplete=\"off\" onKeyDown={(e) => {\n if (e.key === \"Enter\" && loading) {\n e.preventDefault();\n e.stopPropagation();\n }\n }} >\n <div className='ach-scrl' style={{\n minHeight: '444px',\n maxHeight: '444px',\n }}>\n\n <div className=\"form-group-frac mb-4\">\n <label htmlFor=\"nameonaccount\">Name on account</label>\n <input type=\"text\" id='nameonaccount' className='form-control-frac' maxLength={100} placeholder=\"John Doe\" name=\"name\" value={achData?.name ?? \"\"} onChange={handleChangeAch} />\n {achError?.name && <span className='error-span'>{achError?.name}</span>}\n </div>\n <div className=\"form-group-frac mb-4\">\n <label htmlFor=\"routingnumber\">Routing number</label>\n <input type=\"text\" id='routingnumber' className='form-control-frac' maxLength={9} placeholder=\"000000000\"\n name=\"routingNumber\" value={achData?.routingNumber ?? \"\"} onChange={handleChangeAch} />\n {achError?.routingNumber && <span className='error-span'>{achError?.routingNumber}</span>}\n </div>\n <div className=\"form-group-frac mb-4\">\n <label htmlFor=\"accountnumber\">Account number</label>\n <input type=\"text\" id='accountnumber' className='form-control-frac' maxLength={16} placeholder=\"0000000000\"\n name=\"accountNumber\" value={achData?.accountNumber ?? \"\"} onChange={handleChangeAch} />\n {achError?.accountNumber && <span className='error-span'>{achError?.accountNumber}</span>}\n </div>\n <div className=\"form-group-frac mb-4\">\n <label htmlFor=\"confirmaccountnumber\">Confirm account number</label>\n <input type=\"text\" id='confirmaccountnumber' className='form-control-frac' maxLength={16} placeholder=\"0000000000\"\n name=\"confirmAccountNumber\" value={achData?.confirmAccountNumber ?? \"\"} onChange={handleChangeAch} />\n {achError?.confirmAccountNumber && <span className='error-span'>{achError?.confirmAccountNumber}</span>}\n </div>\n <div className=\"form-group-frac mb-4\">\n <label htmlFor=\"bankname\">Bank name</label>\n <input type=\"text\" id='bankname' className='form-control-frac' maxLength={100} placeholder=\"My Bank\"\n name=\"bankName\" value={achData?.bankName ?? \"\"} onChange={handleChangeAch}\n />\n {achError?.bankName && <span className='error-span'>{achError?.bankName}</span>}\n </div>\n {(achData?.accountType === 'business saving' || achData?.accountType === 'business checking') && (\n <div className=\"form-group-frac mb-4\">\n <label htmlFor=\"companyName\">Company name</label>\n <input type=\"text\" id='companyName' className='form-control-frac' maxLength={100} placeholder=\"My Company\"\n name=\"companyName\" value={achData?.companyName ?? \"\"} onChange={handleChangeAch}\n />\n {achError?.companyName && <span className='error-span'>{achError?.companyName}</span>}\n </div>\n )}\n <div className=\"form-group-frac mb-4\">\n <label htmlFor=\"accounttype\">Select account type</label>\n <select name=\"accountType\" id=\"accounttype\" className='form-control-frac' value={achData?.accountType ?? \"\"} onChange={handleChangeAch} >\n <option value=\"\">Select account</option>\n {accountTypes.map((type) => (\n <option key={type.value} value={type.value}>\n {type.label}\n </option>\n ))}\n </select>\n </div>\n {\n customerId && (\n <div className=\"form-group-frac mb-4 save-ach-div\" style={{ paddingTop: '5px' }}>\n <input type=\"checkbox\" id='saveACH' className='' maxLength={100} placeholder=\"My Bank\" checked={saveACHinfo} onChange={(e) => setSaveACHinfo(e.target.checked)} />\n <label className='saveachlabel' htmlFor=\"saveACH\">Save ACH</label>\n </div>\n )\n }\n {saveACHinfo &&\n <div className=\"form-group-frac mb-4 saveachtext\">\n <p>\n If checked, I agree to give the <b>{merchantName || 'merchant'}</b> permission to charge this bank account for agreed-upon purchases in the future.\n </p>\n </div>\n }\n </div>\n <div className=\"form-group-frac \" >\n <button className='pay-button' style={{ margin: '20px 0 0' }} type='submit'>{formatUSD(Number(bankAmount)?.toFixed(2))}</button>\n </div>\n </form>\n )\n }\n </>\n </div>\n </>\n )\n }\n\n {/* {!isPreAuth &&\n <>\n \n <div className=\"tab\">\n <button className=\"tablinks cardicon-img\" onClick={(e) => { handletabchange('card') }} style={{ border: activetab === 'card' ? '1px solid' : '', display: 'flex', justifyContent: 'center', alignItems: 'center' }} ><img className='cardicon' src={cardicon} />Card</button>\n <button className=\"tablinks bankicon-img\" onClick={(e) => { handletabchange('ach') }} style={{ border: activetab === 'ach' ? '1px solid' : '', display: 'flex', justifyContent: 'center', alignItems: 'center' }} ><img className='bankicon' src={bankicon} />Bank</button>\n </div>\n </>\n } */}\n {/* {\n activetab !== \"cardList\" ?\n <>\n <div className=\"frac-heading-card-wrap\">\n <div className='frac-backarrow'>\n {cardList?.length > 0 &&\n <button className='charge-payment-back-btn ' onClick={() => setActive('cardList')}> <IoArrowBack /></button>\n }\n {!isPreAuth && (\n <div className=\"tab\">\n <button className=\"tablinks cardicon-img\" onClick={(e) => { handletabchange('card') }} style={{ border: activetab === 'card' ? '1px solid' : '', display: 'flex', justifyContent: 'center', alignItems: 'center' }} ><img className='cardicon' src={cardicon} />Card</button>\n <button className=\"tablinks bankicon-img\" onClick={(e) => { handletabchange('ach') }} style={{ border: activetab === 'ach' ? '1px solid' : '', display: 'flex', justifyContent: 'center', alignItems: 'center' }} ><img className='bankicon' src={bankicon} />Bank</button>\n </div>\n )}\n </div>\n <h6 className='frac-card-payment-heading'>Card Payment</h6>\n </div>\n {\n activetab != \"ach\" &&\n (<div style={{ display: 'flex', gap: '8px', margin: '8px 0px 19px 0px' }}>\n <img src={visa} alt=\"\" width={33} />\n <img src={mastercard} width={33} alt=\"\" />\n <img src={americanexp} alt=\"\" width={33} />\n <img src={discover} width={33} alt=\"\" />\n </div>)\n }\n </>\n :\n <div>\n <div className='charge-customer-name-frac' style={{ marginBottom: '16px !important' }}> Charge {paymentData?.customer_name}</div>\n <div className='card-ach-heading-frac' style={{ marginBottom: '10px !important' }}> {activeList === 'card' ? getHeading() : 'Readers'} </div>\n <div className='res-pay-con'>\n\n <div className='pay-amount-conatiner' style={{ margin: 0 }} >\n <small className='pay-payment-amount' >Payment Amount</small>\n <strong className='pay-amount'>{formatUSD(Number(amount)?.toFixed(2))}</strong>\n <strong className='pay-amount'>${Number(amount)?.toFixed(2)}</strong>\n </div>\n\n\n <div >\n <div >\n\n <img src={visa} alt=\"\" width={35} style={{ paddingRight: '5px' }} />\n <img src={mastercard} width={35} alt=\"\" />\n </div>\n <div>\n\n <img src={americanexp} alt=\"\" width={35} style={{ paddingRight: '5px' }} />\n <img src={discover} width={35} alt=\"\" />\n </div>\n </div>\n\n </div>\n </div>\n } */}\n\n\n {/* active tab home card list */}\n {/* <div id=\"ach\" style={{ display: activetab === 'cardList' ? 'block' : 'none' }} className=\"tabcontent\">\n\n\n <div className='card-lint-div-in'>\n <div className='card-list-div'>\n\n {\n\n cardList && cardList?.length > 0 &&\n cardList?.map((card: any, index) => (\n <div className='card-list-single-div' key={index}>\n <div className=\"card-number-radio\">\n <input disabled={paymentData?.paymentGateway != card?.payment_method_type && card?.card_type != \"Bank\"} type=\"radio\" className='cardRadio' name=\"selected_card\" id=\"\" checked={selectedCard === card}\n onChange={(e) => setSelectedCard(card)} />\n <label htmlFor=\"\" className='card-number-last-four'>**** {card?.cardlastfourdigit}</label>\n {\n card?.card_type != \"Bank\" && (<h6 className='card-expiry-date'>{card?.expmonth}/{card?.expyear}</h6>)\n }\n </div>\n <div className=\"card-number-radio\">\n <span className='visa-card'>\n <img src={getCardType(card?.card_type)} alt=\"\" />\n </span>\n\n <span className='visa-card' style={{ cursor: \"pointer\" }} onClick={() => handleDeleteCard(card?.id)}>\n <img src={trash} alt=\"\" />\n </span>\n </div>\n </div>\n ))\n\n }\n\n </div>\n <div className='pay-with-other-card' onClick={() => setActive('card')}>\n Pay With Other Card\n <img src={defaultcard} alt=\"\" />\n </div>\n\n </div>\n\n <div className=\"form-group-frac\" style={{ padding: '0' }} >\n <button className='pay-button' style={{ margin: '0px' }} type='submit' onClick={handlechargeCustomer}>{formatUSD(Number(amount)?.toFixed(2))}</button>\n </div>\n </div> */}\n\n\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n }\n </div>\n </>\n }\n </>\n )\n}\n\nexport default ModelContentSky","import { useEffect, useRef } from \"react\";\n\n// Updated version of ThreeDSChallenge.tsx\ninterface ThreeDSProps {\n challengeUrl: string;\n fractalToken: string;\n stripeIntentId: string;\n onSuccess: (token: string, intentId: string) => void;\n onError: (status: string) => void;\n containerRef: React.RefObject<HTMLDivElement>;\n}\n\nexport function ThreeDSChallenge({\n challengeUrl,\n fractalToken,\n stripeIntentId,\n onSuccess,\n onError,\n containerRef,\n}: ThreeDSProps) {\n const iframeRef = useRef<HTMLIFrameElement | null>(null);\n\n useEffect(() => {\n if (!challengeUrl || typeof window === \"undefined\") return;\n const container = containerRef.current;\n if (!container) return;\n\n // Clean up old iframe if needed\n if (iframeRef.current && container.contains(iframeRef.current)) {\n container.removeChild(iframeRef.current);\n }\n\n const iframe = document.createElement(\"iframe\");\n iframe.className = \"challengeUrlclass-frac\"\n iframe.src = challengeUrl;\n // iframe.width = \"100%\";\n // iframe.height = \"400px\";\n // iframe.style.border = \"none\";\n // iframe.style.borderRadius = \"8px\";\n iframeRef.current = iframe;\n\n container.appendChild(iframe);\n\n const handleMessage = (event: MessageEvent) => {\n if (event.data?.type === \"3ds-authentication-challenge-complete\") {\n container.innerHTML = \"\";\n if (event.data.status === \"succeeded\") {\n onSuccess(fractalToken, stripeIntentId);\n } else {\n onError(event.data.status);\n }\n }\n };\n\n window.addEventListener(\"message\", handleMessage);\n\n return () => {\n window.removeEventListener(\"message\", handleMessage);\n if (iframeRef.current && container.contains(iframeRef.current)) {\n container.removeChild(iframeRef.current);\n }\n };\n }, [challengeUrl, containerRef, fractalToken, stripeIntentId, onSuccess, onError]);\n\n return null;\n}\n","// CheckoutWrapper.tsx\n\"use client\"; // important if you’re using Next.js\n\nimport { Elements } from \"@stripe/react-stripe-js\";\n\ninterface CheckoutWrapperProps {\n clientSecret: string;\n onSuccess?: (paymentIntent: any) => void;\n showLoader: () => void;\n setError: (error: any) => void;\n session_token: string;\n callback: (callbackdata: any) => void;\n hideLoader: () => void;\n handleClose: () => void;\n amount: string;\n isPreAuth: boolean;\n}\n\nimport { loadStripe } from \"@stripe/stripe-js\";\nimport { CheckoutForm } from \"./CheckoutForm\";\nimport { threedsSecurePublicKey } from \"../../baseurl\";\n\nexport const stripePromise = loadStripe(\n threedsSecurePublicKey\n);\n\nexport default function CheckoutWrapper({ clientSecret, onSuccess, showLoader, setError, session_token, callback, hideLoader, handleClose, amount, isPreAuth }: CheckoutWrapperProps) {\n if (!clientSecret) return null;\n\n return (\n <Elements stripe={stripePromise} options={{ clientSecret }}>\n <CheckoutForm onSuccess={onSuccess} showLoader={showLoader} hideLoader={hideLoader} setError={setError} session_token={session_token} callback={callback} handleClose={handleClose} amount={amount} isPreAuth={isPreAuth} />\n </Elements>\n );\n}\n","import { formatUSD } from \"@/app/utils/Common\";\nimport { PaymentElement, useElements, useStripe } from \"@stripe/react-stripe-js\";\nimport axios from \"axios\";\nimport { useState } from \"react\";\nimport { masterBaseUrl } from \"../../baseurl\";\n\ninterface CheckoutFormProps {\n onSuccess?: (paymentIntent: any) => void;\n showLoader: () => void;\n setError: (error: any) => void;\n session_token: string;\n callback: (callbackdata: any) => void;\n hideLoader: () => void;\n handleClose: () => void;\n amount: string;\n isPreAuth: boolean;\n\n}\n\nexport const CheckoutForm: React.FC<CheckoutFormProps> = ({ onSuccess, showLoader, setError, session_token, callback, hideLoader, handleClose, amount, isPreAuth }) => {\n const stripe = useStripe();\n const elements = useElements();\n const [loading, setLoading] = useState(false);\n const [message, setMessage] = useState<string | null>(null);\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!stripe || !elements) {\n console.warn(\"stripe nopt loaded\");\n return;\n }\n\n console.log(\"Stripe:\", stripe);\n console.log(\"Elements:\", elements);\n console.log(\"PaymentElement:\", elements.getElement(PaymentElement));\n\n showLoader()\n setLoading(true);\n try {\n const { error, paymentIntent } = await stripe.confirmPayment({\n elements,\n confirmParams: {},\n redirect: \"if_required\", // no redirect, works in popup\n });\n\n setLoading(false);\n if (error) {\n console.log(error, \"paymentIntent error\");\n setError(error.message || \"Payment failed.\");\n } else if (paymentIntent?.status === \"succeeded\") {\n setMessage(\"✅ Payment successful!\");\n if (onSuccess) {\n console.log(paymentIntent, \"paymentIntent\");\n try {\n const chargeDetails = await axios.post(`${masterBaseUrl}api/v1/gateway/secure-charge/${session_token}`, {\n stripe_id: paymentIntent?.id\n })\n\n console.log(chargeDetails, \"chargeDetails\");\n\n\n if (chargeDetails?.data?.result) {\n\n let callbackdata = chargeDetails?.data?.data\n console.log(callbackdata, \"callbackdata\");\n callback({\n ...callbackdata,\n isPreAuth\n })\n handleClose()\n hideLoader()\n // onSuccess(paymentIntent);\n }\n console.log(chargeDetails?.data?.data, \"chargeDetails\");\n } catch (error: any) {\n console.log(error?.response, \"error\");\n setError(error?.response?.data?.message || \"Something went wrong\")\n hideLoader()\n }\n\n }\n // Optional: close popup or postMessage to parent\n setTimeout(() => window.close(), 1500);\n } else {\n setMessage(\"Processing payment...\");\n }\n\n } catch (error: any) {\n console.log(error?.response, \"error\");\n setError(error?.response?.data?.message || \"Something went wrong\")\n hideLoader()\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <PaymentElement />\n <button className='pay-button' disabled={loading || !stripe}>\n {loading ? \"Processing...\" : `${formatUSD(Number(amount)?.toFixed(2))}`}\n </button>\n {/* {message && <div style={{ marginTop: 10 }}>{message}</div>} */}\n </form>\n );\n};"],"mappings":"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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","names":["jsx","jsx","Fragment","jsx","jsxs","jsx","Fragment","jsx","jsxs","amount","surcharge","useState","useEffect","axios","PatternFormat","Fragment","jsx","jsxs","useState","axios","useEffect","amount","PatternFormat","useEffect","useRef","useState","jsx","axios","jsx","Fragment","jsx","jsxs","useEffect","useEffect","src","script","jsx","Fragment","jsx","jsxs","Fragment","jsx","jsxs","jsx","Fragment","jsx","jsxs","trash","Fragment","jsx","jsxs","pax","useEffect","useEffect","useEffect","Fragment","jsx","jsxs","useEffect","script","useEffect","useRef","useState","jsx","Fragment","jsx","jsxs","useState","mastercard","visa","americanexp","discover","defaultcard","trash","bank","secure","pov","pax","useRef","useEffect","name","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","axios","requestOptions","result","_o","_p","_q","_r","_s","_t","_u","_v","_w","paymentData","error","getCardType","useEffect","useRef","useState","axios","Swal","IoArrowBack","Fragment","jsx","jsxs","_a","_b","useState","useRef","useEffect","mastercard","visa","americanexp","discover","defaultcard","trash","bank","secure","pov","name","_c","_d","_e","_f","month","year","_g","_h","_i","_j","_k","validCard","validExpirationDate","validCVV","axios","requestOptions","paymentData","Swal","getCardType","error","IoArrowBack","useEffect","useRef","useState","Swal","axios","jsx","jsx","Fragment","jsx","jsxs","Fragment","jsx","jsxs","useState","useRef","Swal","_a","_b","name","month","year","paymentData","axios","useEffect","validCard","validExpirationDate","validCVV","_c","useEffect","useRef","useState","axios","jsx","useEffect","useRef","Fragment","jsx","jsxs","Fragment","jsx","jsxs","useState","useRef","_a","_b","name","axios","error","paymentGateway","useEffect","useEffect","useRef","useState","axios","Swal","IoArrowBack","Fragment","jsx","jsxs","useRef","useEffect","mastercard","visa","americanexp","discover","defaultcard","trash","bank","secure","pov","pax","useState","name","_a","_b","_c","_d","_e","_f","month","year","_g","_h","_i","_j","_k","_l","_m","validCard","validExpirationDate","validCVV","axios","requestOptions","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","paymentData","amount","error","Swal","getCardType","IoArrowBack","useEffect","useState","jsx","useEffect","useRef","useState","axios","Swal","useEffect","useRef","axios","useState","jsx","jsxs","useState","_a","axios","error","jsx","IoArrowBack","NumericFormat","Fragment","jsx","jsxs","useRef","useState","mastercard","visa","americanexp","discover","defaultcard","trash","bank","secure","pov","pax","amount","surcharge","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","axios","error","_s","month","year","paymentGateway","result","name","getCardType","Swal","useEffect","IoArrowBack","NumericFormat","axios","Fragment","jsx","jsxs","useState","useEffect","axios"]}
|