rebill-web-components-sdk 1.10.13 → 1.11.0-beta.1

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.
Files changed (31) hide show
  1. package/dist/cjs/index-C-VTnc0I.js.map +1 -1
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/rebill-checkout.cjs.entry.js +147 -40
  4. package/dist/cjs/rebill-checkout.entry.cjs.js.map +1 -1
  5. package/dist/cjs/rebill-web-components-sdk.cjs.js +1 -1
  6. package/dist/collection/components/checkout/rebill-checkout.js +49 -40
  7. package/dist/collection/components/checkout/rebill-checkout.js.map +1 -1
  8. package/dist/collection/utils/index.js +2 -0
  9. package/dist/collection/utils/index.js.map +1 -1
  10. package/dist/collection/utils/resource-injector.js +118 -0
  11. package/dist/collection/utils/resource-injector.js.map +1 -0
  12. package/dist/components/p-8BpuJ_V5.js.map +1 -1
  13. package/dist/components/rebill-checkout.js +148 -40
  14. package/dist/components/rebill-checkout.js.map +1 -1
  15. package/dist/esm/index-BTZ7D7jU.js.map +1 -1
  16. package/dist/esm/loader.js +1 -1
  17. package/dist/esm/rebill-checkout.entry.js +147 -40
  18. package/dist/esm/rebill-checkout.entry.js.map +1 -1
  19. package/dist/esm/rebill-web-components-sdk.js +1 -1
  20. package/dist/rebill-web-components-sdk/p-457f405c.entry.js +2 -0
  21. package/dist/rebill-web-components-sdk/p-457f405c.entry.js.map +1 -0
  22. package/dist/rebill-web-components-sdk/p-BTZ7D7jU.js.map +1 -1
  23. package/dist/rebill-web-components-sdk/rebill-checkout.entry.esm.js.map +1 -1
  24. package/dist/rebill-web-components-sdk/rebill-web-components-sdk.esm.js +1 -1
  25. package/dist/types/components/checkout/rebill-checkout.d.ts +14 -0
  26. package/dist/types/components.d.ts +8 -0
  27. package/dist/types/utils/index.d.ts +1 -0
  28. package/dist/types/utils/resource-injector.d.ts +29 -0
  29. package/package.json +1 -1
  30. package/dist/rebill-web-components-sdk/p-4b4e2e73.entry.js +0 -2
  31. package/dist/rebill-web-components-sdk/p-4b4e2e73.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"rebill-checkout.js","sourceRoot":"","sources":["../../../src/components/checkout/rebill-checkout.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Event,\n EventEmitter,\n h,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport * as yup from 'yup';\nimport { api, Country } from '../../api';\nimport {\n CheckoutStatusE,\n CreateAPMCheckoutRequest,\n CreateAPMCheckoutResponse,\n CreateCardCheckoutRequest,\n CreateCardCheckoutResponse,\n} from '../../api/entities/checkout/types';\nimport '../../components/checkout/apm/apm-checkout/apm-checkout';\nimport '../../components/checkout/apm/boleto/boleto';\nimport '../../components/checkout/payment-button/payment-button';\nimport '../../components/checkout/processing-payment/processing-payment';\nimport '../../components/checkout/summary/summary';\nimport '../../components/renewal/user-information-static/user-information-static';\nimport '../../components/shared/organization-logo/organization-logo';\nimport { initializeI18nWithSessionLanguage } from '../../i18n/i18n.config';\nimport { I18nService } from '../../i18n/i18n.service';\nimport {\n DEFAULT_DISPLAY_CONFIG,\n DisplayConfig,\n SESSION_ITEM_TYPE_ENUM,\n SESSION_TYPE_ENUM,\n} from '../../models';\n\nimport { LOCALES_ENUM } from '../../models/enums/locales.enum';\n\nimport { PaymentMethodNameE } from '../../models/enums/payment-method-name.enum';\nimport { PAYMENT_METHOD_ENUM } from '../../models/enums/payment-methods.enum';\nimport { PaymentMessageE } from '../../models/enums/payment-status.enum';\nimport { PROVIDER_ENUM } from '../../models/enums/provider.enum';\nimport { STATUS_REQ_CHECKOUT_APM } from '../../models/enums/status-req-checkout-apm.enum';\nimport {\n onChange as sessionOnChange,\n sessionState,\n SessionStore,\n UserInformation,\n} from '../../store/session.store';\nimport { BREAKPOINT_ENUM, getBreakpoint, isBreakpointBelow } from '../../utils/breakpoint';\nimport { generateIdempotencyKey } from '../../utils/generate-idempotency-key';\nimport { GoogleMapsService } from '../../utils/google-maps.service';\nimport { AlertErrorKeys, PaymentErrorMapper } from '../../utils/payment-error-mapper';\nimport { PaymentMethodMapper } from '../../utils/payment-method-mapper';\nimport { getFieldValues, isFieldRequired } from '../../utils/required-fields-mappers';\nimport '../shared/mode-sandbox/mode-sandbox';\nimport { CardError } from './payment-method-selector/payment-method-selector';\nimport {\n AllRequiredFieldsMap,\n getAllRequiredFields,\n getRequiredFieldsForMethod,\n} from './utils/getRequiredFields';\nimport { getSessionToInitialize } from './utils/getSessionToInitialize';\n\n@Component({\n tag: 'rebill-checkout',\n styleUrl: 'rebill-checkout.css',\n shadow: false,\n})\nexport class RebillCheckout {\n // Public properties\n /**\n * The ID of the item (product or plan) to be purchased\n */\n @Prop() productId?: string;\n @Prop() planId?: string;\n\n /**\n * The organization's public key\n */\n @Prop() publicKey!: string;\n\n /**\n * Instant product data for creating checkout on-the-fly (alternative to externalSession)\n */\n @Prop() instantProduct?: string;\n\n /**\n * Instant plan data for creating checkout on-the-fly (alternative to externalSession)\n */\n @Prop() instantPlan?: string;\n\n /**\n * Display object that determines the sections to be displayed in the checkout\n */\n @Prop() display?: DisplayConfig | string;\n\n /**\n * Customer information to override default user information when sections are hidden\n * This data will be used in the submit process when provided\n */\n @Prop() customerInformation?: UserInformation | string;\n\n /**\n * One click checkout feature availability\n * @default true\n */\n @Prop() oneClickCheckout: boolean = true;\n\n /**\n * Custom CSS to be injected into the component\n * Can be a string of CSS or a URL to a CSS file\n */\n @Prop() css?: string;\n\n /**\n * Language code for the application display\n * If not provided, the language will be determined by the current session logic\n * Supported languages: 'en', 'es', 'pt'\n */\n @Prop() language?: string;\n\n /**\n * Watch for language prop changes and update i18n accordingly\n */\n @Watch('language')\n async handleLanguageChange(newLanguage: string, oldLanguage: string) {\n // Only update if the language actually changed and is not empty\n if (newLanguage && newLanguage !== oldLanguage) {\n try {\n await I18nService.changeLanguage(newLanguage);\n SessionStore.changeLanguage(newLanguage as LOCALES_ENUM);\n console.log(`[RebillCheckout] Language changed from ${oldLanguage} to ${newLanguage}`);\n } catch (error) {\n console.error('[RebillCheckout] Failed to change language:', error);\n }\n }\n }\n\n /**\n * Event when there is an error in the payment process\n */\n @Event() error: EventEmitter<any>;\n\n /**\n * Event when the payment is successful\n */\n @Event() success: EventEmitter<any>;\n\n @Event() successRedirect: EventEmitter<any>;\n\n /**\n * Event when the form data changes\n */\n @Event() formChange: EventEmitter<{\n data: any;\n isValid: boolean;\n errors?: any;\n }>;\n\n // Internal\n @Prop() checkoutLandingSession?: string;\n @Prop() externalPayment?: string;\n @State() rejectedPaymentCard: boolean = false;\n @State() rejectedPaymentAPM: boolean = false;\n @State() countries: Country[] = [];\n @State() currentPaymentMethod: PAYMENT_METHOD_ENUM;\n @State() checkoutResponse: CreateAPMCheckoutResponse | null = null;\n @State() isSubmitting: boolean = false;\n @State() isCardSubmitting: boolean = false;\n @State() isCardSuccess: boolean = false;\n @State() isAPMSubmitting: boolean = false;\n @State() isAPMSuccess: boolean = false;\n @State() storedCheckoutResults: Map<PAYMENT_METHOD_ENUM, CreateAPMCheckoutResponse> = new Map();\n @State() alertErrorKeys: AlertErrorKeys | null = null;\n @State() currentApmPaymentMethod: PaymentMethodNameE | null = null;\n @State() breakpoint: BREAKPOINT_ENUM = BREAKPOINT_ENUM.DESKTOP;\n @State() showRefreshModal: boolean = false;\n @State() cardError: CardError = {\n showCardInvalid: false,\n type: null,\n };\n @State() initialData: any = {};\n @State() allRequiredFields: AllRequiredFieldsMap = {};\n @State() currentRequiredFields: string[] = [];\n @State() customerExists: boolean = false;\n @State() showOtp: boolean = false;\n @State() otpVerified: boolean = false;\n @State() responseCheckoutCard: CreateCardCheckoutResponse | null = null;\n @State() cardMode: 'input' | 'select' | null = null;\n private formElement: any;\n private emailDebounceTimeout: number | null = null;\n private injectedStyleElement: HTMLStyleElement | null = null;\n\n /**\n * Get the display configuration, merging user config with defaults\n */\n private get displayConfig(): DisplayConfig {\n if (!this.display) {\n return DEFAULT_DISPLAY_CONFIG;\n }\n\n // If display is a string, try to parse it as JSON\n if (typeof this.display === 'string') {\n try {\n const parsed = JSON.parse(this.display);\n return { ...DEFAULT_DISPLAY_CONFIG, ...parsed };\n } catch (error) {\n console.warn('Invalid display configuration string, using defaults:', error);\n return DEFAULT_DISPLAY_CONFIG;\n }\n }\n\n // If display is an object, merge with defaults\n return { ...DEFAULT_DISPLAY_CONFIG, ...this.display };\n }\n\n /**\n * Get the customer information configuration, parsing if needed\n */\n private get parsedCustomerInformation(): UserInformation | null {\n if (!this.customerInformation) {\n return null;\n }\n\n // If customerInformation is a string, try to parse it as JSON\n if (typeof this.customerInformation === 'string') {\n try {\n return JSON.parse(this.customerInformation);\n } catch (error) {\n console.warn('Invalid customerInformation configuration string, ignoring:', error);\n return null;\n }\n }\n\n // If customerInformation is an object, return as is\n return this.customerInformation;\n }\n\n /**\n * Get filtered payment methods based on excludePaymentMethods configuration\n */\n private get filteredPaymentMethods(): PAYMENT_METHOD_ENUM[] {\n const allPaymentMethods = sessionState.data?.itemInformation?.paymentMethods || [];\n const excludedMethods = this.displayConfig.excludePaymentMethods;\n\n // If no exclusion list, return all payment methods\n if (!excludedMethods || excludedMethods.length === 0) {\n return allPaymentMethods;\n }\n\n // Filter out excluded payment methods\n return allPaymentMethods.filter(method => !excludedMethods.includes(method));\n }\n\n /**\n * Get combined user data with priority: formData > customerInformation > sessionState.userInformation\n */\n private getCombinedUserData(formData: any = {}): any {\n const sessionUserInfo = sessionState.data.userInformation;\n const customerInformation = this.parsedCustomerInformation;\n\n return {\n // Email\n 'email': formData?.email || customerInformation?.email || sessionUserInfo.email,\n\n // Full name\n 'fullName': formData?.fullName || customerInformation?.fullName || sessionUserInfo.fullName,\n\n // Phone\n 'countryCodePhoneNumber':\n formData?.countryCodePhoneNumber ||\n customerInformation?.phoneNumber?.countryCode ||\n customerInformation?.countryCode ||\n sessionUserInfo.countryCode,\n 'phoneNumber':\n formData?.phoneNumber ||\n customerInformation?.phoneNumber?.number ||\n sessionUserInfo.phoneNumber,\n // Document\n 'documentType':\n formData?.documentType || customerInformation?.documentType || sessionUserInfo.documentType,\n 'documentNumber':\n formData?.documentNumber ||\n customerInformation?.documentNumber ||\n sessionUserInfo.documentNumber,\n\n // Billing address\n 'billing-country':\n formData?.['billing-country'] ||\n customerInformation?.address?.billingAddress?.country ||\n sessionUserInfo.address?.billingAddress?.country,\n 'billing-state':\n formData?.['billing-state'] ||\n customerInformation?.address?.billingAddress?.state ||\n sessionUserInfo.address?.billingAddress?.state,\n 'billing-address':\n formData?.['billing-address'] ||\n customerInformation?.address?.billingAddress?.address ||\n sessionUserInfo.address?.billingAddress?.address,\n 'billing-city':\n formData?.['billing-city'] ||\n customerInformation?.address?.billingAddress?.city ||\n sessionUserInfo.address?.billingAddress?.city,\n 'billing-zip':\n formData?.['billing-zip'] ||\n customerInformation?.address?.billingAddress?.zip ||\n sessionUserInfo.address?.billingAddress?.zip,\n 'billing-addInformation':\n formData?.['billing-addInformation'] ||\n customerInformation?.address?.billingAddress?.addInformation ||\n sessionUserInfo.address?.billingAddress?.addInformation,\n };\n }\n\n /**\n * Inject custom CSS into the document\n */\n private injectCustomCSS() {\n if (!this.css) {\n return;\n }\n\n // Clean up any existing injected CSS\n this.cleanupInjectedCSS();\n\n // Create a unique ID for this component's CSS\n const cssId = `rebill-checkout-css-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n\n // Check if CSS is a URL or raw CSS\n if (\n this.css.startsWith('http://') ||\n this.css.startsWith('https://') ||\n this.css.startsWith('//')\n ) {\n // Load CSS from URL\n const linkElement = document.createElement('link');\n linkElement.rel = 'stylesheet';\n linkElement.href = this.css;\n linkElement.id = cssId;\n linkElement.setAttribute('data-rebill-injected', 'true');\n document.head.appendChild(linkElement);\n this.injectedStyleElement = linkElement as any; // Store reference for cleanup\n } else {\n // Inject raw CSS\n const styleElement = document.createElement('style');\n styleElement.id = cssId;\n styleElement.setAttribute('data-rebill-injected', 'true');\n styleElement.textContent = this.css;\n document.head.appendChild(styleElement);\n this.injectedStyleElement = styleElement;\n }\n }\n\n /**\n * Clean up injected CSS\n */\n private cleanupInjectedCSS() {\n if (this.injectedStyleElement) {\n try {\n this.injectedStyleElement.remove();\n } catch (error) {\n console.warn('Error removing injected CSS:', error);\n }\n this.injectedStyleElement = null;\n }\n }\n\n private timeToRedirectAPM: number = 5000;\n resizeHandler = () => {\n const newBreakpoint = getBreakpoint(window.innerWidth);\n if (newBreakpoint !== this.breakpoint) {\n this.breakpoint = newBreakpoint;\n }\n };\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.resizeHandler);\n if (this.emailDebounceTimeout) {\n clearTimeout(this.emailDebounceTimeout);\n this.emailDebounceTimeout = null;\n }\n this.cleanupInjectedCSS();\n }\n\n async componentWillLoad() {\n try {\n this.resizeHandler();\n window.addEventListener('resize', this.resizeHandler);\n\n // Inject custom CSS if provided\n this.injectCustomCSS();\n\n // Initialize language - use prop if provided, otherwise use current session logic\n if (this.language) {\n await I18nService.changeLanguage(this.language);\n } else {\n initializeI18nWithSessionLanguage();\n }\n\n const { session: sessionToInitialize, type } = await getSessionToInitialize({\n publicKey: this.publicKey,\n checkoutLandingSession: this.checkoutLandingSession,\n instantProduct: this.instantProduct,\n instantPlan: this.instantPlan,\n productId: this.productId,\n planId: this.planId,\n });\n\n SessionStore.initializeSession({\n session: sessionToInitialize,\n type,\n payment:\n typeof this.externalPayment === 'string'\n ? JSON.parse(this.externalPayment)\n : this.externalPayment,\n });\n if (sessionState.sessionRefreshed) {\n this.showRefreshModal = true;\n }\n\n GoogleMapsService.loadGoogleMapsScript();\n\n const response = await api.data.getCountries();\n this.countries = response.data;\n if (this.parsedCustomerInformation) {\n SessionStore.setUserInformation(this.parsedCustomerInformation);\n }\n\n this.initialData = this.getInitialData();\n\n this.allRequiredFields = await getAllRequiredFields();\n if (this.filteredPaymentMethods.length > 0) {\n if (\n sessionState.data.paymentStatus === PaymentMessageE.REJECTED ||\n (sessionState.data.paymentStatus === PaymentMessageE.APPROVED &&\n this.filteredPaymentMethods.includes(PAYMENT_METHOD_ENUM.BANK_TRANSFER))\n ) {\n //buscar el metodo de pago bank_transfer\n const bankTransferMethod = this.filteredPaymentMethods.find(\n method => method === PAYMENT_METHOD_ENUM.BANK_TRANSFER,\n );\n if (bankTransferMethod) {\n this.changePaymentMethod(bankTransferMethod);\n SessionStore.setPaymentMethodSelected(bankTransferMethod);\n }\n } else {\n // En caso contrario, usar el primer método disponible\n this.changePaymentMethod(this.filteredPaymentMethods[0]);\n }\n }\n if (this.oneClickCheckout) {\n api.customers\n .exists({ email: sessionState.data?.prefilledData?.email }, this.publicKey)\n .then(res => {\n this.customerExists = res.data.exists;\n });\n }\n\n this.cardMode = sessionState.cardMode;\n sessionOnChange('cardMode', () => {\n this.cardMode = sessionState.cardMode;\n });\n } catch (error) {\n console.error('Error initializing checkout:', error);\n }\n }\n\n componentWillUpdate() {\n // Re-inject CSS when css prop changes\n this.injectCustomCSS();\n }\n\n private async changePaymentMethod(paymentMethod: PAYMENT_METHOD_ENUM) {\n if (\n paymentMethod !== this.currentPaymentMethod &&\n this.filteredPaymentMethods.includes(paymentMethod)\n ) {\n // Store current checkout result if switching away from a fulfilled APM method\n // Clear any existing checkout response when changing payment methods\n if (this.checkoutResponse) {\n this.checkoutResponse = null;\n SessionStore.clearCheckoutResponse();\n }\n\n this.currentPaymentMethod = paymentMethod;\n SessionStore.setPaymentMethodSelected(paymentMethod);\n\n // Reset cardMode to 'input' when switching to non-card payment methods\n if (paymentMethod !== PAYMENT_METHOD_ENUM.CARD) {\n this.cardMode = 'input';\n SessionStore.setCardMode('input');\n }\n\n // Reset loading state when changing payment methods\n this.isSubmitting = false;\n // Map and store the APM payment method\n this.currentApmPaymentMethod = PaymentMethodMapper.mapToAPMPaymentMethod(\n paymentMethod,\n sessionState.data?.pricing?.country,\n );\n // // Restore stored result if switching back to a previously fulfilled APM method\n // Clear checkout response when switching to non-APM methods\n if (\n paymentMethod !== PAYMENT_METHOD_ENUM.CASH &&\n paymentMethod !== PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ) {\n this.checkoutResponse = null;\n SessionStore.clearCheckoutResponse();\n } else {\n // For APM methods, always clear the checkout response to force new generation\n this.checkoutResponse = null;\n SessionStore.clearCheckoutResponse();\n }\n\n this.paymentMethodSelected.emit(paymentMethod);\n try {\n // Call required fields endpoint\n this.currentRequiredFields = getRequiredFieldsForMethod(\n paymentMethod,\n this.allRequiredFields,\n ).fields;\n\n const response = await api.sessions.updateCurrentSessionPaymentMethod(\n sessionState.data.sessionId,\n {\n paymentMethodName: PaymentMethodMapper.mapToAPMPaymentMethod(\n paymentMethod,\n sessionState.data.pricing.country,\n ),\n paymentMethodType: paymentMethod,\n currency: sessionState.data.pricing.currency,\n },\n );\n SessionStore.setProviderKey(response.providerKey);\n if (\n response.providerKey === PROVIDER_ENUM.DECIDIR ||\n sessionState.data.providerKey === PROVIDER_ENUM.DECIDIR\n ) {\n const uuid = crypto.randomUUID();\n const fingerprintResponse = await api.fingerPrint.getFingerPrint(uuid);\n sessionState.deviceId = uuid;\n const script = fingerprintResponse.result.script;\n const scriptElement = document.createElement('script');\n scriptElement.innerHTML = script;\n document.body.appendChild(scriptElement);\n }\n } catch (error) {\n console.error('Failed to update payment method or get required fields:', error);\n }\n }\n }\n\n private get currentPaymentError(): boolean {\n if (this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CARD) {\n return this.rejectedPaymentCard;\n } else if (\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH ||\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ) {\n return this.rejectedPaymentAPM;\n }\n return false;\n }\n\n @Event() paymentMethodSelected: EventEmitter<PAYMENT_METHOD_ENUM>;\n\n @Listen('paymentMethodSelected')\n async handlePaymentMethodSelected(event: CustomEvent<PAYMENT_METHOD_ENUM>) {\n event.stopPropagation();\n const paymentMethod = event.detail;\n\n // Only make API call if payment method actually changed\n this.changePaymentMethod(paymentMethod);\n if (this.formElement) {\n this.formElement.resetValidation();\n }\n }\n\n private async handleSubmit(event: CustomEvent) {\n if (this.isSubmitting) {\n return;\n }\n this.rejectedPaymentCard = false;\n this.rejectedPaymentAPM = false;\n if (this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CARD) {\n this.handleSubmitCard(event);\n } else if (\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH ||\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ) {\n this.handleSubmitAPM(event);\n }\n }\n\n private handleFormChange(event: CustomEvent) {\n const formData = event.detail;\n\n // Validate the form to check if it's valid\n let isValid = true;\n let errors = {};\n\n if (this.formElement?.errors) {\n errors = this.formElement.errors;\n isValid = Object.keys(errors).length === 0;\n }\n\n this.formChange.emit({\n data: formData,\n isValid,\n errors: Object.keys(errors).length > 0 ? errors : undefined,\n });\n }\n\n private async handleSubmitCard(event: CustomEvent) {\n const formData = event.detail;\n const combinedData = this.getCombinedUserData(formData);\n\n if (!sessionState.data.cardTokenId && !sessionState.data.cardId) {\n this.cardError = {\n showCardInvalid: true,\n type: 'card_error',\n };\n return;\n }\n\n if (!sessionState.data.cardInformation && !sessionState.data.cardId) {\n this.cardError = {\n showCardInvalid: true,\n type: 'tokenization_error',\n };\n return;\n }\n this.cardError = {\n showCardInvalid: false,\n type: null,\n };\n const checkoutRequest: CreateCardCheckoutRequest = {\n transaction: {\n quantity: 1,\n ...(sessionState.data.discount.couponCode && {\n couponCode: sessionState.data.discount.couponCode,\n }),\n },\n installments: Number(\n formData.installments ||\n sessionState.data.cardInformation?.installments?.selectedInstallment?.installment,\n ),\n ...(sessionState.data.cardTokenId && {\n cardTokenId: sessionState.data.cardTokenId,\n ...(sessionState.data?.itemInformation?.type !== SESSION_ITEM_TYPE_ENUM.PLAN && {\n saveCard: sessionState.saveCard,\n }),\n }),\n ...(sessionState.data.cardId && {\n cardId: sessionState.data.cardId,\n }),\n\n ...((!this.otpVerified || this.cardMode === 'input') && {\n customer: {\n firstName: combinedData.fullName?.split(' ')[0],\n lastName: combinedData.fullName?.split(' ').slice(1).join(' '),\n email: combinedData.email,\n phone: {\n countryCode: combinedData.countryCodePhoneNumber,\n number: combinedData.phoneNumber,\n },\n },\n }),\n billingDetails: {\n address: {\n lineOne: combinedData['billing-address'],\n city: combinedData['billing-city'],\n state: combinedData['billing-state'],\n country: combinedData['billing-country'],\n zipCode: combinedData['billing-zip'],\n lineTwo: combinedData['billing-addInformation'],\n },\n identification: {\n type: combinedData.documentType,\n value: combinedData.documentNumber,\n },\n },\n customAttributes: {\n ...(sessionState.deviceId && { deviceId: sessionState.deviceId }),\n },\n ...(sessionState.metadata && { paymentMetadata: sessionState.metadata }),\n };\n\n const idempotencyKey = generateIdempotencyKey();\n\n this.isSubmitting = true;\n this.isCardSubmitting = true;\n\n try {\n const response = await api.checkout.createCardCheckoutRequest(\n sessionState.data.sessionId,\n idempotencyKey,\n checkoutRequest,\n sessionState.data.accessToken || undefined,\n );\n\n SessionStore.setCheckoutResponse(response.data);\n this.responseCheckoutCard = response.data;\n\n if (response.data.result?.status.toUpperCase() === CheckoutStatusE.APPROVED) {\n this.isCardSuccess = true;\n SessionStore.setPaymentStatus(PaymentMessageE.APPROVED);\n this.success.emit({\n paymentMethod: this.currentPaymentMethod,\n data: response.data,\n });\n sessionState.data.cardInformation.lastFour = response.data.result?.cardLastFour;\n } else {\n this.error.emit({\n paymentMethod: this.currentPaymentMethod,\n data: response.data,\n });\n SessionStore.setCheckoutResponse(response.data);\n this.rejectedPaymentCard = true;\n\n this.alertErrorKeys = {\n message:\n (response.data.result?.statusDetail.toLowerCase() as PaymentMessageE) ??\n (response.data.error?.error?.message?.toLowerCase() as PaymentMessageE),\n };\n }\n } catch (error) {\n this.error.emit({\n paymentMethod: this.currentPaymentMethod,\n data: error.data,\n });\n SessionStore.setCheckoutResponse(error.data);\n this.responseCheckoutCard = error.data;\n this.rejectedPaymentCard = true;\n\n this.alertErrorKeys = {\n message:\n (error.data?.error?.type?.toLowerCase() as PaymentMessageE) ??\n (error.data?.result?.statusDetail?.toLowerCase() as PaymentMessageE),\n };\n } finally {\n this.isSubmitting = false;\n this.isCardSubmitting = false;\n }\n }\n\n private async handleSubmitAPM(data: any) {\n // Only handle cash and transfer payments for now\n if (\n this.currentPaymentMethod !== PAYMENT_METHOD_ENUM.CASH &&\n this.currentPaymentMethod !== PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ) {\n return;\n }\n this.isSubmitting = true;\n const formData = data.detail;\n const combinedData = this.getCombinedUserData(formData);\n\n try {\n // Transform form data to match CreateAPMCheckoutRequest structure\n const billingDetails = {\n address: {\n country: combinedData['billing-country'] || '',\n state: combinedData['billing-state'] || '',\n city: combinedData['billing-city'] || '',\n zipCode: combinedData['billing-zip'] || '',\n lineOne: combinedData['billing-address'] || '',\n lineTwo: combinedData['billing-addInformation'],\n },\n\n identification: {\n type: combinedData.documentType,\n value: combinedData.documentNumber,\n },\n };\n\n // Use stored APM payment method\n const apmPaymentMethod =\n this.currentApmPaymentMethod ||\n PaymentMethodMapper.mapToAPMPaymentMethod(\n this.currentPaymentMethod,\n sessionState.data?.pricing?.country,\n );\n\n const checkoutRequest: CreateAPMCheckoutRequest = {\n transaction: {\n quantity: 1,\n ...(sessionState.data.discount.couponCode && {\n couponCode: sessionState.data.discount.couponCode,\n }),\n },\n method: apmPaymentMethod,\n billingDetails,\n redirect: {\n approved: window.location.origin + '/payment/success',\n rejected: window.location.origin + '/payment/failure',\n },\n paymentMetadata: sessionState.metadata,\n customAttributes: {\n bank: formData.bankId || sessionState.data?.bankId?.code,\n },\n };\n\n // Add customer data only for unauthenticated users\n // For authenticated users, the customer data is retrieved from the session\n const isAuthenticated = false; // TODO: Check authentication status from session\n\n if (!isAuthenticated) {\n checkoutRequest.customer = {\n firstName: combinedData.fullName?.split(' ')[0] || '',\n lastName: combinedData.fullName?.split(' ').slice(1).join(' ') || '',\n email: combinedData.email,\n phone: {\n countryCode: combinedData.countryCodePhoneNumber || '',\n number: combinedData.phoneNumber || '',\n },\n };\n }\n\n const idempotencyKey = generateIdempotencyKey();\n // Call APM checkout endpoint\n const response = await api.checkout.createAPMCheckoutRequest(\n sessionState.data.sessionId,\n idempotencyKey,\n checkoutRequest,\n );\n this.isSubmitting = false;\n this.checkoutResponse = response.data;\n this.storedCheckoutResults.set(this.currentPaymentMethod, response.data);\n\n if (response.data?.date) {\n sessionState.data.paymentDate = response.data.date;\n sessionState.createdAt = response.data.date;\n }\n if (response.data?.traceId) {\n sessionState.data.paymentReference = response.data.traceId;\n }\n } catch (error) {\n this.isSubmitting = false;\n this.checkoutResponse = error.data;\n\n this.alertErrorKeys = {\n message:\n (error.data?.error?.type?.toLowerCase() as PaymentMessageE) ??\n (error.data?.result?.statusDetail?.toLowerCase() as PaymentMessageE),\n };\n this.rejectedPaymentAPM = true;\n }\n }\n\n /**\n * Public method to submit the checkout form programmatically from external platforms\n * This method can be called when submitButton is set to false in display config\n */\n @Method()\n async submit(): Promise<void> {\n if (this.formElement && typeof this.formElement.submit === 'function') {\n this.formElement.submit();\n } else {\n // Fallback: trigger handleSubmit directly with empty event\n await this.handleSubmit({ detail: {} } as CustomEvent);\n }\n }\n\n /**\n * Listen for payment status changes from APM QR code\n */\n private handlePaymentStatusChange = (statusData: {\n status: STATUS_REQ_CHECKOUT_APM;\n isCompleted: boolean;\n data: any;\n }) => {\n if (statusData.isCompleted) {\n if (statusData.status === STATUS_REQ_CHECKOUT_APM.APPROVED) {\n SessionStore.setPaymentStatus(PaymentMessageE.APPROVED);\n this.success.emit({\n paymentMethod: this.currentPaymentMethod,\n data: this.checkoutResponse,\n });\n } else if (statusData.status === STATUS_REQ_CHECKOUT_APM.REJECTED) {\n SessionStore.setPaymentStatus(PaymentMessageE.REJECTED);\n\n this.alertErrorKeys = {\n alertTitle: PaymentMessageE.APM_ERROR_GENERIC,\n message: PaymentMessageE.APM_MESSAGE_ERROR,\n };\n }\n }\n };\n\n @Listen('input')\n async handleInputChange(event: CustomEvent<{ id: string; value: string }>) {\n if (event?.detail?.id === 'email' && this.oneClickCheckout) {\n if (this.emailDebounceTimeout) {\n clearTimeout(this.emailDebounceTimeout);\n }\n\n if (!event.detail.value || event.detail.value.trim() === '') {\n this.customerExists = false;\n SessionStore.clearCustomerIdAndToken();\n return;\n }\n\n this.emailDebounceTimeout = setTimeout(async () => {\n try {\n const response = await api.customers.exists(\n { email: sessionState.data.userInformation.email },\n this.publicKey,\n );\n this.customerExists = response.data.exists;\n } catch (error) {\n this.customerExists = false;\n }\n }, 500) as unknown as number;\n }\n }\n\n private validationSchema = {\n 'email': yup.string().when([], {\n is: () => !this.otpVerified,\n then: schema =>\n schema\n .email('validation.emailInvalid')\n .matches(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/, 'validation.emailInvalid')\n .required('validation.emailRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'fullName': yup.string().when([], {\n is: () => !this.otpVerified,\n then: schema =>\n schema\n .required('validation.fullNameRequired')\n .matches(\n /^[a-zA-ZÀ-ÿ\\u00f1\\u00d1\\s]{2,}\\s+[a-zA-ZÀ-ÿ\\u00f1\\u00d1\\s]{2,}$/,\n 'validation.fullNameInvalid',\n ),\n otherwise: schema => schema.notRequired(),\n }),\n // Asegura error en submit si el teléfono es requerido y está vacío\n 'phoneNumber': yup.string().when([], {\n is: () =>\n (isFieldRequired('phoneNumber', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.required('validation.phoneRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'isValidPhoneNumber': yup.string().when([], {\n is: () =>\n (isFieldRequired('phoneNumber', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.equals(['true'], 'validation.phoneRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-country': yup.string().when([], {\n is: () =>\n (isFieldRequired('billing-country', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.required('validation.countryRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-state': yup.string().when([], {\n is: () =>\n (isFieldRequired('billing-state', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.required('validation.stateRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-address': yup.string().when([], {\n is: () =>\n (isFieldRequired('billing-address', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.required('validation.addressRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-city': yup.string().when([], {\n is: () =>\n (isFieldRequired('billing-city', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.required('validation.cityRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-zip': yup.string().when([], {\n is: () =>\n (isFieldRequired('billing-zip', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.required('validation.zipRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'bankId': yup.string().when([], {\n is: () => isFieldRequired('bankId', this.currentRequiredFields),\n then: schema => schema.required('validation.bankRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'installments': yup.string().when([], {\n is: () =>\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CARD &&\n sessionState.data.cardInformation.installments.isAvailableInstallments &&\n sessionState.data.cardInformation?.installments?.installments.length > 0 &&\n sessionState.data.itemInformation.type !== SESSION_ITEM_TYPE_ENUM.PLAN,\n then: schema => schema.required('validation.installmentsRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'documentType': yup.string().when([], {\n is: () =>\n (isFieldRequired('documentType', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.required('validation.documentTypeRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'documentNumber': yup.string().when([], {\n is: () =>\n (isFieldRequired('documentNumber', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => {\n const baseSchema = schema\n .required('validation.documentNumberRequired')\n .min(7, 'validation.documentInvalid');\n\n // For BR checkout, validate that document number contains only digits\n if (sessionState.data?.pricing?.country === 'BR') {\n return baseSchema.test('numeric-only', 'validation.documentNumberNumericOnly', value => {\n if (!value) return true; // Let required validation handle empty values\n return /^\\d+$/.test(value);\n });\n }\n\n return baseSchema;\n },\n otherwise: schema => schema.notRequired(),\n }),\n };\n\n private getInitialData = () => {\n return {\n 'email': sessionState.data.userInformation.email || '',\n 'fullName': sessionState.data.userInformation.fullName || '',\n 'phoneNumber': sessionState.data.userInformation.phoneNumber?.number || '',\n 'countryCodePhoneNumber': sessionState.data.userInformation.countryCode || '',\n 'documentType': '',\n 'documentNumber': '',\n 'billing-country': sessionState.data.userInformation.address?.billingAddress?.country || '',\n 'billing-state': sessionState.data.userInformation?.address?.billingAddress?.state || '',\n 'billing-address': sessionState.data.userInformation?.address?.billingAddress?.address || '',\n 'billing-city': sessionState.data.userInformation?.address?.billingAddress?.city || '',\n 'billing-zip': sessionState.data.userInformation?.address?.billingAddress?.zip || '',\n 'bankId': sessionState.data.bankId?.code || '',\n 'card': '',\n 'installments':\n sessionState.data.cardInformation?.installments?.selectedInstallment?.installment?.toString() ||\n '',\n };\n };\n\n private hasPrefilledAddress = () => {\n const billingFields = [\n 'billing-country',\n 'billing-state',\n 'billing-address',\n 'billing-city',\n 'billing-zip',\n ];\n return billingFields.some(key => {\n const value = this.initialData[key];\n return value && value.trim() !== '';\n });\n };\n private get isQrCodeVisible(): boolean {\n return !!this.checkoutResponse?.result?.data?.qrCode;\n }\n private get isBankTransferVisible(): boolean {\n return (\n !!this.checkoutResponse?.result?.data?.account &&\n !!this.checkoutResponse?.result?.data?.bankName &&\n !!this.checkoutResponse?.result?.data?.reference\n );\n }\n private get isBoletoVisible(): boolean {\n return (\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH &&\n sessionState.data?.pricing?.country === 'BR' &&\n !!this.checkoutResponse?.result?.data?.barcode\n );\n }\n private isPaymentApproved = (): boolean => {\n if (sessionState.data.paymentStatus === PaymentMessageE.APPROVED) {\n return true;\n }\n\n return false;\n };\n\n @Listen('onRebillAccountClick')\n handleRebillAccountClick(event: CustomEvent<boolean>) {\n this.showOtp = event.detail;\n }\n\n @Listen('returnForm')\n handleReturnForm(event: CustomEvent<boolean>) {\n this.showOtp = event.detail;\n SessionStore.clearCustomerIdAndToken();\n }\n\n @Listen('signOut')\n handleSignOut() {\n this.showOtp = false;\n this.otpVerified = false;\n if (!sessionState?.data?.prefilledData?.email) {\n this.customerExists = false;\n }\n SessionStore.clearCustomerIdAndToken();\n SessionStore.clearUserInformation();\n this.cardError = {\n showCardInvalid: false,\n type: null,\n };\n this.alertErrorKeys = null;\n this.rejectedPaymentCard = false;\n this.rejectedPaymentAPM = false;\n }\n\n @Listen('codeVerified')\n handleCodeVerified() {\n this.otpVerified = true;\n this.showOtp = false;\n\n this.rejectedPaymentCard = false;\n this.alertErrorKeys = null;\n this.cardError = {\n showCardInvalid: false,\n type: null,\n };\n if (this.formElement) {\n this.formElement.resetValidation();\n }\n }\n private isPaymentRejected(): boolean {\n return (\n sessionState.data.paymentStatus === PaymentMessageE.REJECTED &&\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER\n );\n }\n\n render() {\n const countryOptions = this.countries.map(country => ({\n label: country.country,\n value: country.isoCountryCode,\n }));\n\n const renderRebillSummary = (props: any = {}) => (\n <rebill-summary\n totalAmount={sessionState.data.pricing.total}\n currency={sessionState.data.pricing.currency}\n itemTitle={sessionState._session?.getTitle()}\n itemDescription={sessionState._session?.getDescription()}\n itemAmount={sessionState.data.pricing.subtotal}\n subtotal={sessionState.data.pricing.subtotal}\n allowCoupon={sessionState._session?.getAllowCoupon(this.displayConfig)}\n currentBreakpoint={this.breakpoint}\n planFrequency={sessionState._session?.getPlanFrequency()}\n planFrequencyCount={sessionState._session?.getPlanFrequencyCount()}\n discountType={sessionState.data.discount.discountType}\n discountedPercentage={sessionState.data.discount.discountedPercentage}\n discountDuration={sessionState.data.discount.discountDuration}\n discountAmount={sessionState.data.discount.discountAmount}\n {...props}\n />\n );\n\n return (\n sessionState.isInitialized && (\n <>\n {this.showRefreshModal && <rebill-modal-overlay />}\n {this.displayConfig.processingPayment && (\n <rebill-processing-payment\n style={{ display: this.isCardSubmitting ? 'block' : 'none' }}\n />\n )}\n {this.displayConfig.successPage &&\n this.isPaymentApproved() &&\n sessionState.isInitialized ? (\n <success-page\n typePaymentMethod={sessionState.data.paymentMethodSelected}\n paymentMethodName={PaymentMethodMapper.mapToAPMPaymentMethod(\n sessionState.data.paymentMethodSelected ||\n (sessionState.data.payment as any)?.paymentMethodType,\n sessionState.data?.pricing?.country,\n )}\n country={sessionState.data?.pricing?.country}\n bank={\n (sessionState.data.payment as any)?.paymentMethodMetadata?.bank ||\n (sessionState.data.payment as any)?.paymentMethodMetadata?.bank\n }\n cardLastFour={\n this.responseCheckoutCard?.result?.cardLastFour ||\n sessionState.data.cardInformation?.lastFour\n }\n paymentDate={\n sessionState.data.paymentDate ||\n this.responseCheckoutCard?.date ||\n (sessionState.data.payment as any)?.createdAt ||\n this.checkoutResponse?.result?.data?.createdAt\n }\n referenceNumber={\n sessionState.data.paymentReference ||\n (sessionState.data.payment as any)?.traceId ||\n this.responseCheckoutCard?.traceId\n }\n onSuccessRedirect={payload => {\n this.successRedirect.emit(payload.detail);\n }}\n trialPeriodDays={sessionState.data?.itemInformation?.trial?.trialPeriodDays}\n debitDay={sessionState.data?.itemInformation?.debitDay}\n planAmount={sessionState.data?.pricing?.planAmount}\n />\n ) : (\n <>\n {/* Modo sandbox para mobile - posicionado arriba del logo */}\n {this.displayConfig.sandboxMode &&\n sessionState.isSandbox &&\n sessionState.data.sessionType === SESSION_TYPE_ENUM.CHECKOUT_LANDING &&\n isBreakpointBelow(this.breakpoint, BREAKPOINT_ENUM.DESKTOP) && (\n <div\n class=\"mode-sandbox-mobile-container\"\n style={{\n display: this.isCardSubmitting || this.isCardSuccess ? 'none' : 'block',\n }}\n >\n <rebill-mode-sandbox-mobile />\n </div>\n )}\n <rebill-checkout-form\n ref={el => (this.formElement = el)}\n style={{ display: this.isCardSubmitting || this.isCardSuccess ? 'none' : 'block' }}\n validationSchema={this.validationSchema}\n initialData={this.initialData}\n onSubmit={(args: any) => this.handleSubmit(args)}\n onChange={(args: any) => this.handleFormChange(args)}\n renderForm={({ submit, formData, errors }) => {\n const isAPMCheckoutVisible =\n !this.isCardSuccess &&\n this.checkoutResponse?.result &&\n (this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH ||\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER);\n return (\n <div\n class={`rebill-checkout ${!this.displayConfig.checkoutSummary ? 'full-width-layout' : ''}`}\n >\n <div class=\"left-section\">\n <div class=\"left-section-container\">\n {this.displayConfig.logo && (\n <organization-logo organization={sessionState.data.organization} />\n )}\n <div\n class=\"otp-container\"\n style={{ display: this.showOtp ? 'block' : 'none' }}\n >\n <otp-component />\n </div>\n <div style={{ display: this.showOtp ? 'none' : 'block' }}>\n <div class=\"checkout-form-section\">\n {this.displayConfig.checkoutSummary && (\n <div\n class=\"summary-mobile-tablet\"\n style={{\n display: isBreakpointBelow(\n this.breakpoint,\n BREAKPOINT_ENUM.DESKTOP,\n )\n ? 'block'\n : 'none',\n }}\n >\n {renderRebillSummary({\n displayedComponents: [\n 'totalAmount',\n 'discount',\n 'timelineFreeTrial',\n 'timelineDebitDay',\n 'itemDetails',\n ],\n })}\n </div>\n )}\n {!this.otpVerified && this.displayConfig.customerInformation && (\n <user-information\n customerExists={this.customerExists}\n disabled={this.isSubmitting}\n errors={{\n email: errors.email,\n fullName: errors.fullName,\n }}\n />\n )}\n {this.otpVerified && this.displayConfig.customerInformation && (\n <user-information-static\n variant=\"otp\"\n userInfo={{\n customerName:\n sessionState.data.userInformation.fullName?.split(' ')[0],\n customerEmail: sessionState.data.userInformation.email,\n }}\n />\n )}\n <div\n style={{ display: 'flex', flexDirection: 'column', gap: '16px' }}\n >\n <payment-method-selector\n enabledPaymentMethods={this.filteredPaymentMethods}\n defaultSelected={this.currentPaymentMethod}\n disabled={this.isSubmitting}\n errorComponent={{\n showErrorComponent:\n this.displayConfig.errorMessage &&\n (this.currentPaymentError || this.isPaymentRejected()),\n alertTitle: PaymentErrorMapper.getErrorTitle(\n this.currentPaymentMethod,\n sessionState.data?.pricing?.country || '',\n this.alertErrorKeys?.alertTitle,\n ),\n message: PaymentErrorMapper.getErrorMessage(\n this.alertErrorKeys?.message,\n this.currentPaymentMethod,\n sessionState.data?.pricing?.country,\n ),\n }}\n country={sessionState.data?.pricing?.country}\n installmentsError={errors.installments}\n showDocument={\n (!this.otpVerified ||\n (this.otpVerified && this.cardMode === 'input')) &&\n !isAPMCheckoutVisible &&\n !this.isQrCodeVisible &&\n (isFieldRequired(\n 'documentNumber',\n this.currentRequiredFields,\n ) ||\n isFieldRequired('documentType', this.currentRequiredFields))\n }\n documentTypeError={errors.documentType}\n documentNumberError={errors.documentNumber}\n cardError={this.cardError}\n customCSS={this.css}\n />\n {!isAPMCheckoutVisible &&\n (() => {\n const isBankRequired = isFieldRequired(\n 'bankId',\n this.currentRequiredFields,\n );\n\n return isBankRequired;\n })() && (\n <div class=\"animated-component fade-in\">\n <rebill-bank-selector\n banks={\n getFieldValues(\n 'bank',\n this.allRequiredFields[this.currentPaymentMethod]\n .original,\n ) || []\n }\n defaultSelectedBankId={formData.bankId || ''}\n error={errors?.bankId}\n disabled={this.isSubmitting}\n />\n </div>\n )}\n </div>\n {!isAPMCheckoutVisible &&\n (!this.otpVerified || this.cardMode === 'input') && (\n <>\n {this.displayConfig.billingAddress &&\n (isFieldRequired(\n 'billing-country',\n this.currentRequiredFields,\n ) ||\n isFieldRequired(\n 'billing-state',\n this.currentRequiredFields,\n ) ||\n isFieldRequired(\n 'billing-address',\n this.currentRequiredFields,\n ) ||\n isFieldRequired(\n 'billing-city',\n this.currentRequiredFields,\n ) ||\n isFieldRequired(\n 'billing-zip',\n this.currentRequiredFields,\n )) && (\n <div class=\"animated-component slide-in\">\n <rebill-address\n disabled={this.isSubmitting}\n countryOptions={countryOptions}\n billingView={(() => {\n // If useAddressSearch is explicitly false, always show form\n if (\n this.displayConfig.useAddressSearch !== undefined &&\n this.displayConfig.useAddressSearch === false\n ) {\n return 'form';\n }\n // Otherwise, use default behavior: form if prefilled, search otherwise\n return this.hasPrefilledAddress() ? 'form' : 'search';\n })()}\n errors={{\n 'billing-country': errors['billing-country'],\n 'billing-state': errors['billing-state'],\n 'billing-address': errors['billing-address'],\n 'billing-city': errors['billing-city'],\n 'billing-zip': errors['billing-zip'],\n }}\n />\n </div>\n )}\n {this.displayConfig.customerInformation &&\n isFieldRequired(\n 'phoneNumber',\n this.currentRequiredFields,\n ) && (\n <div class=\"animated-component fade-in\">\n <user-information-phone\n disabled={this.isSubmitting}\n error={\n errors?.phoneNumber || errors?.isValidPhoneNumber\n }\n countryCode={\n sessionState.data.userInformation?.countryCode ||\n sessionState.data.country\n }\n />\n </div>\n )}\n </>\n )}\n {/* Show APM checkout response after successful payment submission */}\n {isAPMCheckoutVisible &&\n (() => {\n const isBoleto =\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH &&\n sessionState.data?.pricing?.country === 'BR' &&\n this.checkoutResponse?.result?.data?.barcode;\n\n return (\n <apm-checkout\n paymentMethod={this.currentPaymentMethod}\n barcode={\n isBoleto\n ? this.checkoutResponse?.result?.data?.barcode\n : undefined\n }\n referenceId={\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH &&\n !isBoleto\n ? this.checkoutResponse?.result?.data?.referenceId\n : undefined\n }\n qrCodeData={\n this.currentPaymentMethod ===\n PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ? this.checkoutResponse?.result?.data?.qrCode\n : undefined\n }\n code={\n this.currentPaymentMethod ===\n PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ? this.checkoutResponse?.result?.data?.code\n : undefined\n }\n checkoutRequestId={\n this.checkoutResponse?.result?.checkoutRequestId\n }\n providerName={sessionState.data.providerKey}\n expirationDate={(() => {\n const expirationDate = new Date();\n expirationDate.setDate(expirationDate.getDate() + 30);\n return expirationDate.toISOString();\n })()}\n onPaymentStatusChange={event =>\n this.handlePaymentStatusChange(event.detail)\n }\n country={sessionState.data?.pricing?.country}\n redirectUrl={this.checkoutResponse?.result?.data?.url}\n timeToRedirect={this.timeToRedirectAPM}\n bearerToken={this.checkoutResponse?.result?.data?.bearerToken}\n bankTransferData={\n this.checkoutResponse?.result?.data?.account &&\n this.checkoutResponse?.result?.data?.bankName &&\n this.checkoutResponse?.result?.data?.reference\n ? {\n account: this.checkoutResponse.result.data.account,\n bankName: this.checkoutResponse.result.data.bankName,\n reference:\n this.checkoutResponse.result.data.reference,\n }\n : undefined\n }\n />\n );\n })()}\n {this.displayConfig.checkoutSummary && (\n <div\n class=\"summary-price-details\"\n style={{\n display: isBreakpointBelow(\n this.breakpoint,\n BREAKPOINT_ENUM.DESKTOP,\n )\n ? 'block'\n : 'none',\n }}\n >\n {renderRebillSummary({\n displayedComponents: ['priceDetails'],\n })}\n </div>\n )}\n {this.displayConfig.submitButton &&\n !(\n isAPMCheckoutVisible &&\n (this.isQrCodeVisible ||\n this.isBankTransferVisible ||\n this.isBoletoVisible)\n ) && (\n <div class=\"payment-button-container\">\n <payment-button\n paymentMethod={this.currentPaymentMethod}\n isLoading={this.isSubmitting}\n trialPeriodDays={\n sessionState.data?.itemInformation?.trial?.trialPeriodDays\n }\n onSubmit={() => {\n submit();\n }}\n redirectUrl={!!this.checkoutResponse?.result?.data?.url}\n timeToRedirect={this.timeToRedirectAPM}\n isDisabled={sessionState.data.fetchingInstallments}\n country={sessionState.data?.pricing?.country}\n />\n <rebill-alert\n type=\"secure\"\n variant=\"variant-secure\"\n icon=\"lock-outline\"\n message={I18nService.translate('otp.secureMessage')}\n />\n </div>\n )}\n </div>\n {this.displayConfig.sandboxMode &&\n sessionState.isSandbox &&\n sessionState.data.sessionType ===\n SESSION_TYPE_ENUM.CHECKOUT_LANDING &&\n !isBreakpointBelow(this.breakpoint, BREAKPOINT_ENUM.DESKTOP) && (\n <rebill-mode-sandbox />\n )}\n </div>\n {this.displayConfig.footer && (\n <rebill-footer\n style={{\n marginTop: isBreakpointBelow(\n this.breakpoint,\n BREAKPOINT_ENUM.DESKTOP,\n )\n ? '24px'\n : 'auto',\n }}\n />\n )}\n </div>\n </div>\n\n {this.displayConfig.checkoutSummary && (\n <div class=\"right-section-checkout\">\n <div class=\"checkout-summary-section\">\n <div\n class=\"summary-desktop\"\n style={{\n display: !isBreakpointBelow(\n this.breakpoint,\n BREAKPOINT_ENUM.DESKTOP,\n )\n ? 'block'\n : 'none',\n }}\n >\n {renderRebillSummary()}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n }}\n />\n </>\n )}\n </>\n )\n );\n }\n}\n"]}
