@payconductor/react 1.0.5 → 1.0.7
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.cjs.js +3 -3
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +74 -74
- package/dist/index.es.js.map +1 -1
- package/dist/payconductor/iframe/types.d.ts +1 -3
- package/dist/payconductor/three-ds/handler.d.ts +1 -2
- package/dist/payconductor/three-ds/types.d.ts +2 -2
- package/package.json +1 -1
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/payconductor/iframe/constants.ts","../src/payconductor/iframe/types.ts","../src/payconductor/constants.ts","../src/payconductor/utils.ts","../src/payconductor/internal.ts","../src/payconductor/payconductor.tsx","../src/payconductor/payconductor-element.tsx","../src/payconductor/payconductor-three-ds.tsx","../src/payconductor/hooks/use-payconductor.ts","../src/payconductor/hooks/use-element.ts","../src/payconductor/three-ds/types.ts","../src/payconductor/three-ds/providers/mercado-pago.ts","../src/payconductor/loader.ts","../src/payconductor/three-ds/providers/payconductor.ts","../src/payconductor/three-ds/providers/pagarme.ts","../src/payconductor/three-ds/providers/pagseguro.ts","../src/payconductor/three-ds/providers/index.ts","../src/payconductor/three-ds/api.ts","../src/payconductor/three-ds/handler.ts","../src/payconductor/hooks/use-three-ds.ts","../src/payconductor/tokenize/api.ts","../src/payconductor/tokenize/types.ts","../src/payconductor/tokenize/providers/mercado-pago.ts","../src/payconductor/tokenize/providers/index.ts","../src/payconductor/tokenize/tokenize.ts","../src/payconductor/hooks/use-tokenize.ts"],"sourcesContent":["// PayConductor Shared Constants\n// Served statically at iframe.payconductor.ai/constants.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport const APP_BASE_URL_PROD = \"https://app.payconductor.ai\";\nexport const API_BASE_URL_PROD = \"https://app.payconductor.ai/api/v1\";\nexport const IFRAME_BASE_URL_PROD = \"https://iframe.payconductor.ai/v1\";\nexport const IFRAME_BASE_URL_DEV = \"http://localhost:5175/v1\";\nexport const APP_BASE_URL_DEV = \"http://localhost:3000\";\nexport const DEFAULT_LOCALE = \"pt-BR\";\nexport const REQUEST_TIMEOUT_MS = 300000; // 5 minutes\nexport const IFRAME_DEFAULT_HEIGHT = \"600px\"","// PayConductor Shared Types\n// Served statically at iframe.payconductor.ai/types.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport enum PaymentMethod {\n Pix = \"Pix\",\n CreditCard = \"CreditCard\",\n DebitCard = \"DebitCard\",\n BankSlip = \"BankSlip\",\n Crypto = \"Crypto\",\n ApplePay = \"ApplePay\",\n NuPay = \"NuPay\",\n PicPay = \"PicPay\",\n AmazonPay = \"AmazonPay\",\n SepaDebit = \"SepaDebit\",\n GooglePay = \"GooglePay\",\n}\nexport enum PaymentMethodLayout {\n Grid = \"grid\",\n Vertical = \"vertical\",\n Horizontal = \"horizontal\",\n}\nexport enum PaymentStatus {\n Succeeded = \"succeeded\",\n Pending = \"pending\",\n Failed = \"failed\",\n}\nexport enum StatusDetail {\n ThreeDsAwaitingChallenge = \"ThreeDsAwaitingChallenge\",\n}\nexport enum ThreeDsAuthenticationStatus {\n Authenticated = \"Authenticated\",\n NotAuthenticated = \"NotAuthenticated\",\n NeedChallenge = \"NeedChallenge\",\n}\nexport enum ThreeDSResultStatus {\n Pending = \"Pending\",\n Authenticated = \"Authenticated\",\n Failed = \"Failed\",\n NotEnrolled = \"NotEnrolled\",\n}\nexport enum DocumentType {\n Cpf = \"Cpf\",\n Cnpj = \"Cnpj\",\n}\nexport enum IntegrationProvider {\n Asaas = \"Asaas\",\n Sandbox = \"Sandbox\",\n SandboxSplit = \"SandboxSplit\",\n MercadoPago = \"MercadoPago\",\n NuPay = \"NuPay\",\n PicPay = \"PicPay\",\n Woovi = \"Woovi\",\n EfiBank = \"EfiBank\",\n BrasPag = \"BrasPag\",\n PagarMe = \"PagarMe\",\n BancoDoBrasil = \"BancoDoBrasil\",\n PagSeguro = \"PagSeguro\",\n Ebanx = \"Ebanx\",\n OnlyUp = \"OnlyUp\",\n Barte = \"Barte\",\n BarteSplit = \"BarteSplit\",\n PagSmileA55 = \"PagSmileA55\",\n Avantti = \"Avantti\",\n MonsterGateway = \"MonsterGateway\",\n Shield = \"Shield\",\n Hopy = \"Hopy\",\n SAC = \"SAC\",\n}\nexport enum CardBrand {\n Visa = \"Visa\",\n Mastercard = \"Mastercard\",\n AmericanExpress = \"AmericanExpress\",\n DinersClub = \"DinersClub\",\n Discover = \"Discover\",\n JCB = \"JCB\",\n UnionPay = \"UnionPay\",\n Maestro = \"Maestro\",\n Mir = \"Mir\",\n Elo = \"Elo\",\n Hiper = \"Hiper\",\n Hipercard = \"Hipercard\",\n Verve = \"Verve\",\n Unknown = \"Unknown\",\n}\nexport enum OrganizationEnvironment {\n Production = \"Production\",\n Sandbox = \"Sandbox\",\n}\nexport enum CurrencyType {\n USD = \"USD\",\n EUR = \"EUR\",\n BRL = \"BRL\",\n ARS = \"ARS\",\n CAD = \"CAD\",\n COP = \"COP\",\n GBP = \"GBP\",\n JPY = \"JPY\",\n MXN = \"MXN\",\n MZN = \"MZN\",\n CNY = \"CNY\",\n SAR = \"SAR\",\n ETH = \"ETH\",\n BNB = \"BNB\",\n BTC = \"BTC\",\n USDT = \"USDT\",\n USDC = \"USDC\",\n DOGE = \"DOGE\",\n SOL = \"SOL\",\n}\nexport enum DeviceType {\n Android = \"android\",\n IOS = \"ios\",\n Web = \"web\",\n}\nexport enum InputStyleKey {\n Padding = \"padding\",\n Radius = \"radius\",\n Color = \"color\",\n Background = \"background\",\n Shadow = \"shadow\",\n}\nexport enum OutgoingMessage {\n Init = \"Init\",\n Config = \"Config\",\n Update = \"Update\",\n ConfirmPayment = \"ConfirmPayment\",\n Validate = \"Validate\",\n Reset = \"Reset\",\n}\nexport enum IncomingMessage {\n Ready = \"Ready\",\n Error = \"Error\",\n PaymentComplete = \"PaymentComplete\",\n PaymentFailed = \"PaymentFailed\",\n PaymentPending = \"PaymentPending\",\n ValidationError = \"ValidationError\",\n PaymentMethodSelected = \"PaymentMethodSelected\",\n Resize = \"Resize\",\n ThreeDSChallenge = \"ThreeDSChallenge\",\n ThreeDSComplete = \"ThreeDSComplete\",\n ThreeDSFailed = \"ThreeDSFailed\",\n}\nexport enum ErrorCode {\n InvalidClient = \"InvalidClient\",\n InvalidToken = \"InvalidToken\",\n NetworkError = \"NetworkError\",\n IframeNotReady = \"IframeNotReady\",\n PaymentDeclined = \"PaymentDeclined\",\n ValidationError = \"ValidationError\",\n Timeout = \"Timeout\",\n}\nexport type InputStyleConfig = {\n padding?: string;\n radius?: string;\n color?: string;\n background?: string;\n shadow?: string;\n};\nexport type PaymentMethodsConfig = {\n layout?: PaymentMethodLayout;\n gap?: string;\n inputStyle?: InputStyleConfig;\n};\nexport type PaymentMethodConfig = {\n method: PaymentMethod;\n discount?: number;\n showBrands?: boolean;\n installments?: {\n count: number;\n amount: number;\n }[];\n};\nexport type PaymentMethodsResponse = {\n methods: PaymentMethod[];\n config: PaymentMethodsConfig;\n};\nexport type PayConductorTheme = {\n primaryColor?: string;\n secondaryColor?: string;\n backgroundColor?: string;\n surfaceColor?: string;\n textColor?: string;\n textSecondaryColor?: string;\n errorColor?: string;\n successColor?: string;\n warningColor?: string;\n borderColor?: string;\n disabledColor?: string;\n fontFamily?: string;\n fontSize?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n fontWeight?: {\n normal?: number;\n medium?: number;\n bold?: number;\n };\n lineHeight?: string;\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n borderRadius?: string;\n borderWidth?: string;\n boxShadow?: string;\n boxShadowHover?: string;\n inputBackground?: string;\n inputBorderColor?: string;\n inputBorderRadius?: string;\n inputHeight?: string;\n inputPadding?: string;\n buttonHeight?: string;\n buttonPadding?: string;\n buttonBorderRadius?: string;\n transitionDuration?: string;\n transitionTimingFunction?: string;\n};\nexport const defaultTheme: PayConductorTheme = {\n primaryColor: \"#0066ff\",\n secondaryColor: \"#5a6b7c\",\n backgroundColor: \"transparent\",\n surfaceColor: \"#f8fafc\",\n textColor: \"#0f172a\",\n textSecondaryColor: \"#64748b\",\n errorColor: \"#ef4444\",\n successColor: \"#22c55e\",\n warningColor: \"#f59e0b\",\n borderColor: \"#e2e8f0\",\n disabledColor: \"#cbd5e1\",\n fontFamily: '\"Poppins\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\"\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n bold: 600\n },\n lineHeight: \"1.5\",\n spacing: {\n xs: \"4px\",\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\"\n },\n borderRadius: \"8px\",\n borderWidth: \"1px\",\n boxShadow: \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n boxShadowHover: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n inputBackground: \"#ffffff\",\n inputBorderColor: \"#cbd5e1\",\n inputBorderRadius: \"8px\",\n inputHeight: \"44px\",\n inputPadding: \"12px 16px\",\n buttonHeight: \"48px\",\n buttonPadding: \"16px 24px\",\n buttonBorderRadius: \"8px\",\n transitionDuration: \"0.2s\",\n transitionTimingFunction: \"ease\"\n};\nexport type PayConductorConfig = {\n publicKey: string;\n orderId?: string;\n theme?: PayConductorTheme;\n locale?: string;\n paymentMethods?: PaymentMethod[] | \"all\";\n defaultPaymentMethod?: PaymentMethod;\n paymentMethodsConfig?: PaymentMethodConfig[];\n methodsDirection?: \"vertical\" | \"horizontal\";\n showPaymentButtons?: boolean;\n height?: string;\n /** Required when NuPay is an available payment method */\n nuPayConfig?: NuPayData;\n};\nexport type BillingDetails = {\n name: string;\n email?: string;\n phone?: string;\n address?: {\n line1: string;\n line2?: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n };\n};\nexport type CardData = {\n number: string;\n expMonth: string;\n expYear: string;\n cvc: string;\n};\nexport type CreatePaymentMethodOptions = {\n billingDetails: BillingDetails;\n card?: CardData;\n};\nexport type PaymentMethodResult = {\n id: string;\n type: PaymentMethod;\n card?: {\n brand: string;\n last4: string;\n expMonth: number;\n expYear: number;\n };\n billingDetails?: BillingDetails;\n};\nexport type PaymentResult = {\n orderId: string;\n status: PaymentStatus;\n statusDetail?: StatusDetail | string;\n amount: number;\n currency: CurrencyType | string;\n message?: string;\n errorCode?: string;\n errorMessage?: string;\n threeDSecure?: {\n status: ThreeDsAuthenticationStatus | string;\n acquirer?: IntegrationProvider;\n environment?: OrganizationEnvironment;\n authToken?: string;\n threeDsUrl?: string;\n creq?: string;\n operationUrl?: string;\n publicKey?: string;\n dsTransactionId?: string;\n version?: string;\n };\n};\nexport interface MessagePayload {\n type: OutgoingMessage | IncomingMessage;\n data?: unknown;\n requestId?: string;\n error?: {\n code: string;\n message: string;\n field?: string;\n };\n}\nexport type ThreeDSecureBrowserData = {\n ip?: string;\n userAgent?: string;\n acceptHeader?: string;\n language?: string;\n colorDepth?: string;\n screenHeight?: string;\n screenWidth?: string;\n timeZoneOffset?: string;\n javaEnabled: boolean;\n javaScriptEnabled: boolean;\n};\nexport type ThreeDSecureInternalInput = {\n type: \"internal\";\n authToken?: string;\n dsTransactionId?: string;\n providerTransactionId?: string;\n browser?: ThreeDSecureBrowserData;\n};\nexport type ThreeDSecureExternalInput = {\n type: \"external\";\n status: string;\n eci: string;\n version: string;\n cavv: string;\n providerTransactionId: string;\n directoryTransactionId: string;\n browser?: ThreeDSecureBrowserData;\n};\nexport type ThreeDSecureInput = ThreeDSecureInternalInput | ThreeDSecureExternalInput;\nexport type CardTokenData = {\n token: string;\n firstSixCardNumber?: string;\n};\nexport type CardFullData = {\n number: string;\n holderName: string;\n cvv: string;\n expiration: {\n month: number;\n year: number;\n };\n};\nexport type CardPaymentData = CardTokenData | CardFullData;\nexport type PixPaymentData = {\n paymentMethod: PaymentMethod.Pix;\n expirationInSeconds?: number;\n};\nexport type CreditCardPaymentData = {\n paymentMethod: PaymentMethod.CreditCard;\n card: CardPaymentData;\n installments: number;\n softDescriptor?: string;\n};\nexport type BankSlipPaymentData = {\n paymentMethod: PaymentMethod.BankSlip;\n expirationInDays?: number;\n};\nexport type NuPayData = {\n cancelUrl: string;\n merchantName: string;\n returnUrl: string;\n storeName?: string;\n};\nexport type NuPayPaymentData = {\n paymentMethod: PaymentMethod.NuPay;\n nuPay: NuPayData;\n};\nexport type PicPayPaymentData = {\n paymentMethod: PaymentMethod.PicPay;\n};\nexport type PaymentConfirmData = PixPaymentData | CreditCardPaymentData | BankSlipPaymentData | NuPayPaymentData | PicPayPaymentData","import { IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD, IFRAME_DEFAULT_HEIGHT, REQUEST_TIMEOUT_MS } from \"./iframe/constants\";\nimport { IncomingMessage, OutgoingMessage } from \"./iframe/types\";\nconst isDev = typeof window !== \"undefined\" && (window.location.hostname === \"localhost\" || window.location.hostname === \"127.0.0.1\") && !window.location.search.includes(\"production\");\nexport const IFRAME_BASE_URL = isDev ? IFRAME_BASE_URL_DEV : IFRAME_BASE_URL_PROD;\nexport const ALLOWED_ORIGINS = [IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD];\nexport const IFRAME_DEFAULT_HEIGHT_VALUE = IFRAME_DEFAULT_HEIGHT;\nexport const REQUEST_TIMEOUT = REQUEST_TIMEOUT_MS;\nexport const POST_MESSAGES = {\n INIT: OutgoingMessage.Init,\n CONFIG: OutgoingMessage.Config,\n UPDATE: OutgoingMessage.Update,\n CONFIRM_PAYMENT: OutgoingMessage.ConfirmPayment,\n VALIDATE: OutgoingMessage.Validate,\n RESET: OutgoingMessage.Reset,\n READY: IncomingMessage.Ready,\n ERROR: IncomingMessage.Error,\n PAYMENT_COMPLETE: IncomingMessage.PaymentComplete,\n PAYMENT_FAILED: IncomingMessage.PaymentFailed,\n PAYMENT_PENDING: IncomingMessage.PaymentPending,\n VALIDATION_ERROR: IncomingMessage.ValidationError,\n PAYMENT_METHOD_SELECTED: IncomingMessage.PaymentMethodSelected,\n RESIZE: IncomingMessage.Resize\n} as const;\nexport const ERROR_CODES = {\n INVALID_CLIENT: \"InvalidClient\",\n INVALID_TOKEN: \"InvalidToken\",\n NETWORK_ERROR: \"NetworkError\",\n IFRAME_NOT_READY: \"IframeNotReady\",\n PAYMENT_DECLINED: \"PaymentDeclined\",\n VALIDATION_ERROR: \"ValidationError\",\n TIMEOUT: \"Timeout\"\n} as const","import { IFRAME_BASE_URL } from \"./constants\";\nexport const SKELETON_STYLE_ID = \"payconductor-skeleton-style\";\nexport const SKELETON_CSS = `\n\t@keyframes payconductor-shimmer {\n\t 0% { background-position: -200% 0; }\n\t 100% { background-position: 200% 0; }\n\t}\n\t.payconductor-skeleton {\n\t background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);\n\t background-size: 200% 100%;\n\t animation: payconductor-shimmer 1.5s infinite linear;\n\t border-radius: 4px;\n\t width: 100%;\n\t}\n`;\nimport type { PayConductorConfig } from \"./iframe/types\";\nexport function buildIframeUrl(config: PayConductorConfig): string {\n const params = new URLSearchParams({\n publicKey: config.publicKey\n });\n return `${IFRAME_BASE_URL}?${params.toString()}`;\n}\nexport function generateRequestId(): string {\n return crypto.randomUUID();\n}\nexport function isValidOrigin(origin: string, allowedOrigins: string[]): boolean {\n return allowedOrigins.some(allowed => {\n try {\n return new URL(allowed).origin === origin;\n } catch {\n return allowed === origin;\n }\n });\n}","import { ALLOWED_ORIGINS, POST_MESSAGES, REQUEST_TIMEOUT } from \"./constants\";\nimport { IncomingMessage, OutgoingMessage, PayConductorConfig, PaymentMethod, PaymentResult, PaymentStatus } from \"./iframe/types\";\nimport type { ConfirmPaymentOptions, PendingRequest } from \"./types\";\nimport { generateRequestId, isValidOrigin } from \"./utils\";\nexport function createPendingRequestsMap(): Map<string, PendingRequest> {\n return new Map<string, PendingRequest>();\n}\nexport function sendMessageToIframe(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, type: OutgoingMessage | IncomingMessage, data?: unknown): Promise<unknown> {\n return new Promise((resolve, reject) => {\n if (!iframe || !(\"contentWindow\" in iframe)) {\n reject(new Error(\"Iframe not defined\"));\n return;\n }\n if (!iframe?.contentWindow) {\n reject(new Error(\"Iframe not ready\"));\n return;\n }\n if (!pendingMap) {\n reject(new Error(\"Pending requests not initialized\"));\n return;\n }\n const requestId = generateRequestId();\n pendingMap.set(requestId, {\n resolve,\n reject\n });\n iframe.contentWindow.postMessage({\n type,\n data,\n requestId\n }, \"*\");\n setTimeout(() => {\n if (pendingMap?.has(requestId)) {\n pendingMap.delete(requestId);\n reject(new Error(\"Request timeout\"));\n }\n }, REQUEST_TIMEOUT);\n });\n}\nfunction sendConfirmPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, data: Record<string, unknown>): Promise<PaymentResult> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, data) as Promise<PaymentResult>;\n}\nexport async function confirmPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, options: ConfirmPaymentOptions): Promise<PaymentResult> {\n return await sendConfirmPayment(iframe, pendingMap, {\n orderId: options.orderId\n });\n}\nexport function validatePayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, data: unknown): Promise<boolean> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.VALIDATE, data) as Promise<boolean>;\n}\nexport function resetPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.RESET) as Promise<void>;\n}\nexport function sendConfig(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\" | \"defaultPaymentMethod\" | \"showPaymentButtons\" | \"nuPayConfig\">): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIG, config) as Promise<void>;\n}\nexport function sendInit(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: PayConductorConfig): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.INIT, config) as Promise<void>;\n}\ntype MessagePayload = {\n requestId?: string;\n type?: string;\n data?: PaymentResult | {\n paymentMethod: PaymentMethod;\n };\n error?: {\n message?: string;\n };\n};\nexport function handleMessageEvent(event: MessageEvent, pendingMap: Map<string, PendingRequest> | null, setError: (value: string | null) => void, onReady?: () => void, onError?: (error: Error) => void, onPaymentComplete?: (data: PaymentResult) => void, onPaymentFailed?: (data: PaymentResult) => void, onPaymentPending?: (data: PaymentResult) => void, onPaymentMethodSelected?: (method: PaymentMethod) => void, onThreeDSChallenge?: () => void, onThreeDSComplete?: () => void, onThreeDSFailed?: () => void) {\n const payload: MessagePayload = event.data;\n const {\n requestId,\n type,\n data,\n error\n } = payload;\n if (type === POST_MESSAGES.READY) {\n onReady?.();\n if (requestId && pendingMap?.has(requestId)) {\n const {\n resolve\n } = pendingMap.get(requestId)!;\n pendingMap.delete(requestId);\n resolve(data);\n }\n return;\n }\n if (!isValidOrigin(event.origin, ALLOWED_ORIGINS)) {\n return;\n }\n if (requestId && pendingMap && pendingMap.has(requestId)) {\n const {\n resolve,\n reject\n } = pendingMap.get(requestId)!;\n pendingMap.delete(requestId);\n if (error) {\n reject(new Error(String(error.message)));\n } else {\n resolve(data);\n }\n return;\n }\n if (type === POST_MESSAGES.ERROR) {\n setError(error?.message || \"Unknown error\");\n onError?.(new Error(String(error?.message)));\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_COMPLETE) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentComplete?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_FAILED) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentFailed?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_PENDING) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentPending?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_METHOD_SELECTED) {\n if (data && typeof data === \"object\" && \"paymentMethod\" in data) {\n onPaymentMethodSelected?.(data.paymentMethod);\n }\n return;\n }\n if (type === POST_MESSAGES.RESIZE) {\n return;\n }\n if (type === IncomingMessage.ThreeDSChallenge) {\n onThreeDSChallenge?.();\n return;\n }\n if (type === IncomingMessage.ThreeDSComplete) {\n onThreeDSComplete?.();\n return;\n }\n if (type === IncomingMessage.ThreeDSFailed) {\n onThreeDSFailed?.();\n return;\n }\n}","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\nexport interface PayConductorEmbedProps\n extends Omit<PayConductorConfig, \"orderId\"> {\n children?: any;\n showActionButtons?: boolean;\n debug?: boolean;\n onReady?: () => void;\n onError?: (error: Error) => void;\n onPaymentComplete?: (result: PaymentResult) => void;\n onPaymentFailed?: (result: PaymentResult) => void;\n onPaymentPending?: (result: PaymentResult) => void;\n onPaymentMethodSelected?: (method: PaymentMethod) => void;\n onThreeDSChallenge?: () => void;\n onThreeDSComplete?: () => void;\n onThreeDSFailed?: () => void;\n}\n\nimport type {\n PayConductorConfig,\n PaymentMethod,\n PaymentResult,\n} from \"./iframe/types\";\nimport {\n confirmPayment,\n createPendingRequestsMap,\n handleMessageEvent,\n resetPayment,\n sendConfig,\n validatePayment,\n} from \"./internal\";\nimport type {\n PayConductorApi,\n PayConductorFrame,\n PayConductorState,\n PendingRequest,\n} from \"./types\";\nimport { POST_MESSAGES } from \"./constants\";\nimport { buildIframeUrl } from \"./utils\";\n\nfunction PayConductor(props: PayConductorEmbedProps) {\n const [isLoaded, setIsLoaded] = useState<PayConductorState[\"isLoaded\"]>(\n () => false\n );\n\n const [error, setError] = useState<PayConductorState[\"error\"]>(() => null);\n\n const [iframeUrl, setIframeUrl] = useState<PayConductorState[\"iframeUrl\"]>(\n () => \"\"\n );\n\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState<\n PayConductorState[\"selectedPaymentMethod\"]\n >(() => null);\n\n useEffect(() => {\n const log = (...args: any[]) => {\n if (props.debug) console.log(\"[PayConductor]\", ...args);\n };\n const iframeUrl = buildIframeUrl({\n publicKey: props.publicKey,\n });\n setIframeUrl(iframeUrl);\n setIsLoaded(true);\n const pendingMap: Map<string, PendingRequest> = createPendingRequestsMap();\n let configSent = false;\n log(\"init\", props.publicKey);\n log(\"iframeUrl\", iframeUrl);\n const getIframe = (): HTMLIFrameElement | undefined => {\n const ref = window.PayConductor?.frame?.iframe;\n if (ref) {\n if (ref instanceof HTMLIFrameElement) return ref;\n if (typeof ref === \"object\" && ref !== null) {\n const obj = ref as Record<string, unknown>;\n if (\"current\" in obj && obj.current instanceof HTMLIFrameElement)\n return obj.current;\n if (\"value\" in obj && obj.value instanceof HTMLIFrameElement)\n return obj.value;\n }\n return ref as HTMLIFrameElement;\n }\n return (\n (document.querySelector(\n \".payconductor-element iframe\"\n ) as HTMLIFrameElement) ?? undefined\n );\n };\n const frame: PayConductorFrame = {\n get iframe(): HTMLIFrameElement | null {\n return (\n (document.querySelector(\n \".payconductor-element iframe\"\n ) as HTMLIFrameElement) ?? null\n );\n },\n set iframe(_: HTMLIFrameElement | Element | unknown | null) {},\n iframeUrl,\n error: null,\n };\n const config: PayConductorConfig = {\n publicKey: props.publicKey,\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n };\n const api: PayConductorApi = {\n confirmPayment: (options: { orderId: string }) => {\n log(\"→ CONFIRM_PAYMENT\", {\n orderId: options.orderId,\n });\n const iframe = getIframe();\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage(\n {\n type: POST_MESSAGES.CONFIG,\n data: {\n publicKey: props.publicKey,\n orderId: options.orderId,\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n nuPayConfig: props.nuPayConfig,\n },\n },\n \"*\"\n );\n }\n config.orderId = options.orderId;\n if (window.PayConductor?.config) {\n window.PayConductor.config.orderId = options.orderId;\n }\n return confirmPayment(iframe, pendingMap, options);\n },\n validate: (data: unknown) => {\n log(\"→ VALIDATE\", data);\n return validatePayment(getIframe(), pendingMap, data);\n },\n reset: () => {\n log(\"→ RESET\");\n return resetPayment(getIframe(), pendingMap);\n },\n getSelectedPaymentMethod: () => selectedPaymentMethod,\n };\n window.PayConductor = {\n frame,\n config,\n api,\n selectedPaymentMethod: selectedPaymentMethod,\n };\n log(\"registered\");\n window.dispatchEvent(\n new CustomEvent(\"payconductor:registered\", {\n detail: window.PayConductor,\n })\n );\n const sendConfigToIframe = async () => {\n if (!configSent) {\n const iframe = getIframe();\n if (!iframe) {\n log(\"→ CONFIG skipped: iframe not found\");\n return;\n }\n configSent = true;\n log(\"→ CONFIG\", {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n });\n sendConfig(iframe, pendingMap, {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n nuPayConfig: props.nuPayConfig,\n });\n }\n };\n const eventHandler = (event: MessageEvent) => {\n if (event.data?.type) {\n log(\"←\", event.data.type, event.data.data ?? \"\");\n }\n handleMessageEvent(\n event,\n pendingMap,\n (val) => {\n setError(val);\n frame.error = val;\n if (window.PayConductor?.frame) {\n window.PayConductor.frame.error = val;\n }\n },\n () => {\n props.onReady?.();\n sendConfigToIframe();\n },\n (err) => {\n props.onError?.(err);\n },\n (data) => {\n props.onPaymentComplete?.(data as PaymentResult);\n },\n (data) => {\n props.onPaymentFailed?.(data as PaymentResult);\n },\n (data) => {\n props.onPaymentPending?.(data as PaymentResult);\n },\n (method) => {\n setSelectedPaymentMethod(method);\n if (window.PayConductor) {\n window.PayConductor.selectedPaymentMethod = method;\n }\n props.onPaymentMethodSelected?.(method);\n },\n () => {\n props.onThreeDSChallenge?.();\n },\n () => {\n props.onThreeDSComplete?.();\n },\n () => {\n props.onThreeDSFailed?.();\n }\n );\n };\n window.addEventListener(\"message\", eventHandler);\n const trySendConfig = () => {\n const el = getIframe();\n if (!el) return false;\n try {\n const readyState =\n el.contentDocument?.readyState ??\n el.contentWindow?.document?.readyState;\n if (readyState === \"complete\") {\n sendConfigToIframe();\n return true;\n }\n } catch {}\n return false;\n };\n const pollForIframe = () => {\n if (trySendConfig()) return;\n const el = getIframe();\n if (el) {\n el.addEventListener(\"load\", () => sendConfigToIframe(), {\n once: true,\n });\n return;\n }\n setTimeout(pollForIframe, 50);\n };\n pollForIframe();\n }, []);\n\n return (\n <div\n className=\"payconductor\"\n id=\"payconductor\"\n style={{\n display: \"contents\",\n }}\n >\n {props.children}\n </div>\n );\n}\n\nexport default PayConductor;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useRef, useEffect } from \"react\";\n\nexport interface PayConductorCheckoutElementProps {\n height?: string;\n}\n\nimport { IFRAME_DEFAULT_HEIGHT_VALUE, POST_MESSAGES } from \"./constants\";\nimport { PayConductorContextValue } from \"./types\";\nimport { SKELETON_CSS, SKELETON_STYLE_ID } from \"./utils\";\n\nfunction PayConductorCheckoutElement(props: PayConductorCheckoutElementProps) {\n const iframeRef = useRef<any>(null);\n const [iframeUrl, setIframeUrl] = useState(() => \"\");\n\n const [isLoaded, setIsLoaded] = useState(() => false);\n\n const [iframeHeight, setIframeHeight] = useState(() => \"\");\n\n useEffect(() => {\n if (\n typeof document !== \"undefined\" &&\n !document.getElementById(SKELETON_STYLE_ID)\n ) {\n const styleEl = document.createElement(\"style\");\n styleEl.id = SKELETON_STYLE_ID;\n styleEl.textContent = SKELETON_CSS;\n document.head.appendChild(styleEl);\n }\n const init = (ctx: PayConductorContextValue) => {\n if (!ctx?.frame) return;\n setIframeUrl(ctx.frame.iframeUrl || \"\");\n setIsLoaded(true);\n console.log(\"init\", {\n PayConductor: window.PayConductor,\n });\n };\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n if (ctx) {\n init(ctx);\n } else {\n const handler = (e: Event) => {\n init((e as CustomEvent).detail as PayConductorContextValue);\n window.removeEventListener(\"payconductor:registered\", handler);\n };\n window.addEventListener(\"payconductor:registered\", handler);\n }\n let heightSent = false;\n const handleMessages = (event: MessageEvent) => {\n if (\n event.data?.type === POST_MESSAGES.RESIZE &&\n event.data?.data?.height\n ) {\n setIframeHeight(event.data.data.height + \"px\");\n }\n if (\n event.data?.type === POST_MESSAGES.READY &&\n props.height &&\n !heightSent\n ) {\n heightSent = true;\n const iframe = document.querySelector(\n \".payconductor-element iframe\"\n ) as HTMLIFrameElement;\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage(\n {\n type: POST_MESSAGES.CONFIG,\n data: {\n height: props.height,\n },\n requestId: \"element-height\",\n },\n \"*\"\n );\n }\n }\n };\n window.addEventListener(\"message\", handleMessages);\n return () => window.removeEventListener(\"message\", handleMessages);\n }, []);\n\n return (\n <div\n className=\"payconductor-element\"\n style={{\n width: \"100%\",\n }}\n >\n {!isLoaded ? (\n <div\n className=\"payconductor-skeleton\"\n style={{\n height: props.height || IFRAME_DEFAULT_HEIGHT_VALUE,\n }}\n />\n ) : null}\n {isLoaded && iframeUrl ? (\n <iframe\n allow=\"payment\"\n title=\"PayConductor\"\n ref={iframeRef}\n src={iframeUrl}\n style={{\n width: \"100%\",\n height: props.height || iframeHeight || IFRAME_DEFAULT_HEIGHT_VALUE,\n border: \"none\",\n }}\n />\n ) : null}\n </div>\n );\n}\n\nexport default PayConductorCheckoutElement;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\nexport interface PayConductorThreeDSElementProps {\n height?: string;\n}\n\nfunction PayConductorThreeDSElement(props: PayConductorThreeDSElementProps) {\n const [visible, setVisible] = useState(() => false);\n\n useEffect(() => {\n const handleShow = () => {\n setVisible(true);\n };\n const handleHide = () => {\n setVisible(false);\n };\n window.addEventListener(\"payconductor:3ds:show\", handleShow);\n window.addEventListener(\"payconductor:3ds:hide\", handleHide);\n if (typeof window !== \"undefined\") {\n window.PayConductor3DS = {\n container: () => document.getElementById(\"payconductor-3ds-container\"),\n show: handleShow,\n hide: handleHide,\n };\n window.dispatchEvent(new CustomEvent(\"payconductor:3ds:registered\"));\n }\n return () => {\n window.removeEventListener(\"payconductor:3ds:show\", handleShow);\n window.removeEventListener(\"payconductor:3ds:hide\", handleHide);\n window.PayConductor3DS = null;\n };\n }, []);\n\n return (\n <div\n className=\"payconductor-three-ds\"\n id=\"payconductor-3ds-container\"\n style={{\n width: \"100%\",\n display: visible ? \"block\" : \"none\",\n minHeight: visible ? props.height || \"600px\" : \"0\",\n }}\n />\n );\n}\n\nexport default PayConductorThreeDSElement;\n","import type { PayConductorConfig } from \"../iframe/types\";\nimport type { PayConductorFrame } from \"../types\";\ntype UsePayConductorReturn = PayConductorFrame & Partial<PayConductorConfig>;\nexport function usePayConductor(): UsePayConductorReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const config = ctx?.config ? {\n publicKey: ctx.config.publicKey,\n orderId: ctx.config.orderId,\n theme: ctx.config.theme,\n locale: ctx.config.locale\n } : {};\n const frame = ctx?.frame ? {\n iframe: ctx.frame.iframe,\n error: ctx.frame.error\n } : {\n iframe: null,\n error: null\n };\n return {\n ...config,\n ...frame\n };\n}","import { POST_MESSAGES } from \"../constants\";\nimport type { BillingDetails, PayConductorConfig, PaymentMethod, PaymentResult } from \"../iframe/types\";\nimport { createPendingRequestsMap, sendInit, sendMessageToIframe } from \"../internal\";\nimport { PayConductorContextValue } from \"../types\";\nexport type SubmitResult = {\n error?: {\n message: string;\n code?: string;\n type?: \"validation_error\" | \"payment_error\";\n };\n paymentMethod?: PaymentMethod;\n};\nexport type ConfirmPaymentOptions = {\n orderId: string;\n returnUrl?: string;\n};\nexport type UpdateOptions = {\n billingDetails?: Partial<BillingDetails>;\n address?: Partial<BillingDetails[\"address\"]>;\n};\nexport interface UsePayconductorElementReturn {\n init: (config: PayConductorConfig) => Promise<void>;\n confirmPayment: (options: ConfirmPaymentOptions) => Promise<PaymentResult>;\n validate: (data: unknown) => Promise<boolean>;\n reset: () => Promise<void>;\n getSelectedPaymentMethod: () => PaymentMethod | null;\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => void;\n updateOrderId: (orderId: string) => void;\n update: (options: UpdateOptions) => void;\n submit: () => Promise<SubmitResult>;\n}\nfunction getIframeFromContext(ctx: PayConductorContextValue | null): HTMLIFrameElement | null {\n if (ctx?.frame?.iframe) {\n const iframeRef = ctx.frame.iframe;\n if (iframeRef instanceof HTMLIFrameElement) return iframeRef;\n if (iframeRef && typeof iframeRef === \"object\") {\n if (\"current\" in iframeRef) {\n const el = (iframeRef as any).current;\n if (el instanceof HTMLIFrameElement) return el;\n }\n if (\"value\" in iframeRef) {\n const el = (iframeRef as any).value;\n if (el instanceof HTMLIFrameElement) return el;\n }\n }\n }\n return document.querySelector(\".payconductor-element iframe\") as HTMLIFrameElement ?? null;\n}\nexport function usePayconductorElement(): UsePayconductorElementReturn {\n const getCtx = () => typeof window !== \"undefined\" ? window.PayConductor : null;\n const sendToIframe = (type: string, data?: unknown) => {\n const ctx = getCtx();\n if (!ctx) return;\n const iframe = getIframeFromContext(ctx);\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage({\n type,\n data\n }, \"*\");\n }\n };\n return {\n init: async (config: PayConductorConfig): Promise<void> => {\n const iframe = getIframeFromContext(getCtx());\n const pendingMap = createPendingRequestsMap();\n return sendInit(iframe || undefined, pendingMap, config);\n },\n confirmPayment: async (options: ConfirmPaymentOptions): Promise<PaymentResult> => {\n if (!options.orderId) {\n throw new Error(\"Order ID is required\");\n }\n const ctx = getCtx();\n if (!ctx?.api) throw new Error(\"PayConductor not initialized\");\n return ctx.api.confirmPayment(options);\n },\n validate: (data: unknown) => {\n const ctx = getCtx();\n if (!ctx) return Promise.resolve(false);\n return ctx.api.validate(data);\n },\n reset: () => {\n const ctx = getCtx();\n if (!ctx) return Promise.resolve();\n return ctx.api.reset();\n },\n getSelectedPaymentMethod: (): PaymentMethod | null => {\n return getCtx()?.selectedPaymentMethod ?? null;\n },\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => {\n const currentConfig = getCtx()?.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: currentConfig?.orderId,\n theme: config.theme ?? currentConfig?.theme,\n locale: config.locale ?? currentConfig?.locale,\n paymentMethods: config.paymentMethods ?? currentConfig?.paymentMethods\n });\n },\n updateOrderId: (orderId: string) => {\n const currentConfig = getCtx()?.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: orderId,\n theme: currentConfig?.theme,\n locale: currentConfig?.locale,\n paymentMethods: currentConfig?.paymentMethods\n });\n },\n update: (options: UpdateOptions) => {\n sendToIframe(POST_MESSAGES.UPDATE, options);\n },\n submit: async (): Promise<SubmitResult> => {\n const iframe = getIframeFromContext(getCtx());\n const pendingMap = createPendingRequestsMap();\n try {\n await sendMessageToIframe(iframe || undefined, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {});\n return {\n paymentMethod: undefined\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Payment failed\";\n return {\n error: {\n message,\n code: \"payment_error\",\n type: \"payment_error\"\n }\n };\n }\n }\n };\n}","import { IntegrationProvider, OrganizationEnvironment } from \"../iframe/types\";\nexport type ThreeDSecureData = {\n orderId?: string;\n status?: string;\n statusDetail?: string;\n acquirer?: IntegrationProvider;\n environment?: OrganizationEnvironment;\n authToken?: string;\n threeDsUrl?: string;\n creq?: string;\n operationUrl?: string;\n publicKey?: string;\n dsTransactionId?: string;\n version?: string;\n card?: {\n number: string;\n expMonth: string;\n expYear: string;\n holderName: string;\n };\n customer?: {\n name: string;\n email: string;\n document?: string;\n phones?: Array<{\n countryCode: string;\n areaCode: string;\n number: string;\n type?: string;\n }>;\n };\n amount?: number;\n currency?: string;\n installments?: number;\n billingAddress?: {\n street: string;\n number: string;\n complement?: string;\n district?: string;\n state: string;\n country: string;\n city: string;\n zipCode: string;\n };\n};\nexport type ThreeDSecureOptions = {\n threeDSecure: ThreeDSecureData;\n onComplete?: () => void;\n onError?: (error: Error) => void;\n onTimeout?: () => void;\n timeoutMs?: number;\n};\nexport enum ThreeDSecureResultStatus {\n Success = \"Success\",\n Failed = \"Failed\",\n Timeout = \"Timeout\",\n}\nexport type ThreeDSecureResult = {\n status: ThreeDSecureResultStatus;\n error?: Error;\n authToken?: string;\n dsTransactionId?: string;\n};\nexport abstract class AbstractThreeDSProvider {\n private overlay: HTMLElement | null = null;\n private modalContent: HTMLElement | null = null;\n constructor(protected readonly data: ThreeDSecureData, protected readonly options: ThreeDSecureOptions) {}\n abstract authenticate(): Promise<ThreeDSecureResult>;\n abstract cleanup(): void;\n protected fail(message: string): ThreeDSecureResult {\n const error = new Error(message);\n this.options.onError?.(error);\n return {\n status: ThreeDSecureResultStatus.Failed,\n error\n };\n }\n\n //#region Modal\n\n protected showModal(): HTMLElement {\n this.injectStyles();\n this.overlay = document.createElement(\"div\");\n this.overlay.id = \"payconductor-3ds-overlay\";\n this.modalContent = document.createElement(\"div\");\n this.modalContent.id = \"payconductor-3ds-modal\";\n this.overlay.appendChild(this.modalContent);\n document.body.appendChild(this.overlay);\n return this.modalContent;\n }\n protected closeModal(): void {\n if (this.overlay) {\n this.overlay.remove();\n this.overlay = null;\n this.modalContent = null;\n }\n }\n protected resolveContainer(): HTMLElement {\n return this.modalContent ?? this.showModal();\n }\n private injectStyles(): void {\n if (document.getElementById(\"payconductor-3ds-styles\")) return;\n const style = document.createElement(\"style\");\n style.id = \"payconductor-3ds-styles\";\n style.textContent = `\n\t\t\t#payconductor-3ds-overlay {\n\t\t\t\tposition: fixed;\n\t\t\t\tinset: 0;\n\t\t\t\tz-index: 99999;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\tbackground: rgba(0, 0, 0, 0.6);\n\t\t\t}\n\t\t\t#payconductor-3ds-modal {\n\t\t\t\twidth: 500px;\n\t\t\t\tmax-width: 95vw;\n\t\t\t\tmin-height: 600px;\n\t\t\t\tborder-radius: 8px;\n\t\t\t\toverflow: hidden;\n\t\t\t\tbackground: #fff;\n\t\t\t}\n\t\t\t#payconductor-3ds-modal iframe {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 600px;\n\t\t\t\tborder: none;\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t\t@media only screen and (max-width: 600px) {\n\t\t\t\t#payconductor-3ds-modal {\n\t\t\t\t\twidth: 100vw;\n\t\t\t\t\tmax-width: 100vw;\n\t\t\t\t\tmin-height: 440px;\n\t\t\t\t\tborder-radius: 0;\n\t\t\t\t}\n\t\t\t\t#payconductor-3ds-modal iframe {\n\t\t\t\t\theight: 440px;\n\t\t\t\t}\n\t\t\t}\n\t\t`;\n document.head.appendChild(style);\n }\n\n //#endregion\n}","import { AbstractThreeDSProvider, ThreeDSecureResultStatus } from \"../types\";\nimport type { ThreeDSecureResult } from \"../types\";\nconst DEFAULT_TIMEOUT_MS = 5 * 60 * 1000;\nexport class MercadoPagoThreeDSProvider extends AbstractThreeDSProvider {\n private iframe: HTMLIFrameElement | null = null;\n private messageListener: ((event: MessageEvent) => void) | null = null;\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n async authenticate(): Promise<ThreeDSecureResult> {\n const {\n threeDsUrl,\n creq\n } = this.data;\n if (!threeDsUrl || !creq) {\n return this.fail(\"Missing threeDsUrl or creq\");\n }\n const container = this.resolveContainer();\n return new Promise<ThreeDSecureResult>(resolve => {\n this.iframe = document.createElement(\"iframe\");\n this.iframe.name = \"payconductor-3ds-challenge\";\n this.iframe.id = \"payconductor-3ds-challenge\";\n container.appendChild(this.iframe);\n this.messageListener = (event: MessageEvent) => {\n if (event.data?.status === \"COMPLETE\") {\n this.cleanup();\n this.options.onComplete?.();\n resolve({\n status: ThreeDSecureResultStatus.Success\n });\n }\n };\n window.addEventListener(\"message\", this.messageListener);\n this.timeoutId = setTimeout(() => {\n this.cleanup();\n this.options.onTimeout?.();\n resolve({\n status: ThreeDSecureResultStatus.Timeout\n });\n }, this.options.timeoutMs ?? DEFAULT_TIMEOUT_MS);\n const iframeDoc = this.iframe.contentWindow?.document;\n if (!iframeDoc) {\n this.cleanup();\n resolve(this.fail(\"Cannot access iframe document\"));\n return;\n }\n const form = iframeDoc.createElement(\"form\");\n form.name = \"threeDsChallengeForm\";\n form.setAttribute(\"target\", \"payconductor-3ds-challenge\");\n form.setAttribute(\"method\", \"post\");\n form.setAttribute(\"action\", threeDsUrl);\n const input = iframeDoc.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n input.setAttribute(\"name\", \"creq\");\n input.setAttribute(\"value\", creq);\n form.appendChild(input);\n this.iframe.appendChild(form);\n form.submit();\n });\n }\n cleanup(): void {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n if (this.messageListener) {\n window.removeEventListener(\"message\", this.messageListener);\n this.messageListener = null;\n }\n if (this.iframe) {\n this.iframe.remove();\n this.iframe = null;\n }\n this.closeModal();\n }\n}","const loaded = new Map<string, Promise<void>>();\nexport function loadScript(url: string): Promise<void> {\n const existing = loaded.get(url);\n if (existing) return existing;\n const promise = new Promise<void>((resolve, reject) => {\n if (document.querySelector(`script[src=\"${url}\"]`)) {\n resolve();\n return;\n }\n const script = document.createElement(\"script\");\n script.src = url;\n script.async = true;\n script.onload = () => resolve();\n script.onerror = () => {\n loaded.delete(url);\n reject(new Error(`Failed to load script: ${url}`));\n };\n (document.head || document.body).appendChild(script);\n });\n loaded.set(url, promise);\n return promise;\n}","import { loadScript } from \"../../loader\";\nimport { AbstractThreeDSProvider, ThreeDSecureResultStatus } from \"../types\";\nimport type { ThreeDSecureResult } from \"../types\";\nconst SDK_URL = \"https://static.payzen.lat/static/js/authenticate-client/V1.0/kr-authenticate.umd\";\nconst TIMEOUT_MS = 10 * 60 * 1000;\nexport class PayConductorThreeDSProvider extends AbstractThreeDSProvider {\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n async authenticate(): Promise<ThreeDSecureResult> {\n const {\n operationUrl,\n publicKey\n } = this.data;\n if (!operationUrl || !publicKey) {\n return this.fail(\"Missing operationUrl or publicKey\");\n }\n try {\n await loadScript(SDK_URL);\n } catch {\n return this.fail(\"Failed to load 3DS SDK\");\n }\n const KrAuthenticate = window.KrAuthenticate;\n if (!KrAuthenticate) return this.fail(\"KrAuthenticate not available\");\n return new Promise<ThreeDSecureResult>(resolve => {\n this.timeoutId = setTimeout(() => {\n this.cleanup();\n this.options.onTimeout?.();\n resolve({\n status: ThreeDSecureResultStatus.Timeout\n });\n }, this.options.timeoutMs ?? TIMEOUT_MS);\n const sdk = new KrAuthenticate(publicKey);\n sdk.authenticate(operationUrl, () => {\n this.cleanup();\n this.options.onComplete?.();\n resolve({\n status: ThreeDSecureResultStatus.Success\n });\n });\n });\n }\n cleanup(): void {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n}","import { loadScript } from \"../../loader\";\nimport { AbstractThreeDSProvider, ThreeDSecureResultStatus } from \"../types\";\nimport type { ThreeDSecureResult } from \"../types\";\nimport { OrganizationEnvironment } from \"../../iframe/types\";\nconst SDK_URLS: Record<OrganizationEnvironment, string> = {\n [OrganizationEnvironment.Production]: \"https://3ds-nx-js.stone.com.br/live/v2/3ds2.min\",\n [OrganizationEnvironment.Sandbox]: \"https://3ds-nx-js.stone.com.br/test/v2/3ds2.min\"\n};\nconst DEFAULT_TIMEOUT_MS = 5 * 60 * 1000;\nfunction detectWindowSize(): \"01\" | \"02\" | \"03\" | \"04\" | \"05\" {\n const w = window.innerWidth;\n if (w <= 480) return \"01\";\n if (w <= 768) return \"02\";\n if (w <= 1024) return \"03\";\n return \"04\";\n}\nexport class PagarMeThreeDSProvider extends AbstractThreeDSProvider {\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n private methodContainer: HTMLElement | null = null;\n async authenticate(): Promise<ThreeDSecureResult> {\n const {\n authToken,\n card\n } = this.data;\n if (!authToken) return this.fail(\"Missing authToken for PagarMe 3DS\");\n if (!card) return this.fail(\"Missing card data for PagarMe 3DS\");\n const env = this.data.environment ?? OrganizationEnvironment.Production;\n try {\n await loadScript(SDK_URLS[env]);\n } catch {\n return this.fail(\"Failed to load Stone 3DS SDK\");\n }\n const tds = window.TDS;\n if (!tds) return this.fail(\"Stone TDS SDK not available\");\n const container = this.resolveContainer();\n this.methodContainer = document.createElement(\"div\");\n this.methodContainer.style.display = \"none\";\n document.body.appendChild(this.methodContainer);\n return new Promise<ThreeDSecureResult>(resolve => {\n this.timeoutId = setTimeout(() => {\n this.cleanup();\n this.options.onTimeout?.();\n resolve({\n status: ThreeDSecureResultStatus.Timeout\n });\n }, this.options.timeoutMs ?? DEFAULT_TIMEOUT_MS);\n tds.init({\n token: authToken,\n tds_method_container_element: this.methodContainer as HTMLElement,\n challenge_container_element: container,\n use_default_challenge_iframe_style: true,\n challenge_window_size: detectWindowSize()\n }, this.buildOrderData()).then(responses => {\n this.cleanup();\n if (!responses?.length) {\n resolve(this.fail(\"PagarMe 3DS returned no response\"));\n return;\n }\n const result = responses[0];\n if (result.challenge_canceled) {\n resolve(this.fail(\"3DS challenge canceled by user\"));\n return;\n }\n if (result.trans_status === \"Y\" || result.trans_status === \"A\") {\n this.options.onComplete?.();\n resolve({\n status: ThreeDSecureResultStatus.Success,\n dsTransactionId: result.tds_server_trans_id\n });\n } else {\n resolve(this.fail(`3DS failed with status: ${result.trans_status}`));\n }\n }).catch((err: unknown) => {\n this.cleanup();\n resolve(this.fail(err instanceof Error ? err.message : \"PagarMe 3DS failed\"));\n });\n });\n }\n cleanup(): void {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n if (this.methodContainer) {\n this.methodContainer.remove();\n this.methodContainer = null;\n }\n this.closeModal();\n }\n private buildOrderData(): Record<string, unknown> {\n const {\n card,\n customer,\n amount,\n billingAddress\n } = this.data;\n return {\n payments: [{\n payment_method: \"credit_card\",\n credit_card: {\n card: {\n number: card?.number,\n holder_name: card?.holderName,\n exp_month: Number(card?.expMonth),\n exp_year: Number(card?.expYear),\n billing_address: billingAddress ? {\n country: billingAddress.country,\n state: billingAddress.state,\n city: billingAddress.city,\n zip_code: billingAddress.zipCode,\n line_1: `${billingAddress.number}, ${billingAddress.street}${billingAddress.district ? `, ${billingAddress.district}` : \"\"}`,\n line_2: billingAddress.complement ?? \"\"\n } : undefined\n }\n },\n amount: amount\n }],\n ...(customer ? {\n customer: {\n name: customer.name,\n email: customer.email,\n ...(customer.document ? {\n document: customer.document\n } : {}),\n ...(customer.phones?.length ? {\n phones: Object.fromEntries(customer.phones.map(p => [p.type === \"HOME\" ? \"home_phone\" : \"mobile_phone\", {\n country_code: p.countryCode,\n area_code: p.areaCode,\n number: p.number\n }]))\n } : {})\n }\n } : {})\n };\n }\n}","import { loadScript } from \"../../loader\";\nimport { AbstractThreeDSProvider, ThreeDSecureResultStatus } from \"../types\";\nimport type { ThreeDSecureResult } from \"../types\";\nimport { OrganizationEnvironment } from \"../../iframe/types\";\nconst SDK_URL = \"https://assets.pagseguro.com.br/checkout-sdk-js/rc/dist/browser/pagseguro.min\";\nexport class PagSeguroThreeDSProvider extends AbstractThreeDSProvider {\n async authenticate(): Promise<ThreeDSecureResult> {\n const {\n authToken,\n card,\n customer,\n amount,\n currency,\n billingAddress\n } = this.data;\n if (!authToken) return this.fail(\"Missing authToken (session) for PagSeguro 3DS\");\n if (!card) return this.fail(\"Missing card data for PagSeguro 3DS\");\n if (!customer) return this.fail(\"Missing customer data for PagSeguro 3DS\");\n if (!amount) return this.fail(\"Missing amount for PagSeguro 3DS\");\n if (!billingAddress) return this.fail(\"Missing billingAddress for PagSeguro 3DS\");\n const env = this.data.environment === OrganizationEnvironment.Sandbox ? \"SANDBOX\" : \"PROD\";\n try {\n await loadScript(SDK_URL);\n } catch {\n return this.fail(\"Failed to load PagSeguro SDK\");\n }\n const sdk = window.PagSeguro;\n if (!sdk) return this.fail(\"PagSeguro SDK not available\");\n sdk.setUp({\n session: authToken,\n env\n });\n const phones = customer.phones?.map(p => ({\n country: p.countryCode,\n area: p.areaCode,\n number: p.number,\n type: p.type ?? \"MOBILE\"\n })) ?? [{\n country: \"55\",\n area: \"11\",\n number: \"999999999\",\n type: \"MOBILE\"\n }];\n const hasMobile = phones.some(p => p.type === \"MOBILE\");\n if (!hasMobile) {\n phones[0].type = \"MOBILE\";\n }\n try {\n const result = await sdk.authenticate3DS({\n data: {\n customer: {\n name: customer.name,\n email: customer.email,\n phones\n },\n paymentMethod: {\n type: this.data.installments === 0 ? \"DEBIT_CARD\" : \"CREDIT_CARD\",\n installments: this.data.installments ?? 1,\n card: {\n number: card.number,\n expMonth: card.expMonth,\n expYear: card.expYear,\n holder: {\n name: card.holderName\n }\n }\n },\n amount: {\n value: amount,\n currency: currency ?? \"BRL\"\n },\n billingAddress: {\n street: billingAddress.street,\n number: billingAddress.number,\n complement: billingAddress.complement,\n regionCode: billingAddress.state,\n country: billingAddress.country.length === 2 ? this.toAlpha3(billingAddress.country) : billingAddress.country,\n city: billingAddress.city,\n postalCode: billingAddress.zipCode.replace(/\\D/g, \"\")\n },\n dataOnly: false\n }\n });\n if (result.status === \"AUTH_FLOW_COMPLETED\" || result.status === \"AUTH_NOT_SUPPORTED\") {\n this.options.onComplete?.();\n return {\n status: ThreeDSecureResultStatus.Success,\n dsTransactionId: result.id\n };\n }\n if (result.status === \"CHANGE_PAYMENT_METHOD\") {\n return this.fail(\"PagSeguro requires a different payment method\");\n }\n return {\n status: ThreeDSecureResultStatus.Success,\n dsTransactionId: result.id\n };\n } catch (err: unknown) {\n return this.fail(err instanceof Error ? err.message : \"PagSeguro 3DS failed\");\n }\n }\n cleanup(): void {}\n private toAlpha3(code: string): string {\n const map: Record<string, string> = {\n BR: \"BRA\",\n US: \"USA\",\n AR: \"ARG\",\n CL: \"CHL\",\n CO: \"COL\",\n MX: \"MEX\",\n PE: \"PER\",\n UY: \"URY\"\n };\n return map[code.toUpperCase()] ?? code;\n }\n}","import type { AbstractThreeDSProvider, ThreeDSecureData, ThreeDSecureOptions } from \"../types\";\nimport { MercadoPagoThreeDSProvider } from \"./mercado-pago\";\nimport { PayConductorThreeDSProvider } from \"./payconductor\";\nimport { PagarMeThreeDSProvider } from \"./pagarme\";\nimport { PagSeguroThreeDSProvider } from \"./pagseguro\";\nimport { IntegrationProvider } from \"../../iframe/types\";\ntype ThreeDSProviderConstructor = new (data: ThreeDSecureData, options: ThreeDSecureOptions) => AbstractThreeDSProvider;\nexport const threeDSProviders: Partial<Record<IntegrationProvider | \"PayConductor\", ThreeDSProviderConstructor>> = {\n [IntegrationProvider.MercadoPago]: MercadoPagoThreeDSProvider,\n PayConductor: PayConductorThreeDSProvider,\n [IntegrationProvider.PagarMe]: PagarMeThreeDSProvider,\n [IntegrationProvider.PagSeguro]: PagSeguroThreeDSProvider\n}","export class PayConductorThreeDSApiError extends Error {\n constructor(message: string, public readonly title?: unknown) {\n super(message);\n this.name = \"PayConductorThreeDSApiError\";\n }\n}\nexport class PayConductorThreeDSApi {\n constructor(private readonly publicKey: string) {}\n async completeManualChallenge(orderId: string, providerTransactionId: string): Promise<void> {\n const res = await fetch(`${this.baseUrl}/three-ds/complete/${orderId}`, {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify({\n providerTransactionId\n })\n });\n if (!res.ok) await this.parseResponseError(\"Failed to complete native 3DS challenge\", res);\n }\n private async parseResponseError(errorTitle: string, res: Response): Promise<never> {\n let errorMessage = \"\";\n try {\n const errorData = await res.json();\n if (errorData?.message) {\n errorMessage = errorData.message;\n } else if (errorData?.error?.message) {\n errorMessage = errorData.error;\n } else if (errorData?.error?.value?.message) {\n errorMessage = errorData.error.value.message;\n } else if (errorData?.value?.message) {\n errorMessage = errorData.value.message;\n } else {\n errorMessage = JSON.stringify(errorData);\n }\n } catch {\n // Response wasn't JSON\n }\n throw new PayConductorThreeDSApiError(errorMessage, errorTitle);\n }\n private get baseUrl() {\n if (typeof window !== \"undefined\" && window.location.href.includes(\"localhost\")) {\n return \"http://localhost:3000/api/v1/sdk\";\n }\n return \"https://payconductor.ai/api/v1/sdk\";\n }\n private get headers() {\n return {\n Authorization: `Basic ${btoa(`${this.publicKey}:x`)}`,\n \"Content-Type\": \"application/json\"\n };\n }\n}","import type { ThreeDSecureData, ThreeDSecureOptions, ThreeDSecureResult, AbstractThreeDSProvider } from \"./types\";\nimport { ThreeDSecureResultStatus } from \"./types\";\nimport { threeDSProviders } from \"./providers\";\nimport { PayConductorThreeDSApi } from \"./api\";\nimport { IntegrationProvider } from \"../iframe/types\";\n\n// ? Acquirers that require a server-side notification after a successful 3DS native challenge\nconst MANUAL_AUTH_ACQUIRERS: IntegrationProvider[] = [IntegrationProvider.PagSeguro];\nexport class PayConductor3DSSDK {\n private readonly data: ThreeDSecureData;\n private provider: AbstractThreeDSProvider | null = null;\n constructor(threeDSecure: ThreeDSecureData) {\n this.data = threeDSecure;\n }\n get needsChallenge() {\n return this.data.status === \"NeedChallenge\" || this.data.statusDetail === \"ThreeDsAwaitingChallenge\";\n }\n get acquirer() {\n return this.data.acquirer;\n }\n async authenticate(options?: Omit<ThreeDSecureOptions, \"threeDSecure\">): Promise<ThreeDSecureResult> {\n if (!this.needsChallenge) {\n return {\n status: ThreeDSecureResultStatus.Success\n };\n }\n const {\n acquirer\n } = this.data;\n if (!acquirer) {\n return {\n status: ThreeDSecureResultStatus.Failed,\n error: new Error(\"Missing 3DS acquirer\")\n };\n }\n const ProviderClass = threeDSProviders[acquirer as keyof typeof threeDSProviders];\n if (!ProviderClass) {\n return {\n status: ThreeDSecureResultStatus.Failed,\n error: new Error(`Unsupported 3DS provider: ${acquirer}`)\n };\n }\n const opts: ThreeDSecureOptions = {\n ...options,\n threeDSecure: this.data\n };\n this.provider = new ProviderClass(this.data, opts);\n const result = await this.provider.authenticate();\n if (result.status === ThreeDSecureResultStatus.Success && result.dsTransactionId && MANUAL_AUTH_ACQUIRERS.includes(acquirer) && this.data.orderId && this.data.publicKey) {\n const api = new PayConductorThreeDSApi(this.data.publicKey);\n await api.completeManualChallenge(this.data.orderId, result.dsTransactionId);\n }\n return result;\n }\n destroy() {\n if (this.provider) {\n this.provider.cleanup();\n this.provider = null;\n }\n }\n}","import { PayConductor3DSSDK } from \"../three-ds\";\nimport type { ThreeDSecureData, ThreeDSecureResult } from \"../three-ds/types\";\nimport { ThreeDSecureResultStatus } from \"../three-ds/types\";\nexport type UseThreeDSOptions = {\n onChallenge?: () => void;\n onComplete?: () => void;\n onError?: (error: Error) => void;\n onTimeout?: () => void;\n};\nexport type UseThreeDSReturn = {\n handleChallenge: (threeDSecure: ThreeDSecureData) => Promise<ThreeDSecureResult>;\n destroy: () => void;\n};\nexport function useThreeDS(options?: UseThreeDSOptions): UseThreeDSReturn {\n let handler: PayConductor3DSSDK | null = null;\n const handleChallenge = async (threeDSecure: ThreeDSecureData): Promise<ThreeDSecureResult> => {\n const needs = threeDSecure.status === \"NeedChallenge\" || threeDSecure.statusDetail === \"ThreeDsAwaitingChallenge\";\n if (!needs) {\n return {\n status: ThreeDSecureResultStatus.Success\n };\n }\n options?.onChallenge?.();\n handler = new PayConductor3DSSDK(threeDSecure);\n const result = await handler.authenticate({\n onComplete: options?.onComplete,\n onError: options?.onError,\n onTimeout: options?.onTimeout\n });\n handler.destroy();\n handler = null;\n return result;\n };\n const destroy = () => {\n handler?.destroy();\n handler = null;\n };\n return {\n handleChallenge,\n destroy\n };\n}","import type { CreateCustomerCard, SaveTokensBody } from \"./types\";\nimport { IntegrationProvider } from \"../iframe/types\";\nexport class PayConductorTokenizeApiError extends Error {\n constructor(message: string, public readonly title?: unknown) {\n super(message);\n this.name = \"PayConductorTokenizeApiError\";\n }\n}\nexport class PayConductorTokenizeApi {\n constructor(private readonly publicKey: string) {}\n async getSettings() {\n const res = await fetch(`${this.baseUrl}/card-tokenization/settings`, {\n method: \"GET\",\n headers: this.headers\n });\n if (!res.ok) await this.parseResponseError(\"Failed to fetch settings\", res);\n return (await res.json()) as Promise<{\n settings: {\n settings: Record<string, string | number | boolean>;\n key: IntegrationProvider;\n integrationId: string;\n }[];\n }>;\n }\n async createToken(input: CreateCustomerCard) {\n const res = await fetch(`${this.baseUrl}/card-tokenization/tokenize`, {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify(input)\n });\n if (!res.ok) await this.parseResponseError(\"Failed to generate token\", res);\n return (await res.json()) as Promise<{\n token: string;\n customerId: string;\n }>;\n }\n async saveTokens(data: SaveTokensBody[], customerId: string, cardToken: string) {\n const res = await fetch(`${this.baseUrl}/card-tokenization/save-tokens/${customerId}/${cardToken}`, {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify(data)\n });\n if (!res.ok) await this.parseResponseError(\"Failed to save tokens\", res);\n }\n private async parseResponseError(errorTitle: string, res: Response): Promise<never> {\n let errorMessage = \"\";\n try {\n const errorData = await res.json();\n if (errorData?.message) {\n errorMessage = errorData.message;\n } else if (errorData?.error?.message) {\n errorMessage = errorData.error;\n } else if (errorData?.error?.value?.message) {\n errorMessage = errorData.error.value.message;\n } else if (errorData?.value?.message) {\n errorMessage = errorData.value.message;\n } else {\n errorMessage = JSON.stringify(errorData);\n }\n } catch {\n // Response wasn't JSON\n }\n throw new PayConductorTokenizeApiError(errorMessage, errorTitle);\n }\n private get baseUrl() {\n if (typeof window !== \"undefined\" && window.location.href.includes(\"localhost\")) {\n return \"http://localhost:3000/api/v1/sdk\";\n }\n return \"https://payconductor.ai/api/v1/sdk\";\n }\n private get headers() {\n return {\n Authorization: `Basic ${btoa(`${this.publicKey}:x`)}`,\n \"Content-Type\": \"application/json\"\n };\n }\n}","import { DocumentType, IntegrationProvider } from \"../iframe/types\";\nexport type CreateCustomerInput = {\n documentNumber: string;\n documentType: `${DocumentType}`;\n email: string;\n name: string;\n phoneNumber: string;\n address?: {\n city: string;\n country: string;\n neighborhood: string;\n number: string;\n state: string;\n street: string;\n zipCode: string;\n };\n};\nexport type CreateCardInput = {\n cvv: string;\n expiration: {\n month: number;\n year: number;\n };\n holderName: string;\n number: string;\n};\nexport type TokenizeProviderInput = {\n customer: CreateCustomerInput;\n card: CreateCardInput;\n setting: Record<string, string | number | boolean>;\n saveCard?: boolean;\n};\nexport type CardTokenizeRequest = Omit<TokenizeProviderInput, \"setting\">;\nexport abstract class AbstractTokenizeProvider {\n constructor(protected readonly input: TokenizeProviderInput) {}\n abstract scriptUrl: string;\n abstract tokenize(): Promise<string>;\n}\nexport type SaveTokensBody = {\n integrationId: string;\n providerKey: IntegrationProvider;\n token: string;\n};\nexport type CreateCustomerCard = {\n customer: CreateCustomerInput;\n card: CreateCardInput;\n saveCard: boolean;\n}","import { AbstractTokenizeProvider } from \"../types\";\nimport { DocumentType } from \"../../iframe/types\";\nexport class MercadoPagoTokenizeProvider extends AbstractTokenizeProvider {\n scriptUrl = \"https://sdk.mercadopago.com/js/v2\";\n async tokenize(): Promise<string> {\n if (!(\"publicKey\" in this.input.setting)) {\n throw new Error(\"MercadoPago public key is missing in settings\");\n }\n if (!this.input.customer.documentNumber) {\n throw new Error(\"Customer document number is required for tokenization\");\n }\n const MP = window.MercadoPago;\n if (!MP) throw new Error(\"MercadoPago SDK not available\");\n const mp = new MP(this.input.setting.publicKey as string);\n const {\n expiration,\n cvv,\n number,\n holderName\n } = this.input.card;\n const res = await mp.createCardToken({\n cardExpirationMonth: String(expiration.month),\n cardExpirationYear: String(expiration.year),\n cardholderName: holderName,\n cardNumber: number,\n securityCode: cvv,\n identificationType: this.input.customer.documentType === DocumentType.Cpf ? \"CPF\" : \"CNPJ\",\n identificationNumber: this.input.customer.documentNumber\n });\n return res.id;\n }\n}","import type { AbstractTokenizeProvider, TokenizeProviderInput } from \"../types\";\nimport { MercadoPagoTokenizeProvider } from \"./mercado-pago\";\nimport { IntegrationProvider } from \"../../iframe/types\";\ntype TokenizeProviderConstructor = new (input: TokenizeProviderInput) => AbstractTokenizeProvider;\nexport const tokenizeProviders: Partial<Record<IntegrationProvider, TokenizeProviderConstructor>> = {\n [IntegrationProvider.MercadoPago]: MercadoPagoTokenizeProvider\n}","import { loadScript } from \"../loader\";\nimport { PayConductorTokenizeApi } from \"./api\";\nimport { tokenizeProviders } from \"./providers\";\nimport type { CardTokenizeRequest, SaveTokensBody } from \"./types\";\nexport class PayConductorTokenizeSDK {\n private readonly api: PayConductorTokenizeApi;\n constructor(private readonly publicKey: string) {\n this.api = new PayConductorTokenizeApi(this.publicKey);\n }\n async tokenizeCard(input: CardTokenizeRequest): Promise<string> {\n this.validateCard(input);\n const {\n customerId,\n token: cardToken\n } = await this.api.createToken({\n card: input.card,\n customer: input.customer,\n saveCard: false\n });\n const {\n settings\n } = await this.api.getSettings();\n const results = await Promise.all(settings.map(async setting => {\n const ProviderClass = tokenizeProviders[setting.key];\n if (!ProviderClass) return null;\n const provider = new ProviderClass({\n ...input,\n setting: setting.settings\n });\n await loadScript(provider.scriptUrl);\n const token = await provider.tokenize();\n return {\n token,\n integrationId: setting.integrationId,\n providerKey: setting.key\n } satisfies SaveTokensBody;\n }));\n const filtered = results.filter(e => e !== null);\n if (filtered.length > 0) {\n await this.api.saveTokens(filtered, customerId, cardToken);\n }\n return cardToken;\n }\n private validateCard(input: CardTokenizeRequest) {\n const {\n number,\n cvv,\n expiration,\n holderName\n } = input.card;\n if (!number || !cvv || !expiration?.month || !expiration?.year || !holderName) {\n throw new Error(\"Invalid card data\");\n }\n }\n}","import { PayConductorTokenizeSDK } from \"../tokenize\";\nimport type { CardTokenizeRequest } from \"../tokenize/types\";\nexport type UseTokenizeOptions = {\n publicKey: string;\n onSuccess?: (token: string) => void;\n onError?: (error: Error) => void;\n};\nexport type UseTokenizeReturn = {\n tokenizeCard: (input: CardTokenizeRequest) => Promise<string | null>;\n};\nexport function useTokenize(options: UseTokenizeOptions): UseTokenizeReturn {\n const sdk = new PayConductorTokenizeSDK(options.publicKey);\n const tokenizeCard = async (input: CardTokenizeRequest): Promise<string | null> => {\n try {\n const token = await sdk.tokenizeCard(input);\n options.onSuccess?.(token);\n return token;\n } catch (err) {\n const error = err instanceof Error ? err : new Error(\"Tokenization failed\");\n options.onError?.(error);\n return null;\n }\n };\n return {\n tokenizeCard\n };\n}"],"names":["IFRAME_BASE_URL_PROD","IFRAME_BASE_URL_DEV","REQUEST_TIMEOUT_MS","IFRAME_DEFAULT_HEIGHT","PaymentMethod","PaymentMethodLayout","PaymentStatus","StatusDetail","ThreeDsAuthenticationStatus","ThreeDSResultStatus","DocumentType","IntegrationProvider","CardBrand","OrganizationEnvironment","CurrencyType","DeviceType","InputStyleKey","OutgoingMessage","IncomingMessage","ErrorCode","defaultTheme","isDev","IFRAME_BASE_URL","ALLOWED_ORIGINS","IFRAME_DEFAULT_HEIGHT_VALUE","REQUEST_TIMEOUT","POST_MESSAGES","ERROR_CODES","SKELETON_STYLE_ID","SKELETON_CSS","buildIframeUrl","config","params","generateRequestId","isValidOrigin","origin","allowedOrigins","allowed","createPendingRequestsMap","sendMessageToIframe","iframe","pendingMap","type","data","resolve","reject","requestId","sendConfirmPayment","confirmPayment","options","validatePayment","resetPayment","sendConfig","sendInit","handleMessageEvent","event","setError","onReady","onError","onPaymentComplete","onPaymentFailed","onPaymentPending","onPaymentMethodSelected","onThreeDSChallenge","onThreeDSComplete","onThreeDSFailed","payload","error","PayConductor","props","isLoaded","setIsLoaded","useState","iframeUrl","setIframeUrl","selectedPaymentMethod","setSelectedPaymentMethod","useEffect","log","args","configSent","getIframe","ref","_b","_a","obj","frame","_","api","sendConfigToIframe","eventHandler","val","err","method","trySendConfig","el","_c","pollForIframe","jsx","PayConductorCheckoutElement","iframeRef","useRef","iframeHeight","setIframeHeight","styleEl","init","ctx","handler","e","heightSent","handleMessages","_d","jsxs","PayConductorThreeDSElement","visible","setVisible","handleShow","handleHide","usePayConductor","getIframeFromContext","usePayconductorElement","getCtx","sendToIframe","currentConfig","orderId","ThreeDSecureResultStatus","AbstractThreeDSProvider","__publicField","message","style","DEFAULT_TIMEOUT_MS","MercadoPagoThreeDSProvider","threeDsUrl","creq","container","iframeDoc","form","input","loaded","loadScript","url","existing","promise","script","SDK_URL","TIMEOUT_MS","PayConductorThreeDSProvider","operationUrl","publicKey","KrAuthenticate","SDK_URLS","detectWindowSize","w","PagarMeThreeDSProvider","authToken","card","env","tds","responses","result","customer","amount","billingAddress","p","PagSeguroThreeDSProvider","currency","sdk","phones","code","threeDSProviders","PayConductorThreeDSApiError","title","PayConductorThreeDSApi","providerTransactionId","res","errorTitle","errorMessage","errorData","MANUAL_AUTH_ACQUIRERS","PayConductor3DSSDK","threeDSecure","acquirer","ProviderClass","opts","useThreeDS","PayConductorTokenizeApiError","PayConductorTokenizeApi","customerId","cardToken","AbstractTokenizeProvider","MercadoPagoTokenizeProvider","MP","mp","expiration","cvv","number","holderName","tokenizeProviders","PayConductorTokenizeSDK","settings","filtered","setting","provider","useTokenize","token"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/payconductor/iframe/constants.ts","../src/payconductor/iframe/types.ts","../src/payconductor/constants.ts","../src/payconductor/utils.ts","../src/payconductor/internal.ts","../src/payconductor/payconductor.tsx","../src/payconductor/payconductor-element.tsx","../src/payconductor/payconductor-three-ds.tsx","../src/payconductor/hooks/use-payconductor.ts","../src/payconductor/hooks/use-element.ts","../src/payconductor/three-ds/types.ts","../src/payconductor/three-ds/providers/mercado-pago.ts","../src/payconductor/loader.ts","../src/payconductor/three-ds/providers/payconductor.ts","../src/payconductor/three-ds/providers/pagarme.ts","../src/payconductor/three-ds/providers/pagseguro.ts","../src/payconductor/three-ds/providers/index.ts","../src/payconductor/three-ds/api.ts","../src/payconductor/three-ds/handler.ts","../src/payconductor/hooks/use-three-ds.ts","../src/payconductor/tokenize/api.ts","../src/payconductor/tokenize/types.ts","../src/payconductor/tokenize/providers/mercado-pago.ts","../src/payconductor/tokenize/providers/index.ts","../src/payconductor/tokenize/tokenize.ts","../src/payconductor/hooks/use-tokenize.ts"],"sourcesContent":["// PayConductor Shared Constants\n// Served statically at iframe.payconductor.ai/constants.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport const APP_BASE_URL_PROD = \"https://app.payconductor.ai\";\nexport const API_BASE_URL_PROD = \"https://app.payconductor.ai/api/v1\";\nexport const IFRAME_BASE_URL_PROD = \"https://iframe.payconductor.ai/v1\";\nexport const IFRAME_BASE_URL_DEV = \"http://localhost:5175/v1\";\nexport const APP_BASE_URL_DEV = \"http://localhost:3000\";\nexport const DEFAULT_LOCALE = \"pt-BR\";\nexport const REQUEST_TIMEOUT_MS = 300000; // 5 minutes\nexport const IFRAME_DEFAULT_HEIGHT = \"600px\"","// PayConductor Shared Types\n// Served statically at iframe.payconductor.ai/types.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport enum PaymentMethod {\n Pix = \"Pix\",\n CreditCard = \"CreditCard\",\n DebitCard = \"DebitCard\",\n BankSlip = \"BankSlip\",\n Crypto = \"Crypto\",\n ApplePay = \"ApplePay\",\n NuPay = \"NuPay\",\n PicPay = \"PicPay\",\n AmazonPay = \"AmazonPay\",\n SepaDebit = \"SepaDebit\",\n GooglePay = \"GooglePay\",\n}\nexport enum PaymentMethodLayout {\n Grid = \"grid\",\n Vertical = \"vertical\",\n Horizontal = \"horizontal\",\n}\nexport enum PaymentStatus {\n Succeeded = \"succeeded\",\n Pending = \"pending\",\n Failed = \"failed\",\n}\nexport enum StatusDetail {\n ThreeDsAwaitingChallenge = \"ThreeDsAwaitingChallenge\",\n}\nexport enum ThreeDsAuthenticationStatus {\n Authenticated = \"Authenticated\",\n NotAuthenticated = \"NotAuthenticated\",\n NeedChallenge = \"NeedChallenge\",\n}\nexport enum ThreeDSResultStatus {\n Pending = \"Pending\",\n Authenticated = \"Authenticated\",\n Failed = \"Failed\",\n NotEnrolled = \"NotEnrolled\",\n}\nexport enum DocumentType {\n Cpf = \"Cpf\",\n Cnpj = \"Cnpj\",\n}\nexport enum IntegrationProvider {\n Asaas = \"Asaas\",\n Sandbox = \"Sandbox\",\n SandboxSplit = \"SandboxSplit\",\n MercadoPago = \"MercadoPago\",\n NuPay = \"NuPay\",\n PicPay = \"PicPay\",\n Woovi = \"Woovi\",\n EfiBank = \"EfiBank\",\n BrasPag = \"BrasPag\",\n PagarMe = \"PagarMe\",\n BancoDoBrasil = \"BancoDoBrasil\",\n PagSeguro = \"PagSeguro\",\n Ebanx = \"Ebanx\",\n OnlyUp = \"OnlyUp\",\n Barte = \"Barte\",\n BarteSplit = \"BarteSplit\",\n PagSmileA55 = \"PagSmileA55\",\n Avantti = \"Avantti\",\n MonsterGateway = \"MonsterGateway\",\n SAC = \"SAC\",\n}\nexport enum CardBrand {\n Visa = \"Visa\",\n Mastercard = \"Mastercard\",\n AmericanExpress = \"AmericanExpress\",\n DinersClub = \"DinersClub\",\n Discover = \"Discover\",\n JCB = \"JCB\",\n UnionPay = \"UnionPay\",\n Maestro = \"Maestro\",\n Mir = \"Mir\",\n Elo = \"Elo\",\n Hiper = \"Hiper\",\n Hipercard = \"Hipercard\",\n Verve = \"Verve\",\n Unknown = \"Unknown\",\n}\nexport enum OrganizationEnvironment {\n Production = \"Production\",\n Sandbox = \"Sandbox\",\n}\nexport enum CurrencyType {\n USD = \"USD\",\n EUR = \"EUR\",\n BRL = \"BRL\",\n ARS = \"ARS\",\n CAD = \"CAD\",\n COP = \"COP\",\n GBP = \"GBP\",\n JPY = \"JPY\",\n MXN = \"MXN\",\n MZN = \"MZN\",\n CNY = \"CNY\",\n SAR = \"SAR\",\n ETH = \"ETH\",\n BNB = \"BNB\",\n BTC = \"BTC\",\n USDT = \"USDT\",\n USDC = \"USDC\",\n DOGE = \"DOGE\",\n SOL = \"SOL\",\n}\nexport enum DeviceType {\n Android = \"android\",\n IOS = \"ios\",\n Web = \"web\",\n}\nexport enum InputStyleKey {\n Padding = \"padding\",\n Radius = \"radius\",\n Color = \"color\",\n Background = \"background\",\n Shadow = \"shadow\",\n}\nexport enum OutgoingMessage {\n Init = \"Init\",\n Config = \"Config\",\n Update = \"Update\",\n ConfirmPayment = \"ConfirmPayment\",\n Validate = \"Validate\",\n Reset = \"Reset\",\n}\nexport enum IncomingMessage {\n Ready = \"Ready\",\n Error = \"Error\",\n PaymentComplete = \"PaymentComplete\",\n PaymentFailed = \"PaymentFailed\",\n PaymentPending = \"PaymentPending\",\n ValidationError = \"ValidationError\",\n PaymentMethodSelected = \"PaymentMethodSelected\",\n Resize = \"Resize\",\n ThreeDSChallenge = \"ThreeDSChallenge\",\n ThreeDSComplete = \"ThreeDSComplete\",\n ThreeDSFailed = \"ThreeDSFailed\",\n}\nexport enum ErrorCode {\n InvalidClient = \"InvalidClient\",\n InvalidToken = \"InvalidToken\",\n NetworkError = \"NetworkError\",\n IframeNotReady = \"IframeNotReady\",\n PaymentDeclined = \"PaymentDeclined\",\n ValidationError = \"ValidationError\",\n Timeout = \"Timeout\",\n}\nexport type InputStyleConfig = {\n padding?: string;\n radius?: string;\n color?: string;\n background?: string;\n shadow?: string;\n};\nexport type PaymentMethodsConfig = {\n layout?: PaymentMethodLayout;\n gap?: string;\n inputStyle?: InputStyleConfig;\n};\nexport type PaymentMethodConfig = {\n method: PaymentMethod;\n discount?: number;\n showBrands?: boolean;\n installments?: {\n count: number;\n amount: number;\n }[];\n};\nexport type PaymentMethodsResponse = {\n methods: PaymentMethod[];\n config: PaymentMethodsConfig;\n};\nexport type PayConductorTheme = {\n primaryColor?: string;\n secondaryColor?: string;\n backgroundColor?: string;\n surfaceColor?: string;\n textColor?: string;\n textSecondaryColor?: string;\n errorColor?: string;\n successColor?: string;\n warningColor?: string;\n borderColor?: string;\n disabledColor?: string;\n fontFamily?: string;\n fontSize?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n fontWeight?: {\n normal?: number;\n medium?: number;\n bold?: number;\n };\n lineHeight?: string;\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n borderRadius?: string;\n borderWidth?: string;\n boxShadow?: string;\n boxShadowHover?: string;\n inputBackground?: string;\n inputBorderColor?: string;\n inputBorderRadius?: string;\n inputHeight?: string;\n inputPadding?: string;\n buttonHeight?: string;\n buttonPadding?: string;\n buttonBorderRadius?: string;\n transitionDuration?: string;\n transitionTimingFunction?: string;\n};\nexport const defaultTheme: PayConductorTheme = {\n primaryColor: \"#0066ff\",\n secondaryColor: \"#5a6b7c\",\n backgroundColor: \"transparent\",\n surfaceColor: \"#f8fafc\",\n textColor: \"#0f172a\",\n textSecondaryColor: \"#64748b\",\n errorColor: \"#ef4444\",\n successColor: \"#22c55e\",\n warningColor: \"#f59e0b\",\n borderColor: \"#e2e8f0\",\n disabledColor: \"#cbd5e1\",\n fontFamily: '\"Poppins\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\"\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n bold: 600\n },\n lineHeight: \"1.5\",\n spacing: {\n xs: \"4px\",\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\"\n },\n borderRadius: \"8px\",\n borderWidth: \"1px\",\n boxShadow: \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n boxShadowHover: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n inputBackground: \"#ffffff\",\n inputBorderColor: \"#cbd5e1\",\n inputBorderRadius: \"8px\",\n inputHeight: \"44px\",\n inputPadding: \"12px 16px\",\n buttonHeight: \"48px\",\n buttonPadding: \"16px 24px\",\n buttonBorderRadius: \"8px\",\n transitionDuration: \"0.2s\",\n transitionTimingFunction: \"ease\"\n};\nexport type PayConductorConfig = {\n publicKey: string;\n orderId?: string;\n theme?: PayConductorTheme;\n locale?: string;\n paymentMethods?: PaymentMethod[] | \"all\";\n defaultPaymentMethod?: PaymentMethod;\n paymentMethodsConfig?: PaymentMethodConfig[];\n methodsDirection?: \"vertical\" | \"horizontal\";\n showPaymentButtons?: boolean;\n height?: string;\n /** Required when NuPay is an available payment method */\n nuPayConfig?: NuPayData;\n};\nexport type BillingDetails = {\n name: string;\n email?: string;\n phone?: string;\n address?: {\n line1: string;\n line2?: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n };\n};\nexport type CardData = {\n number: string;\n expMonth: string;\n expYear: string;\n cvc: string;\n};\nexport type CreatePaymentMethodOptions = {\n billingDetails: BillingDetails;\n card?: CardData;\n};\nexport type PaymentMethodResult = {\n id: string;\n type: PaymentMethod;\n card?: {\n brand: string;\n last4: string;\n expMonth: number;\n expYear: number;\n };\n billingDetails?: BillingDetails;\n};\nexport type PaymentResult = {\n orderId: string;\n status: PaymentStatus;\n statusDetail?: StatusDetail | string;\n amount: number;\n currency: CurrencyType | string;\n message?: string;\n errorCode?: string;\n errorMessage?: string;\n threeDSecure?: {\n status: ThreeDsAuthenticationStatus | string;\n acquirer?: IntegrationProvider | \"PayConductor\" | string;\n environment?: OrganizationEnvironment;\n authToken?: string;\n threeDsUrl?: string;\n creq?: string;\n operationUrl?: string;\n publicKey?: string;\n dsTransactionId?: string;\n version?: string;\n };\n};\nexport interface MessagePayload {\n type: OutgoingMessage | IncomingMessage;\n data?: unknown;\n requestId?: string;\n error?: {\n code: string;\n message: string;\n field?: string;\n };\n}\nexport type ThreeDSecureBrowserData = {\n ip?: string;\n userAgent?: string;\n acceptHeader?: string;\n language?: string;\n colorDepth?: string;\n screenHeight?: string;\n screenWidth?: string;\n timeZoneOffset?: string;\n javaEnabled: boolean;\n javaScriptEnabled: boolean;\n};\nexport type ThreeDSecureInternalInput = {\n type: \"internal\";\n authToken?: string;\n dsTransactionId?: string;\n providerTransactionId?: string;\n browser?: ThreeDSecureBrowserData;\n};\nexport type ThreeDSecureExternalInput = {\n type: \"external\";\n status: string;\n eci: string;\n version: string;\n cavv: string;\n providerTransactionId: string;\n directoryTransactionId: string;\n browser?: ThreeDSecureBrowserData;\n};\nexport type ThreeDSecureInput = ThreeDSecureInternalInput | ThreeDSecureExternalInput;\nexport type CardTokenData = {\n token: string;\n firstSixCardNumber?: string;\n};\nexport type CardFullData = {\n number: string;\n holderName: string;\n cvv: string;\n expiration: {\n month: number;\n year: number;\n };\n};\nexport type CardPaymentData = CardTokenData | CardFullData;\nexport type PixPaymentData = {\n paymentMethod: PaymentMethod.Pix;\n expirationInSeconds?: number;\n};\nexport type CreditCardPaymentData = {\n paymentMethod: PaymentMethod.CreditCard;\n card: CardPaymentData;\n installments: number;\n softDescriptor?: string;\n};\nexport type BankSlipPaymentData = {\n paymentMethod: PaymentMethod.BankSlip;\n expirationInDays?: number;\n};\nexport type NuPayData = {\n cancelUrl: string;\n merchantName: string;\n returnUrl: string;\n storeName?: string;\n};\nexport type NuPayPaymentData = {\n paymentMethod: PaymentMethod.NuPay;\n nuPay: NuPayData;\n};\nexport type PicPayPaymentData = {\n paymentMethod: PaymentMethod.PicPay;\n};\nexport type PaymentConfirmData = PixPaymentData | CreditCardPaymentData | BankSlipPaymentData | NuPayPaymentData | PicPayPaymentData","import { IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD, IFRAME_DEFAULT_HEIGHT, REQUEST_TIMEOUT_MS } from \"./iframe/constants\";\nimport { IncomingMessage, OutgoingMessage } from \"./iframe/types\";\nconst isDev = typeof window !== \"undefined\" && (window.location.hostname === \"localhost\" || window.location.hostname === \"127.0.0.1\") && !window.location.search.includes(\"production\");\nexport const IFRAME_BASE_URL = isDev ? IFRAME_BASE_URL_DEV : IFRAME_BASE_URL_PROD;\nexport const ALLOWED_ORIGINS = [IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD];\nexport const IFRAME_DEFAULT_HEIGHT_VALUE = IFRAME_DEFAULT_HEIGHT;\nexport const REQUEST_TIMEOUT = REQUEST_TIMEOUT_MS;\nexport const POST_MESSAGES = {\n INIT: OutgoingMessage.Init,\n CONFIG: OutgoingMessage.Config,\n UPDATE: OutgoingMessage.Update,\n CONFIRM_PAYMENT: OutgoingMessage.ConfirmPayment,\n VALIDATE: OutgoingMessage.Validate,\n RESET: OutgoingMessage.Reset,\n READY: IncomingMessage.Ready,\n ERROR: IncomingMessage.Error,\n PAYMENT_COMPLETE: IncomingMessage.PaymentComplete,\n PAYMENT_FAILED: IncomingMessage.PaymentFailed,\n PAYMENT_PENDING: IncomingMessage.PaymentPending,\n VALIDATION_ERROR: IncomingMessage.ValidationError,\n PAYMENT_METHOD_SELECTED: IncomingMessage.PaymentMethodSelected,\n RESIZE: IncomingMessage.Resize\n} as const;\nexport const ERROR_CODES = {\n INVALID_CLIENT: \"InvalidClient\",\n INVALID_TOKEN: \"InvalidToken\",\n NETWORK_ERROR: \"NetworkError\",\n IFRAME_NOT_READY: \"IframeNotReady\",\n PAYMENT_DECLINED: \"PaymentDeclined\",\n VALIDATION_ERROR: \"ValidationError\",\n TIMEOUT: \"Timeout\"\n} as const","import { IFRAME_BASE_URL } from \"./constants\";\nexport const SKELETON_STYLE_ID = \"payconductor-skeleton-style\";\nexport const SKELETON_CSS = `\n\t@keyframes payconductor-shimmer {\n\t 0% { background-position: -200% 0; }\n\t 100% { background-position: 200% 0; }\n\t}\n\t.payconductor-skeleton {\n\t background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);\n\t background-size: 200% 100%;\n\t animation: payconductor-shimmer 1.5s infinite linear;\n\t border-radius: 4px;\n\t width: 100%;\n\t}\n`;\nimport type { PayConductorConfig } from \"./iframe/types\";\nexport function buildIframeUrl(config: PayConductorConfig): string {\n const params = new URLSearchParams({\n publicKey: config.publicKey\n });\n return `${IFRAME_BASE_URL}?${params.toString()}`;\n}\nexport function generateRequestId(): string {\n return crypto.randomUUID();\n}\nexport function isValidOrigin(origin: string, allowedOrigins: string[]): boolean {\n return allowedOrigins.some(allowed => {\n try {\n return new URL(allowed).origin === origin;\n } catch {\n return allowed === origin;\n }\n });\n}","import { ALLOWED_ORIGINS, POST_MESSAGES, REQUEST_TIMEOUT } from \"./constants\";\nimport { IncomingMessage, OutgoingMessage, PayConductorConfig, PaymentMethod, PaymentResult, PaymentStatus } from \"./iframe/types\";\nimport type { ConfirmPaymentOptions, PendingRequest } from \"./types\";\nimport { generateRequestId, isValidOrigin } from \"./utils\";\nexport function createPendingRequestsMap(): Map<string, PendingRequest> {\n return new Map<string, PendingRequest>();\n}\nexport function sendMessageToIframe(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, type: OutgoingMessage | IncomingMessage, data?: unknown): Promise<unknown> {\n return new Promise((resolve, reject) => {\n if (!iframe || !(\"contentWindow\" in iframe)) {\n reject(new Error(\"Iframe not defined\"));\n return;\n }\n if (!iframe?.contentWindow) {\n reject(new Error(\"Iframe not ready\"));\n return;\n }\n if (!pendingMap) {\n reject(new Error(\"Pending requests not initialized\"));\n return;\n }\n const requestId = generateRequestId();\n pendingMap.set(requestId, {\n resolve,\n reject\n });\n iframe.contentWindow.postMessage({\n type,\n data,\n requestId\n }, \"*\");\n setTimeout(() => {\n if (pendingMap?.has(requestId)) {\n pendingMap.delete(requestId);\n reject(new Error(\"Request timeout\"));\n }\n }, REQUEST_TIMEOUT);\n });\n}\nfunction sendConfirmPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, data: Record<string, unknown>): Promise<PaymentResult> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, data) as Promise<PaymentResult>;\n}\nexport async function confirmPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, options: ConfirmPaymentOptions): Promise<PaymentResult> {\n return await sendConfirmPayment(iframe, pendingMap, {\n orderId: options.orderId\n });\n}\nexport function validatePayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, data: unknown): Promise<boolean> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.VALIDATE, data) as Promise<boolean>;\n}\nexport function resetPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.RESET) as Promise<void>;\n}\nexport function sendConfig(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\" | \"defaultPaymentMethod\" | \"showPaymentButtons\" | \"nuPayConfig\">): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIG, config) as Promise<void>;\n}\nexport function sendInit(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: PayConductorConfig): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.INIT, config) as Promise<void>;\n}\ntype MessagePayload = {\n requestId?: string;\n type?: string;\n data?: PaymentResult | {\n paymentMethod: PaymentMethod;\n };\n error?: {\n message?: string;\n };\n};\nexport function handleMessageEvent(event: MessageEvent, pendingMap: Map<string, PendingRequest> | null, setError: (value: string | null) => void, onReady?: () => void, onError?: (error: Error) => void, onPaymentComplete?: (data: PaymentResult) => void, onPaymentFailed?: (data: PaymentResult) => void, onPaymentPending?: (data: PaymentResult) => void, onPaymentMethodSelected?: (method: PaymentMethod) => void, onThreeDSChallenge?: () => void, onThreeDSComplete?: () => void, onThreeDSFailed?: () => void) {\n const payload: MessagePayload = event.data;\n const {\n requestId,\n type,\n data,\n error\n } = payload;\n if (type === POST_MESSAGES.READY) {\n onReady?.();\n if (requestId && pendingMap?.has(requestId)) {\n const {\n resolve\n } = pendingMap.get(requestId)!;\n pendingMap.delete(requestId);\n resolve(data);\n }\n return;\n }\n if (!isValidOrigin(event.origin, ALLOWED_ORIGINS)) {\n return;\n }\n if (requestId && pendingMap && pendingMap.has(requestId)) {\n const {\n resolve,\n reject\n } = pendingMap.get(requestId)!;\n pendingMap.delete(requestId);\n if (error) {\n reject(new Error(String(error.message)));\n } else {\n resolve(data);\n }\n return;\n }\n if (type === POST_MESSAGES.ERROR) {\n setError(error?.message || \"Unknown error\");\n onError?.(new Error(String(error?.message)));\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_COMPLETE) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentComplete?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_FAILED) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentFailed?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_PENDING) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentPending?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_METHOD_SELECTED) {\n if (data && typeof data === \"object\" && \"paymentMethod\" in data) {\n onPaymentMethodSelected?.(data.paymentMethod);\n }\n return;\n }\n if (type === POST_MESSAGES.RESIZE) {\n return;\n }\n if (type === IncomingMessage.ThreeDSChallenge) {\n onThreeDSChallenge?.();\n return;\n }\n if (type === IncomingMessage.ThreeDSComplete) {\n onThreeDSComplete?.();\n return;\n }\n if (type === IncomingMessage.ThreeDSFailed) {\n onThreeDSFailed?.();\n return;\n }\n}","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\nexport interface PayConductorEmbedProps\n extends Omit<PayConductorConfig, \"orderId\"> {\n children?: any;\n showActionButtons?: boolean;\n debug?: boolean;\n onReady?: () => void;\n onError?: (error: Error) => void;\n onPaymentComplete?: (result: PaymentResult) => void;\n onPaymentFailed?: (result: PaymentResult) => void;\n onPaymentPending?: (result: PaymentResult) => void;\n onPaymentMethodSelected?: (method: PaymentMethod) => void;\n onThreeDSChallenge?: () => void;\n onThreeDSComplete?: () => void;\n onThreeDSFailed?: () => void;\n}\n\nimport type {\n PayConductorConfig,\n PaymentMethod,\n PaymentResult,\n} from \"./iframe/types\";\nimport {\n confirmPayment,\n createPendingRequestsMap,\n handleMessageEvent,\n resetPayment,\n sendConfig,\n validatePayment,\n} from \"./internal\";\nimport type {\n PayConductorApi,\n PayConductorFrame,\n PayConductorState,\n PendingRequest,\n} from \"./types\";\nimport { POST_MESSAGES } from \"./constants\";\nimport { buildIframeUrl } from \"./utils\";\n\nfunction PayConductor(props: PayConductorEmbedProps) {\n const [isLoaded, setIsLoaded] = useState<PayConductorState[\"isLoaded\"]>(\n () => false\n );\n\n const [error, setError] = useState<PayConductorState[\"error\"]>(() => null);\n\n const [iframeUrl, setIframeUrl] = useState<PayConductorState[\"iframeUrl\"]>(\n () => \"\"\n );\n\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState<\n PayConductorState[\"selectedPaymentMethod\"]\n >(() => null);\n\n useEffect(() => {\n const log = (...args: any[]) => {\n if (props.debug) console.log(\"[PayConductor]\", ...args);\n };\n const iframeUrl = buildIframeUrl({\n publicKey: props.publicKey,\n });\n setIframeUrl(iframeUrl);\n setIsLoaded(true);\n const pendingMap: Map<string, PendingRequest> = createPendingRequestsMap();\n let configSent = false;\n log(\"init\", props.publicKey);\n log(\"iframeUrl\", iframeUrl);\n const getIframe = (): HTMLIFrameElement | undefined => {\n const ref = window.PayConductor?.frame?.iframe;\n if (ref) {\n if (ref instanceof HTMLIFrameElement) return ref;\n if (typeof ref === \"object\" && ref !== null) {\n const obj = ref as Record<string, unknown>;\n if (\"current\" in obj && obj.current instanceof HTMLIFrameElement)\n return obj.current;\n if (\"value\" in obj && obj.value instanceof HTMLIFrameElement)\n return obj.value;\n }\n return ref as HTMLIFrameElement;\n }\n return (\n (document.querySelector(\n \".payconductor-element iframe\"\n ) as HTMLIFrameElement) ?? undefined\n );\n };\n const frame: PayConductorFrame = {\n get iframe(): HTMLIFrameElement | null {\n return (\n (document.querySelector(\n \".payconductor-element iframe\"\n ) as HTMLIFrameElement) ?? null\n );\n },\n set iframe(_: HTMLIFrameElement | Element | unknown | null) {},\n iframeUrl,\n error: null,\n };\n const config: PayConductorConfig = {\n publicKey: props.publicKey,\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n };\n const api: PayConductorApi = {\n confirmPayment: (options: { orderId: string }) => {\n log(\"→ CONFIRM_PAYMENT\", {\n orderId: options.orderId,\n });\n const iframe = getIframe();\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage(\n {\n type: POST_MESSAGES.CONFIG,\n data: {\n publicKey: props.publicKey,\n orderId: options.orderId,\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n nuPayConfig: props.nuPayConfig,\n },\n },\n \"*\"\n );\n }\n config.orderId = options.orderId;\n if (window.PayConductor?.config) {\n window.PayConductor.config.orderId = options.orderId;\n }\n return confirmPayment(iframe, pendingMap, options);\n },\n validate: (data: unknown) => {\n log(\"→ VALIDATE\", data);\n return validatePayment(getIframe(), pendingMap, data);\n },\n reset: () => {\n log(\"→ RESET\");\n return resetPayment(getIframe(), pendingMap);\n },\n getSelectedPaymentMethod: () => selectedPaymentMethod,\n };\n window.PayConductor = {\n frame,\n config,\n api,\n selectedPaymentMethod: selectedPaymentMethod,\n };\n log(\"registered\");\n window.dispatchEvent(\n new CustomEvent(\"payconductor:registered\", {\n detail: window.PayConductor,\n })\n );\n const sendConfigToIframe = async () => {\n if (!configSent) {\n const iframe = getIframe();\n if (!iframe) {\n log(\"→ CONFIG skipped: iframe not found\");\n return;\n }\n configSent = true;\n log(\"→ CONFIG\", {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n });\n sendConfig(iframe, pendingMap, {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n nuPayConfig: props.nuPayConfig,\n });\n }\n };\n const eventHandler = (event: MessageEvent) => {\n if (event.data?.type) {\n log(\"←\", event.data.type, event.data.data ?? \"\");\n }\n handleMessageEvent(\n event,\n pendingMap,\n (val) => {\n setError(val);\n frame.error = val;\n if (window.PayConductor?.frame) {\n window.PayConductor.frame.error = val;\n }\n },\n () => {\n props.onReady?.();\n sendConfigToIframe();\n },\n (err) => {\n props.onError?.(err);\n },\n (data) => {\n props.onPaymentComplete?.(data as PaymentResult);\n },\n (data) => {\n props.onPaymentFailed?.(data as PaymentResult);\n },\n (data) => {\n props.onPaymentPending?.(data as PaymentResult);\n },\n (method) => {\n setSelectedPaymentMethod(method);\n if (window.PayConductor) {\n window.PayConductor.selectedPaymentMethod = method;\n }\n props.onPaymentMethodSelected?.(method);\n },\n () => {\n props.onThreeDSChallenge?.();\n },\n () => {\n props.onThreeDSComplete?.();\n },\n () => {\n props.onThreeDSFailed?.();\n }\n );\n };\n window.addEventListener(\"message\", eventHandler);\n const trySendConfig = () => {\n const el = getIframe();\n if (!el) return false;\n try {\n const readyState =\n el.contentDocument?.readyState ??\n el.contentWindow?.document?.readyState;\n if (readyState === \"complete\") {\n sendConfigToIframe();\n return true;\n }\n } catch {}\n return false;\n };\n const pollForIframe = () => {\n if (trySendConfig()) return;\n const el = getIframe();\n if (el) {\n el.addEventListener(\"load\", () => sendConfigToIframe(), {\n once: true,\n });\n return;\n }\n setTimeout(pollForIframe, 50);\n };\n pollForIframe();\n }, []);\n\n return (\n <div\n className=\"payconductor\"\n id=\"payconductor\"\n style={{\n display: \"contents\",\n }}\n >\n {props.children}\n </div>\n );\n}\n\nexport default PayConductor;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useRef, useEffect } from \"react\";\n\nexport interface PayConductorCheckoutElementProps {\n height?: string;\n}\n\nimport { IFRAME_DEFAULT_HEIGHT_VALUE, POST_MESSAGES } from \"./constants\";\nimport { PayConductorContextValue } from \"./types\";\nimport { SKELETON_CSS, SKELETON_STYLE_ID } from \"./utils\";\n\nfunction PayConductorCheckoutElement(props: PayConductorCheckoutElementProps) {\n const iframeRef = useRef<any>(null);\n const [iframeUrl, setIframeUrl] = useState(() => \"\");\n\n const [isLoaded, setIsLoaded] = useState(() => false);\n\n const [iframeHeight, setIframeHeight] = useState(() => \"\");\n\n useEffect(() => {\n if (\n typeof document !== \"undefined\" &&\n !document.getElementById(SKELETON_STYLE_ID)\n ) {\n const styleEl = document.createElement(\"style\");\n styleEl.id = SKELETON_STYLE_ID;\n styleEl.textContent = SKELETON_CSS;\n document.head.appendChild(styleEl);\n }\n const init = (ctx: PayConductorContextValue) => {\n if (!ctx?.frame) return;\n setIframeUrl(ctx.frame.iframeUrl || \"\");\n setIsLoaded(true);\n console.log(\"init\", {\n PayConductor: window.PayConductor,\n });\n };\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n if (ctx) {\n init(ctx);\n } else {\n const handler = (e: Event) => {\n init((e as CustomEvent).detail as PayConductorContextValue);\n window.removeEventListener(\"payconductor:registered\", handler);\n };\n window.addEventListener(\"payconductor:registered\", handler);\n }\n let heightSent = false;\n const handleMessages = (event: MessageEvent) => {\n if (\n event.data?.type === POST_MESSAGES.RESIZE &&\n event.data?.data?.height\n ) {\n setIframeHeight(event.data.data.height + \"px\");\n }\n if (\n event.data?.type === POST_MESSAGES.READY &&\n props.height &&\n !heightSent\n ) {\n heightSent = true;\n const iframe = document.querySelector(\n \".payconductor-element iframe\"\n ) as HTMLIFrameElement;\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage(\n {\n type: POST_MESSAGES.CONFIG,\n data: {\n height: props.height,\n },\n requestId: \"element-height\",\n },\n \"*\"\n );\n }\n }\n };\n window.addEventListener(\"message\", handleMessages);\n return () => window.removeEventListener(\"message\", handleMessages);\n }, []);\n\n return (\n <div\n className=\"payconductor-element\"\n style={{\n width: \"100%\",\n }}\n >\n {!isLoaded ? (\n <div\n className=\"payconductor-skeleton\"\n style={{\n height: props.height || IFRAME_DEFAULT_HEIGHT_VALUE,\n }}\n />\n ) : null}\n {isLoaded && iframeUrl ? (\n <iframe\n allow=\"payment\"\n title=\"PayConductor\"\n ref={iframeRef}\n src={iframeUrl}\n style={{\n width: \"100%\",\n height: props.height || iframeHeight || IFRAME_DEFAULT_HEIGHT_VALUE,\n border: \"none\",\n }}\n />\n ) : null}\n </div>\n );\n}\n\nexport default PayConductorCheckoutElement;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\nexport interface PayConductorThreeDSElementProps {\n height?: string;\n}\n\nfunction PayConductorThreeDSElement(props: PayConductorThreeDSElementProps) {\n const [visible, setVisible] = useState(() => false);\n\n useEffect(() => {\n const handleShow = () => {\n setVisible(true);\n };\n const handleHide = () => {\n setVisible(false);\n };\n window.addEventListener(\"payconductor:3ds:show\", handleShow);\n window.addEventListener(\"payconductor:3ds:hide\", handleHide);\n if (typeof window !== \"undefined\") {\n window.PayConductor3DS = {\n container: () => document.getElementById(\"payconductor-3ds-container\"),\n show: handleShow,\n hide: handleHide,\n };\n window.dispatchEvent(new CustomEvent(\"payconductor:3ds:registered\"));\n }\n return () => {\n window.removeEventListener(\"payconductor:3ds:show\", handleShow);\n window.removeEventListener(\"payconductor:3ds:hide\", handleHide);\n window.PayConductor3DS = null;\n };\n }, []);\n\n return (\n <div\n className=\"payconductor-three-ds\"\n id=\"payconductor-3ds-container\"\n style={{\n width: \"100%\",\n display: visible ? \"block\" : \"none\",\n minHeight: visible ? props.height || \"600px\" : \"0\",\n }}\n />\n );\n}\n\nexport default PayConductorThreeDSElement;\n","import type { PayConductorConfig } from \"../iframe/types\";\nimport type { PayConductorFrame } from \"../types\";\ntype UsePayConductorReturn = PayConductorFrame & Partial<PayConductorConfig>;\nexport function usePayConductor(): UsePayConductorReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const config = ctx?.config ? {\n publicKey: ctx.config.publicKey,\n orderId: ctx.config.orderId,\n theme: ctx.config.theme,\n locale: ctx.config.locale\n } : {};\n const frame = ctx?.frame ? {\n iframe: ctx.frame.iframe,\n error: ctx.frame.error\n } : {\n iframe: null,\n error: null\n };\n return {\n ...config,\n ...frame\n };\n}","import { POST_MESSAGES } from \"../constants\";\nimport type { BillingDetails, PayConductorConfig, PaymentMethod, PaymentResult } from \"../iframe/types\";\nimport { createPendingRequestsMap, sendInit, sendMessageToIframe } from \"../internal\";\nimport { PayConductorContextValue } from \"../types\";\nexport type SubmitResult = {\n error?: {\n message: string;\n code?: string;\n type?: \"validation_error\" | \"payment_error\";\n };\n paymentMethod?: PaymentMethod;\n};\nexport type ConfirmPaymentOptions = {\n orderId: string;\n returnUrl?: string;\n};\nexport type UpdateOptions = {\n billingDetails?: Partial<BillingDetails>;\n address?: Partial<BillingDetails[\"address\"]>;\n};\nexport interface UsePayconductorElementReturn {\n init: (config: PayConductorConfig) => Promise<void>;\n confirmPayment: (options: ConfirmPaymentOptions) => Promise<PaymentResult>;\n validate: (data: unknown) => Promise<boolean>;\n reset: () => Promise<void>;\n getSelectedPaymentMethod: () => PaymentMethod | null;\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => void;\n updateOrderId: (orderId: string) => void;\n update: (options: UpdateOptions) => void;\n submit: () => Promise<SubmitResult>;\n}\nfunction getIframeFromContext(ctx: PayConductorContextValue | null): HTMLIFrameElement | null {\n if (ctx?.frame?.iframe) {\n const iframeRef = ctx.frame.iframe;\n if (iframeRef instanceof HTMLIFrameElement) return iframeRef;\n if (iframeRef && typeof iframeRef === \"object\") {\n if (\"current\" in iframeRef) {\n const el = (iframeRef as any).current;\n if (el instanceof HTMLIFrameElement) return el;\n }\n if (\"value\" in iframeRef) {\n const el = (iframeRef as any).value;\n if (el instanceof HTMLIFrameElement) return el;\n }\n }\n }\n return document.querySelector(\".payconductor-element iframe\") as HTMLIFrameElement ?? null;\n}\nexport function usePayconductorElement(): UsePayconductorElementReturn {\n const getCtx = () => typeof window !== \"undefined\" ? window.PayConductor : null;\n const sendToIframe = (type: string, data?: unknown) => {\n const ctx = getCtx();\n if (!ctx) return;\n const iframe = getIframeFromContext(ctx);\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage({\n type,\n data\n }, \"*\");\n }\n };\n return {\n init: async (config: PayConductorConfig): Promise<void> => {\n const iframe = getIframeFromContext(getCtx());\n const pendingMap = createPendingRequestsMap();\n return sendInit(iframe || undefined, pendingMap, config);\n },\n confirmPayment: async (options: ConfirmPaymentOptions): Promise<PaymentResult> => {\n if (!options.orderId) {\n throw new Error(\"Order ID is required\");\n }\n const ctx = getCtx();\n if (!ctx?.api) throw new Error(\"PayConductor not initialized\");\n return ctx.api.confirmPayment(options);\n },\n validate: (data: unknown) => {\n const ctx = getCtx();\n if (!ctx) return Promise.resolve(false);\n return ctx.api.validate(data);\n },\n reset: () => {\n const ctx = getCtx();\n if (!ctx) return Promise.resolve();\n return ctx.api.reset();\n },\n getSelectedPaymentMethod: (): PaymentMethod | null => {\n return getCtx()?.selectedPaymentMethod ?? null;\n },\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => {\n const currentConfig = getCtx()?.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: currentConfig?.orderId,\n theme: config.theme ?? currentConfig?.theme,\n locale: config.locale ?? currentConfig?.locale,\n paymentMethods: config.paymentMethods ?? currentConfig?.paymentMethods\n });\n },\n updateOrderId: (orderId: string) => {\n const currentConfig = getCtx()?.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: orderId,\n theme: currentConfig?.theme,\n locale: currentConfig?.locale,\n paymentMethods: currentConfig?.paymentMethods\n });\n },\n update: (options: UpdateOptions) => {\n sendToIframe(POST_MESSAGES.UPDATE, options);\n },\n submit: async (): Promise<SubmitResult> => {\n const iframe = getIframeFromContext(getCtx());\n const pendingMap = createPendingRequestsMap();\n try {\n await sendMessageToIframe(iframe || undefined, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {});\n return {\n paymentMethod: undefined\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Payment failed\";\n return {\n error: {\n message,\n code: \"payment_error\",\n type: \"payment_error\"\n }\n };\n }\n }\n };\n}","import { IntegrationProvider, OrganizationEnvironment } from \"../iframe/types\";\nexport type ThreeDSecureData = {\n orderId: string;\n status?: string;\n statusDetail?: string;\n acquirer?: IntegrationProvider | \"PayConductor\" | string;\n environment?: OrganizationEnvironment;\n authToken?: string;\n threeDsUrl?: string;\n creq?: string;\n operationUrl?: string;\n publicKey?: string;\n dsTransactionId?: string;\n version?: string;\n card?: {\n number: string;\n expMonth: string;\n expYear: string;\n holderName: string;\n };\n customer?: {\n name: string;\n email: string;\n document?: string;\n phones?: Array<{\n countryCode: string;\n areaCode: string;\n number: string;\n type?: string;\n }>;\n };\n amount?: number;\n currency?: string;\n installments?: number;\n billingAddress?: {\n street: string;\n number: string;\n complement?: string;\n district?: string;\n state: string;\n country: string;\n city: string;\n zipCode: string;\n };\n};\nexport type ThreeDSecureOptions = {\n threeDSecure: ThreeDSecureData;\n onComplete?: () => void;\n onError?: (error: Error) => void;\n onTimeout?: () => void;\n timeoutMs?: number;\n};\nexport enum ThreeDSecureResultStatus {\n Success = \"Success\",\n Failed = \"Failed\",\n Timeout = \"Timeout\",\n}\nexport type ThreeDSecureResult = {\n status: ThreeDSecureResultStatus;\n error?: Error;\n authToken?: string;\n dsTransactionId?: string;\n};\nexport abstract class AbstractThreeDSProvider {\n private overlay: HTMLElement | null = null;\n private modalContent: HTMLElement | null = null;\n constructor(protected readonly data: ThreeDSecureData, protected readonly options: ThreeDSecureOptions) {}\n abstract authenticate(): Promise<ThreeDSecureResult>;\n abstract cleanup(): void;\n protected fail(message: string): ThreeDSecureResult {\n const error = new Error(message);\n this.options.onError?.(error);\n return {\n status: ThreeDSecureResultStatus.Failed,\n error\n };\n }\n\n //#region Modal\n\n protected showModal(): HTMLElement {\n this.injectStyles();\n this.overlay = document.createElement(\"div\");\n this.overlay.id = \"payconductor-3ds-overlay\";\n this.modalContent = document.createElement(\"div\");\n this.modalContent.id = \"payconductor-3ds-modal\";\n this.overlay.appendChild(this.modalContent);\n document.body.appendChild(this.overlay);\n return this.modalContent;\n }\n protected closeModal(): void {\n if (this.overlay) {\n this.overlay.remove();\n this.overlay = null;\n this.modalContent = null;\n }\n }\n protected resolveContainer(): HTMLElement {\n return this.modalContent ?? this.showModal();\n }\n private injectStyles(): void {\n if (document.getElementById(\"payconductor-3ds-styles\")) return;\n const style = document.createElement(\"style\");\n style.id = \"payconductor-3ds-styles\";\n style.textContent = `\n\t\t\t#payconductor-3ds-overlay {\n\t\t\t\tposition: fixed;\n\t\t\t\tinset: 0;\n\t\t\t\tz-index: 99999;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\tbackground: rgba(0, 0, 0, 0.6);\n\t\t\t}\n\t\t\t#payconductor-3ds-modal {\n\t\t\t\twidth: 500px;\n\t\t\t\tmax-width: 95vw;\n\t\t\t\tmin-height: 600px;\n\t\t\t\tborder-radius: 8px;\n\t\t\t\toverflow: hidden;\n\t\t\t\tbackground: #fff;\n\t\t\t}\n\t\t\t#payconductor-3ds-modal iframe {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 600px;\n\t\t\t\tborder: none;\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t\t@media only screen and (max-width: 600px) {\n\t\t\t\t#payconductor-3ds-modal {\n\t\t\t\t\twidth: 100vw;\n\t\t\t\t\tmax-width: 100vw;\n\t\t\t\t\tmin-height: 440px;\n\t\t\t\t\tborder-radius: 0;\n\t\t\t\t}\n\t\t\t\t#payconductor-3ds-modal iframe {\n\t\t\t\t\theight: 440px;\n\t\t\t\t}\n\t\t\t}\n\t\t`;\n document.head.appendChild(style);\n }\n\n //#endregion\n}","import { AbstractThreeDSProvider, ThreeDSecureResultStatus } from \"../types\";\nimport type { ThreeDSecureResult } from \"../types\";\nconst DEFAULT_TIMEOUT_MS = 5 * 60 * 1000;\nexport class MercadoPagoThreeDSProvider extends AbstractThreeDSProvider {\n private iframe: HTMLIFrameElement | null = null;\n private messageListener: ((event: MessageEvent) => void) | null = null;\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n async authenticate(): Promise<ThreeDSecureResult> {\n const {\n threeDsUrl,\n creq\n } = this.data;\n if (!threeDsUrl || !creq) {\n return this.fail(\"Missing threeDsUrl or creq\");\n }\n const container = this.resolveContainer();\n return new Promise<ThreeDSecureResult>(resolve => {\n this.iframe = document.createElement(\"iframe\");\n this.iframe.name = \"payconductor-3ds-challenge\";\n this.iframe.id = \"payconductor-3ds-challenge\";\n container.appendChild(this.iframe);\n this.messageListener = (event: MessageEvent) => {\n if (event.data?.status === \"COMPLETE\") {\n this.cleanup();\n this.options.onComplete?.();\n resolve({\n status: ThreeDSecureResultStatus.Success\n });\n }\n };\n window.addEventListener(\"message\", this.messageListener);\n this.timeoutId = setTimeout(() => {\n this.cleanup();\n this.options.onTimeout?.();\n resolve({\n status: ThreeDSecureResultStatus.Timeout\n });\n }, this.options.timeoutMs ?? DEFAULT_TIMEOUT_MS);\n const iframeDoc = this.iframe.contentWindow?.document;\n if (!iframeDoc) {\n this.cleanup();\n resolve(this.fail(\"Cannot access iframe document\"));\n return;\n }\n const form = iframeDoc.createElement(\"form\");\n form.name = \"threeDsChallengeForm\";\n form.setAttribute(\"target\", \"payconductor-3ds-challenge\");\n form.setAttribute(\"method\", \"post\");\n form.setAttribute(\"action\", threeDsUrl);\n const input = iframeDoc.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n input.setAttribute(\"name\", \"creq\");\n input.setAttribute(\"value\", creq);\n form.appendChild(input);\n this.iframe.appendChild(form);\n form.submit();\n });\n }\n cleanup(): void {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n if (this.messageListener) {\n window.removeEventListener(\"message\", this.messageListener);\n this.messageListener = null;\n }\n if (this.iframe) {\n this.iframe.remove();\n this.iframe = null;\n }\n this.closeModal();\n }\n}","const loaded = new Map<string, Promise<void>>();\nexport function loadScript(url: string): Promise<void> {\n const existing = loaded.get(url);\n if (existing) return existing;\n const promise = new Promise<void>((resolve, reject) => {\n if (document.querySelector(`script[src=\"${url}\"]`)) {\n resolve();\n return;\n }\n const script = document.createElement(\"script\");\n script.src = url;\n script.async = true;\n script.onload = () => resolve();\n script.onerror = () => {\n loaded.delete(url);\n reject(new Error(`Failed to load script: ${url}`));\n };\n (document.head || document.body).appendChild(script);\n });\n loaded.set(url, promise);\n return promise;\n}","import { loadScript } from \"../../loader\";\nimport { AbstractThreeDSProvider, ThreeDSecureResultStatus } from \"../types\";\nimport type { ThreeDSecureResult } from \"../types\";\nconst SDK_URL = \"https://static.payzen.lat/static/js/authenticate-client/V1.0/kr-authenticate.umd\";\nconst TIMEOUT_MS = 10 * 60 * 1000;\nexport class PayConductorThreeDSProvider extends AbstractThreeDSProvider {\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n async authenticate(): Promise<ThreeDSecureResult> {\n const {\n operationUrl,\n publicKey\n } = this.data;\n if (!operationUrl || !publicKey) {\n return this.fail(\"Missing operationUrl or publicKey\");\n }\n try {\n await loadScript(SDK_URL);\n } catch {\n return this.fail(\"Failed to load 3DS SDK\");\n }\n const KrAuthenticate = window.KrAuthenticate;\n if (!KrAuthenticate) return this.fail(\"KrAuthenticate not available\");\n return new Promise<ThreeDSecureResult>(resolve => {\n this.timeoutId = setTimeout(() => {\n this.cleanup();\n this.options.onTimeout?.();\n resolve({\n status: ThreeDSecureResultStatus.Timeout\n });\n }, this.options.timeoutMs ?? TIMEOUT_MS);\n const sdk = new KrAuthenticate(publicKey);\n sdk.authenticate(operationUrl, () => {\n this.cleanup();\n this.options.onComplete?.();\n resolve({\n status: ThreeDSecureResultStatus.Success\n });\n });\n });\n }\n cleanup(): void {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n}","import { loadScript } from \"../../loader\";\nimport { AbstractThreeDSProvider, ThreeDSecureResultStatus } from \"../types\";\nimport type { ThreeDSecureResult } from \"../types\";\nimport { OrganizationEnvironment } from \"../../iframe/types\";\nconst SDK_URLS: Record<OrganizationEnvironment, string> = {\n [OrganizationEnvironment.Production]: \"https://3ds-nx-js.stone.com.br/live/v2/3ds2.min\",\n [OrganizationEnvironment.Sandbox]: \"https://3ds-nx-js.stone.com.br/test/v2/3ds2.min\"\n};\nconst DEFAULT_TIMEOUT_MS = 5 * 60 * 1000;\nfunction detectWindowSize(): \"01\" | \"02\" | \"03\" | \"04\" | \"05\" {\n const w = window.innerWidth;\n if (w <= 480) return \"01\";\n if (w <= 768) return \"02\";\n if (w <= 1024) return \"03\";\n return \"04\";\n}\nexport class PagarMeThreeDSProvider extends AbstractThreeDSProvider {\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n private methodContainer: HTMLElement | null = null;\n async authenticate(): Promise<ThreeDSecureResult> {\n const {\n authToken,\n card\n } = this.data;\n if (!authToken) return this.fail(\"Missing authToken for PagarMe 3DS\");\n if (!card) return this.fail(\"Missing card data for PagarMe 3DS\");\n const env = this.data.environment ?? OrganizationEnvironment.Production;\n try {\n await loadScript(SDK_URLS[env]);\n } catch {\n return this.fail(\"Failed to load Stone 3DS SDK\");\n }\n const tds = window.TDS;\n if (!tds) return this.fail(\"Stone TDS SDK not available\");\n const container = this.resolveContainer();\n this.methodContainer = document.createElement(\"div\");\n this.methodContainer.style.display = \"none\";\n document.body.appendChild(this.methodContainer);\n return new Promise<ThreeDSecureResult>(resolve => {\n this.timeoutId = setTimeout(() => {\n this.cleanup();\n this.options.onTimeout?.();\n resolve({\n status: ThreeDSecureResultStatus.Timeout\n });\n }, this.options.timeoutMs ?? DEFAULT_TIMEOUT_MS);\n tds.init({\n token: authToken,\n tds_method_container_element: this.methodContainer as HTMLElement,\n challenge_container_element: container,\n use_default_challenge_iframe_style: true,\n challenge_window_size: detectWindowSize()\n }, this.buildOrderData()).then(responses => {\n this.cleanup();\n if (!responses?.length) {\n resolve(this.fail(\"PagarMe 3DS returned no response\"));\n return;\n }\n const result = responses[0];\n if (result.challenge_canceled) {\n resolve(this.fail(\"3DS challenge canceled by user\"));\n return;\n }\n if (result.trans_status === \"Y\" || result.trans_status === \"A\") {\n this.options.onComplete?.();\n resolve({\n status: ThreeDSecureResultStatus.Success,\n dsTransactionId: result.tds_server_trans_id\n });\n } else {\n resolve(this.fail(`3DS failed with status: ${result.trans_status}`));\n }\n }).catch((err: unknown) => {\n this.cleanup();\n resolve(this.fail(err instanceof Error ? err.message : \"PagarMe 3DS failed\"));\n });\n });\n }\n cleanup(): void {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n if (this.methodContainer) {\n this.methodContainer.remove();\n this.methodContainer = null;\n }\n this.closeModal();\n }\n private buildOrderData(): Record<string, unknown> {\n const {\n card,\n customer,\n amount,\n billingAddress\n } = this.data;\n return {\n payments: [{\n payment_method: \"credit_card\",\n credit_card: {\n card: {\n number: card?.number,\n holder_name: card?.holderName,\n exp_month: Number(card?.expMonth),\n exp_year: Number(card?.expYear),\n billing_address: billingAddress ? {\n country: billingAddress.country,\n state: billingAddress.state,\n city: billingAddress.city,\n zip_code: billingAddress.zipCode,\n line_1: `${billingAddress.number}, ${billingAddress.street}${billingAddress.district ? `, ${billingAddress.district}` : \"\"}`,\n line_2: billingAddress.complement ?? \"\"\n } : undefined\n }\n },\n amount: amount\n }],\n ...(customer ? {\n customer: {\n name: customer.name,\n email: customer.email,\n ...(customer.document ? {\n document: customer.document\n } : {}),\n ...(customer.phones?.length ? {\n phones: Object.fromEntries(customer.phones.map(p => [p.type === \"HOME\" ? \"home_phone\" : \"mobile_phone\", {\n country_code: p.countryCode,\n area_code: p.areaCode,\n number: p.number\n }]))\n } : {})\n }\n } : {})\n };\n }\n}","import { loadScript } from \"../../loader\";\nimport { AbstractThreeDSProvider, ThreeDSecureResultStatus } from \"../types\";\nimport type { ThreeDSecureResult } from \"../types\";\nimport { OrganizationEnvironment } from \"../../iframe/types\";\nconst SDK_URL = \"https://assets.pagseguro.com.br/checkout-sdk-js/rc/dist/browser/pagseguro.min\";\nexport class PagSeguroThreeDSProvider extends AbstractThreeDSProvider {\n async authenticate(): Promise<ThreeDSecureResult> {\n const {\n authToken,\n card,\n customer,\n amount,\n currency,\n billingAddress\n } = this.data;\n if (!authToken) return this.fail(\"Missing authToken (session) for PagSeguro 3DS\");\n if (!card) return this.fail(\"Missing card data for PagSeguro 3DS\");\n if (!customer) return this.fail(\"Missing customer data for PagSeguro 3DS\");\n if (!amount) return this.fail(\"Missing amount for PagSeguro 3DS\");\n if (!billingAddress) return this.fail(\"Missing billingAddress for PagSeguro 3DS\");\n const env = this.data.environment === OrganizationEnvironment.Sandbox ? \"SANDBOX\" : \"PROD\";\n try {\n await loadScript(SDK_URL);\n } catch {\n return this.fail(\"Failed to load PagSeguro SDK\");\n }\n const sdk = window.PagSeguro;\n if (!sdk) return this.fail(\"PagSeguro SDK not available\");\n sdk.setUp({\n session: authToken,\n env\n });\n const phones = customer.phones?.map(p => ({\n country: p.countryCode,\n area: p.areaCode,\n number: p.number,\n type: p.type ?? \"MOBILE\"\n })) ?? [{\n country: \"55\",\n area: \"11\",\n number: \"999999999\",\n type: \"MOBILE\"\n }];\n const hasMobile = phones.some(p => p.type === \"MOBILE\");\n if (!hasMobile) {\n phones[0].type = \"MOBILE\";\n }\n try {\n const result = await sdk.authenticate3DS({\n data: {\n customer: {\n name: customer.name,\n email: customer.email,\n phones\n },\n paymentMethod: {\n type: this.data.installments === 0 ? \"DEBIT_CARD\" : \"CREDIT_CARD\",\n installments: this.data.installments ?? 1,\n card: {\n number: card.number,\n expMonth: card.expMonth,\n expYear: card.expYear,\n holder: {\n name: card.holderName\n }\n }\n },\n amount: {\n value: amount,\n currency: currency ?? \"BRL\"\n },\n billingAddress: {\n street: billingAddress.street,\n number: billingAddress.number,\n complement: billingAddress.complement,\n regionCode: billingAddress.state,\n country: billingAddress.country.length === 2 ? this.toAlpha3(billingAddress.country) : billingAddress.country,\n city: billingAddress.city,\n postalCode: billingAddress.zipCode.replace(/\\D/g, \"\")\n },\n dataOnly: false\n }\n });\n if (result.status === \"AUTH_FLOW_COMPLETED\" || result.status === \"AUTH_NOT_SUPPORTED\") {\n this.options.onComplete?.();\n return {\n status: ThreeDSecureResultStatus.Success,\n dsTransactionId: result.id\n };\n }\n if (result.status === \"CHANGE_PAYMENT_METHOD\") {\n return this.fail(\"PagSeguro requires a different payment method\");\n }\n return {\n status: ThreeDSecureResultStatus.Success,\n dsTransactionId: result.id\n };\n } catch (err: unknown) {\n return this.fail(err instanceof Error ? err.message : \"PagSeguro 3DS failed\");\n }\n }\n cleanup(): void {}\n private toAlpha3(code: string): string {\n const map: Record<string, string> = {\n BR: \"BRA\",\n US: \"USA\",\n AR: \"ARG\",\n CL: \"CHL\",\n CO: \"COL\",\n MX: \"MEX\",\n PE: \"PER\",\n UY: \"URY\"\n };\n return map[code.toUpperCase()] ?? code;\n }\n}","import type { AbstractThreeDSProvider, ThreeDSecureData, ThreeDSecureOptions } from \"../types\";\nimport { MercadoPagoThreeDSProvider } from \"./mercado-pago\";\nimport { PayConductorThreeDSProvider } from \"./payconductor\";\nimport { PagarMeThreeDSProvider } from \"./pagarme\";\nimport { PagSeguroThreeDSProvider } from \"./pagseguro\";\nimport { IntegrationProvider } from \"../../iframe/types\";\ntype ThreeDSProviderConstructor = new (data: ThreeDSecureData, options: ThreeDSecureOptions) => AbstractThreeDSProvider;\nexport const threeDSProviders: Partial<Record<IntegrationProvider | \"PayConductor\", ThreeDSProviderConstructor>> = {\n [IntegrationProvider.MercadoPago]: MercadoPagoThreeDSProvider,\n PayConductor: PayConductorThreeDSProvider,\n [IntegrationProvider.PagarMe]: PagarMeThreeDSProvider,\n [IntegrationProvider.PagSeguro]: PagSeguroThreeDSProvider\n}","export class PayConductorThreeDSApiError extends Error {\n constructor(message: string, public readonly title?: unknown) {\n super(message);\n this.name = \"PayConductorThreeDSApiError\";\n }\n}\nexport class PayConductorThreeDSApi {\n constructor(private readonly publicKey: string) {}\n async completeManualChallenge(orderId: string, providerTransactionId: string): Promise<void> {\n const res = await fetch(`${this.baseUrl}/three-ds/complete/${orderId}`, {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify({\n providerTransactionId\n })\n });\n if (!res.ok) await this.parseResponseError(\"Failed to complete native 3DS challenge\", res);\n }\n private async parseResponseError(errorTitle: string, res: Response): Promise<never> {\n let errorMessage = \"\";\n try {\n const errorData = await res.json();\n if (errorData?.message) {\n errorMessage = errorData.message;\n } else if (errorData?.error?.message) {\n errorMessage = errorData.error;\n } else if (errorData?.error?.value?.message) {\n errorMessage = errorData.error.value.message;\n } else if (errorData?.value?.message) {\n errorMessage = errorData.value.message;\n } else {\n errorMessage = JSON.stringify(errorData);\n }\n } catch {\n // Response wasn't JSON\n }\n throw new PayConductorThreeDSApiError(errorMessage, errorTitle);\n }\n private get baseUrl() {\n if (typeof window !== \"undefined\" && window.location.href.includes(\"localhost\")) {\n return \"http://localhost:3000/api/v1/sdk\";\n }\n return \"https://payconductor.ai/api/v1/sdk\";\n }\n private get headers() {\n return {\n Authorization: `Basic ${btoa(`${this.publicKey}:x`)}`,\n \"Content-Type\": \"application/json\"\n };\n }\n}","import type { ThreeDSecureData, ThreeDSecureOptions, ThreeDSecureResult, AbstractThreeDSProvider } from \"./types\";\nimport { ThreeDSecureResultStatus } from \"./types\";\nimport { threeDSProviders } from \"./providers\";\nimport { PayConductorThreeDSApi } from \"./api\";\nimport { IntegrationProvider } from \"../iframe/types\";\n\n// ? Acquirers that require a server-side notification after a successful 3DS native challenge\nconst MANUAL_AUTH_ACQUIRERS: (IntegrationProvider | string)[] = [IntegrationProvider.PagSeguro];\nexport class PayConductor3DSSDK {\n private readonly data: ThreeDSecureData;\n private provider: AbstractThreeDSProvider | null = null;\n constructor(threeDSecure: ThreeDSecureData) {\n this.data = threeDSecure;\n }\n get needsChallenge() {\n return this.data.status === \"NeedChallenge\" || this.data.statusDetail === \"ThreeDsAwaitingChallenge\";\n }\n get acquirer() {\n return this.data.acquirer;\n }\n async authenticate(options?: Omit<ThreeDSecureOptions, \"threeDSecure\">): Promise<ThreeDSecureResult> {\n if (!this.needsChallenge) {\n return {\n status: ThreeDSecureResultStatus.Success\n };\n }\n const {\n acquirer\n } = this.data;\n if (!acquirer) {\n return {\n status: ThreeDSecureResultStatus.Failed,\n error: new Error(\"Missing 3DS acquirer\")\n };\n }\n const ProviderClass = threeDSProviders[acquirer as keyof typeof threeDSProviders];\n if (!ProviderClass) {\n return {\n status: ThreeDSecureResultStatus.Failed,\n error: new Error(`Unsupported 3DS provider: ${acquirer}`)\n };\n }\n const opts: ThreeDSecureOptions = {\n ...options,\n threeDSecure: this.data\n };\n this.provider = new ProviderClass(this.data, opts);\n const result = await this.provider.authenticate();\n if (result.status === ThreeDSecureResultStatus.Success && result.dsTransactionId && MANUAL_AUTH_ACQUIRERS.includes(acquirer) && this.data.orderId && this.data.publicKey) {\n const api = new PayConductorThreeDSApi(this.data.publicKey);\n await api.completeManualChallenge(this.data.orderId, result.dsTransactionId);\n }\n return result;\n }\n destroy() {\n if (this.provider) {\n this.provider.cleanup();\n this.provider = null;\n }\n }\n}","import { PayConductor3DSSDK } from \"../three-ds\";\nimport type { ThreeDSecureData, ThreeDSecureResult } from \"../three-ds/types\";\nimport { ThreeDSecureResultStatus } from \"../three-ds/types\";\nexport type UseThreeDSOptions = {\n onChallenge?: () => void;\n onComplete?: () => void;\n onError?: (error: Error) => void;\n onTimeout?: () => void;\n};\nexport type UseThreeDSReturn = {\n handleChallenge: (threeDSecure: ThreeDSecureData) => Promise<ThreeDSecureResult>;\n destroy: () => void;\n};\nexport function useThreeDS(options?: UseThreeDSOptions): UseThreeDSReturn {\n let handler: PayConductor3DSSDK | null = null;\n const handleChallenge = async (threeDSecure: ThreeDSecureData): Promise<ThreeDSecureResult> => {\n const needs = threeDSecure.status === \"NeedChallenge\" || threeDSecure.statusDetail === \"ThreeDsAwaitingChallenge\";\n if (!needs) {\n return {\n status: ThreeDSecureResultStatus.Success\n };\n }\n options?.onChallenge?.();\n handler = new PayConductor3DSSDK(threeDSecure);\n const result = await handler.authenticate({\n onComplete: options?.onComplete,\n onError: options?.onError,\n onTimeout: options?.onTimeout\n });\n handler.destroy();\n handler = null;\n return result;\n };\n const destroy = () => {\n handler?.destroy();\n handler = null;\n };\n return {\n handleChallenge,\n destroy\n };\n}","import type { CreateCustomerCard, SaveTokensBody } from \"./types\";\nimport { IntegrationProvider } from \"../iframe/types\";\nexport class PayConductorTokenizeApiError extends Error {\n constructor(message: string, public readonly title?: unknown) {\n super(message);\n this.name = \"PayConductorTokenizeApiError\";\n }\n}\nexport class PayConductorTokenizeApi {\n constructor(private readonly publicKey: string) {}\n async getSettings() {\n const res = await fetch(`${this.baseUrl}/card-tokenization/settings`, {\n method: \"GET\",\n headers: this.headers\n });\n if (!res.ok) await this.parseResponseError(\"Failed to fetch settings\", res);\n return (await res.json()) as Promise<{\n settings: {\n settings: Record<string, string | number | boolean>;\n key: IntegrationProvider;\n integrationId: string;\n }[];\n }>;\n }\n async createToken(input: CreateCustomerCard) {\n const res = await fetch(`${this.baseUrl}/card-tokenization/tokenize`, {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify(input)\n });\n if (!res.ok) await this.parseResponseError(\"Failed to generate token\", res);\n return (await res.json()) as Promise<{\n token: string;\n customerId: string;\n }>;\n }\n async saveTokens(data: SaveTokensBody[], customerId: string, cardToken: string) {\n const res = await fetch(`${this.baseUrl}/card-tokenization/save-tokens/${customerId}/${cardToken}`, {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify(data)\n });\n if (!res.ok) await this.parseResponseError(\"Failed to save tokens\", res);\n }\n private async parseResponseError(errorTitle: string, res: Response): Promise<never> {\n let errorMessage = \"\";\n try {\n const errorData = await res.json();\n if (errorData?.message) {\n errorMessage = errorData.message;\n } else if (errorData?.error?.message) {\n errorMessage = errorData.error;\n } else if (errorData?.error?.value?.message) {\n errorMessage = errorData.error.value.message;\n } else if (errorData?.value?.message) {\n errorMessage = errorData.value.message;\n } else {\n errorMessage = JSON.stringify(errorData);\n }\n } catch {\n // Response wasn't JSON\n }\n throw new PayConductorTokenizeApiError(errorMessage, errorTitle);\n }\n private get baseUrl() {\n if (typeof window !== \"undefined\" && window.location.href.includes(\"localhost\")) {\n return \"http://localhost:3000/api/v1/sdk\";\n }\n return \"https://payconductor.ai/api/v1/sdk\";\n }\n private get headers() {\n return {\n Authorization: `Basic ${btoa(`${this.publicKey}:x`)}`,\n \"Content-Type\": \"application/json\"\n };\n }\n}","import { DocumentType, IntegrationProvider } from \"../iframe/types\";\nexport type CreateCustomerInput = {\n documentNumber: string;\n documentType: `${DocumentType}`;\n email: string;\n name: string;\n phoneNumber: string;\n address?: {\n city: string;\n country: string;\n neighborhood: string;\n number: string;\n state: string;\n street: string;\n zipCode: string;\n };\n};\nexport type CreateCardInput = {\n cvv: string;\n expiration: {\n month: number;\n year: number;\n };\n holderName: string;\n number: string;\n};\nexport type TokenizeProviderInput = {\n customer: CreateCustomerInput;\n card: CreateCardInput;\n setting: Record<string, string | number | boolean>;\n saveCard?: boolean;\n};\nexport type CardTokenizeRequest = Omit<TokenizeProviderInput, \"setting\">;\nexport abstract class AbstractTokenizeProvider {\n constructor(protected readonly input: TokenizeProviderInput) {}\n abstract scriptUrl: string;\n abstract tokenize(): Promise<string>;\n}\nexport type SaveTokensBody = {\n integrationId: string;\n providerKey: IntegrationProvider;\n token: string;\n};\nexport type CreateCustomerCard = {\n customer: CreateCustomerInput;\n card: CreateCardInput;\n saveCard: boolean;\n}","import { AbstractTokenizeProvider } from \"../types\";\nimport { DocumentType } from \"../../iframe/types\";\nexport class MercadoPagoTokenizeProvider extends AbstractTokenizeProvider {\n scriptUrl = \"https://sdk.mercadopago.com/js/v2\";\n async tokenize(): Promise<string> {\n if (!(\"publicKey\" in this.input.setting)) {\n throw new Error(\"MercadoPago public key is missing in settings\");\n }\n if (!this.input.customer.documentNumber) {\n throw new Error(\"Customer document number is required for tokenization\");\n }\n const MP = window.MercadoPago;\n if (!MP) throw new Error(\"MercadoPago SDK not available\");\n const mp = new MP(this.input.setting.publicKey as string);\n const {\n expiration,\n cvv,\n number,\n holderName\n } = this.input.card;\n const res = await mp.createCardToken({\n cardExpirationMonth: String(expiration.month),\n cardExpirationYear: String(expiration.year),\n cardholderName: holderName,\n cardNumber: number,\n securityCode: cvv,\n identificationType: this.input.customer.documentType === DocumentType.Cpf ? \"CPF\" : \"CNPJ\",\n identificationNumber: this.input.customer.documentNumber\n });\n return res.id;\n }\n}","import type { AbstractTokenizeProvider, TokenizeProviderInput } from \"../types\";\nimport { MercadoPagoTokenizeProvider } from \"./mercado-pago\";\nimport { IntegrationProvider } from \"../../iframe/types\";\ntype TokenizeProviderConstructor = new (input: TokenizeProviderInput) => AbstractTokenizeProvider;\nexport const tokenizeProviders: Partial<Record<IntegrationProvider, TokenizeProviderConstructor>> = {\n [IntegrationProvider.MercadoPago]: MercadoPagoTokenizeProvider\n}","import { loadScript } from \"../loader\";\nimport { PayConductorTokenizeApi } from \"./api\";\nimport { tokenizeProviders } from \"./providers\";\nimport type { CardTokenizeRequest, SaveTokensBody } from \"./types\";\nexport class PayConductorTokenizeSDK {\n private readonly api: PayConductorTokenizeApi;\n constructor(private readonly publicKey: string) {\n this.api = new PayConductorTokenizeApi(this.publicKey);\n }\n async tokenizeCard(input: CardTokenizeRequest): Promise<string> {\n this.validateCard(input);\n const {\n customerId,\n token: cardToken\n } = await this.api.createToken({\n card: input.card,\n customer: input.customer,\n saveCard: false\n });\n const {\n settings\n } = await this.api.getSettings();\n const results = await Promise.all(settings.map(async setting => {\n const ProviderClass = tokenizeProviders[setting.key];\n if (!ProviderClass) return null;\n const provider = new ProviderClass({\n ...input,\n setting: setting.settings\n });\n await loadScript(provider.scriptUrl);\n const token = await provider.tokenize();\n return {\n token,\n integrationId: setting.integrationId,\n providerKey: setting.key\n } satisfies SaveTokensBody;\n }));\n const filtered = results.filter(e => e !== null);\n if (filtered.length > 0) {\n await this.api.saveTokens(filtered, customerId, cardToken);\n }\n return cardToken;\n }\n private validateCard(input: CardTokenizeRequest) {\n const {\n number,\n cvv,\n expiration,\n holderName\n } = input.card;\n if (!number || !cvv || !expiration?.month || !expiration?.year || !holderName) {\n throw new Error(\"Invalid card data\");\n }\n }\n}","import { PayConductorTokenizeSDK } from \"../tokenize\";\nimport type { CardTokenizeRequest } from \"../tokenize/types\";\nexport type UseTokenizeOptions = {\n publicKey: string;\n onSuccess?: (token: string) => void;\n onError?: (error: Error) => void;\n};\nexport type UseTokenizeReturn = {\n tokenizeCard: (input: CardTokenizeRequest) => Promise<string | null>;\n};\nexport function useTokenize(options: UseTokenizeOptions): UseTokenizeReturn {\n const sdk = new PayConductorTokenizeSDK(options.publicKey);\n const tokenizeCard = async (input: CardTokenizeRequest): Promise<string | null> => {\n try {\n const token = await sdk.tokenizeCard(input);\n options.onSuccess?.(token);\n return token;\n } catch (err) {\n const error = err instanceof Error ? err : new Error(\"Tokenization failed\");\n options.onError?.(error);\n return null;\n }\n };\n return {\n tokenizeCard\n };\n}"],"names":["IFRAME_BASE_URL_PROD","IFRAME_BASE_URL_DEV","REQUEST_TIMEOUT_MS","IFRAME_DEFAULT_HEIGHT","PaymentMethod","PaymentMethodLayout","PaymentStatus","StatusDetail","ThreeDsAuthenticationStatus","ThreeDSResultStatus","DocumentType","IntegrationProvider","CardBrand","OrganizationEnvironment","CurrencyType","DeviceType","InputStyleKey","OutgoingMessage","IncomingMessage","ErrorCode","defaultTheme","isDev","IFRAME_BASE_URL","ALLOWED_ORIGINS","IFRAME_DEFAULT_HEIGHT_VALUE","REQUEST_TIMEOUT","POST_MESSAGES","ERROR_CODES","SKELETON_STYLE_ID","SKELETON_CSS","buildIframeUrl","config","params","generateRequestId","isValidOrigin","origin","allowedOrigins","allowed","createPendingRequestsMap","sendMessageToIframe","iframe","pendingMap","type","data","resolve","reject","requestId","sendConfirmPayment","confirmPayment","options","validatePayment","resetPayment","sendConfig","sendInit","handleMessageEvent","event","setError","onReady","onError","onPaymentComplete","onPaymentFailed","onPaymentPending","onPaymentMethodSelected","onThreeDSChallenge","onThreeDSComplete","onThreeDSFailed","payload","error","PayConductor","props","isLoaded","setIsLoaded","useState","iframeUrl","setIframeUrl","selectedPaymentMethod","setSelectedPaymentMethod","useEffect","log","args","configSent","getIframe","ref","_b","_a","obj","frame","_","api","sendConfigToIframe","eventHandler","val","err","method","trySendConfig","el","_c","pollForIframe","jsx","PayConductorCheckoutElement","iframeRef","useRef","iframeHeight","setIframeHeight","styleEl","init","ctx","handler","e","heightSent","handleMessages","_d","jsxs","PayConductorThreeDSElement","visible","setVisible","handleShow","handleHide","usePayConductor","getIframeFromContext","usePayconductorElement","getCtx","sendToIframe","currentConfig","orderId","ThreeDSecureResultStatus","AbstractThreeDSProvider","__publicField","message","style","DEFAULT_TIMEOUT_MS","MercadoPagoThreeDSProvider","threeDsUrl","creq","container","iframeDoc","form","input","loaded","loadScript","url","existing","promise","script","SDK_URL","TIMEOUT_MS","PayConductorThreeDSProvider","operationUrl","publicKey","KrAuthenticate","SDK_URLS","detectWindowSize","w","PagarMeThreeDSProvider","authToken","card","env","tds","responses","result","customer","amount","billingAddress","p","PagSeguroThreeDSProvider","currency","sdk","phones","code","threeDSProviders","PayConductorThreeDSApiError","title","PayConductorThreeDSApi","providerTransactionId","res","errorTitle","errorMessage","errorData","MANUAL_AUTH_ACQUIRERS","PayConductor3DSSDK","threeDSecure","acquirer","ProviderClass","opts","useThreeDS","PayConductorTokenizeApiError","PayConductorTokenizeApi","customerId","cardToken","AbstractTokenizeProvider","MercadoPagoTokenizeProvider","MP","mp","expiration","cvv","number","holderName","tokenizeProviders","PayConductorTokenizeSDK","settings","filtered","setting","provider","useTokenize","token"],"mappings":"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"}
|