1
+ {"version":3,"file":"rebill-checkout.js","sourceRoot":"","sources":["../../../src/components/checkout/rebill-checkout.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Event,\n EventEmitter,\n h,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport * as yup from 'yup';\nimport { api, Country } from '../../api';\nimport {\n CheckoutStatusE,\n CreateAPMCheckoutRequest,\n CreateAPMCheckoutResponse,\n CreateCardCheckoutRequest,\n CreateCardCheckoutResponse,\n} from '../../api/entities/checkout/types';\nimport '../../components/checkout/apm/apm-checkout/apm-checkout';\nimport '../../components/checkout/apm/boleto/boleto';\nimport '../../components/checkout/payment-button/payment-button';\nimport '../../components/checkout/processing-payment/processing-payment';\nimport '../../components/checkout/summary/summary';\nimport '../../components/renewal/user-information-static/user-information-static';\nimport '../../components/shared/organization-logo/organization-logo';\nimport { initializeI18nWithSessionLanguage } from '../../i18n/i18n.config';\nimport { I18nService } from '../../i18n/i18n.service';\nimport {\n DEFAULT_DISPLAY_CONFIG,\n DisplayConfig,\n SESSION_ITEM_TYPE_ENUM,\n SESSION_TYPE_ENUM,\n} from '../../models';\n\nimport { LOCALES_ENUM } from '../../models/enums/locales.enum';\n\nimport { PaymentMethodNameE } from '../../models/enums/payment-method-name.enum';\nimport { PAYMENT_METHOD_ENUM } from '../../models/enums/payment-methods.enum';\nimport { PaymentMessageE } from '../../models/enums/payment-status.enum';\nimport { PROVIDER_ENUM } from '../../models/enums/provider.enum';\nimport { STATUS_REQ_CHECKOUT_APM } from '../../models/enums/status-req-checkout-apm.enum';\nimport {\n onChange as sessionOnChange,\n sessionState,\n SessionStore,\n UserInformation,\n} from '../../store/session.store';\nimport { BREAKPOINT_ENUM, getBreakpoint, isBreakpointBelow } from '../../utils/breakpoint';\nimport { generateIdempotencyKey } from '../../utils/generate-idempotency-key';\nimport { GoogleMapsService } from '../../utils/google-maps.service';\nimport { AlertErrorKeys, PaymentErrorMapper } from '../../utils/payment-error-mapper';\nimport { PaymentMethodMapper } from '../../utils/payment-method-mapper';\nimport { getFieldValues, isFieldRequired } from '../../utils/required-fields-mappers';\nimport { cleanupCSS, cleanupJS, injectCSS, injectJS } from '../../utils/resource-injector';\nimport '../shared/mode-sandbox/mode-sandbox';\nimport { CardError } from './payment-method-selector/payment-method-selector';\nimport {\n AllRequiredFieldsMap,\n getAllRequiredFields,\n getRequiredFieldsForMethod,\n} from './utils/getRequiredFields';\nimport { getSessionToInitialize } from './utils/getSessionToInitialize';\n\n@Component({\n tag: 'rebill-checkout',\n styleUrl: 'rebill-checkout.css',\n shadow: false,\n})\nexport class RebillCheckout {\n // Public properties\n /**\n * The ID of the item (product or plan) to be purchased\n */\n @Prop() productId?: string;\n @Prop() planId?: string;\n\n /**\n * The organization's public key\n */\n @Prop() publicKey!: string;\n\n /**\n * Instant product data for creating checkout on-the-fly (alternative to externalSession)\n */\n @Prop() instantProduct?: string;\n\n /**\n * Instant plan data for creating checkout on-the-fly (alternative to externalSession)\n */\n @Prop() instantPlan?: string;\n\n /**\n * Display object that determines the sections to be displayed in the checkout\n */\n @Prop() display?: DisplayConfig | string;\n\n /**\n * Customer information to override default user information when sections are hidden\n * This data will be used in the submit process when provided\n */\n @Prop() customerInformation?: UserInformation | string;\n\n /**\n * One click checkout feature availability\n * @default true\n */\n @Prop() oneClickCheckout: boolean = true;\n\n /**\n * Custom CSS to be injected into the component\n * Can be a string of CSS or a URL to a CSS file\n */\n @Prop() css?: string;\n\n /**\n * Custom JavaScript to be injected into the component\n * Can be a string of JavaScript code or a URL to a JS file\n */\n @Prop() js?: string;\n\n /**\n * Language code for the application display\n * If not provided, the language will be determined by the current session logic\n * Supported languages: 'en', 'es', 'pt'\n */\n @Prop() language?: string;\n\n /**\n * Watch for language prop changes and update i18n accordingly\n */\n @Watch('language')\n async handleLanguageChange(newLanguage: string, oldLanguage: string) {\n // Only update if the language actually changed and is not empty\n if (newLanguage && newLanguage !== oldLanguage) {\n try {\n await I18nService.changeLanguage(newLanguage);\n SessionStore.changeLanguage(newLanguage as LOCALES_ENUM);\n console.log(`[RebillCheckout] Language changed from ${oldLanguage} to ${newLanguage}`);\n } catch (error) {\n console.error('[RebillCheckout] Failed to change language:', error);\n }\n }\n }\n\n /**\n * Event when there is an error in the payment process\n */\n @Event() error: EventEmitter<any>;\n\n /**\n * Event when the payment is successful\n */\n @Event() success: EventEmitter<any>;\n\n @Event() successRedirect: EventEmitter<any>;\n\n /**\n * Event when the form data changes\n */\n @Event() formChange: EventEmitter<{\n data: any;\n isValid: boolean;\n errors?: any;\n }>;\n\n // Internal\n @Prop() checkoutLandingSession?: string;\n @Prop() externalPayment?: string;\n @State() rejectedPaymentCard: boolean = false;\n @State() rejectedPaymentAPM: boolean = false;\n @State() countries: Country[] = [];\n @State() currentPaymentMethod: PAYMENT_METHOD_ENUM;\n @State() checkoutResponse: CreateAPMCheckoutResponse | null = null;\n @State() isSubmitting: boolean = false;\n @State() isCardSubmitting: boolean = false;\n @State() isCardSuccess: boolean = false;\n @State() isAPMSubmitting: boolean = false;\n @State() isAPMSuccess: boolean = false;\n @State() storedCheckoutResults: Map<PAYMENT_METHOD_ENUM, CreateAPMCheckoutResponse> = new Map();\n @State() alertErrorKeys: AlertErrorKeys | null = null;\n @State() currentApmPaymentMethod: PaymentMethodNameE | null = null;\n @State() breakpoint: BREAKPOINT_ENUM = BREAKPOINT_ENUM.DESKTOP;\n @State() showRefreshModal: boolean = false;\n @State() cardError: CardError = {\n showCardInvalid: false,\n type: null,\n };\n @State() initialData: any = {};\n @State() allRequiredFields: AllRequiredFieldsMap = {};\n @State() currentRequiredFields: string[] = [];\n @State() customerExists: boolean = false;\n @State() showOtp: boolean = false;\n @State() otpVerified: boolean = false;\n @State() responseCheckoutCard: CreateCardCheckoutResponse | null = null;\n @State() cardMode: 'input' | 'select' | null = null;\n private formElement: any;\n private emailDebounceTimeout: number | null = null;\n private injectedStyleElement: HTMLStyleElement | HTMLLinkElement | null = null;\n private injectedScriptElement: HTMLScriptElement | null = null;\n\n /**\n * Get the display configuration, merging user config with defaults\n */\n private get displayConfig(): DisplayConfig {\n if (!this.display) {\n return DEFAULT_DISPLAY_CONFIG;\n }\n\n // If display is a string, try to parse it as JSON\n if (typeof this.display === 'string') {\n try {\n const parsed = JSON.parse(this.display);\n return { ...DEFAULT_DISPLAY_CONFIG, ...parsed };\n } catch (error) {\n console.warn('Invalid display configuration string, using defaults:', error);\n return DEFAULT_DISPLAY_CONFIG;\n }\n }\n\n // If display is an object, merge with defaults\n return { ...DEFAULT_DISPLAY_CONFIG, ...this.display };\n }\n\n /**\n * Get the customer information configuration, parsing if needed\n */\n private get parsedCustomerInformation(): UserInformation | null {\n if (!this.customerInformation) {\n return null;\n }\n\n // If customerInformation is a string, try to parse it as JSON\n if (typeof this.customerInformation === 'string') {\n try {\n return JSON.parse(this.customerInformation);\n } catch (error) {\n console.warn('Invalid customerInformation configuration string, ignoring:', error);\n return null;\n }\n }\n\n // If customerInformation is an object, return as is\n return this.customerInformation;\n }\n\n /**\n * Get filtered payment methods based on excludePaymentMethods configuration\n */\n private get filteredPaymentMethods(): PAYMENT_METHOD_ENUM[] {\n const allPaymentMethods = sessionState.data?.itemInformation?.paymentMethods || [];\n const excludedMethods = this.displayConfig.excludePaymentMethods;\n\n // If no exclusion list, return all payment methods\n if (!excludedMethods || excludedMethods.length === 0) {\n return allPaymentMethods;\n }\n\n // Filter out excluded payment methods\n return allPaymentMethods.filter(method => !excludedMethods.includes(method));\n }\n\n /**\n * Get combined user data with priority: formData > customerInformation > sessionState.userInformation\n */\n private getCombinedUserData(formData: any = {}): any {\n const sessionUserInfo = sessionState.data.userInformation;\n const customerInformation = this.parsedCustomerInformation;\n\n return {\n // Email\n 'email': formData?.email || customerInformation?.email || sessionUserInfo.email,\n\n // Full name\n 'fullName': formData?.fullName || customerInformation?.fullName || sessionUserInfo.fullName,\n\n // Phone\n 'countryCodePhoneNumber':\n formData?.countryCodePhoneNumber ||\n customerInformation?.phoneNumber?.countryCode ||\n customerInformation?.countryCode ||\n sessionUserInfo.countryCode,\n 'phoneNumber':\n formData?.phoneNumber ||\n customerInformation?.phoneNumber?.number ||\n sessionUserInfo.phoneNumber,\n // Document\n 'documentType':\n formData?.documentType || customerInformation?.documentType || sessionUserInfo.documentType,\n 'documentNumber':\n formData?.documentNumber ||\n customerInformation?.documentNumber ||\n sessionUserInfo.documentNumber,\n\n // Billing address\n 'billing-country':\n formData?.['billing-country'] ||\n customerInformation?.address?.billingAddress?.country ||\n sessionUserInfo.address?.billingAddress?.country,\n 'billing-state':\n formData?.['billing-state'] ||\n customerInformation?.address?.billingAddress?.state ||\n sessionUserInfo.address?.billingAddress?.state,\n 'billing-address':\n formData?.['billing-address'] ||\n customerInformation?.address?.billingAddress?.address ||\n sessionUserInfo.address?.billingAddress?.address,\n 'billing-city':\n formData?.['billing-city'] ||\n customerInformation?.address?.billingAddress?.city ||\n sessionUserInfo.address?.billingAddress?.city,\n 'billing-zip':\n formData?.['billing-zip'] ||\n customerInformation?.address?.billingAddress?.zip ||\n sessionUserInfo.address?.billingAddress?.zip,\n 'billing-addInformation':\n formData?.['billing-addInformation'] ||\n customerInformation?.address?.billingAddress?.addInformation ||\n sessionUserInfo.address?.billingAddress?.addInformation,\n };\n }\n\n /**\n * Inject custom CSS into the document\n */\n private injectCustomCSS() {\n this.injectedStyleElement = injectCSS(this.css, this.injectedStyleElement);\n }\n\n /**\n * Clean up injected CSS\n */\n private cleanupInjectedCSS() {\n cleanupCSS(this.injectedStyleElement);\n this.injectedStyleElement = null;\n }\n\n /**\n * Inject custom JavaScript into the document\n */\n private injectCustomJS() {\n this.injectedScriptElement = injectJS(this.js, this.injectedScriptElement);\n }\n\n /**\n * Clean up injected JavaScript\n */\n private cleanupInjectedJS() {\n cleanupJS(this.injectedScriptElement);\n this.injectedScriptElement = null;\n }\n\n private timeToRedirectAPM: number = 5000;\n resizeHandler = () => {\n const newBreakpoint = getBreakpoint(window.innerWidth);\n if (newBreakpoint !== this.breakpoint) {\n this.breakpoint = newBreakpoint;\n }\n };\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.resizeHandler);\n if (this.emailDebounceTimeout) {\n clearTimeout(this.emailDebounceTimeout);\n this.emailDebounceTimeout = null;\n }\n this.cleanupInjectedCSS();\n this.cleanupInjectedJS();\n }\n\n async componentWillLoad() {\n try {\n this.resizeHandler();\n window.addEventListener('resize', this.resizeHandler);\n\n // Inject custom CSS if provided\n this.injectCustomCSS();\n\n // Inject custom JS if provided\n this.injectCustomJS();\n\n // Initialize language - use prop if provided, otherwise use current session logic\n if (this.language) {\n await I18nService.changeLanguage(this.language);\n } else {\n initializeI18nWithSessionLanguage();\n }\n\n const { session: sessionToInitialize, type } = await getSessionToInitialize({\n publicKey: this.publicKey,\n checkoutLandingSession: this.checkoutLandingSession,\n instantProduct: this.instantProduct,\n instantPlan: this.instantPlan,\n productId: this.productId,\n planId: this.planId,\n });\n\n SessionStore.initializeSession({\n session: sessionToInitialize,\n type,\n payment:\n typeof this.externalPayment === 'string'\n ? JSON.parse(this.externalPayment)\n : this.externalPayment,\n });\n if (sessionState.sessionRefreshed) {\n this.showRefreshModal = true;\n }\n\n GoogleMapsService.loadGoogleMapsScript();\n\n const response = await api.data.getCountries();\n this.countries = response.data;\n if (this.parsedCustomerInformation) {\n SessionStore.setUserInformation(this.parsedCustomerInformation);\n }\n\n this.initialData = this.getInitialData();\n\n this.allRequiredFields = await getAllRequiredFields();\n if (this.filteredPaymentMethods.length > 0) {\n if (\n sessionState.data.paymentStatus === PaymentMessageE.REJECTED ||\n (sessionState.data.paymentStatus === PaymentMessageE.APPROVED &&\n this.filteredPaymentMethods.includes(PAYMENT_METHOD_ENUM.BANK_TRANSFER))\n ) {\n //buscar el metodo de pago bank_transfer\n const bankTransferMethod = this.filteredPaymentMethods.find(\n method => method === PAYMENT_METHOD_ENUM.BANK_TRANSFER,\n );\n if (bankTransferMethod) {\n this.changePaymentMethod(bankTransferMethod);\n SessionStore.setPaymentMethodSelected(bankTransferMethod);\n }\n } else {\n // En caso contrario, usar el primer método disponible\n this.changePaymentMethod(this.filteredPaymentMethods[0]);\n }\n }\n if (this.oneClickCheckout) {\n api.customers\n .exists({ email: sessionState.data?.prefilledData?.email }, this.publicKey)\n .then(res => {\n this.customerExists = res.data.exists;\n });\n }\n\n this.cardMode = sessionState.cardMode;\n sessionOnChange('cardMode', () => {\n this.cardMode = sessionState.cardMode;\n });\n } catch (error) {\n console.error('Error initializing checkout:', error);\n }\n }\n\n componentWillUpdate() {\n // Re-inject CSS when css prop changes\n this.injectCustomCSS();\n // Re-inject JS when js prop changes\n this.injectCustomJS();\n }\n\n private async changePaymentMethod(paymentMethod: PAYMENT_METHOD_ENUM) {\n if (\n paymentMethod !== this.currentPaymentMethod &&\n this.filteredPaymentMethods.includes(paymentMethod)\n ) {\n // Store current checkout result if switching away from a fulfilled APM method\n // Clear any existing checkout response when changing payment methods\n if (this.checkoutResponse) {\n this.checkoutResponse = null;\n SessionStore.clearCheckoutResponse();\n }\n\n this.currentPaymentMethod = paymentMethod;\n SessionStore.setPaymentMethodSelected(paymentMethod);\n\n // Reset cardMode to 'input' when switching to non-card payment methods\n if (paymentMethod !== PAYMENT_METHOD_ENUM.CARD) {\n this.cardMode = 'input';\n SessionStore.setCardMode('input');\n }\n\n // Reset loading state when changing payment methods\n this.isSubmitting = false;\n // Map and store the APM payment method\n this.currentApmPaymentMethod = PaymentMethodMapper.mapToAPMPaymentMethod(\n paymentMethod,\n sessionState.data?.pricing?.country,\n );\n // // Restore stored result if switching back to a previously fulfilled APM method\n // Clear checkout response when switching to non-APM methods\n if (\n paymentMethod !== PAYMENT_METHOD_ENUM.CASH &&\n paymentMethod !== PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ) {\n this.checkoutResponse = null;\n SessionStore.clearCheckoutResponse();\n } else {\n // For APM methods, always clear the checkout response to force new generation\n this.checkoutResponse = null;\n SessionStore.clearCheckoutResponse();\n }\n\n this.paymentMethodSelected.emit(paymentMethod);\n try {\n // Call required fields endpoint\n this.currentRequiredFields = getRequiredFieldsForMethod(\n paymentMethod,\n this.allRequiredFields,\n ).fields;\n\n const response = await api.sessions.updateCurrentSessionPaymentMethod(\n sessionState.data.sessionId,\n {\n paymentMethodName: PaymentMethodMapper.mapToAPMPaymentMethod(\n paymentMethod,\n sessionState.data.pricing.country,\n ),\n paymentMethodType: paymentMethod,\n currency: sessionState.data.pricing.currency,\n },\n );\n SessionStore.setProviderKey(response.providerKey);\n if (\n response.providerKey === PROVIDER_ENUM.DECIDIR ||\n sessionState.data.providerKey === PROVIDER_ENUM.DECIDIR\n ) {\n const uuid = crypto.randomUUID();\n const fingerprintResponse = await api.fingerPrint.getFingerPrint(uuid);\n sessionState.deviceId = uuid;\n const script = fingerprintResponse.result.script;\n const scriptElement = document.createElement('script');\n scriptElement.innerHTML = script;\n document.body.appendChild(scriptElement);\n }\n } catch (error) {\n console.error('Failed to update payment method or get required fields:', error);\n }\n }\n }\n\n private get currentPaymentError(): boolean {\n if (this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CARD) {\n return this.rejectedPaymentCard;\n } else if (\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH ||\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ) {\n return this.rejectedPaymentAPM;\n }\n return false;\n }\n\n @Event() paymentMethodSelected: EventEmitter<PAYMENT_METHOD_ENUM>;\n\n @Listen('paymentMethodSelected')\n async handlePaymentMethodSelected(event: CustomEvent<PAYMENT_METHOD_ENUM>) {\n event.stopPropagation();\n const paymentMethod = event.detail;\n\n // Only make API call if payment method actually changed\n this.changePaymentMethod(paymentMethod);\n if (this.formElement) {\n this.formElement.resetValidation();\n }\n }\n\n private async handleSubmit(event: CustomEvent) {\n if (this.isSubmitting) {\n return;\n }\n this.rejectedPaymentCard = false;\n this.rejectedPaymentAPM = false;\n if (this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CARD) {\n this.handleSubmitCard(event);\n } else if (\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH ||\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ) {\n this.handleSubmitAPM(event);\n }\n }\n\n private handleFormChange(event: CustomEvent) {\n const formData = event.detail;\n\n // Validate the form to check if it's valid\n let isValid = true;\n let errors = {};\n\n if (this.formElement?.errors) {\n errors = this.formElement.errors;\n isValid = Object.keys(errors).length === 0;\n }\n\n this.formChange.emit({\n data: formData,\n isValid,\n errors: Object.keys(errors).length > 0 ? errors : undefined,\n });\n }\n\n private async handleSubmitCard(event: CustomEvent) {\n const formData = event.detail;\n const combinedData = this.getCombinedUserData(formData);\n\n if (!sessionState.data.cardTokenId && !sessionState.data.cardId) {\n this.cardError = {\n showCardInvalid: true,\n type: 'card_error',\n };\n return;\n }\n\n if (!sessionState.data.cardInformation && !sessionState.data.cardId) {\n this.cardError = {\n showCardInvalid: true,\n type: 'tokenization_error',\n };\n return;\n }\n this.cardError = {\n showCardInvalid: false,\n type: null,\n };\n const checkoutRequest: CreateCardCheckoutRequest = {\n transaction: {\n quantity: 1,\n ...(sessionState.data.discount.couponCode && {\n couponCode: sessionState.data.discount.couponCode,\n }),\n },\n installments: Number(\n formData.installments ||\n sessionState.data.cardInformation?.installments?.selectedInstallment?.installment,\n ),\n ...(sessionState.data.cardTokenId && {\n cardTokenId: sessionState.data.cardTokenId,\n ...(sessionState.data?.itemInformation?.type !== SESSION_ITEM_TYPE_ENUM.PLAN && {\n saveCard: sessionState.saveCard,\n }),\n }),\n ...(sessionState.data.cardId && {\n cardId: sessionState.data.cardId,\n }),\n\n ...((!this.otpVerified || this.cardMode === 'input') && {\n customer: {\n firstName: combinedData.fullName?.split(' ')[0],\n lastName: combinedData.fullName?.split(' ').slice(1).join(' '),\n email: combinedData.email,\n phone: {\n countryCode: combinedData.countryCodePhoneNumber,\n number: combinedData.phoneNumber,\n },\n },\n }),\n billingDetails: {\n address: {\n lineOne: combinedData['billing-address'],\n city: combinedData['billing-city'],\n state: combinedData['billing-state'],\n country: combinedData['billing-country'],\n zipCode: combinedData['billing-zip'],\n lineTwo: combinedData['billing-addInformation'],\n },\n identification: {\n type: combinedData.documentType,\n value: combinedData.documentNumber,\n },\n },\n customAttributes: {\n ...(sessionState.deviceId && { deviceId: sessionState.deviceId }),\n },\n ...(sessionState.metadata && { paymentMetadata: sessionState.metadata }),\n };\n\n const idempotencyKey = generateIdempotencyKey();\n\n this.isSubmitting = true;\n this.isCardSubmitting = true;\n\n try {\n const response = await api.checkout.createCardCheckoutRequest(\n sessionState.data.sessionId,\n idempotencyKey,\n checkoutRequest,\n sessionState.data.accessToken || undefined,\n );\n\n SessionStore.setCheckoutResponse(response.data);\n this.responseCheckoutCard = response.data;\n\n if (response.data.result?.status.toUpperCase() === CheckoutStatusE.APPROVED) {\n this.isCardSuccess = true;\n SessionStore.setPaymentStatus(PaymentMessageE.APPROVED);\n this.success.emit({\n paymentMethod: this.currentPaymentMethod,\n data: response.data,\n });\n sessionState.data.cardInformation.lastFour = response.data.result?.cardLastFour;\n } else {\n this.error.emit({\n paymentMethod: this.currentPaymentMethod,\n data: response.data,\n });\n SessionStore.setCheckoutResponse(response.data);\n this.rejectedPaymentCard = true;\n\n this.alertErrorKeys = {\n message:\n (response.data.result?.statusDetail.toLowerCase() as PaymentMessageE) ??\n (response.data.error?.error?.message?.toLowerCase() as PaymentMessageE),\n };\n }\n } catch (error) {\n this.error.emit({\n paymentMethod: this.currentPaymentMethod,\n data: error.data,\n });\n SessionStore.setCheckoutResponse(error.data);\n this.responseCheckoutCard = error.data;\n this.rejectedPaymentCard = true;\n\n this.alertErrorKeys = {\n message:\n (error.data?.error?.type?.toLowerCase() as PaymentMessageE) ??\n (error.data?.result?.statusDetail?.toLowerCase() as PaymentMessageE),\n };\n } finally {\n this.isSubmitting = false;\n this.isCardSubmitting = false;\n }\n }\n\n private async handleSubmitAPM(data: any) {\n // Only handle cash and transfer payments for now\n if (\n this.currentPaymentMethod !== PAYMENT_METHOD_ENUM.CASH &&\n this.currentPaymentMethod !== PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ) {\n return;\n }\n this.isSubmitting = true;\n const formData = data.detail;\n const combinedData = this.getCombinedUserData(formData);\n\n try {\n // Transform form data to match CreateAPMCheckoutRequest structure\n const billingDetails = {\n address: {\n country: combinedData['billing-country'] || '',\n state: combinedData['billing-state'] || '',\n city: combinedData['billing-city'] || '',\n zipCode: combinedData['billing-zip'] || '',\n lineOne: combinedData['billing-address'] || '',\n lineTwo: combinedData['billing-addInformation'],\n },\n\n identification: {\n type: combinedData.documentType,\n value: combinedData.documentNumber,\n },\n };\n\n // Use stored APM payment method\n const apmPaymentMethod =\n this.currentApmPaymentMethod ||\n PaymentMethodMapper.mapToAPMPaymentMethod(\n this.currentPaymentMethod,\n sessionState.data?.pricing?.country,\n );\n\n const checkoutRequest: CreateAPMCheckoutRequest = {\n transaction: {\n quantity: 1,\n ...(sessionState.data.discount.couponCode && {\n couponCode: sessionState.data.discount.couponCode,\n }),\n },\n method: apmPaymentMethod,\n billingDetails,\n redirect: {\n approved: window.location.origin + '/payment/success',\n rejected: window.location.origin + '/payment/failure',\n },\n paymentMetadata: sessionState.metadata,\n customAttributes: {\n bank: formData.bankId || sessionState.data?.bankId?.code,\n },\n };\n\n // Add customer data only for unauthenticated users\n // For authenticated users, the customer data is retrieved from the session\n const isAuthenticated = false; // TODO: Check authentication status from session\n\n if (!isAuthenticated) {\n checkoutRequest.customer = {\n firstName: combinedData.fullName?.split(' ')[0] || '',\n lastName: combinedData.fullName?.split(' ').slice(1).join(' ') || '',\n email: combinedData.email,\n phone: {\n countryCode: combinedData.countryCodePhoneNumber || '',\n number: combinedData.phoneNumber || '',\n },\n };\n }\n\n const idempotencyKey = generateIdempotencyKey();\n // Call APM checkout endpoint\n const response = await api.checkout.createAPMCheckoutRequest(\n sessionState.data.sessionId,\n idempotencyKey,\n checkoutRequest,\n );\n this.isSubmitting = false;\n this.checkoutResponse = response.data;\n this.storedCheckoutResults.set(this.currentPaymentMethod, response.data);\n\n if (response.data?.date) {\n sessionState.data.paymentDate = response.data.date;\n sessionState.createdAt = response.data.date;\n }\n if (response.data?.traceId) {\n sessionState.data.paymentReference = response.data.traceId;\n }\n } catch (error) {\n this.isSubmitting = false;\n this.checkoutResponse = error.data;\n\n this.alertErrorKeys = {\n message:\n (error.data?.error?.type?.toLowerCase() as PaymentMessageE) ??\n (error.data?.result?.statusDetail?.toLowerCase() as PaymentMessageE),\n };\n this.rejectedPaymentAPM = true;\n }\n }\n\n /**\n * Public method to submit the checkout form programmatically from external platforms\n * This method can be called when submitButton is set to false in display config\n */\n @Method()\n async submit(): Promise<void> {\n if (this.formElement && typeof this.formElement.submit === 'function') {\n this.formElement.submit();\n } else {\n // Fallback: trigger handleSubmit directly with empty event\n await this.handleSubmit({ detail: {} } as CustomEvent);\n }\n }\n\n /**\n * Listen for payment status changes from APM QR code\n */\n private handlePaymentStatusChange = (statusData: {\n status: STATUS_REQ_CHECKOUT_APM;\n isCompleted: boolean;\n data: any;\n }) => {\n if (statusData.isCompleted) {\n if (statusData.status === STATUS_REQ_CHECKOUT_APM.APPROVED) {\n SessionStore.setPaymentStatus(PaymentMessageE.APPROVED);\n this.success.emit({\n paymentMethod: this.currentPaymentMethod,\n data: this.checkoutResponse,\n });\n } else if (statusData.status === STATUS_REQ_CHECKOUT_APM.REJECTED) {\n SessionStore.setPaymentStatus(PaymentMessageE.REJECTED);\n\n this.alertErrorKeys = {\n alertTitle: PaymentMessageE.APM_ERROR_GENERIC,\n message: PaymentMessageE.APM_MESSAGE_ERROR,\n };\n }\n }\n };\n\n @Listen('input')\n async handleInputChange(event: CustomEvent<{ id: string; value: string }>) {\n if (event?.detail?.id === 'email' && this.oneClickCheckout) {\n if (this.emailDebounceTimeout) {\n clearTimeout(this.emailDebounceTimeout);\n }\n\n if (!event.detail.value || event.detail.value.trim() === '') {\n this.customerExists = false;\n SessionStore.clearCustomerIdAndToken();\n return;\n }\n\n this.emailDebounceTimeout = setTimeout(async () => {\n try {\n const response = await api.customers.exists(\n { email: sessionState.data.userInformation.email },\n this.publicKey,\n );\n this.customerExists = response.data.exists;\n } catch (error) {\n this.customerExists = false;\n }\n }, 500) as unknown as number;\n }\n }\n\n private validationSchema = {\n 'email': yup.string().when([], {\n is: () => !this.otpVerified,\n then: schema =>\n schema\n .email('validation.emailInvalid')\n .matches(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/, 'validation.emailInvalid')\n .required('validation.emailRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'fullName': yup.string().when([], {\n is: () => !this.otpVerified,\n then: schema =>\n schema\n .required('validation.fullNameRequired')\n .matches(\n /^[a-zA-ZÀ-ÿ\\u00f1\\u00d1\\s]{2,}\\s+[a-zA-ZÀ-ÿ\\u00f1\\u00d1\\s]{2,}$/,\n 'validation.fullNameInvalid',\n ),\n otherwise: schema => schema.notRequired(),\n }),\n // Asegura error en submit si el teléfono es requerido y está vacío\n 'phoneNumber': yup.string().when([], {\n is: () =>\n (isFieldRequired('phoneNumber', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.required('validation.phoneRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'isValidPhoneNumber': yup.string().when([], {\n is: () =>\n (isFieldRequired('phoneNumber', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.equals(['true'], 'validation.phoneRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-country': yup.string().when([], {\n is: () =>\n (isFieldRequired('billing-country', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.required('validation.countryRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-state': yup.string().when([], {\n is: () =>\n (isFieldRequired('billing-state', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.required('validation.stateRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-address': yup.string().when([], {\n is: () =>\n (isFieldRequired('billing-address', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.required('validation.addressRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-city': yup.string().when([], {\n is: () =>\n (isFieldRequired('billing-city', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.required('validation.cityRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-zip': yup.string().when([], {\n is: () =>\n (isFieldRequired('billing-zip', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.required('validation.zipRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'bankId': yup.string().when([], {\n is: () => isFieldRequired('bankId', this.currentRequiredFields),\n then: schema => schema.required('validation.bankRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'installments': yup.string().when([], {\n is: () =>\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CARD &&\n sessionState.data.cardInformation.installments.isAvailableInstallments &&\n sessionState.data.cardInformation?.installments?.installments.length > 0 &&\n sessionState.data.itemInformation.type !== SESSION_ITEM_TYPE_ENUM.PLAN,\n then: schema => schema.required('validation.installmentsRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'documentType': yup.string().when([], {\n is: () =>\n (isFieldRequired('documentType', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => schema.required('validation.documentTypeRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'documentNumber': yup.string().when([], {\n is: () =>\n (isFieldRequired('documentNumber', this.currentRequiredFields) && !this.otpVerified) ||\n (this.otpVerified && this.cardMode === 'input'),\n then: schema => {\n const baseSchema = schema\n .required('validation.documentNumberRequired')\n .min(7, 'validation.documentInvalid');\n\n // For BR checkout, validate that document number contains only digits\n if (sessionState.data?.pricing?.country === 'BR') {\n return baseSchema.test('numeric-only', 'validation.documentNumberNumericOnly', value => {\n if (!value) return true; // Let required validation handle empty values\n return /^\\d+$/.test(value);\n });\n }\n\n return baseSchema;\n },\n otherwise: schema => schema.notRequired(),\n }),\n };\n\n private getInitialData = () => {\n return {\n 'email': sessionState.data.userInformation.email || '',\n 'fullName': sessionState.data.userInformation.fullName || '',\n 'phoneNumber': sessionState.data.userInformation.phoneNumber?.number || '',\n 'countryCodePhoneNumber': sessionState.data.userInformation.countryCode || '',\n 'documentType': '',\n 'documentNumber': '',\n 'billing-country': sessionState.data.userInformation.address?.billingAddress?.country || '',\n 'billing-state': sessionState.data.userInformation?.address?.billingAddress?.state || '',\n 'billing-address': sessionState.data.userInformation?.address?.billingAddress?.address || '',\n 'billing-city': sessionState.data.userInformation?.address?.billingAddress?.city || '',\n 'billing-zip': sessionState.data.userInformation?.address?.billingAddress?.zip || '',\n 'bankId': sessionState.data.bankId?.code || '',\n 'card': '',\n 'installments':\n sessionState.data.cardInformation?.installments?.selectedInstallment?.installment?.toString() ||\n '',\n };\n };\n\n private hasPrefilledAddress = () => {\n const billingFields = [\n 'billing-country',\n 'billing-state',\n 'billing-address',\n 'billing-city',\n 'billing-zip',\n ];\n return billingFields.some(key => {\n const value = this.initialData[key];\n return value && value.trim() !== '';\n });\n };\n private get isQrCodeVisible(): boolean {\n return !!this.checkoutResponse?.result?.data?.qrCode;\n }\n private get isBankTransferVisible(): boolean {\n return (\n !!this.checkoutResponse?.result?.data?.account &&\n !!this.checkoutResponse?.result?.data?.bankName &&\n !!this.checkoutResponse?.result?.data?.reference\n );\n }\n private get isBoletoVisible(): boolean {\n return (\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH &&\n sessionState.data?.pricing?.country === 'BR' &&\n !!this.checkoutResponse?.result?.data?.barcode\n );\n }\n private isPaymentApproved = (): boolean => {\n if (sessionState.data.paymentStatus === PaymentMessageE.APPROVED) {\n return true;\n }\n\n return false;\n };\n\n @Listen('onRebillAccountClick')\n handleRebillAccountClick(event: CustomEvent<boolean>) {\n this.showOtp = event.detail;\n }\n\n @Listen('returnForm')\n handleReturnForm(event: CustomEvent<boolean>) {\n this.showOtp = event.detail;\n SessionStore.clearCustomerIdAndToken();\n }\n\n @Listen('signOut')\n handleSignOut() {\n this.showOtp = false;\n this.otpVerified = false;\n if (!sessionState?.data?.prefilledData?.email) {\n this.customerExists = false;\n }\n SessionStore.clearCustomerIdAndToken();\n SessionStore.clearUserInformation();\n this.cardError = {\n showCardInvalid: false,\n type: null,\n };\n this.alertErrorKeys = null;\n this.rejectedPaymentCard = false;\n this.rejectedPaymentAPM = false;\n }\n\n @Listen('codeVerified')\n handleCodeVerified() {\n this.otpVerified = true;\n this.showOtp = false;\n\n this.rejectedPaymentCard = false;\n this.alertErrorKeys = null;\n this.cardError = {\n showCardInvalid: false,\n type: null,\n };\n if (this.formElement) {\n this.formElement.resetValidation();\n }\n }\n private isPaymentRejected(): boolean {\n return (\n sessionState.data.paymentStatus === PaymentMessageE.REJECTED &&\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER\n );\n }\n\n render() {\n const countryOptions = this.countries.map(country => ({\n label: country.country,\n value: country.isoCountryCode,\n }));\n\n const renderRebillSummary = (props: any = {}) => (\n <rebill-summary\n totalAmount={sessionState.data.pricing.total}\n currency={sessionState.data.pricing.currency}\n itemTitle={sessionState._session?.getTitle()}\n itemDescription={sessionState._session?.getDescription()}\n itemAmount={sessionState.data.pricing.subtotal}\n subtotal={sessionState.data.pricing.subtotal}\n allowCoupon={sessionState._session?.getAllowCoupon(this.displayConfig)}\n currentBreakpoint={this.breakpoint}\n planFrequency={sessionState._session?.getPlanFrequency()}\n planFrequencyCount={sessionState._session?.getPlanFrequencyCount()}\n discountType={sessionState.data.discount.discountType}\n discountedPercentage={sessionState.data.discount.discountedPercentage}\n discountDuration={sessionState.data.discount.discountDuration}\n discountAmount={sessionState.data.discount.discountAmount}\n {...props}\n />\n );\n\n return (\n sessionState.isInitialized && (\n <>\n {this.showRefreshModal && <rebill-modal-overlay />}\n {this.displayConfig.processingPayment && (\n <rebill-processing-payment\n style={{ display: this.isCardSubmitting ? 'block' : 'none' }}\n />\n )}\n {this.displayConfig.successPage &&\n this.isPaymentApproved() &&\n sessionState.isInitialized ? (\n <success-page\n typePaymentMethod={sessionState.data.paymentMethodSelected}\n paymentMethodName={PaymentMethodMapper.mapToAPMPaymentMethod(\n sessionState.data.paymentMethodSelected ||\n (sessionState.data.payment as any)?.paymentMethodType,\n sessionState.data?.pricing?.country,\n )}\n country={sessionState.data?.pricing?.country}\n bank={\n (sessionState.data.payment as any)?.paymentMethodMetadata?.bank ||\n (sessionState.data.payment as any)?.paymentMethodMetadata?.bank\n }\n cardLastFour={\n this.responseCheckoutCard?.result?.cardLastFour ||\n sessionState.data.cardInformation?.lastFour\n }\n paymentDate={\n sessionState.data.paymentDate ||\n this.responseCheckoutCard?.date ||\n (sessionState.data.payment as any)?.createdAt ||\n this.checkoutResponse?.result?.data?.createdAt\n }\n referenceNumber={\n sessionState.data.paymentReference ||\n (sessionState.data.payment as any)?.traceId ||\n this.responseCheckoutCard?.traceId\n }\n onSuccessRedirect={payload => {\n this.successRedirect.emit(payload.detail);\n }}\n trialPeriodDays={sessionState.data?.itemInformation?.trial?.trialPeriodDays}\n debitDay={sessionState.data?.itemInformation?.debitDay}\n planAmount={sessionState.data?.pricing?.planAmount}\n />\n ) : (\n <>\n {/* Modo sandbox para mobile - posicionado arriba del logo */}\n {this.displayConfig.sandboxMode &&\n sessionState.isSandbox &&\n sessionState.data.sessionType === SESSION_TYPE_ENUM.CHECKOUT_LANDING &&\n isBreakpointBelow(this.breakpoint, BREAKPOINT_ENUM.DESKTOP) && (\n <div\n class=\"mode-sandbox-mobile-container\"\n style={{\n display: this.isCardSubmitting || this.isCardSuccess ? 'none' : 'block',\n }}\n >\n <rebill-mode-sandbox-mobile />\n </div>\n )}\n <rebill-checkout-form\n ref={el => (this.formElement = el)}\n style={{ display: this.isCardSubmitting || this.isCardSuccess ? 'none' : 'block' }}\n validationSchema={this.validationSchema}\n initialData={this.initialData}\n onSubmit={(args: any) => this.handleSubmit(args)}\n onChange={(args: any) => this.handleFormChange(args)}\n renderForm={({ submit, formData, errors }) => {\n const isAPMCheckoutVisible =\n !this.isCardSuccess &&\n this.checkoutResponse?.result &&\n (this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH ||\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER);\n return (\n <div\n class={`rebill-checkout ${!this.displayConfig.checkoutSummary ? 'full-width-layout' : ''}`}\n >\n <div class=\"left-section\">\n <div class=\"left-section-container\">\n {this.displayConfig.logo && (\n <organization-logo organization={sessionState.data.organization} />\n )}\n <div\n class=\"otp-container\"\n style={{ display: this.showOtp ? 'block' : 'none' }}\n >\n <otp-component />\n </div>\n <div style={{ display: this.showOtp ? 'none' : 'block' }}>\n <div class=\"checkout-form-section\">\n {this.displayConfig.checkoutSummary && (\n <div\n class=\"summary-mobile-tablet\"\n style={{\n display: isBreakpointBelow(\n this.breakpoint,\n BREAKPOINT_ENUM.DESKTOP,\n )\n ? 'block'\n : 'none',\n }}\n >\n {renderRebillSummary({\n displayedComponents: [\n 'totalAmount',\n 'discount',\n 'timelineFreeTrial',\n 'timelineDebitDay',\n 'itemDetails',\n ],\n })}\n </div>\n )}\n {!this.otpVerified && this.displayConfig.customerInformation && (\n <user-information\n customerExists={this.customerExists}\n disabled={this.isSubmitting}\n errors={{\n email: errors.email,\n fullName: errors.fullName,\n }}\n />\n )}\n {this.otpVerified && this.displayConfig.customerInformation && (\n <user-information-static\n variant=\"otp\"\n userInfo={{\n customerName:\n sessionState.data.userInformation.fullName?.split(' ')[0],\n customerEmail: sessionState.data.userInformation.email,\n }}\n />\n )}\n <div\n style={{ display: 'flex', flexDirection: 'column', gap: '16px' }}\n >\n <payment-method-selector\n enabledPaymentMethods={this.filteredPaymentMethods}\n defaultSelected={this.currentPaymentMethod}\n disabled={this.isSubmitting}\n errorComponent={{\n showErrorComponent:\n this.displayConfig.errorMessage &&\n (this.currentPaymentError || this.isPaymentRejected()),\n alertTitle: PaymentErrorMapper.getErrorTitle(\n this.currentPaymentMethod,\n sessionState.data?.pricing?.country || '',\n this.alertErrorKeys?.alertTitle,\n ),\n message: PaymentErrorMapper.getErrorMessage(\n this.alertErrorKeys?.message,\n this.currentPaymentMethod,\n sessionState.data?.pricing?.country,\n ),\n }}\n country={sessionState.data?.pricing?.country}\n installmentsError={errors.installments}\n showDocument={\n (!this.otpVerified ||\n (this.otpVerified && this.cardMode === 'input')) &&\n !isAPMCheckoutVisible &&\n !this.isQrCodeVisible &&\n (isFieldRequired(\n 'documentNumber',\n this.currentRequiredFields,\n ) ||\n isFieldRequired('documentType', this.currentRequiredFields))\n }\n documentTypeError={errors.documentType}\n documentNumberError={errors.documentNumber}\n cardError={this.cardError}\n customCSS={this.css}\n />\n {!isAPMCheckoutVisible &&\n (() => {\n const isBankRequired = isFieldRequired(\n 'bankId',\n this.currentRequiredFields,\n );\n\n return isBankRequired;\n })() && (\n <div class=\"animated-component fade-in\">\n <rebill-bank-selector\n banks={\n getFieldValues(\n 'bank',\n this.allRequiredFields[this.currentPaymentMethod]\n .original,\n ) || []\n }\n defaultSelectedBankId={formData.bankId || ''}\n error={errors?.bankId}\n disabled={this.isSubmitting}\n />\n </div>\n )}\n </div>\n {!isAPMCheckoutVisible &&\n (!this.otpVerified || this.cardMode === 'input') && (\n <>\n {this.displayConfig.billingAddress &&\n (isFieldRequired(\n 'billing-country',\n this.currentRequiredFields,\n ) ||\n isFieldRequired(\n 'billing-state',\n this.currentRequiredFields,\n ) ||\n isFieldRequired(\n 'billing-address',\n this.currentRequiredFields,\n ) ||\n isFieldRequired(\n 'billing-city',\n this.currentRequiredFields,\n ) ||\n isFieldRequired(\n 'billing-zip',\n this.currentRequiredFields,\n )) && (\n <div class=\"animated-component slide-in\">\n <rebill-address\n disabled={this.isSubmitting}\n countryOptions={countryOptions}\n billingView={(() => {\n // If useAddressSearch is explicitly false, always show form\n if (\n this.displayConfig.useAddressSearch !== undefined &&\n this.displayConfig.useAddressSearch === false\n ) {\n return 'form';\n }\n // Otherwise, use default behavior: form if prefilled, search otherwise\n return this.hasPrefilledAddress() ? 'form' : 'search';\n })()}\n errors={{\n 'billing-country': errors['billing-country'],\n 'billing-state': errors['billing-state'],\n 'billing-address': errors['billing-address'],\n 'billing-city': errors['billing-city'],\n 'billing-zip': errors['billing-zip'],\n }}\n />\n </div>\n )}\n {this.displayConfig.customerInformation &&\n isFieldRequired(\n 'phoneNumber',\n this.currentRequiredFields,\n ) && (\n <div class=\"animated-component fade-in\">\n <user-information-phone\n disabled={this.isSubmitting}\n error={\n errors?.phoneNumber || errors?.isValidPhoneNumber\n }\n countryCode={\n sessionState.data.userInformation?.countryCode ||\n sessionState.data.country\n }\n />\n </div>\n )}\n </>\n )}\n {/* Show APM checkout response after successful payment submission */}\n {isAPMCheckoutVisible &&\n (() => {\n const isBoleto =\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH &&\n sessionState.data?.pricing?.country === 'BR' &&\n this.checkoutResponse?.result?.data?.barcode;\n\n return (\n <apm-checkout\n paymentMethod={this.currentPaymentMethod}\n barcode={\n isBoleto\n ? this.checkoutResponse?.result?.data?.barcode\n : undefined\n }\n referenceId={\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH &&\n !isBoleto\n ? this.checkoutResponse?.result?.data?.referenceId\n : undefined\n }\n qrCodeData={\n this.currentPaymentMethod ===\n PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ? this.checkoutResponse?.result?.data?.qrCode\n : undefined\n }\n code={\n this.currentPaymentMethod ===\n PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ? this.checkoutResponse?.result?.data?.code\n : undefined\n }\n checkoutRequestId={\n this.checkoutResponse?.result?.checkoutRequestId\n }\n providerName={sessionState.data.providerKey}\n expirationDate={(() => {\n const expirationDate = new Date();\n expirationDate.setDate(expirationDate.getDate() + 30);\n return expirationDate.toISOString();\n })()}\n onPaymentStatusChange={event =>\n this.handlePaymentStatusChange(event.detail)\n }\n country={sessionState.data?.pricing?.country}\n redirectUrl={this.checkoutResponse?.result?.data?.url}\n timeToRedirect={this.timeToRedirectAPM}\n bearerToken={this.checkoutResponse?.result?.data?.bearerToken}\n bankTransferData={\n this.checkoutResponse?.result?.data?.account &&\n this.checkoutResponse?.result?.data?.bankName &&\n this.checkoutResponse?.result?.data?.reference\n ? {\n account: this.checkoutResponse.result.data.account,\n bankName: this.checkoutResponse.result.data.bankName,\n reference:\n this.checkoutResponse.result.data.reference,\n }\n : undefined\n }\n />\n );\n })()}\n {this.displayConfig.checkoutSummary && (\n <div\n class=\"summary-price-details\"\n style={{\n display: isBreakpointBelow(\n this.breakpoint,\n BREAKPOINT_ENUM.DESKTOP,\n )\n ? 'block'\n : 'none',\n }}\n >\n {renderRebillSummary({\n displayedComponents: ['priceDetails'],\n })}\n </div>\n )}\n {this.displayConfig.submitButton &&\n !(\n isAPMCheckoutVisible &&\n (this.isQrCodeVisible ||\n this.isBankTransferVisible ||\n this.isBoletoVisible)\n ) && (\n <div class=\"payment-button-container\">\n <payment-button\n paymentMethod={this.currentPaymentMethod}\n isLoading={this.isSubmitting}\n trialPeriodDays={\n sessionState.data?.itemInformation?.trial?.trialPeriodDays\n }\n onSubmit={() => {\n submit();\n }}\n redirectUrl={!!this.checkoutResponse?.result?.data?.url}\n timeToRedirect={this.timeToRedirectAPM}\n isDisabled={sessionState.data.fetchingInstallments}\n country={sessionState.data?.pricing?.country}\n />\n <rebill-alert\n type=\"secure\"\n variant=\"variant-secure\"\n icon=\"lock-outline\"\n message={I18nService.translate('otp.secureMessage')}\n />\n </div>\n )}\n </div>\n {this.displayConfig.sandboxMode &&\n sessionState.isSandbox &&\n sessionState.data.sessionType ===\n SESSION_TYPE_ENUM.CHECKOUT_LANDING &&\n !isBreakpointBelow(this.breakpoint, BREAKPOINT_ENUM.DESKTOP) && (\n <rebill-mode-sandbox />\n )}\n </div>\n {this.displayConfig.footer && (\n <rebill-footer\n style={{\n marginTop: isBreakpointBelow(\n this.breakpoint,\n BREAKPOINT_ENUM.DESKTOP,\n )\n ? '24px'\n : 'auto',\n }}\n />\n )}\n </div>\n </div>\n\n {this.displayConfig.checkoutSummary && (\n <div class=\"right-section-checkout\">\n <div class=\"checkout-summary-section\">\n <div\n class=\"summary-desktop\"\n style={{\n display: !isBreakpointBelow(\n this.breakpoint,\n BREAKPOINT_ENUM.DESKTOP,\n )\n ? 'block'\n : 'none',\n }}\n >\n {renderRebillSummary()}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n }}\n />\n </>\n )}\n </>\n )\n );\n }\n}\n"]}
@@ -25,4 +25,6 @@ export * from './stencil-wrapper';
25
25
  // Export email validation utilities
26
26
  export * from './email-validation';
27
27
  export * from './email-validation.constants';
28
+ // Export resource injection utilities
29
+ export * from './resource-injector';
28
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,cAAc,mBAAmB,CAAC;AAElC,uCAAuC;AACvC,cAAc,sBAAsB,CAAC;AAErC,6BAA6B;AAC7B,cAAc,uBAAuB,CAAC;AAEtC,2BAA2B;AAC3B,cAAc,WAAW,CAAC;AAE1B,kCAAkC;AAClC,cAAc,iBAAiB,CAAC;AAEhC,qCAAqC;AACrC,cAAc,qBAAqB,CAAC;AAEpC,mCAAmC;AACnC,cAAc,4BAA4B,CAAC;AAE3C,6BAA6B;AAC7B,cAAc,aAAa,CAAC;AAE5B,uBAAuB;AACvB,cAAc,SAAS,CAAC;AACxB,mCAAmC;AACnC,cAAc,kBAAkB,CAAC;AAEjC,0BAA0B;AAC1B,cAAc,UAAU,CAAC;AAEzB,mCAAmC;AACnC,cAAc,mBAAmB,CAAC;AAElC,oCAAoC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC","sourcesContent":["// Export form validation utilities\nexport * from './form-validation';\n\n// Export currency formatting utilities\nexport * from './currency-formatter';\n\n// Export Google Maps service\nexport * from './google-maps.service';\n\n// Export QR code utilities\nexport * from './qr-code';\n\n// Export PDF generation utilities\nexport * from './pdf-generator';\n\n// Export download template utilities\nexport * from './download-template';\n\n// Export idempotency key utilities\nexport * from './generate-idempotency-key';\n\n// Export clipboard utilities\nexport * from './clipboard';\n\n// Export OTP utilities\nexport * from './timer';\n// Export date formatting utilities\nexport * from './date-formatter';\n\n// Export assets utilities\nexport * from './assets';\n\n// Export stencil wrapper utilities\nexport * from './stencil-wrapper';\n\n// Export email validation utilities\nexport * from './email-validation';\nexport * from './email-validation.constants';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,cAAc,mBAAmB,CAAC;AAElC,uCAAuC;AACvC,cAAc,sBAAsB,CAAC;AAErC,6BAA6B;AAC7B,cAAc,uBAAuB,CAAC;AAEtC,2BAA2B;AAC3B,cAAc,WAAW,CAAC;AAE1B,kCAAkC;AAClC,cAAc,iBAAiB,CAAC;AAEhC,qCAAqC;AACrC,cAAc,qBAAqB,CAAC;AAEpC,mCAAmC;AACnC,cAAc,4BAA4B,CAAC;AAE3C,6BAA6B;AAC7B,cAAc,aAAa,CAAC;AAE5B,uBAAuB;AACvB,cAAc,SAAS,CAAC;AACxB,mCAAmC;AACnC,cAAc,kBAAkB,CAAC;AAEjC,0BAA0B;AAC1B,cAAc,UAAU,CAAC;AAEzB,mCAAmC;AACnC,cAAc,mBAAmB,CAAC;AAElC,oCAAoC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAE7C,sCAAsC;AACtC,cAAc,qBAAqB,CAAC","sourcesContent":["// Export form validation utilities\nexport * from './form-validation';\n\n// Export currency formatting utilities\nexport * from './currency-formatter';\n\n// Export Google Maps service\nexport * from './google-maps.service';\n\n// Export QR code utilities\nexport * from './qr-code';\n\n// Export PDF generation utilities\nexport * from './pdf-generator';\n\n// Export download template utilities\nexport * from './download-template';\n\n// Export idempotency key utilities\nexport * from './generate-idempotency-key';\n\n// Export clipboard utilities\nexport * from './clipboard';\n\n// Export OTP utilities\nexport * from './timer';\n// Export date formatting utilities\nexport * from './date-formatter';\n\n// Export assets utilities\nexport * from './assets';\n\n// Export stencil wrapper utilities\nexport * from './stencil-wrapper';\n\n// Export email validation utilities\nexport * from './email-validation';\nexport * from './email-validation.constants';\n\n// Export resource injection utilities\nexport * from './resource-injector';\n"]}