@adyen/adyen-web 6.2.0 → 6.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/adyen.css +3 -2
- package/dist/cjs/adyen.css.map +1 -1
- package/dist/cjs/index.cjs +2 -2
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +83 -12
- package/dist/es/adyen.css +3 -2
- package/dist/es/adyen.css.map +1 -1
- package/dist/es/components/ANCV/ANCV.js +1 -1
- package/dist/es/components/ANCV/ANCV.js.map +1 -1
- package/dist/es/components/Ach/Ach.js +1 -1
- package/dist/es/components/Ach/Ach.js.map +1 -1
- package/dist/es/components/Ach/components/AchInput/AchInput.js +1 -1
- package/dist/es/components/Ach/components/AchInput/AchInput.js.map +1 -1
- package/dist/es/components/BacsDD/BacsDD.js +1 -1
- package/dist/es/components/BacsDD/BacsDD.js.map +1 -1
- package/dist/es/components/BacsDD/components/BacsResult.js +1 -1
- package/dist/es/components/BacsDD/components/BacsResult.js.map +1 -1
- package/dist/es/components/BankTransfer/BankTransfer.js +1 -1
- package/dist/es/components/BankTransfer/BankTransfer.js.map +1 -1
- package/dist/es/components/BankTransfer/components/BankTransferResult/BankTransferResult.js +1 -1
- package/dist/es/components/BankTransfer/components/BankTransferResult/BankTransferResult.js.map +1 -1
- package/dist/es/components/Blik/Blik.js +1 -1
- package/dist/es/components/Blik/Blik.js.map +1 -1
- package/dist/es/components/Boleto/Boleto.js +1 -1
- package/dist/es/components/Boleto/Boleto.js.map +1 -1
- package/dist/es/components/Boleto/components/BoletoVoucherResult/BoletoVoucherResult.js +1 -1
- package/dist/es/components/Boleto/components/BoletoVoucherResult/BoletoVoucherResult.js.map +1 -1
- package/dist/es/components/Card/Card.js.map +1 -1
- package/dist/es/components/Card/components/ClickToPayHolder.js +1 -1
- package/dist/es/components/Card/components/ClickToPayHolder.js.map +1 -1
- package/dist/es/components/Doku/Doku.js +1 -1
- package/dist/es/components/Doku/Doku.js.map +1 -1
- package/dist/es/components/Doku/components/DokuVoucherResult/DokuVoucherResult.js +1 -1
- package/dist/es/components/Doku/components/DokuVoucherResult/DokuVoucherResult.js.map +1 -1
- package/dist/es/components/Dragonpay/Dragonpay.js +1 -1
- package/dist/es/components/Dragonpay/Dragonpay.js.map +1 -1
- package/dist/es/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js +1 -1
- package/dist/es/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js.map +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodBrands/PaymentMethodBrands.js +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodBrands/PaymentMethodBrands.js.map +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
- package/dist/es/components/Econtext/Econtext.js +1 -1
- package/dist/es/components/Econtext/Econtext.js.map +1 -1
- package/dist/es/components/Econtext/components/EcontextVoucherResult/EcontextVoucherResult.js +1 -1
- package/dist/es/components/Econtext/components/EcontextVoucherResult/EcontextVoucherResult.js.map +1 -1
- package/dist/es/components/Klarna/KlarnaPayments.js +1 -1
- package/dist/es/components/Klarna/KlarnaPayments.js.map +1 -1
- package/dist/es/components/Klarna/components/KlarnaContainer/KlarnaContainer.js +1 -1
- package/dist/es/components/Klarna/components/KlarnaContainer/KlarnaContainer.js.map +1 -1
- package/dist/es/components/MBWay/MBWay.js +1 -1
- package/dist/es/components/MBWay/MBWay.js.map +1 -1
- package/dist/es/components/Multibanco/Multibanco.js +1 -1
- package/dist/es/components/Multibanco/Multibanco.js.map +1 -1
- package/dist/es/components/Multibanco/components/MultibancoVoucherResult/MultibancoVoucherResult.js +1 -1
- package/dist/es/components/Multibanco/components/MultibancoVoucherResult/MultibancoVoucherResult.js.map +1 -1
- package/dist/es/components/Oxxo/Oxxo.js +1 -1
- package/dist/es/components/Oxxo/Oxxo.js.map +1 -1
- package/dist/es/components/Oxxo/components/OxxoVoucherResult/OxxoVoucherResult.js +1 -1
- package/dist/es/components/Oxxo/components/OxxoVoucherResult/OxxoVoucherResult.js.map +1 -1
- package/dist/es/components/PayByBankUS/PayByBankUS.js +2 -0
- package/dist/es/components/PayByBankUS/PayByBankUS.js.map +1 -0
- package/dist/es/components/PayPal/Paypal.js +1 -1
- package/dist/es/components/PayPal/Paypal.js.map +1 -1
- package/dist/es/components/Redirect/Redirect.js +1 -1
- package/dist/es/components/Redirect/Redirect.js.map +1 -1
- package/dist/es/components/Redirect/components/RedirectShopper/RedirectShopper.js +1 -1
- package/dist/es/components/Redirect/components/RedirectShopper/RedirectShopper.js.map +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js +1 -1
- package/dist/es/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
- package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
- package/dist/es/components/UPI/UPI.js +1 -1
- package/dist/es/components/UPI/UPI.js.map +1 -1
- package/dist/es/components/components-name-map.js +1 -1
- package/dist/es/components/components-name-map.js.map +1 -1
- package/dist/es/components/helpers/QRLoaderContainer/QRLoaderContainer.js +1 -1
- package/dist/es/components/helpers/QRLoaderContainer/QRLoaderContainer.js.map +1 -1
- package/dist/es/components/index.js +1 -1
- package/dist/es/components/internal/Await/Await.js +1 -1
- package/dist/es/components/internal/Await/Await.js.map +1 -1
- package/dist/es/components/internal/BaseElement/BaseElement.js +1 -1
- package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
- package/dist/es/components/internal/Button/Button.js +1 -1
- package/dist/es/components/internal/Button/Button.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/ClickToPayComponent.js +1 -1
- package/dist/es/components/internal/ClickToPay/ClickToPayComponent.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPCards/CtPCards.js +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPCards/CtPCards.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPLogin/CtPLogin.js +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPLogin/CtPLogin.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPLogin/CtPLoginInput.js +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPLogin/CtPLoginInput.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePassword.js +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePassword.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.js +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPSection/CtPSection.js +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPSection/CtPSection.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/errors/TimeoutError.js +1 -1
- package/dist/es/components/internal/ClickToPay/errors/TimeoutError.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/services/ClickToPayService.js +1 -1
- package/dist/es/components/internal/ClickToPay/services/ClickToPayService.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/services/execute-with-timeout.js +2 -0
- package/dist/es/components/internal/ClickToPay/services/execute-with-timeout.js.map +1 -0
- package/dist/es/components/internal/FormFields/InputBase.js.map +1 -1
- package/dist/es/components/internal/FormFields/RadioGroup/RadioGroup.js +1 -1
- package/dist/es/components/internal/FormFields/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
- package/dist/es/components/internal/UIElement/UIElement.js +1 -1
- package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
- package/dist/es/components/internal/Voucher/Voucher.js +1 -1
- package/dist/es/components/internal/Voucher/Voucher.js.map +1 -1
- package/dist/es/components/internal/Voucher/utils.js +2 -0
- package/dist/es/components/internal/Voucher/utils.js.map +1 -0
- package/dist/es/components/tx-variants.js +1 -1
- package/dist/es/components/tx-variants.js.map +1 -1
- package/dist/es/core/Context/CoreProvider.js +1 -1
- package/dist/es/core/Context/CoreProvider.js.map +1 -1
- package/dist/es/core/Errors/CancelError.js +2 -0
- package/dist/es/core/Errors/CancelError.js.map +1 -0
- package/dist/es/core/Errors/SRPanel.js +1 -1
- package/dist/es/core/Errors/SRPanel.js.map +1 -1
- package/dist/es/core/ProcessResponse/PaymentAction/actionTypes.js +1 -1
- package/dist/es/core/ProcessResponse/PaymentAction/actionTypes.js.map +1 -1
- package/dist/es/core/ProcessResponse/PaymentMethods/filters.js +1 -1
- package/dist/es/core/ProcessResponse/PaymentMethods/filters.js.map +1 -1
- package/dist/es/core/Services/analytics/collect-id.js +1 -1
- package/dist/es/core/core.js +1 -1
- package/dist/es/index.d.ts +83 -12
- package/dist/es/index.js +1 -1
- package/dist/es/utils/get-process-message-handler.js +1 -1
- package/dist/es/utils/get-process-message-handler.js.map +1 -1
- package/dist/es/utils/listenerUtils.js +1 -1
- package/dist/es/utils/listenerUtils.js.map +1 -1
- package/dist/es-legacy/adyen.css +3 -2
- package/dist/es-legacy/adyen.css.map +1 -1
- package/dist/es-legacy/components/ANCV/ANCV.js +1 -1
- package/dist/es-legacy/components/ANCV/ANCV.js.map +1 -1
- package/dist/es-legacy/components/Ach/Ach.js +1 -1
- package/dist/es-legacy/components/Ach/Ach.js.map +1 -1
- package/dist/es-legacy/components/Ach/components/AchInput/AchInput.js +1 -1
- package/dist/es-legacy/components/Ach/components/AchInput/AchInput.js.map +1 -1
- package/dist/es-legacy/components/BacsDD/BacsDD.js +1 -1
- package/dist/es-legacy/components/BacsDD/BacsDD.js.map +1 -1
- package/dist/es-legacy/components/BacsDD/components/BacsResult.js +1 -1
- package/dist/es-legacy/components/BacsDD/components/BacsResult.js.map +1 -1
- package/dist/es-legacy/components/BankTransfer/BankTransfer.js +1 -1
- package/dist/es-legacy/components/BankTransfer/BankTransfer.js.map +1 -1
- package/dist/es-legacy/components/BankTransfer/components/BankTransferResult/BankTransferResult.js +1 -1
- package/dist/es-legacy/components/BankTransfer/components/BankTransferResult/BankTransferResult.js.map +1 -1
- package/dist/es-legacy/components/Blik/Blik.js +1 -1
- package/dist/es-legacy/components/Blik/Blik.js.map +1 -1
- package/dist/es-legacy/components/Boleto/Boleto.js +1 -1
- package/dist/es-legacy/components/Boleto/Boleto.js.map +1 -1
- package/dist/es-legacy/components/Boleto/components/BoletoVoucherResult/BoletoVoucherResult.js +1 -1
- package/dist/es-legacy/components/Boleto/components/BoletoVoucherResult/BoletoVoucherResult.js.map +1 -1
- package/dist/es-legacy/components/Card/Card.js.map +1 -1
- package/dist/es-legacy/components/Card/components/ClickToPayHolder.js +1 -1
- package/dist/es-legacy/components/Card/components/ClickToPayHolder.js.map +1 -1
- package/dist/es-legacy/components/Doku/Doku.js +1 -1
- package/dist/es-legacy/components/Doku/Doku.js.map +1 -1
- package/dist/es-legacy/components/Doku/components/DokuVoucherResult/DokuVoucherResult.js +1 -1
- package/dist/es-legacy/components/Doku/components/DokuVoucherResult/DokuVoucherResult.js.map +1 -1
- package/dist/es-legacy/components/Dragonpay/Dragonpay.js +1 -1
- package/dist/es-legacy/components/Dragonpay/Dragonpay.js.map +1 -1
- package/dist/es-legacy/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js +1 -1
- package/dist/es-legacy/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js.map +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodBrands/PaymentMethodBrands.js +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodBrands/PaymentMethodBrands.js.map +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
- package/dist/es-legacy/components/Econtext/Econtext.js +1 -1
- package/dist/es-legacy/components/Econtext/Econtext.js.map +1 -1
- package/dist/es-legacy/components/Econtext/components/EcontextVoucherResult/EcontextVoucherResult.js +1 -1
- package/dist/es-legacy/components/Econtext/components/EcontextVoucherResult/EcontextVoucherResult.js.map +1 -1
- package/dist/es-legacy/components/Klarna/KlarnaPayments.js +1 -1
- package/dist/es-legacy/components/Klarna/KlarnaPayments.js.map +1 -1
- package/dist/es-legacy/components/Klarna/components/KlarnaContainer/KlarnaContainer.js +1 -1
- package/dist/es-legacy/components/Klarna/components/KlarnaContainer/KlarnaContainer.js.map +1 -1
- package/dist/es-legacy/components/MBWay/MBWay.js +1 -1
- package/dist/es-legacy/components/MBWay/MBWay.js.map +1 -1
- package/dist/es-legacy/components/Multibanco/Multibanco.js +1 -1
- package/dist/es-legacy/components/Multibanco/Multibanco.js.map +1 -1
- package/dist/es-legacy/components/Multibanco/components/MultibancoVoucherResult/MultibancoVoucherResult.js +1 -1
- package/dist/es-legacy/components/Multibanco/components/MultibancoVoucherResult/MultibancoVoucherResult.js.map +1 -1
- package/dist/es-legacy/components/Oxxo/Oxxo.js +1 -1
- package/dist/es-legacy/components/Oxxo/Oxxo.js.map +1 -1
- package/dist/es-legacy/components/Oxxo/components/OxxoVoucherResult/OxxoVoucherResult.js +1 -1
- package/dist/es-legacy/components/Oxxo/components/OxxoVoucherResult/OxxoVoucherResult.js.map +1 -1
- package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js +2 -0
- package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js.map +1 -0
- package/dist/es-legacy/components/PayPal/Paypal.js +1 -1
- package/dist/es-legacy/components/PayPal/Paypal.js.map +1 -1
- package/dist/es-legacy/components/Redirect/Redirect.js +1 -1
- package/dist/es-legacy/components/Redirect/Redirect.js.map +1 -1
- package/dist/es-legacy/components/Redirect/components/RedirectShopper/RedirectShopper.js +1 -1
- package/dist/es-legacy/components/Redirect/components/RedirectShopper/RedirectShopper.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
- package/dist/es-legacy/components/UPI/UPI.js +1 -1
- package/dist/es-legacy/components/UPI/UPI.js.map +1 -1
- package/dist/es-legacy/components/components-name-map.js +1 -1
- package/dist/es-legacy/components/components-name-map.js.map +1 -1
- package/dist/es-legacy/components/helpers/QRLoaderContainer/QRLoaderContainer.js +1 -1
- package/dist/es-legacy/components/helpers/QRLoaderContainer/QRLoaderContainer.js.map +1 -1
- package/dist/es-legacy/components/index.js +1 -1
- package/dist/es-legacy/components/internal/Await/Await.js +1 -1
- package/dist/es-legacy/components/internal/Await/Await.js.map +1 -1
- package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
- package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
- package/dist/es-legacy/components/internal/Button/Button.js +1 -1
- package/dist/es-legacy/components/internal/Button/Button.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/ClickToPayComponent.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/ClickToPayComponent.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPCards/CtPCards.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPCards/CtPCards.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPLogin/CtPLogin.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPLogin/CtPLogin.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPLogin/CtPLoginInput.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPLogin/CtPLoginInput.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePassword.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePassword.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPSection/CtPSection.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPSection/CtPSection.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/errors/TimeoutError.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/errors/TimeoutError.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/services/ClickToPayService.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/services/ClickToPayService.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/services/execute-with-timeout.js +2 -0
- package/dist/es-legacy/components/internal/ClickToPay/services/execute-with-timeout.js.map +1 -0
- package/dist/es-legacy/components/internal/FormFields/InputBase.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/RadioGroup/RadioGroup.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
- package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
- package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
- package/dist/es-legacy/components/internal/Voucher/Voucher.js +1 -1
- package/dist/es-legacy/components/internal/Voucher/Voucher.js.map +1 -1
- package/dist/es-legacy/components/internal/Voucher/utils.js +2 -0
- package/dist/es-legacy/components/internal/Voucher/utils.js.map +1 -0
- package/dist/es-legacy/components/tx-variants.js +1 -1
- package/dist/es-legacy/components/tx-variants.js.map +1 -1
- package/dist/es-legacy/core/Context/CoreProvider.js +1 -1
- package/dist/es-legacy/core/Context/CoreProvider.js.map +1 -1
- package/dist/es-legacy/core/Errors/CancelError.js +2 -0
- package/dist/es-legacy/core/Errors/CancelError.js.map +1 -0
- package/dist/es-legacy/core/Errors/SRPanel.js +1 -1
- package/dist/es-legacy/core/Errors/SRPanel.js.map +1 -1
- package/dist/es-legacy/core/ProcessResponse/PaymentAction/actionTypes.js +1 -1
- package/dist/es-legacy/core/ProcessResponse/PaymentAction/actionTypes.js.map +1 -1
- package/dist/es-legacy/core/ProcessResponse/PaymentMethods/filters.js +1 -1
- package/dist/es-legacy/core/ProcessResponse/PaymentMethods/filters.js.map +1 -1
- package/dist/es-legacy/core/Services/analytics/collect-id.js +1 -1
- package/dist/es-legacy/core/core.js +1 -1
- package/dist/es-legacy/index.js +1 -1
- package/dist/es-legacy/utils/get-process-message-handler.js +1 -1
- package/dist/es-legacy/utils/get-process-message-handler.js.map +1 -1
- package/dist/es-legacy/utils/listenerUtils.js +1 -1
- package/dist/es-legacy/utils/listenerUtils.js.map +1 -1
- package/package.json +9 -9
- package/styles/adyen.css +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrepareChallenge3DS2.js","sources":["../../../../../../src/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport DoChallenge3DS2 from './DoChallenge3DS2';\nimport { createChallengeResolveData, prepareChallengeData, createOldChallengeResolveData, isErrorObject } from '../utils';\nimport { PrepareChallenge3DS2Props, PrepareChallenge3DS2State, StatusErrorInfoObject } from './types';\nimport { ChallengeData, ResultObject, ThreeDS2FlowObject, ErrorCodeObject } from '../../types';\nimport '../../ThreeDS2.scss';\nimport Img from '../../../internal/Img';\nimport './challenge.scss';\nimport { hasOwnProperty } from '../../../../utils/hasOwnProperty';\nimport useImage from '../../../../core/Context/useImage';\nimport AdyenCheckoutError, { ERROR } from '../../../../core/Errors/AdyenCheckoutError';\nimport { ActionHandledReturnObject } from '../../../../types/global-types';\nimport { SendAnalyticsObject } from '../../../../core/Analytics/types';\nimport {\n THREEDS2_CHALLENGE,\n THREEDS2_CHALLENGE_ERROR,\n THREEDS2_FULL,\n THREEDS2_NUM,\n MISSING_TOKEN_IN_ACTION_MSG,\n THREEDS2_ERROR\n} from '../../constants';\nimport { isValidHttpUrl } from '../../../../utils/isValidURL';\nimport { ANALYTICS_API_ERROR, ANALYTICS_NETWORK_ERROR, Analytics3DS2Errors, Analytics3DS2Events } from '../../../../core/Analytics/constants';\nimport { ErrorObject } from '../../../../core/Errors/types';\n\nclass PrepareChallenge3DS2 extends Component<PrepareChallenge3DS2Props, PrepareChallenge3DS2State> {\n public static defaultProps = {\n onComplete: () => {},\n onError: () => {},\n onActionHandled: () => {},\n isMDFlow: false\n };\n\n constructor(props) {\n super(props);\n\n if (this.props.token) {\n const challengeData: ChallengeData | ErrorObject = prepareChallengeData({\n token: this.props.token,\n size: this.props.challengeWindowSize || this.props.size // TODO confirm that this.props.size is legacy and can be removed\n });\n\n this.state = {\n status: 'init',\n challengeData: challengeData as ChallengeData\n };\n } else {\n // Will be picked up in componentDidMount\n this.state = { challengeData: { success: false, error: MISSING_TOKEN_IN_ACTION_MSG } };\n\n console.debug(`${THREEDS2_CHALLENGE_ERROR}: ${MISSING_TOKEN_IN_ACTION_MSG}`);\n }\n }\n\n public onActionHandled = (rtnObj: ActionHandledReturnObject) => {\n this.props.onSubmitAnalytics({\n type: THREEDS2_FULL,\n message: rtnObj.actionDescription,\n subtype: Analytics3DS2Events.CHALLENGE_IFRAME_LOADED\n });\n\n this.props.onActionHandled(rtnObj);\n };\n\n public onFormSubmit = (msg: string) => {\n this.props.onSubmitAnalytics({\n type: THREEDS2_FULL,\n message: msg,\n subtype: Analytics3DS2Events.CHALLENGE_DATA_SENT\n });\n };\n\n componentDidMount() {\n const hasChallengeData = !isErrorObject(this.state.challengeData);\n\n if (hasChallengeData) {\n const shouldAllowHttpDomains =\n /** Allow http urls if in development and testing against localhost:8080 */\n (process.env.NODE_ENV === 'development' && process.env.__CLIENT_ENV__?.indexOf('localhost:8080') > -1) ||\n /**\n * Allows the checkoutshopper demo on localhost:8080 to work -\n * requires a configuration in localhost of environment: 'test', _environmentUrls: {api: 'http://localhost:8080/'}\n */\n (this.props.environment === 'test' && this.props._environmentUrls?.api?.includes('http://localhost:8080'));\n\n /**\n * Check the structure of the created challengeData\n */\n const { acsURL } = this.state.challengeData as ChallengeData;\n const hasValidAcsURL = isValidHttpUrl(acsURL, shouldAllowHttpDomains);\n\n // Only render component if we have an acsURL.\n if (!hasValidAcsURL) {\n // Set UI error & call onError callback\n this.setError(\n {\n errorInfo: `${Analytics3DS2Errors.TOKEN_IS_MISSING_ACSURL}: ${this.props.i18n.get('err.gen.9102')}` //\n },\n true\n );\n\n // Send error to analytics endpoint // TODO - check logs to see if this *ever* happens\n const errorCodeObject: SendAnalyticsObject = {\n type: THREEDS2_ERROR,\n code: Analytics3DS2Errors.TOKEN_IS_MISSING_ACSURL,\n errorType: ANALYTICS_API_ERROR,\n message: `${THREEDS2_CHALLENGE_ERROR}: Decoded token is missing a valid acsURL property`\n // metadata: { acsURL } // NEW TODO - check acsURL isn't secret\n };\n this.props.onSubmitAnalytics(errorCodeObject);\n\n console.debug('### PrepareChallenge3DS2::exiting:: no valid acsURL');\n return;\n }\n\n const { acsTransID, messageVersion, threeDSServerTransID } = (this.state.challengeData as ChallengeData).cReqData;\n\n // Only render component if we have a acsTransID, messageVersion & threeDSServerTransID\n if (!acsTransID || !messageVersion || !threeDSServerTransID) {\n // Set UI error & call onError callback\n this.setError(\n {\n errorInfo: `${Analytics3DS2Errors.TOKEN_IS_MISSING_OTHER_PROPS}: ${this.props.i18n.get('err.gen.9102')}`\n // errorObj: this.state.challengeData // TODO Decide if we want to expose this data\n },\n true\n );\n\n // Send error to analytics endpoint // TODO - check logs to see if this *ever* happens\n this.props.onSubmitAnalytics({\n type: THREEDS2_ERROR,\n code: Analytics3DS2Errors.TOKEN_IS_MISSING_OTHER_PROPS,\n errorType: ANALYTICS_API_ERROR,\n message: `${THREEDS2_CHALLENGE_ERROR}: Decoded token is missing one or more of the following properties (acsTransID | messageVersion | threeDSServerTransID)`\n } as SendAnalyticsObject);\n\n console.debug(\n '### PrepareChallenge3DS2::exiting:: missing one or more of the following properties (acsTransID | messageVersion | threeDSServerTransID)'\n );\n return;\n }\n\n // Proceed to allow component to render\n this.setState({ status: 'performingChallenge' });\n //\n } else {\n const errorMsg: string = (this.state.challengeData as ErrorObject).error;\n\n const errorCode =\n errorMsg.indexOf(MISSING_TOKEN_IN_ACTION_MSG) > -1\n ? Analytics3DS2Errors.ACTION_IS_MISSING_TOKEN\n : Analytics3DS2Errors.TOKEN_DECODE_OR_PARSING_FAILED;\n\n // Set UI error & call onError callback\n this.setError(\n {\n errorInfo:\n errorMsg.indexOf(MISSING_TOKEN_IN_ACTION_MSG) > -1\n ? `${Analytics3DS2Errors.ACTION_IS_MISSING_TOKEN}: ${this.props.i18n.get('err.gen.9102')}`\n : `${Analytics3DS2Errors.TOKEN_DECODE_OR_PARSING_FAILED}: ${this.props.i18n.get('err.gen.9102')}`\n // errorObj: this.state.challengeData // TODO Decide if we want to expose this data\n },\n true\n );\n\n // Send error to analytics endpoint // TODO - check logs to see if the base64 decoding errors *ever* happen\n this.props.onSubmitAnalytics({\n type: THREEDS2_ERROR,\n code: errorCode,\n errorType: ANALYTICS_API_ERROR,\n message: `${THREEDS2_CHALLENGE_ERROR}: ${errorMsg}` // can be: 'Missing \"token\" property from threeDS2 action', 'not base64', 'malformed URI sequence' or 'Could not JSON parse token'\n });\n\n console.debug('### PrepareChallenge3DS2::exiting:: no challengeData');\n }\n }\n\n setStatusComplete(resultObj: ResultObject, errorCodeObject: ErrorCodeObject = null) {\n this.setState({ status: 'complete' }, () => {\n /**\n * Create the data in the way that the /details endpoint expects.\n * This is different for the flow triggered by the threeds2InMDFlow process than for the new, v67, 'threeDS2' action\n */\n const resolveDataFunction = this.props.isMDFlow ? createOldChallengeResolveData : createChallengeResolveData;\n const data = resolveDataFunction(this.props.dataKey, resultObj.transStatus, this.props.paymentData);\n\n if (errorCodeObject) {\n console.debug('### PrepareChallenge3DS2::errorCodeObject::', errorCodeObject);\n }\n\n let analyticsObject: SendAnalyticsObject;\n\n /** Are we in an \"error\" i.e. timeout or no transStatus, scenario? If so, submit analytics about it */\n const finalResObject = errorCodeObject ? errorCodeObject : resultObj;\n if (finalResObject.errorCode) {\n const errorTypeAndCode = {\n code: finalResObject.errorCode === 'timeout' ? Analytics3DS2Errors.THREEDS2_TIMEOUT : Analytics3DS2Errors.NO_TRANSSTATUS,\n errorType: finalResObject.errorCode === 'timeout' ? ANALYTICS_NETWORK_ERROR : ANALYTICS_API_ERROR\n };\n\n // Challenge process has timed out,\n // or, It's an error reported by the backend 'cos no transStatus could be retrieved // TODO - check logs to see if this *ever* happens\n analyticsObject = {\n type: THREEDS2_ERROR,\n message: (finalResObject as ErrorCodeObject).message,\n ...errorTypeAndCode\n };\n\n // Send error to analytics endpoint\n this.props.onSubmitAnalytics(analyticsObject);\n }\n\n /** Calculate \"result\" for analytics */\n let result: string;\n\n switch (resultObj?.transStatus) {\n case 'Y':\n result = 'success';\n break;\n case 'N':\n result = 'failed';\n break;\n case 'U':\n result = !errorCodeObject ? 'cancelled' : 'timeout';\n break;\n default:\n }\n if (resultObj?.errorCode) {\n result = 'noTransStatus';\n }\n\n /** Create log object - the process is completed, one way or another */\n analyticsObject = {\n type: THREEDS2_FULL,\n message: `${THREEDS2_NUM} challenge has completed`,\n subtype: Analytics3DS2Events.CHALLENGE_COMPLETED,\n result\n };\n\n // Send log to analytics endpoint\n this.props.onSubmitAnalytics(analyticsObject);\n\n /**\n * Equals call to onAdditionalDetails (except for in 3DS2InMDFlow)\n */\n this.props.onComplete(data);\n });\n }\n\n /**\n * Display error in the UI,\n * and, optionally, decide whether to send any of these errors to the merchant defined onError callback\n *\n * @param errorInfoObj -\n * @param isFatal -\n */\n setError(errorInfoObj: StatusErrorInfoObject, isFatal: boolean) {\n this.setState({ status: 'error', errorInfo: errorInfoObj.errorInfo });\n\n // Decide whether to call this.props.onError\n if (isFatal) {\n this.props.onError(new AdyenCheckoutError(ERROR, errorInfoObj.errorInfo, { cause: errorInfoObj.errorObj }));\n }\n }\n\n render(_, { challengeData }) {\n const getImage = useImage();\n if (this.state.status === 'performingChallenge') {\n return (\n <DoChallenge3DS2\n onCompleteChallenge={(challenge: ThreeDS2FlowObject) => {\n let errorCodeObject: ErrorCodeObject = null;\n\n // Challenge has resulted in an error (no transStatus could be retrieved) - but we still treat this as a valid scenario\n if (hasOwnProperty(challenge.result, 'errorCode') && challenge.result.errorCode.length) {\n // Tell the merchant there's been an error\n errorCodeObject = {\n errorCode: challenge.result.errorCode,\n message: `${THREEDS2_CHALLENGE_ERROR}: ${\n challenge.result.errorDescription ? challenge.result.errorDescription : 'no transStatus could be retrieved'\n }`\n };\n\n /**\n * NOTE: we can now use this.props.isMDFlow to decide if we want to send any of these errors to the onError handler\n * - this is problematic in the regular flow since merchants tend to treat any calls to their onError handler as 'fatal',\n * but in the MDFlow we control what the onError handler does.\n */\n if (this.props.isMDFlow) {\n this.props.onError(\n new AdyenCheckoutError(\n ERROR,\n `${THREEDS2_CHALLENGE_ERROR}: ${\n challenge.result.errorDescription\n ? challenge.result.errorDescription\n : 'no transStatus could be retrieved'\n }`,\n { cause: challenge.result.errorCode }\n )\n );\n }\n }\n\n /**\n * An object has been returned, parsed & accepted as legit (according to the rules in getProcessMessageHandler),\n * but the result prop on that object is missing\n */\n if (!challenge.result) {\n this.setError(\n {\n errorInfo: `${THREEDS2_CHALLENGE_ERROR}: ${this.props.i18n.get('3ds.chal.805', {\n values: { result: '\"result\"' }\n })}`,\n errorObj: challenge as unknown as ErrorObject\n },\n true\n );\n\n // Send error to analytics endpoint\n this.props.onSubmitAnalytics({\n type: THREEDS2_ERROR,\n code: Analytics3DS2Errors.CHALLENGE_RESOLVED_WITHOUT_RESULT_PROP,\n errorType: ANALYTICS_API_ERROR,\n message: `${THREEDS2_CHALLENGE_ERROR}: challenge resolved without a \"result\" object`\n });\n\n console.debug('### PrepareChallenge3DS2::exiting:: challenge resolved without a \"result\" object');\n\n return;\n }\n\n // Proceed with call to onAdditionalDetails (except for in 3DS2InMDFlow)\n this.setStatusComplete(challenge.result, errorCodeObject);\n }}\n onErrorChallenge={(challenge: ThreeDS2FlowObject) => {\n /**\n * Called when challenge times-out (which is still a valid scenario)...\n */\n if (hasOwnProperty(challenge, 'errorCode')) {\n const timeoutObject: ErrorCodeObject = {\n errorCode: challenge.errorCode,\n message: `${THREEDS2_CHALLENGE}: ${challenge.errorCode}`\n };\n\n // see comment in onCompleteChallenge code block\n if (this.props.isMDFlow) {\n this.props.onError(\n new AdyenCheckoutError(ERROR, `${THREEDS2_CHALLENGE_ERROR}: '3DS2 challenge timed out'`, {\n cause: challenge.errorCode\n })\n );\n }\n\n this.setStatusComplete(challenge.result, timeoutObject);\n return;\n }\n }}\n {...challengeData}\n onActionHandled={this.onActionHandled}\n onFormSubmit={this.onFormSubmit}\n />\n );\n }\n\n if (this.state.status === 'error') {\n return (\n <div className=\"adyen-checkout__threeds2-challenge-error\">\n <Img\n className=\"adyen-checkout__status__icon adyen-checkout__status__icon--error\"\n src={getImage({\n imageFolder: 'components/'\n })('error')}\n alt={''}\n />\n <div className=\"adyen-checkout__status__text\">\n {this.state.errorInfo ? this.state.errorInfo : this.props.i18n.get('error.message.unknown')}\n </div>\n </div>\n );\n }\n\n return null;\n }\n}\n\nexport default PrepareChallenge3DS2;\n"],"names":["PrepareChallenge3DS2","Component","static","onComplete","onError","onActionHandled","isMDFlow","constructor","props","super","this","token","challengeData","prepareChallengeData","size","challengeWindowSize","state","status","success","error","MISSING_TOKEN_IN_ACTION_MSG","console","debug","THREEDS2_CHALLENGE_ERROR","rtnObj","onSubmitAnalytics","type","THREEDS2_FULL","message","actionDescription","subtype","Analytics3DS2Events","CHALLENGE_IFRAME_LOADED","onFormSubmit","msg","CHALLENGE_DATA_SENT","componentDidMount","isErrorObject","shouldAllowHttpDomains","environment","_environmentUrls","api","includes","acsURL","isValidHttpUrl","setError","errorInfo","Analytics3DS2Errors","TOKEN_IS_MISSING_ACSURL","i18n","get","errorCodeObject","THREEDS2_ERROR","code","errorType","ANALYTICS_API_ERROR","acsTransID","messageVersion","threeDSServerTransID","cReqData","TOKEN_IS_MISSING_OTHER_PROPS","setState","errorMsg","errorCode","indexOf","ACTION_IS_MISSING_TOKEN","TOKEN_DECODE_OR_PARSING_FAILED","setStatusComplete","resultObj","data","createOldChallengeResolveData","createChallengeResolveData","dataKey","transStatus","paymentData","analyticsObject","finalResObject","errorTypeAndCode","THREEDS2_TIMEOUT","NO_TRANSSTATUS","ANALYTICS_NETWORK_ERROR","result","THREEDS2_NUM","CHALLENGE_COMPLETED","errorInfoObj","isFatal","AdyenCheckoutError","ERROR","cause","errorObj","render","_","getImage","useImage","h","DoChallenge3DS2","onCompleteChallenge","challenge","hasOwnProperty","length","errorDescription","values","CHALLENGE_RESOLVED_WITHOUT_RESULT_PROP","onErrorChallenge","timeoutObject","THREEDS2_CHALLENGE","div","className","Img","src","imageFolder","alt"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PrepareChallenge3DS2.js","sources":["../../../../../../src/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport DoChallenge3DS2 from './DoChallenge3DS2';\nimport { createChallengeResolveData, prepareChallengeData, createOldChallengeResolveData, isErrorObject } from '../utils';\nimport { PrepareChallenge3DS2Props, PrepareChallenge3DS2State, StatusErrorInfoObject } from './types';\nimport { ChallengeData, ResultObject, ThreeDS2FlowObject, ErrorCodeObject } from '../../types';\nimport '../../ThreeDS2.scss';\nimport Img from '../../../internal/Img';\nimport './challenge.scss';\nimport { hasOwnProperty } from '../../../../utils/hasOwnProperty';\nimport useImage from '../../../../core/Context/useImage';\nimport AdyenCheckoutError, { ERROR } from '../../../../core/Errors/AdyenCheckoutError';\nimport { SendAnalyticsObject } from '../../../../core/Analytics/types';\nimport {\n THREEDS2_CHALLENGE,\n THREEDS2_CHALLENGE_ERROR,\n THREEDS2_FULL,\n THREEDS2_NUM,\n MISSING_TOKEN_IN_ACTION_MSG,\n THREEDS2_ERROR\n} from '../../constants';\nimport { isValidHttpUrl } from '../../../../utils/isValidURL';\nimport { ANALYTICS_API_ERROR, ANALYTICS_NETWORK_ERROR, Analytics3DS2Errors, Analytics3DS2Events } from '../../../../core/Analytics/constants';\nimport { ErrorObject } from '../../../../core/Errors/types';\n\nclass PrepareChallenge3DS2 extends Component<PrepareChallenge3DS2Props, PrepareChallenge3DS2State> {\n public static defaultProps = {\n onComplete: () => {},\n onError: () => {},\n isMDFlow: false\n };\n\n constructor(props) {\n super(props);\n\n if (this.props.token) {\n const challengeData: ChallengeData | ErrorObject = prepareChallengeData({\n token: this.props.token,\n size: this.props.challengeWindowSize || this.props.size // TODO confirm that this.props.size is legacy and can be removed\n });\n\n this.state = {\n status: 'init',\n challengeData: challengeData as ChallengeData\n };\n } else {\n // Will be picked up in componentDidMount\n this.state = { challengeData: { success: false, error: MISSING_TOKEN_IN_ACTION_MSG } };\n\n console.debug(`${THREEDS2_CHALLENGE_ERROR}: ${MISSING_TOKEN_IN_ACTION_MSG}`);\n }\n }\n\n public onFormSubmit = (msg: string) => {\n this.props.onSubmitAnalytics({\n type: THREEDS2_FULL,\n message: msg,\n subtype: Analytics3DS2Events.CHALLENGE_DATA_SENT\n });\n };\n\n componentDidMount() {\n const hasChallengeData = !isErrorObject(this.state.challengeData);\n\n if (hasChallengeData) {\n const shouldAllowHttpDomains =\n /** Allow http urls if in development and testing against localhost:8080 */\n (process.env.NODE_ENV === 'development' && process.env.__CLIENT_ENV__?.indexOf('localhost:8080') > -1) ||\n /**\n * Allows the checkoutshopper demo on localhost:8080 to work -\n * requires a configuration in localhost of environment: 'test', _environmentUrls: {api: 'http://localhost:8080/'}\n */\n (this.props.environment === 'test' && this.props._environmentUrls?.api?.includes('http://localhost:8080'));\n\n /**\n * Check the structure of the created challengeData\n */\n const { acsURL } = this.state.challengeData as ChallengeData;\n const hasValidAcsURL = isValidHttpUrl(acsURL, shouldAllowHttpDomains);\n\n // Only render component if we have an acsURL.\n if (!hasValidAcsURL) {\n // Set UI error & call onError callback\n this.setError(\n {\n errorInfo: `${Analytics3DS2Errors.TOKEN_IS_MISSING_ACSURL}: ${this.props.i18n.get('err.gen.9102')}` //\n },\n true\n );\n\n // Send error to analytics endpoint // TODO - check logs to see if this *ever* happens\n const errorCodeObject: SendAnalyticsObject = {\n type: THREEDS2_ERROR,\n code: Analytics3DS2Errors.TOKEN_IS_MISSING_ACSURL,\n errorType: ANALYTICS_API_ERROR,\n message: `${THREEDS2_CHALLENGE_ERROR}: Decoded token is missing a valid acsURL property`\n // metadata: { acsURL } // NEW TODO - check acsURL isn't secret\n };\n this.props.onSubmitAnalytics(errorCodeObject);\n\n console.debug('### PrepareChallenge3DS2::exiting:: no valid acsURL');\n return;\n }\n\n const { acsTransID, messageVersion, threeDSServerTransID } = (this.state.challengeData as ChallengeData).cReqData;\n\n // Only render component if we have a acsTransID, messageVersion & threeDSServerTransID\n if (!acsTransID || !messageVersion || !threeDSServerTransID) {\n // Set UI error & call onError callback\n this.setError(\n {\n errorInfo: `${Analytics3DS2Errors.TOKEN_IS_MISSING_OTHER_PROPS}: ${this.props.i18n.get('err.gen.9102')}`\n // errorObj: this.state.challengeData // TODO Decide if we want to expose this data\n },\n true\n );\n\n // Send error to analytics endpoint // TODO - check logs to see if this *ever* happens\n this.props.onSubmitAnalytics({\n type: THREEDS2_ERROR,\n code: Analytics3DS2Errors.TOKEN_IS_MISSING_OTHER_PROPS,\n errorType: ANALYTICS_API_ERROR,\n message: `${THREEDS2_CHALLENGE_ERROR}: Decoded token is missing one or more of the following properties (acsTransID | messageVersion | threeDSServerTransID)`\n } as SendAnalyticsObject);\n\n console.debug(\n '### PrepareChallenge3DS2::exiting:: missing one or more of the following properties (acsTransID | messageVersion | threeDSServerTransID)'\n );\n return;\n }\n\n // Proceed to allow component to render\n this.setState({ status: 'performingChallenge' });\n //\n } else {\n const errorMsg: string = (this.state.challengeData as ErrorObject).error;\n\n const errorCode =\n errorMsg.indexOf(MISSING_TOKEN_IN_ACTION_MSG) > -1\n ? Analytics3DS2Errors.ACTION_IS_MISSING_TOKEN\n : Analytics3DS2Errors.TOKEN_DECODE_OR_PARSING_FAILED;\n\n // Set UI error & call onError callback\n this.setError(\n {\n errorInfo:\n errorMsg.indexOf(MISSING_TOKEN_IN_ACTION_MSG) > -1\n ? `${Analytics3DS2Errors.ACTION_IS_MISSING_TOKEN}: ${this.props.i18n.get('err.gen.9102')}`\n : `${Analytics3DS2Errors.TOKEN_DECODE_OR_PARSING_FAILED}: ${this.props.i18n.get('err.gen.9102')}`\n // errorObj: this.state.challengeData // TODO Decide if we want to expose this data\n },\n true\n );\n\n // Send error to analytics endpoint // TODO - check logs to see if the base64 decoding errors *ever* happen\n this.props.onSubmitAnalytics({\n type: THREEDS2_ERROR,\n code: errorCode,\n errorType: ANALYTICS_API_ERROR,\n message: `${THREEDS2_CHALLENGE_ERROR}: ${errorMsg}` // can be: 'Missing \"token\" property from threeDS2 action', 'not base64', 'malformed URI sequence' or 'Could not JSON parse token'\n });\n\n console.debug('### PrepareChallenge3DS2::exiting:: no challengeData');\n }\n }\n\n setStatusComplete(resultObj: ResultObject, errorCodeObject: ErrorCodeObject = null) {\n this.setState({ status: 'complete' }, () => {\n /**\n * Create the data in the way that the /details endpoint expects.\n * This is different for the flow triggered by the threeds2InMDFlow process than for the new, v67, 'threeDS2' action\n */\n const resolveDataFunction = this.props.isMDFlow ? createOldChallengeResolveData : createChallengeResolveData;\n const data = resolveDataFunction(this.props.dataKey, resultObj.transStatus, this.props.paymentData);\n\n if (errorCodeObject) {\n console.debug('### PrepareChallenge3DS2::errorCodeObject::', errorCodeObject);\n }\n\n let analyticsObject: SendAnalyticsObject;\n\n /** Are we in an \"error\" i.e. timeout or no transStatus, scenario? If so, submit analytics about it */\n const finalResObject = errorCodeObject ? errorCodeObject : resultObj;\n if (finalResObject.errorCode) {\n const errorTypeAndCode = {\n code: finalResObject.errorCode === 'timeout' ? Analytics3DS2Errors.THREEDS2_TIMEOUT : Analytics3DS2Errors.NO_TRANSSTATUS,\n errorType: finalResObject.errorCode === 'timeout' ? ANALYTICS_NETWORK_ERROR : ANALYTICS_API_ERROR\n };\n\n // Challenge process has timed out,\n // or, It's an error reported by the backend 'cos no transStatus could be retrieved // TODO - check logs to see if this *ever* happens\n analyticsObject = {\n type: THREEDS2_ERROR,\n message: (finalResObject as ErrorCodeObject).message,\n ...errorTypeAndCode\n };\n\n // Send error to analytics endpoint\n this.props.onSubmitAnalytics(analyticsObject);\n }\n\n /** Calculate \"result\" for analytics */\n let result: string;\n\n switch (resultObj?.transStatus) {\n case 'Y':\n result = 'success';\n break;\n case 'N':\n result = 'failed';\n break;\n case 'U':\n result = !errorCodeObject ? 'cancelled' : 'timeout';\n break;\n default:\n }\n if (resultObj?.errorCode) {\n result = 'noTransStatus';\n }\n\n /** Create log object - the process is completed, one way or another */\n analyticsObject = {\n type: THREEDS2_FULL,\n message: `${THREEDS2_NUM} challenge has completed`,\n subtype: Analytics3DS2Events.CHALLENGE_COMPLETED,\n result\n };\n\n // Send log to analytics endpoint\n this.props.onSubmitAnalytics(analyticsObject);\n\n /**\n * Equals call to onAdditionalDetails (except for in 3DS2InMDFlow)\n */\n this.props.onComplete(data);\n });\n }\n\n /**\n * Display error in the UI,\n * and, optionally, decide whether to send any of these errors to the merchant defined onError callback\n *\n * @param errorInfoObj -\n * @param isFatal -\n */\n setError(errorInfoObj: StatusErrorInfoObject, isFatal: boolean) {\n this.setState({ status: 'error', errorInfo: errorInfoObj.errorInfo });\n\n // Decide whether to call this.props.onError\n if (isFatal) {\n this.props.onError(new AdyenCheckoutError(ERROR, errorInfoObj.errorInfo, { cause: errorInfoObj.errorObj }));\n }\n }\n\n render(_, { challengeData }) {\n const getImage = useImage();\n if (this.state.status === 'performingChallenge') {\n return (\n <DoChallenge3DS2\n onCompleteChallenge={(challenge: ThreeDS2FlowObject) => {\n let errorCodeObject: ErrorCodeObject = null;\n\n // Challenge has resulted in an error (no transStatus could be retrieved) - but we still treat this as a valid scenario\n if (hasOwnProperty(challenge.result, 'errorCode') && challenge.result.errorCode.length) {\n // Tell the merchant there's been an error\n errorCodeObject = {\n errorCode: challenge.result.errorCode,\n message: `${THREEDS2_CHALLENGE_ERROR}: ${\n challenge.result.errorDescription ? challenge.result.errorDescription : 'no transStatus could be retrieved'\n }`\n };\n\n /**\n * NOTE: we can now use this.props.isMDFlow to decide if we want to send any of these errors to the onError handler\n * - this is problematic in the regular flow since merchants tend to treat any calls to their onError handler as 'fatal',\n * but in the MDFlow we control what the onError handler does.\n */\n if (this.props.isMDFlow) {\n this.props.onError(\n new AdyenCheckoutError(\n ERROR,\n `${THREEDS2_CHALLENGE_ERROR}: ${\n challenge.result.errorDescription\n ? challenge.result.errorDescription\n : 'no transStatus could be retrieved'\n }`,\n { cause: challenge.result.errorCode }\n )\n );\n }\n }\n\n /**\n * An object has been returned, parsed & accepted as legit (according to the rules in getProcessMessageHandler),\n * but the result prop on that object is missing\n */\n if (!challenge.result) {\n this.setError(\n {\n errorInfo: `${THREEDS2_CHALLENGE_ERROR}: ${this.props.i18n.get('3ds.chal.805', {\n values: { result: '\"result\"' }\n })}`,\n errorObj: challenge as unknown as ErrorObject\n },\n true\n );\n\n // Send error to analytics endpoint\n this.props.onSubmitAnalytics({\n type: THREEDS2_ERROR,\n code: Analytics3DS2Errors.CHALLENGE_RESOLVED_WITHOUT_RESULT_PROP,\n errorType: ANALYTICS_API_ERROR,\n message: `${THREEDS2_CHALLENGE_ERROR}: challenge resolved without a \"result\" object`\n });\n\n console.debug('### PrepareChallenge3DS2::exiting:: challenge resolved without a \"result\" object');\n\n return;\n }\n\n // Proceed with call to onAdditionalDetails (except for in 3DS2InMDFlow)\n this.setStatusComplete(challenge.result, errorCodeObject);\n }}\n onErrorChallenge={(challenge: ThreeDS2FlowObject) => {\n /**\n * Called when challenge times-out (which is still a valid scenario)...\n */\n if (hasOwnProperty(challenge, 'errorCode')) {\n const timeoutObject: ErrorCodeObject = {\n errorCode: challenge.errorCode,\n message: `${THREEDS2_CHALLENGE}: ${challenge.errorCode}`\n };\n\n // see comment in onCompleteChallenge code block\n if (this.props.isMDFlow) {\n this.props.onError(\n new AdyenCheckoutError(ERROR, `${THREEDS2_CHALLENGE_ERROR}: '3DS2 challenge timed out'`, {\n cause: challenge.errorCode\n })\n );\n }\n\n this.setStatusComplete(challenge.result, timeoutObject);\n return;\n }\n }}\n {...challengeData}\n onActionHandled={this.props.onActionHandled}\n onFormSubmit={this.onFormSubmit}\n />\n );\n }\n\n if (this.state.status === 'error') {\n return (\n <div className=\"adyen-checkout__threeds2-challenge-error\">\n <Img\n className=\"adyen-checkout__status__icon adyen-checkout__status__icon--error\"\n src={getImage({\n imageFolder: 'components/'\n })('error')}\n alt={''}\n />\n <div className=\"adyen-checkout__status__text\">\n {this.state.errorInfo ? this.state.errorInfo : this.props.i18n.get('error.message.unknown')}\n </div>\n </div>\n );\n }\n\n return null;\n }\n}\n\nexport default PrepareChallenge3DS2;\n"],"names":["PrepareChallenge3DS2","Component","static","onComplete","onError","isMDFlow","constructor","props","super","this","token","challengeData","prepareChallengeData","size","challengeWindowSize","state","status","success","error","MISSING_TOKEN_IN_ACTION_MSG","console","debug","THREEDS2_CHALLENGE_ERROR","onFormSubmit","msg","onSubmitAnalytics","type","THREEDS2_FULL","message","subtype","Analytics3DS2Events","CHALLENGE_DATA_SENT","componentDidMount","isErrorObject","shouldAllowHttpDomains","environment","_environmentUrls","api","includes","acsURL","isValidHttpUrl","setError","errorInfo","Analytics3DS2Errors","TOKEN_IS_MISSING_ACSURL","i18n","get","errorCodeObject","THREEDS2_ERROR","code","errorType","ANALYTICS_API_ERROR","acsTransID","messageVersion","threeDSServerTransID","cReqData","TOKEN_IS_MISSING_OTHER_PROPS","setState","errorMsg","errorCode","indexOf","ACTION_IS_MISSING_TOKEN","TOKEN_DECODE_OR_PARSING_FAILED","setStatusComplete","resultObj","data","createOldChallengeResolveData","createChallengeResolveData","dataKey","transStatus","paymentData","analyticsObject","finalResObject","errorTypeAndCode","THREEDS2_TIMEOUT","NO_TRANSSTATUS","ANALYTICS_NETWORK_ERROR","result","THREEDS2_NUM","CHALLENGE_COMPLETED","errorInfoObj","isFatal","AdyenCheckoutError","ERROR","cause","errorObj","render","_","getImage","useImage","h","DoChallenge3DS2","onCompleteChallenge","challenge","hasOwnProperty","length","errorDescription","values","CHALLENGE_RESOLVED_WITHOUT_RESULT_PROP","onErrorChallenge","timeoutObject","THREEDS2_CHALLENGE","onActionHandled","div","className","Img","src","imageFolder","alt"],"mappings":"m4BAwBA,MAAMA,UAA6BC,EAC/BC,oBAA6B,CACzBC,WAAY,OACZC,QAAS,OACTC,UAAU,GAGdC,WAAAA,CAAYC,GAGR,GAFAC,MAAMD,GAEFE,KAAKF,MAAMG,MAAO,CAClB,MAAMC,EAA6CC,EAAqB,CACpEF,MAAOD,KAAKF,MAAMG,MAClBG,KAAMJ,KAAKF,MAAMO,qBAAuBL,KAAKF,MAAMM,OAGvDJ,KAAKM,MAAQ,CACTC,OAAQ,OACRL,cAAeA,QAInBF,KAAKM,MAAQ,CAAEJ,cAAe,CAAEM,SAAS,EAAOC,MAAOC,IAEvDC,QAAQC,MAAM,GAAGC,MAA6BH,IAEtD,CAEOI,aAAgBC,IACnBf,KAAKF,MAAMkB,kBAAkB,CACzBC,KAAMC,EACNC,QAASJ,EACTK,QAASC,EAAoBC,qBACjC,EAGJC,iBAAAA,GAGI,IAF0BC,EAAcxB,KAAKM,MAAMJ,eAE7B,CAClB,MAAMuB,EAO0B,SAA3BzB,KAAKF,MAAM4B,aAA0B1B,KAAKF,MAAM6B,kBAAkBC,KAAKC,SAAS,0BAK/EC,OAAEA,GAAW9B,KAAKM,MAAMJ,cAI9B,IAHuB6B,EAAeD,EAAQL,GAGzB,CAEjBzB,KAAKgC,SACD,CACIC,UAAW,GAAGC,EAAoBC,4BAA4BnC,KAAKF,MAAMsC,KAAKC,IAAI,oBAEtF,GAIJ,MAAMC,EAAuC,CACzCrB,KAAMsB,EACNC,KAAMN,EAAoBC,wBAC1BM,UAAWC,EACXvB,QAAS,GAAGN,uDAMhB,OAHAb,KAAKF,MAAMkB,kBAAkBsB,QAE7B3B,QAAQC,MAAM,sDAElB,CAEA,MAAM+B,WAAEA,EAAUC,eAAEA,EAAcC,qBAAEA,GAA0B7C,KAAKM,MAAMJ,cAAgC4C,SAGzG,IAAKH,IAAeC,IAAmBC,EAqBnC,OAnBA7C,KAAKgC,SACD,CACIC,UAAW,GAAGC,EAAoBa,iCAAiC/C,KAAKF,MAAMsC,KAAKC,IAAI,oBAG3F,GAIJrC,KAAKF,MAAMkB,kBAAkB,CACzBC,KAAMsB,EACNC,KAAMN,EAAoBa,6BAC1BN,UAAWC,EACXvB,QAAS,GAAGN,kIAGhBF,QAAQC,MACJ,4IAMRZ,KAAKgD,SAAS,CAAEzC,OAAQ,4BAErB,CACH,MAAM0C,EAAmBjD,KAAMM,MAAMJ,cAA8BO,MAE7DyC,EACFD,EAASE,QAAQzC,IAAgC,EAC3CwB,EAAoBkB,wBACpBlB,EAAoBmB,+BAG9BrD,KAAKgC,SACD,CACIC,UACIgB,EAASE,QAAQzC,IAAgC,EAC3C,GAAGwB,EAAoBkB,4BAA4BpD,KAAKF,MAAMsC,KAAKC,IAAI,kBACvE,GAAGH,EAAoBmB,mCAAmCrD,KAAKF,MAAMsC,KAAKC,IAAI,oBAG5F,GAIJrC,KAAKF,MAAMkB,kBAAkB,CACzBC,KAAMsB,EACNC,KAAMU,EACNT,UAAWC,EACXvB,QAAS,GAAGN,MAA6BoC,MAG7CtC,QAAQC,MAAM,uDAClB,CACJ,CAEA0C,iBAAAA,CAAkBC,EAAyBjB,EAAmC,MAC1EtC,KAAKgD,SAAS,CAAEzC,OAAQ,aAAc,KAKlC,MACMiD,GADsBxD,KAAKF,MAAMF,SAAW6D,EAAgCC,GACjD1D,KAAKF,MAAM6D,QAASJ,EAAUK,YAAa5D,KAAKF,MAAM+D,aAMvF,IAAIC,EAJAxB,GACA3B,QAAQC,MAAM,8CAA+C0B,GAMjE,MAAMyB,EAAiBzB,GAAoCiB,EAC3D,GAAIQ,EAAeb,UAAW,CAC1B,MAAMc,EAAmB,CACrBxB,KAAmC,YAA7BuB,EAAeb,UAA0BhB,EAAoB+B,iBAAmB/B,EAAoBgC,eAC1GzB,UAAwC,YAA7BsB,EAAeb,UAA0BiB,EAA0BzB,GAKlFoB,EAAkB,CACd7C,KAAMsB,EACNpB,QAAU4C,EAAmC5C,WAC1C6C,GAIPhE,KAAKF,MAAMkB,kBAAkB8C,EACjC,CAGA,IAAIM,EAEJ,OAAQb,GAAWK,aACf,IAAK,IACDQ,EAAS,UACT,MACJ,IAAK,IACDA,EAAS,SACT,MACJ,IAAK,IACDA,EAAU9B,EAAgC,UAAd,YAIhCiB,GAAWL,YACXkB,EAAS,iBAIbN,EAAkB,CACd7C,KAAMC,EACNC,QAAS,GAAGkD,4BACZjD,QAASC,EAAoBiD,oBAC7BF,UAIJpE,KAAKF,MAAMkB,kBAAkB8C,GAK7B9D,KAAKF,MAAMJ,WAAW8D,EAAAA,GAE9B,CASAxB,QAAAA,CAASuC,EAAqCC,GAC1CxE,KAAKgD,SAAS,CAAEzC,OAAQ,QAAS0B,UAAWsC,EAAatC,YAGrDuC,GACAxE,KAAKF,MAAMH,QAAQ,IAAI8E,EAAmBC,EAAOH,EAAatC,UAAW,CAAE0C,MAAOJ,EAAaK,WAEvG,CAEAC,MAAAA,CAAOC,GAAG5E,cAAEA,IACR,MAAM6E,EAAWC,IACjB,MAA0B,wBAAtBhF,KAAKM,MAAMC,OAEP0E,EAACC,EAAAA,CACGC,oBAAsBC,IAClB,IAAI9C,EAAmC,KAoCvC,GAjCI+C,EAAeD,EAAUhB,OAAQ,cAAgBgB,EAAUhB,OAAOlB,UAAUoC,SAE5EhD,EAAkB,CACdY,UAAWkC,EAAUhB,OAAOlB,UAC5B/B,QAAS,GAAGN,MACRuE,EAAUhB,OAAOmB,iBAAmBH,EAAUhB,OAAOmB,iBAAmB,uCAS5EvF,KAAKF,MAAMF,UACXI,KAAKF,MAAMH,QACP,IAAI8E,EACAC,EACA,GAAG7D,MACCuE,EAAUhB,OAAOmB,iBACXH,EAAUhB,OAAOmB,iBACjB,sCAEV,CAAEZ,MAAOS,EAAUhB,OAAOlB,eAUrCkC,EAAUhB,OAqBX,OApBApE,KAAKgC,SACD,CACIC,UAAW,GAAGpB,OAA8Bb,KAAKF,MAAMsC,KAAKC,IAAI,eAAgB,CAC5EmD,OAAQ,CAAEpB,OAAQ,gBAEtBQ,SAAUQ,IAEd,GAIJpF,KAAKF,MAAMkB,kBAAkB,CACzBC,KAAMsB,EACNC,KAAMN,EAAoBuD,uCAC1BhD,UAAWC,EACXvB,QAAS,GAAGN,yDAGhBF,QAAQC,MAAM,oFAMlBZ,KAAKsD,kBAAkB8B,EAAUhB,OAAQ9B,EAAAA,EAE7CoD,iBAAmBN,IAIf,GAAIC,EAAeD,EAAW,aAAc,CACxC,MAAMO,EAAiC,CACnCzC,UAAWkC,EAAUlC,UACrB/B,QAAS,GAAGyE,MAAuBR,EAAUlC,aAajD,OATIlD,KAAKF,MAAMF,UACXI,KAAKF,MAAMH,QACP,IAAI8E,EAAmBC,EAAO,GAAG7D,gCAAwD,CACrF8D,MAAOS,EAAUlC,kBAK7BlD,KAAKsD,kBAAkB8B,EAAUhB,OAAQuB,EAE7C,MAEAzF,EACJ2F,gBAAiB7F,KAAKF,MAAM+F,gBAC5B/E,aAAcd,KAAKc,eAKL,UAAtBd,KAAKM,MAAMC,OAEP0E,EAACa,MAAAA,CAAIC,UAAU,4CACXd,EAACe,EAAAA,CACGD,UAAU,mEACVE,IAAKlB,EAAS,CACVmB,YAAa,eADZnB,CAEF,SACHoB,IAAK,KAETlB,EAACa,MAAAA,CAAIC,UAAU,gCACV/F,KAAKM,MAAM2B,UAAYjC,KAAKM,MAAM2B,UAAYjC,KAAKF,MAAMsC,KAAKC,IAAI,2BAM5E,IACX"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Component as e,createElement as r}from"../../../../external/preact/dist/preact.js";import t from"../../../internal/IFrame/Iframe.js";import s from"../../../internal/Spinner/Spinner.js";import n from"../Form/ThreeDS2Form.js";import i from"../../../../utils/promiseTimeout.js";import o from"../../../../utils/get-process-message-handler.js";import{THREEDS_METHOD_TIMEOUT as a,THREEDS2_NUM as m,FAILED_METHOD_STATUS_RESOLVE_OBJECT_TIMEOUT as p}from"../../constants.js";import{encodeBase64URL as d}from"../utils.js";const h="threeDSMethodIframe";class c extends e{processMessageHandler;fingerPrintPromise;static defaultProps={showSpinner:!0};constructor(e){super(e);const{threeDSServerTransID:r,threeDSMethodNotificationURL:t}=this.props,s=JSON.stringify({threeDSServerTransID:r,threeDSMethodNotificationURL:t}),n=d(s);this.state={base64URLencodedData:n}}get3DS2MethodPromise(){return new Promise(((e,r)=>{this.processMessageHandler=o(this.props.postMessageDomain,e,r,"fingerPrintResult"),window.addEventListener("message",this.processMessageHandler)}))}componentDidMount(){this.fingerPrintPromise=i(a,this.get3DS2MethodPromise(),p),this.fingerPrintPromise.promise.then((e=>{window.removeEventListener("message",this.processMessageHandler),this.props.onCompleteFingerprint(e)})).catch((e=>{window.removeEventListener("message",this.processMessageHandler),this.props.onErrorFingerprint(e)}))}componentWillUnmount(){this.fingerPrintPromise&&this.fingerPrintPromise.cancel(),window.removeEventListener("message",this.processMessageHandler)}render({threeDSMethodURL:e,onActionHandled:i,onFormSubmit:o},{base64URLencodedData:a}){return r("div",{className:"adyen-checkout__3ds2-device-fingerprint"},this.props.showSpinner&&r(s,null),r("div",{style:{display:"none"}},r(t,{name:h,callback:()=>{i({componentType:"3DS2Fingerprint",actionDescription:`${m} fingerprint iframe loaded`})}}),r(n,{name:"threeDSMethodForm",action:e,target:h,inputName:"threeDSMethodData",inputValue:a,onFormSubmit:o})))}}export{c as default};
|
|
1
|
+
import{Component as e,createElement as r}from"../../../../external/preact/dist/preact.js";import t from"../../../internal/IFrame/Iframe.js";import s from"../../../internal/Spinner/Spinner.js";import n from"../Form/ThreeDS2Form.js";import i from"../../../../utils/promiseTimeout.js";import o from"../../../../utils/get-process-message-handler.js";import{THREEDS_METHOD_TIMEOUT as a,THREEDS2_NUM as m,FAILED_METHOD_STATUS_RESOLVE_OBJECT_TIMEOUT as p}from"../../constants.js";import{encodeBase64URL as d}from"../utils.js";const h="threeDSMethodIframe";class c extends e{processMessageHandler;fingerPrintPromise;static defaultProps={showSpinner:!0};constructor(e){super(e);const{threeDSServerTransID:r,threeDSMethodNotificationURL:t}=this.props,s=JSON.stringify({threeDSServerTransID:r,threeDSMethodNotificationURL:t}),n=d(s);this.state={base64URLencodedData:n}}get3DS2MethodPromise(){return new Promise(((e,r)=>{this.processMessageHandler=o(this.props.postMessageDomain,e,r,"fingerPrintResult"),window.addEventListener("message",this.processMessageHandler)}))}componentDidMount(){this.fingerPrintPromise=i(a,this.get3DS2MethodPromise(),p),this.fingerPrintPromise.promise.then((e=>{window.removeEventListener("message",this.processMessageHandler),this.props.onCompleteFingerprint(e)})).catch((e=>{window.removeEventListener("message",this.processMessageHandler),this.props.onErrorFingerprint(e)}))}componentWillUnmount(){this.fingerPrintPromise&&this.fingerPrintPromise.cancel(),window.removeEventListener("message",this.processMessageHandler)}render({threeDSMethodURL:e,onActionHandled:i,onFormSubmit:o},{base64URLencodedData:a}){return r("div",{className:"adyen-checkout__3ds2-device-fingerprint"},this.props.showSpinner&&r(s,null),r("div",{style:{display:"none"}},r(t,{name:h,callback:()=>{i?.({componentType:"3DS2Fingerprint",actionDescription:`${m} fingerprint iframe loaded`})}}),r(n,{name:"threeDSMethodForm",action:e,target:h,inputName:"threeDSMethodData",inputValue:a,onFormSubmit:o})))}}export{c as default};
|
|
2
2
|
//# sourceMappingURL=DoFingerprint3DS2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DoFingerprint3DS2.js","sources":["../../../../../../src/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport Iframe from '../../../internal/IFrame';\nimport Spinner from '../../../internal/Spinner';\nimport ThreeDS2Form from '../Form';\nimport promiseTimeout from '../../../../utils/promiseTimeout';\nimport getProcessMessageHandler from '../../../../utils/get-process-message-handler';\nimport { THREEDS_METHOD_TIMEOUT, FAILED_METHOD_STATUS_RESOLVE_OBJECT_TIMEOUT, THREEDS2_NUM } from '../../constants';\nimport { encodeBase64URL } from '../utils';\nimport { DoFingerprint3DS2Props, DoFingerprint3DS2State } from './types';\n\nconst iframeName = 'threeDSMethodIframe';\n\n/**\n * Create and Base64URL encode a JSON object containing the serverTransactionID & threeDSMethodNotificationURL.\n * This Base64URL string will be added to the <form> in the ThreeDS2Form component.\n * The ThreeDS2Form component will submit the <form> when it mounts, using the ThreeDS2Iframe as the <form> target.\n * getProcessMessageHandler will listen for the postMessage response from the notificationURL and will settle the\n * promise accordingly causing this component to call the appropriate callback.\n * The callbacks exist in the parent component: ThreeDS2DeviceFingerprint where they ultimately call the onComplete\n * function passed as a prop when checkout.create('threeDS2DeviceFingerprint') is called.\n */\nclass DoFingerprint3DS2 extends Component<DoFingerprint3DS2Props, DoFingerprint3DS2State> {\n private processMessageHandler;\n private fingerPrintPromise: any;\n public static defaultProps = {\n showSpinner: true\n };\n\n constructor(props) {\n super(props);\n\n /**\n * Create and Base64URL encode a JSON object\n */\n const { threeDSServerTransID, threeDSMethodNotificationURL } = this.props;\n\n const jsonStr = JSON.stringify({\n threeDSServerTransID,\n threeDSMethodNotificationURL\n });\n const base64URLencodedData = encodeBase64URL(jsonStr);\n this.state = { base64URLencodedData };\n }\n\n get3DS2MethodPromise() {\n return new Promise((resolve, reject) => {\n /**\n * Listen for postMessage responses from the notification url\n */\n this.processMessageHandler = getProcessMessageHandler(this.props.postMessageDomain, resolve, reject, 'fingerPrintResult');\n\n
|
|
1
|
+
{"version":3,"file":"DoFingerprint3DS2.js","sources":["../../../../../../src/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport Iframe from '../../../internal/IFrame';\nimport Spinner from '../../../internal/Spinner';\nimport ThreeDS2Form from '../Form';\nimport promiseTimeout from '../../../../utils/promiseTimeout';\nimport getProcessMessageHandler from '../../../../utils/get-process-message-handler';\nimport { THREEDS_METHOD_TIMEOUT, FAILED_METHOD_STATUS_RESOLVE_OBJECT_TIMEOUT, THREEDS2_NUM } from '../../constants';\nimport { encodeBase64URL } from '../utils';\nimport { DoFingerprint3DS2Props, DoFingerprint3DS2State } from './types';\n\nconst iframeName = 'threeDSMethodIframe';\n\n/**\n * Create and Base64URL encode a JSON object containing the serverTransactionID & threeDSMethodNotificationURL.\n * This Base64URL string will be added to the <form> in the ThreeDS2Form component.\n * The ThreeDS2Form component will submit the <form> when it mounts, using the ThreeDS2Iframe as the <form> target.\n * getProcessMessageHandler will listen for the postMessage response from the notificationURL and will settle the\n * promise accordingly causing this component to call the appropriate callback.\n * The callbacks exist in the parent component: ThreeDS2DeviceFingerprint where they ultimately call the onComplete\n * function passed as a prop when checkout.create('threeDS2DeviceFingerprint') is called.\n */\nclass DoFingerprint3DS2 extends Component<DoFingerprint3DS2Props, DoFingerprint3DS2State> {\n private processMessageHandler;\n private fingerPrintPromise: any;\n public static defaultProps = {\n showSpinner: true\n };\n\n constructor(props) {\n super(props);\n\n /**\n * Create and Base64URL encode a JSON object\n */\n const { threeDSServerTransID, threeDSMethodNotificationURL } = this.props;\n\n const jsonStr = JSON.stringify({\n threeDSServerTransID,\n threeDSMethodNotificationURL\n });\n const base64URLencodedData = encodeBase64URL(jsonStr);\n this.state = { base64URLencodedData };\n }\n\n get3DS2MethodPromise() {\n return new Promise((resolve, reject) => {\n /**\n * Listen for postMessage responses from the notification url\n */\n this.processMessageHandler = getProcessMessageHandler(this.props.postMessageDomain, resolve, reject, 'fingerPrintResult');\n\n window.addEventListener('message', this.processMessageHandler);\n });\n }\n\n componentDidMount() {\n // Check 3DS2 Device fingerprint\n this.fingerPrintPromise = promiseTimeout(THREEDS_METHOD_TIMEOUT, this.get3DS2MethodPromise(), FAILED_METHOD_STATUS_RESOLVE_OBJECT_TIMEOUT);\n this.fingerPrintPromise.promise\n .then(resolveObject => {\n window.removeEventListener('message', this.processMessageHandler);\n this.props.onCompleteFingerprint(resolveObject);\n })\n .catch(rejectObject => {\n window.removeEventListener('message', this.processMessageHandler);\n this.props.onErrorFingerprint(rejectObject);\n });\n }\n\n componentWillUnmount() {\n if (this.fingerPrintPromise) this.fingerPrintPromise.cancel();\n window.removeEventListener('message', this.processMessageHandler);\n }\n\n render({ threeDSMethodURL, onActionHandled, onFormSubmit }, { base64URLencodedData }) {\n return (\n <div className=\"adyen-checkout__3ds2-device-fingerprint\">\n {this.props.showSpinner && <Spinner />}\n <div style={{ display: 'none' }}>\n <Iframe\n name={iframeName}\n callback={() => {\n onActionHandled?.({ componentType: '3DS2Fingerprint', actionDescription: `${THREEDS2_NUM} fingerprint iframe loaded` });\n }}\n />\n <ThreeDS2Form\n name={'threeDSMethodForm'}\n action={threeDSMethodURL}\n target={iframeName}\n inputName={'threeDSMethodData'}\n inputValue={base64URLencodedData}\n onFormSubmit={onFormSubmit}\n />\n </div>\n </div>\n );\n }\n}\n\nexport default DoFingerprint3DS2;\n"],"names":["iframeName","DoFingerprint3DS2","Component","processMessageHandler","fingerPrintPromise","static","showSpinner","constructor","props","super","threeDSServerTransID","threeDSMethodNotificationURL","this","jsonStr","JSON","stringify","base64URLencodedData","encodeBase64URL","state","get3DS2MethodPromise","Promise","resolve","reject","getProcessMessageHandler","postMessageDomain","window","addEventListener","componentDidMount","promiseTimeout","THREEDS_METHOD_TIMEOUT","FAILED_METHOD_STATUS_RESOLVE_OBJECT_TIMEOUT","promise","then","resolveObject","removeEventListener","onCompleteFingerprint","catch","rejectObject","onErrorFingerprint","componentWillUnmount","cancel","render","threeDSMethodURL","onActionHandled","onFormSubmit","h","div","className","Spinner","style","display","Iframe","name","callback","componentType","actionDescription","THREEDS2_NUM","ThreeDS2Form","action","target","inputName","inputValue"],"mappings":"ugBAUA,MAAMA,EAAa,sBAWnB,MAAMC,UAA0BC,EACpBC,sBACAC,mBACRC,oBAA6B,CACzBC,aAAa,GAGjBC,WAAAA,CAAYC,GACRC,MAAMD,GAKN,MAAME,qBAAEA,EAAoBC,6BAAEA,GAAiCC,KAAKJ,MAE9DK,EAAUC,KAAKC,UAAU,CAC3BL,uBACAC,iCAEEK,EAAuBC,EAAgBJ,GAC7CD,KAAKM,MAAQ,CAAEF,uBACnB,CAEAG,oBAAAA,GACI,OAAO,IAAIC,SAAQ,CAACC,EAASC,KAIzBV,KAAKT,sBAAwBoB,EAAyBX,KAAKJ,MAAMgB,kBAAmBH,EAASC,EAAQ,qBAErGG,OAAOC,iBAAiB,UAAWd,KAAKT,sBAAqB,GAErE,CAEAwB,iBAAAA,GAEIf,KAAKR,mBAAqBwB,EAAeC,EAAwBjB,KAAKO,uBAAwBW,GAC9FlB,KAAKR,mBAAmB2B,QACnBC,MAAKC,IACFR,OAAOS,oBAAoB,UAAWtB,KAAKT,uBAC3CS,KAAKJ,MAAM2B,sBAAsBF,EAAAA,IAEpCG,OAAMC,IACHZ,OAAOS,oBAAoB,UAAWtB,KAAKT,uBAC3CS,KAAKJ,MAAM8B,mBAAmBD,EAAAA,GAE1C,CAEAE,oBAAAA,GACQ3B,KAAKR,oBAAoBQ,KAAKR,mBAAmBoC,SACrDf,OAAOS,oBAAoB,UAAWtB,KAAKT,sBAC/C,CAEAsC,MAAAA,EAAOC,iBAAEA,EAAgBC,gBAAEA,EAAeC,aAAEA,IAAgB5B,qBAAEA,IAC1D,OACI6B,EAACC,MAAAA,CAAIC,UAAU,2CACVnC,KAAKJ,MAAMF,aAAeuC,EAACG,QAC5BH,EAACC,MAAAA,CAAIG,MAAO,CAAEC,QAAS,SACnBL,EAACM,EAAAA,CACGC,KAAMpD,EACNqD,SAAU,KACNV,IAAkB,CAAEW,cAAe,kBAAmBC,kBAAmB,GAAGC,+BAAyC,IAG7HX,EAACY,EAAAA,CACGL,KAAM,oBACNM,OAAQhB,EACRiB,OAAQ3D,EACR4D,UAAW,oBACXC,WAAY7C,EACZ4B,aAAcA,KAKlC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Component as e,createElement as t}from"../../../../external/preact/dist/preact.js";import o from"./DoFingerprint3DS2.js";import{prepareFingerPrintData as
|
|
1
|
+
import{Component as e,createElement as t}from"../../../../external/preact/dist/preact.js";import o from"./DoFingerprint3DS2.js";import{prepareFingerPrintData as r,isErrorObject as s,createOldFingerprintResolveData as i,createFingerprintResolveData as n}from"../utils.js";import{isValidHttpUrl as a}from"../../../../utils/isValidURL.js";import{MISSING_TOKEN_IN_ACTION_MSG as p,THREEDS2_FINGERPRINT_ERROR as d,THREEDS2_FULL as m,TIMEOUT as l,THREEDS2_ERROR as h,THREEDS2_NUM as c,THREEDS2_FINGERPRINT as S}from"../../constants.js";import{Analytics3DS2Events as D,Analytics3DS2Errors as g,ANALYTICS_NETWORK_ERROR as u,ANALYTICS_API_ERROR as f}from"../../../../core/Analytics/constants.js";class C extends e{static type="scheme";static defaultProps={onComplete:()=>{},onError:()=>{},paymentData:"",showSpinner:!0,isMDFlow:!1};constructor(e){super(e);const{token:t,notificationURL:o}=this.props;if(t){const e=r({token:t,notificationURL:o});this.state={status:"init",fingerPrintData:e}}else this.state={fingerPrintData:{success:!1,error:p}},console.debug(`${d}: ${p}`)}onFormSubmit=e=>{this.props.onSubmitAnalytics({type:m,message:e,subtype:D.FINGERPRINT_DATA_SENT})};componentDidMount(){if(!s(this.state.fingerPrintData)){const e="test"===this.props.environment&&this.props._environmentUrls?.api?.includes("http://localhost:8080"),{threeDSMethodURL:t,threeDSMethodNotificationURL:o,postMessageDomain:r,threeDSServerTransID:s}=this.state.fingerPrintData;if(!a(t,e))return this.setStatusComplete({threeDSCompInd:"U"},{errorCode:g.TOKEN_IS_MISSING_THREEDSMETHODURL,message:`${d}: Decoded token is missing a valid threeDSMethodURL property`}),void console.debug("### PrepareFingerprint3DS2::exiting:: no valid threeDSMethodURL");const i=a(o,e),n=a(r,e),p=s?.length;if(!i||!n||!p)return this.setStatusComplete({threeDSCompInd:"N"},{errorCode:g.TOKEN_IS_MISSING_OTHER_PROPS,message:`${d}: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)`}),void console.debug("### PrepareFingerprint3DS2::exiting:: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)");this.setState({status:"retrievingFingerPrint"})}else{const e=this.state.fingerPrintData.error,t=e.indexOf(p)>-1?g.ACTION_IS_MISSING_TOKEN:g.TOKEN_DECODE_OR_PARSING_FAILED;this.setStatusComplete({threeDSCompInd:"N"},{errorCode:t,message:`${d}: ${e}`}),console.debug("### PrepareFingerprint3DS2:: token does not exist or could not be base64 decoded &/or JSON.parsed")}}setStatusComplete(e,t=null){this.setState({status:"complete"},(()=>{const o=(this.props.isMDFlow?i:n)(this.props.dataKey,e,this.props.paymentData);let r;const s=t||e;if(s.errorCode){const e={code:s.errorCode===l?g.THREEDS2_TIMEOUT:s.errorCode,errorType:s.errorCode===l?u:f};r={type:h,message:s.message,...e},this.props.onSubmitAnalytics(r)}let a;switch(e?.threeDSCompInd){case"Y":a="success";break;case"N":a=t?t.errorCode===l?l:"failedInternal":"failed";break;case"U":a="noThreeDSMethodURL"}r={type:m,message:`${c} fingerprinting has completed`,subtype:D.FINGERPRINT_COMPLETED,result:a},this.props.onSubmitAnalytics(r),this.props.onComplete(o)}))}render({showSpinner:e},{status:r,fingerPrintData:s}){return"retrievingFingerPrint"===r?t(o,{onCompleteFingerprint:e=>{this.setStatusComplete(e.result)},onErrorFingerprint:e=>{const t={errorCode:e.errorCode,message:`${S}: ${e.errorCode}`};this.setStatusComplete(e.result,t)},showSpinner:e,...s,onActionHandled:this.props.onActionHandled,onFormSubmit:this.onFormSubmit}):null}}export{C as default};
|
|
2
2
|
//# sourceMappingURL=PrepareFingerprint3DS2.js.map
|
package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrepareFingerprint3DS2.js","sources":["../../../../../../src/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport DoFingerprint3DS2 from './DoFingerprint3DS2';\nimport { createFingerprintResolveData, createOldFingerprintResolveData, isErrorObject, prepareFingerPrintData } from '../utils';\nimport { PrepareFingerprint3DS2Props, PrepareFingerprint3DS2State } from './types';\nimport { FingerPrintData, ResultObject, ErrorCodeObject } from '../../types';\nimport { ErrorObject } from '../../../../core/Errors/types';\nimport { ActionHandledReturnObject } from '../../../../types/global-types';\nimport { SendAnalyticsObject } from '../../../../core/Analytics/types';\nimport { isValidHttpUrl } from '../../../../utils/isValidURL';\nimport {\n THREEDS2_FULL,\n THREEDS2_FINGERPRINT,\n THREEDS2_FINGERPRINT_ERROR,\n THREEDS2_NUM,\n MISSING_TOKEN_IN_ACTION_MSG,\n THREEDS2_ERROR,\n TIMEOUT\n} from '../../constants';\nimport { ANALYTICS_API_ERROR, ANALYTICS_NETWORK_ERROR, Analytics3DS2Errors, Analytics3DS2Events } from '../../../../core/Analytics/constants';\n\nclass PrepareFingerprint3DS2 extends Component<PrepareFingerprint3DS2Props, PrepareFingerprint3DS2State> {\n public static type = 'scheme';\n\n public static defaultProps = {\n onComplete: () => {},\n onError: () => {},\n paymentData: '',\n showSpinner: true,\n onActionHandled: () => {},\n isMDFlow: false\n };\n\n constructor(props) {\n super(props);\n\n const { token, notificationURL } = this.props; // See comments on prepareFingerPrintData regarding notificationURL\n\n if (token) {\n const fingerPrintData: FingerPrintData | ErrorObject = prepareFingerPrintData({ token, notificationURL });\n\n this.state = {\n status: 'init',\n fingerPrintData: fingerPrintData as FingerPrintData\n };\n } else {\n // Will be picked up in componentDidMount\n this.state = { fingerPrintData: { success: false, error: MISSING_TOKEN_IN_ACTION_MSG } };\n\n console.debug(`${THREEDS2_FINGERPRINT_ERROR}: ${MISSING_TOKEN_IN_ACTION_MSG}`);\n }\n }\n\n public onActionHandled = (rtnObj: ActionHandledReturnObject) => {\n this.props.onSubmitAnalytics({\n type: THREEDS2_FULL,\n message: rtnObj.actionDescription,\n subtype: Analytics3DS2Events.FINGERPRINT_IFRAME_LOADED\n });\n this.props.onActionHandled(rtnObj);\n };\n\n public onFormSubmit = (msg: string) => {\n this.props.onSubmitAnalytics({\n type: THREEDS2_FULL,\n message: msg,\n subtype: Analytics3DS2Events.FINGERPRINT_DATA_SENT\n });\n };\n\n componentDidMount() {\n const hasFingerPrintData = !isErrorObject(this.state.fingerPrintData);\n\n if (hasFingerPrintData) {\n const shouldAllowHttpDomains =\n /** Allow http urls if in development and testing against localhost:8080 */\n (process.env.NODE_ENV === 'development' && process.env.__CLIENT_ENV__?.indexOf('localhost:8080') > -1) ||\n /**\n * Allows the checkoutshopper demo on localhost:8080 to work -\n * requires a configuration in localhost of environment: 'test', _environmentUrls: {api: 'http://localhost:8080/'}\n */\n (this.props.environment === 'test' && this.props._environmentUrls?.api?.includes('http://localhost:8080'));\n\n /**\n * Check the structure of the created fingerPrintData\n */\n const { threeDSMethodURL, threeDSMethodNotificationURL, postMessageDomain, threeDSServerTransID } = this.state\n .fingerPrintData as FingerPrintData;\n\n const hasValid3DSMethodURL = isValidHttpUrl(threeDSMethodURL, shouldAllowHttpDomains);\n\n // Only render component if we have a threeDSMethodURL. Otherwise, exit with threeDSCompInd: 'U'\n if (!hasValid3DSMethodURL) {\n this.setStatusComplete(\n { threeDSCompInd: 'U' },\n {\n errorCode: Analytics3DS2Errors.TOKEN_IS_MISSING_THREEDSMETHODURL,\n message: `${THREEDS2_FINGERPRINT_ERROR}: Decoded token is missing a valid threeDSMethodURL property`\n }\n );\n\n /**\n * NOTE: we can now use this.props.isMDFlow to decide if we want to send any of these errors to the onError handler\n * - this is problematic in the regular flow since merchants tend to treat any calls to their onError handler as 'fatal',\n * but in the MDFlow we control what the onError handler does.\n */\n // if (this.props.isMDFlow) {}\n\n console.debug('### PrepareFingerprint3DS2::exiting:: no valid threeDSMethodURL');\n return;\n }\n\n const hasValid3DSMethodNotificationURL = isValidHttpUrl(threeDSMethodNotificationURL, shouldAllowHttpDomains);\n const hasValidPostMessageDomain = isValidHttpUrl(postMessageDomain, shouldAllowHttpDomains);\n const hasTransServerID = threeDSServerTransID?.length;\n\n if (!hasValid3DSMethodNotificationURL || !hasValidPostMessageDomain || !hasTransServerID) {\n /**\n * NOTE: EMVCo_3DS_CoreSpec_v2.3.1_20220831.pdf states that we should return: threeDSCompInd: 'N'\n * when the fingerprinting process \"Did not run or did not successfully complete\"\n */\n this.setStatusComplete(\n { threeDSCompInd: 'N' },\n {\n errorCode: Analytics3DS2Errors.TOKEN_IS_MISSING_OTHER_PROPS,\n message: `${THREEDS2_FINGERPRINT_ERROR}: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)`\n }\n );\n\n console.debug(\n '### PrepareFingerprint3DS2::exiting:: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)'\n );\n\n return;\n }\n\n // Proceed to allow component to render\n this.setState({ status: 'retrievingFingerPrint' });\n //\n } else {\n // Only render component if we have fingerPrintData. Otherwise, complete with threeDSCompInd: 'N'\n\n const errorMsg: string = (this.state.fingerPrintData as ErrorObject).error;\n\n const errorCode =\n errorMsg.indexOf(MISSING_TOKEN_IN_ACTION_MSG) > -1\n ? Analytics3DS2Errors.ACTION_IS_MISSING_TOKEN\n : Analytics3DS2Errors.TOKEN_DECODE_OR_PARSING_FAILED;\n\n this.setStatusComplete(\n { threeDSCompInd: 'N' },\n {\n errorCode,\n message: `${THREEDS2_FINGERPRINT_ERROR}: ${errorMsg}` // can be: 'Missing \"token\" property from threeDS2 action', 'not base64', 'malformed URI sequence' or 'Could not JSON parse token'\n }\n );\n\n console.debug('### PrepareFingerprint3DS2:: token does not exist or could not be base64 decoded &/or JSON.parsed');\n }\n }\n\n setStatusComplete(resultObj: ResultObject, errorCodeObject: ErrorCodeObject = null) {\n this.setState({ status: 'complete' }, () => {\n /**\n * Create the data in the way that the /details endpoint expects.\n * This is different for the flow triggered by the threeds2InMDFlow process than for the new, v67, 'threeDS2' action\n */\n const resolveDataFunction = this.props.isMDFlow ? createOldFingerprintResolveData : createFingerprintResolveData;\n const data = resolveDataFunction(this.props.dataKey, resultObj, this.props.paymentData);\n\n let analyticsObject: SendAnalyticsObject;\n\n /** Are we in an error scenario? If so, submit analytics about it */\n const finalResObject = errorCodeObject ? errorCodeObject : resultObj;\n if (finalResObject.errorCode) {\n const errorTypeAndCode = {\n code: finalResObject.errorCode === TIMEOUT ? Analytics3DS2Errors.THREEDS2_TIMEOUT : finalResObject.errorCode,\n errorType: finalResObject.errorCode === TIMEOUT ? ANALYTICS_NETWORK_ERROR : ANALYTICS_API_ERROR\n };\n\n /**\n * Timeout or data parsing problems:\n *\n * (threeDSCompInd:\"U\"):\n * - Decoded token is missing a valid threeDSMethodURL property,\n * or, (threeDSCompInd:\"N\"):\n * - Fingerprint process has timed out,\n * also, (threeDSCompInd:\"N\"):\n * - Missing \"token\" property from threeDS2 action\n * - or, decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)\n * - or, token could not be base64 decoded &/or JSON.parsed\n */\n analyticsObject = {\n type: THREEDS2_ERROR,\n message: (finalResObject as ErrorCodeObject).message,\n ...errorTypeAndCode\n };\n\n // Send error to analytics endpoint\n this.props.onSubmitAnalytics(analyticsObject);\n }\n\n /** Calculate \"result\" for analytics */\n let result: string;\n\n switch (resultObj?.threeDSCompInd) {\n case 'Y':\n result = 'success';\n break;\n case 'N': {\n if (!errorCodeObject) {\n result = 'failed'; // 'failed' is the result returned from the threeDSMethodURL\n } else {\n result = errorCodeObject.errorCode === TIMEOUT ? TIMEOUT : 'failedInternal'; // timed-out; or, 'failed' as a result of internal checks\n }\n break;\n }\n case 'U':\n result = 'noThreeDSMethodURL';\n break;\n default:\n }\n\n /**\n * The fingerprint process is completed, one way or another.\n * The resultObj will be {threeDSCompInd:\"Y\"} in the case of success,\n * else {threeDSCompInd:\"U\"} or {threeDSCompInd:\"N\"} - if we've had some kind of timeout or data parsing problem (as described above)\n */\n analyticsObject = {\n type: THREEDS2_FULL,\n message: `${THREEDS2_NUM} fingerprinting has completed`,\n subtype: Analytics3DS2Events.FINGERPRINT_COMPLETED,\n result\n };\n\n // Send log to analytics endpoint\n this.props.onSubmitAnalytics(analyticsObject);\n\n /**\n * Equals call to callSubmit3DS2Fingerprint (except for in 3DS2InMDFlow)\n */\n this.props.onComplete(data);\n });\n }\n\n render({ showSpinner }, { status, fingerPrintData }) {\n if (status === 'retrievingFingerPrint') {\n return (\n <DoFingerprint3DS2\n onCompleteFingerprint={fingerprint => {\n this.setStatusComplete(fingerprint.result);\n }}\n onErrorFingerprint={fingerprint => {\n /**\n * Called when fingerprint times-out (which is still a valid scenario)...\n */\n const timeoutObject: ErrorCodeObject = {\n errorCode: fingerprint.errorCode, // 'timeout'\n message: `${THREEDS2_FINGERPRINT}: ${fingerprint.errorCode}`\n };\n\n this.setStatusComplete(fingerprint.result, timeoutObject); // fingerprint.result = threeDSCompInd: 'N'\n }}\n showSpinner={showSpinner}\n {...fingerPrintData}\n onActionHandled={this.onActionHandled}\n onFormSubmit={this.onFormSubmit}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default PrepareFingerprint3DS2;\n"],"names":["PrepareFingerprint3DS2","Component","static","onComplete","onError","paymentData","showSpinner","onActionHandled","isMDFlow","constructor","props","super","token","notificationURL","this","fingerPrintData","prepareFingerPrintData","state","status","success","error","MISSING_TOKEN_IN_ACTION_MSG","console","debug","THREEDS2_FINGERPRINT_ERROR","rtnObj","onSubmitAnalytics","type","THREEDS2_FULL","message","actionDescription","subtype","Analytics3DS2Events","FINGERPRINT_IFRAME_LOADED","onFormSubmit","msg","FINGERPRINT_DATA_SENT","componentDidMount","isErrorObject","shouldAllowHttpDomains","environment","_environmentUrls","api","includes","threeDSMethodURL","threeDSMethodNotificationURL","postMessageDomain","threeDSServerTransID","isValidHttpUrl","setStatusComplete","threeDSCompInd","errorCode","Analytics3DS2Errors","TOKEN_IS_MISSING_THREEDSMETHODURL","hasValid3DSMethodNotificationURL","hasValidPostMessageDomain","hasTransServerID","length","TOKEN_IS_MISSING_OTHER_PROPS","setState","errorMsg","indexOf","ACTION_IS_MISSING_TOKEN","TOKEN_DECODE_OR_PARSING_FAILED","resultObj","errorCodeObject","data","createOldFingerprintResolveData","createFingerprintResolveData","dataKey","analyticsObject","finalResObject","errorTypeAndCode","code","TIMEOUT","THREEDS2_TIMEOUT","errorType","ANALYTICS_NETWORK_ERROR","ANALYTICS_API_ERROR","THREEDS2_ERROR","result","THREEDS2_NUM","FINGERPRINT_COMPLETED","render","h","DoFingerprint3DS2","onCompleteFingerprint","fingerprint","onErrorFingerprint","timeoutObject","THREEDS2_FINGERPRINT"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PrepareFingerprint3DS2.js","sources":["../../../../../../src/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport DoFingerprint3DS2 from './DoFingerprint3DS2';\nimport { createFingerprintResolveData, createOldFingerprintResolveData, isErrorObject, prepareFingerPrintData } from '../utils';\nimport { PrepareFingerprint3DS2Props, PrepareFingerprint3DS2State } from './types';\nimport { FingerPrintData, ResultObject, ErrorCodeObject } from '../../types';\nimport { ErrorObject } from '../../../../core/Errors/types';\nimport { SendAnalyticsObject } from '../../../../core/Analytics/types';\nimport { isValidHttpUrl } from '../../../../utils/isValidURL';\nimport {\n THREEDS2_FULL,\n THREEDS2_FINGERPRINT,\n THREEDS2_FINGERPRINT_ERROR,\n THREEDS2_NUM,\n MISSING_TOKEN_IN_ACTION_MSG,\n THREEDS2_ERROR,\n TIMEOUT\n} from '../../constants';\nimport { ANALYTICS_API_ERROR, ANALYTICS_NETWORK_ERROR, Analytics3DS2Errors, Analytics3DS2Events } from '../../../../core/Analytics/constants';\n\nclass PrepareFingerprint3DS2 extends Component<PrepareFingerprint3DS2Props, PrepareFingerprint3DS2State> {\n public static type = 'scheme';\n\n public static defaultProps = {\n onComplete: () => {},\n onError: () => {},\n paymentData: '',\n showSpinner: true,\n isMDFlow: false\n };\n\n constructor(props) {\n super(props);\n\n const { token, notificationURL } = this.props; // See comments on prepareFingerPrintData regarding notificationURL\n\n if (token) {\n const fingerPrintData: FingerPrintData | ErrorObject = prepareFingerPrintData({ token, notificationURL });\n\n this.state = {\n status: 'init',\n fingerPrintData: fingerPrintData as FingerPrintData\n };\n } else {\n // Will be picked up in componentDidMount\n this.state = { fingerPrintData: { success: false, error: MISSING_TOKEN_IN_ACTION_MSG } };\n\n console.debug(`${THREEDS2_FINGERPRINT_ERROR}: ${MISSING_TOKEN_IN_ACTION_MSG}`);\n }\n }\n\n public onFormSubmit = (msg: string) => {\n this.props.onSubmitAnalytics({\n type: THREEDS2_FULL,\n message: msg,\n subtype: Analytics3DS2Events.FINGERPRINT_DATA_SENT\n });\n };\n\n componentDidMount() {\n const hasFingerPrintData = !isErrorObject(this.state.fingerPrintData);\n\n if (hasFingerPrintData) {\n const shouldAllowHttpDomains =\n /** Allow http urls if in development and testing against localhost:8080 */\n (process.env.NODE_ENV === 'development' && process.env.__CLIENT_ENV__?.indexOf('localhost:8080') > -1) ||\n /**\n * Allows the checkoutshopper demo on localhost:8080 to work -\n * requires a configuration in localhost of environment: 'test', _environmentUrls: {api: 'http://localhost:8080/'}\n */\n (this.props.environment === 'test' && this.props._environmentUrls?.api?.includes('http://localhost:8080'));\n\n /**\n * Check the structure of the created fingerPrintData\n */\n const { threeDSMethodURL, threeDSMethodNotificationURL, postMessageDomain, threeDSServerTransID } = this.state\n .fingerPrintData as FingerPrintData;\n\n const hasValid3DSMethodURL = isValidHttpUrl(threeDSMethodURL, shouldAllowHttpDomains);\n\n // Only render component if we have a threeDSMethodURL. Otherwise, exit with threeDSCompInd: 'U'\n if (!hasValid3DSMethodURL) {\n this.setStatusComplete(\n { threeDSCompInd: 'U' },\n {\n errorCode: Analytics3DS2Errors.TOKEN_IS_MISSING_THREEDSMETHODURL,\n message: `${THREEDS2_FINGERPRINT_ERROR}: Decoded token is missing a valid threeDSMethodURL property`\n }\n );\n\n /**\n * NOTE: we can now use this.props.isMDFlow to decide if we want to send any of these errors to the onError handler\n * - this is problematic in the regular flow since merchants tend to treat any calls to their onError handler as 'fatal',\n * but in the MDFlow we control what the onError handler does.\n */\n // if (this.props.isMDFlow) {}\n\n console.debug('### PrepareFingerprint3DS2::exiting:: no valid threeDSMethodURL');\n return;\n }\n\n const hasValid3DSMethodNotificationURL = isValidHttpUrl(threeDSMethodNotificationURL, shouldAllowHttpDomains);\n const hasValidPostMessageDomain = isValidHttpUrl(postMessageDomain, shouldAllowHttpDomains);\n const hasTransServerID = threeDSServerTransID?.length;\n\n if (!hasValid3DSMethodNotificationURL || !hasValidPostMessageDomain || !hasTransServerID) {\n /**\n * NOTE: EMVCo_3DS_CoreSpec_v2.3.1_20220831.pdf states that we should return: threeDSCompInd: 'N'\n * when the fingerprinting process \"Did not run or did not successfully complete\"\n */\n this.setStatusComplete(\n { threeDSCompInd: 'N' },\n {\n errorCode: Analytics3DS2Errors.TOKEN_IS_MISSING_OTHER_PROPS,\n message: `${THREEDS2_FINGERPRINT_ERROR}: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)`\n }\n );\n\n console.debug(\n '### PrepareFingerprint3DS2::exiting:: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)'\n );\n\n return;\n }\n\n // Proceed to allow component to render\n this.setState({ status: 'retrievingFingerPrint' });\n //\n } else {\n // Only render component if we have fingerPrintData. Otherwise, complete with threeDSCompInd: 'N'\n\n const errorMsg: string = (this.state.fingerPrintData as ErrorObject).error;\n\n const errorCode =\n errorMsg.indexOf(MISSING_TOKEN_IN_ACTION_MSG) > -1\n ? Analytics3DS2Errors.ACTION_IS_MISSING_TOKEN\n : Analytics3DS2Errors.TOKEN_DECODE_OR_PARSING_FAILED;\n\n this.setStatusComplete(\n { threeDSCompInd: 'N' },\n {\n errorCode,\n message: `${THREEDS2_FINGERPRINT_ERROR}: ${errorMsg}` // can be: 'Missing \"token\" property from threeDS2 action', 'not base64', 'malformed URI sequence' or 'Could not JSON parse token'\n }\n );\n\n console.debug('### PrepareFingerprint3DS2:: token does not exist or could not be base64 decoded &/or JSON.parsed');\n }\n }\n\n setStatusComplete(resultObj: ResultObject, errorCodeObject: ErrorCodeObject = null) {\n this.setState({ status: 'complete' }, () => {\n /**\n * Create the data in the way that the /details endpoint expects.\n * This is different for the flow triggered by the threeds2InMDFlow process than for the new, v67, 'threeDS2' action\n */\n const resolveDataFunction = this.props.isMDFlow ? createOldFingerprintResolveData : createFingerprintResolveData;\n const data = resolveDataFunction(this.props.dataKey, resultObj, this.props.paymentData);\n\n let analyticsObject: SendAnalyticsObject;\n\n /** Are we in an error scenario? If so, submit analytics about it */\n const finalResObject = errorCodeObject ? errorCodeObject : resultObj;\n if (finalResObject.errorCode) {\n const errorTypeAndCode = {\n code: finalResObject.errorCode === TIMEOUT ? Analytics3DS2Errors.THREEDS2_TIMEOUT : finalResObject.errorCode,\n errorType: finalResObject.errorCode === TIMEOUT ? ANALYTICS_NETWORK_ERROR : ANALYTICS_API_ERROR\n };\n\n /**\n * Timeout or data parsing problems:\n *\n * (threeDSCompInd:\"U\"):\n * - Decoded token is missing a valid threeDSMethodURL property,\n * or, (threeDSCompInd:\"N\"):\n * - Fingerprint process has timed out,\n * also, (threeDSCompInd:\"N\"):\n * - Missing \"token\" property from threeDS2 action\n * - or, decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)\n * - or, token could not be base64 decoded &/or JSON.parsed\n */\n analyticsObject = {\n type: THREEDS2_ERROR,\n message: (finalResObject as ErrorCodeObject).message,\n ...errorTypeAndCode\n };\n\n // Send error to analytics endpoint\n this.props.onSubmitAnalytics(analyticsObject);\n }\n\n /** Calculate \"result\" for analytics */\n let result: string;\n\n switch (resultObj?.threeDSCompInd) {\n case 'Y':\n result = 'success';\n break;\n case 'N': {\n if (!errorCodeObject) {\n result = 'failed'; // 'failed' is the result returned from the threeDSMethodURL\n } else {\n result = errorCodeObject.errorCode === TIMEOUT ? TIMEOUT : 'failedInternal'; // timed-out; or, 'failed' as a result of internal checks\n }\n break;\n }\n case 'U':\n result = 'noThreeDSMethodURL';\n break;\n default:\n }\n\n /**\n * The fingerprint process is completed, one way or another.\n * The resultObj will be {threeDSCompInd:\"Y\"} in the case of success,\n * else {threeDSCompInd:\"U\"} or {threeDSCompInd:\"N\"} - if we've had some kind of timeout or data parsing problem (as described above)\n */\n analyticsObject = {\n type: THREEDS2_FULL,\n message: `${THREEDS2_NUM} fingerprinting has completed`,\n subtype: Analytics3DS2Events.FINGERPRINT_COMPLETED,\n result\n };\n\n // Send log to analytics endpoint\n this.props.onSubmitAnalytics(analyticsObject);\n\n /**\n * Equals call to callSubmit3DS2Fingerprint (except for in 3DS2InMDFlow)\n */\n this.props.onComplete(data);\n });\n }\n\n render({ showSpinner }, { status, fingerPrintData }) {\n if (status === 'retrievingFingerPrint') {\n return (\n <DoFingerprint3DS2\n onCompleteFingerprint={fingerprint => {\n this.setStatusComplete(fingerprint.result);\n }}\n onErrorFingerprint={fingerprint => {\n /**\n * Called when fingerprint times-out (which is still a valid scenario)...\n */\n const timeoutObject: ErrorCodeObject = {\n errorCode: fingerprint.errorCode, // 'timeout'\n message: `${THREEDS2_FINGERPRINT}: ${fingerprint.errorCode}`\n };\n\n this.setStatusComplete(fingerprint.result, timeoutObject); // fingerprint.result = threeDSCompInd: 'N'\n }}\n showSpinner={showSpinner}\n {...fingerPrintData}\n onActionHandled={this.props.onActionHandled}\n onFormSubmit={this.onFormSubmit}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default PrepareFingerprint3DS2;\n"],"names":["PrepareFingerprint3DS2","Component","static","onComplete","onError","paymentData","showSpinner","isMDFlow","constructor","props","super","token","notificationURL","this","fingerPrintData","prepareFingerPrintData","state","status","success","error","MISSING_TOKEN_IN_ACTION_MSG","console","debug","THREEDS2_FINGERPRINT_ERROR","onFormSubmit","msg","onSubmitAnalytics","type","THREEDS2_FULL","message","subtype","Analytics3DS2Events","FINGERPRINT_DATA_SENT","componentDidMount","isErrorObject","shouldAllowHttpDomains","environment","_environmentUrls","api","includes","threeDSMethodURL","threeDSMethodNotificationURL","postMessageDomain","threeDSServerTransID","isValidHttpUrl","setStatusComplete","threeDSCompInd","errorCode","Analytics3DS2Errors","TOKEN_IS_MISSING_THREEDSMETHODURL","hasValid3DSMethodNotificationURL","hasValidPostMessageDomain","hasTransServerID","length","TOKEN_IS_MISSING_OTHER_PROPS","setState","errorMsg","indexOf","ACTION_IS_MISSING_TOKEN","TOKEN_DECODE_OR_PARSING_FAILED","resultObj","errorCodeObject","data","createOldFingerprintResolveData","createFingerprintResolveData","dataKey","analyticsObject","finalResObject","errorTypeAndCode","code","TIMEOUT","THREEDS2_TIMEOUT","errorType","ANALYTICS_NETWORK_ERROR","ANALYTICS_API_ERROR","THREEDS2_ERROR","result","THREEDS2_NUM","FINGERPRINT_COMPLETED","render","h","DoFingerprint3DS2","onCompleteFingerprint","fingerprint","onErrorFingerprint","timeoutObject","THREEDS2_FINGERPRINT","onActionHandled"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./components/UPIComponent/UPIComponent.js";import{CoreProvider as s}from"../../core/Context/CoreProvider.js";import r from"../internal/Await/Await.js";import
|
|
1
|
+
import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./components/UPIComponent/UPIComponent.js";import{CoreProvider as s}from"../../core/Context/CoreProvider.js";import r from"../internal/Await/Await.js";import n from"../internal/QRLoader/QRLoader.js";import p from"../../core/Errors/SRPanelProvider.js";import{TxVariants as i}from"../tx-variants.js";import a from"../../utils/isMobile.js";class d extends e{static type=i.upi;static txVariants=[i.upi,i.upi_qr,i.upi_collect,i.upi_intent];selectedMode;constructor(t,e){super(t,e),this.selectedMode=this.props.defaultMode}formatProps(t){if(!a())return{...super.formatProps(t),defaultMode:t?.defaultMode??"qrCode",apps:[]};const e=t.apps?.length>0,o=e?"intent":"vpa",s=[o,"qrCode"],r={id:"vpa",name:t.i18n.get("upi.collect.dropdown.label"),type:i.upi_collect},n=e?[...t.apps.map((t=>({...t,type:i.upi_intent}))),r]:[];return{...super.formatProps(t),defaultMode:s.includes(t?.defaultMode)?t.defaultMode:o,apps:n}}get isValid(){return this.state.isValid}formatData(){const{virtualPaymentAddress:t,app:e}=this.state.data||{};return{paymentMethod:{...this.paymentType&&{type:this.paymentType},...this.paymentType===i.upi_collect&&t&&{virtualPaymentAddress:t},...this.paymentType===i.upi_intent&&e?.id&&{appId:e.id}}}}get paymentType(){return"qrCode"===this.selectedMode?i.upi_qr:"vpa"===this.selectedMode?i.upi_collect:this.state.data?.app?.type}onUpdateMode=t=>{this.selectedMode=t};renderContent(e,s,p){switch(e){case"qrCode":return t(n,{ref:t=>{this.componentRef=t},...this.props,qrCodeData:this.props.qrCodeData?encodeURIComponent(this.props.qrCodeData):null,type:i.upi_qr,brandLogo:this.props.brandLogo||this.icon,onComplete:this.onComplete,introduction:this.props.i18n.get("upi.qrCodeWaitingMessage"),countdownTime:5,onActionHandled:this.onActionHandled});case"await":return t(r,{ref:t=>{this.componentRef=t},url:s,type:p,showCountdownTimer:!0,shouldRedirectAutomatically:!0,countdownTime:5,clientKey:this.props.clientKey,paymentData:this.props.paymentData,onActionHandled:this.onActionHandled,onError:this.props.onError,messageText:this.props.i18n.get("upi.vpaWaitingMessage"),awaitText:this.props.i18n.get("await.waitForConfirmation"),onComplete:this.onComplete,brandLogo:this.icon});default:return t(o,{ref:t=>{this.componentRef=t},payButton:this.payButton,onChange:this.setState,onUpdateMode:this.onUpdateMode,apps:this.props.apps,defaultMode:this.props.defaultMode,showPayButton:this.props.showPayButton})}}render(){const{type:e,url:o,paymentMethodType:r}=this.props;return t(s,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(p,{srPanel:this.props.modules.srPanel},this.renderContent(e,o,r)))}}export{d as default};
|
|
2
2
|
//# sourceMappingURL=UPI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UPI.js","sources":["../../../../src/components/UPI/UPI.tsx"],"sourcesContent":["import { h, RefObject } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport UPIComponent from './components/UPIComponent';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport Await from '../internal/Await';\nimport QRLoader from '../internal/QRLoader';\nimport { App, UPIConfiguration, UpiMode, UpiPaymentData, UpiType } from './types';\nimport SRPanelProvider from '../../core/Errors/SRPanelProvider';\nimport { TxVariants } from '../tx-variants';\nimport isMobile from '../../utils/isMobile';\nimport type { ICore } from '../../core/types';\n\n/**\n * For mobile:\n * We should show upi_collect or upi_intent depending on if `apps` are returned in /paymentMethods response\n * The upi_qr should always be on the second tab\n *\n * For non-mobile:\n * We should never show the upi_intent (ignore `apps` in /paymentMethods response)\n * The upi_qr should be on the first tab and the upi_collect should be on second tab\n */\n\nclass UPI extends UIElement<UPIConfiguration> {\n public static type = TxVariants.upi;\n public static txVariants = [TxVariants.upi, TxVariants.upi_qr, TxVariants.upi_collect, TxVariants.upi_intent];\n\n private selectedMode: UpiMode;\n\n constructor(checkout: ICore, props: UPIConfiguration) {\n super(checkout, props);\n this.selectedMode = this.props.defaultMode;\n }\n\n formatProps(props: UPIConfiguration) {\n if (!isMobile()) {\n return {\n ...super.formatProps(props),\n defaultMode: props?.defaultMode ?? 'qrCode',\n // For large screen, ignore the apps\n apps: []\n };\n }\n\n const hasIntentApps = props.apps?.length > 0;\n const fallbackDefaultMode = hasIntentApps ? 'intent' : 'vpa';\n const allowedModes = [fallbackDefaultMode, 'qrCode'];\n const upiCollectApp: App = {\n id: 'vpa',\n name: props.i18n.get('upi.collect.dropdown.label'),\n type: TxVariants.upi_collect as UpiType\n };\n const apps = hasIntentApps ? [...props.apps.map(app => ({ ...app, type: TxVariants.upi_intent as UpiType })), upiCollectApp] : [];\n return {\n ...super.formatProps(props),\n defaultMode: allowedModes.includes(props?.defaultMode) ? props.defaultMode : fallbackDefaultMode,\n apps\n };\n }\n\n public get isValid(): boolean {\n return this.state.isValid;\n }\n\n public formatData(): UpiPaymentData {\n const { virtualPaymentAddress, app } = this.state.data || {};\n\n return {\n paymentMethod: {\n ...(this.paymentType && { type: this.paymentType }),\n ...(this.paymentType === TxVariants.upi_collect && virtualPaymentAddress && { virtualPaymentAddress }),\n ...(this.paymentType === TxVariants.upi_intent && app?.id && { appId: app.id })\n }\n };\n }\n\n get paymentType(): UpiType {\n if (this.selectedMode === 'qrCode') {\n return TxVariants.upi_qr;\n }\n if (this.selectedMode === 'vpa') {\n return TxVariants.upi_collect;\n }\n return this.state.data?.app?.type;\n }\n\n private onUpdateMode = (mode: UpiMode): void => {\n this.selectedMode = mode;\n };\n\n private renderContent(type: string, url: string, paymentMethodType: string): h.JSX.Element {\n switch (type) {\n case 'qrCode':\n return (\n <QRLoader\n ref={ref => {\n this.componentRef = ref;\n }}\n {...this.props}\n qrCodeData={this.props.qrCodeData ? encodeURIComponent(this.props.qrCodeData) : null}\n type={TxVariants.upi_qr}\n brandLogo={this.props.brandLogo || this.icon}\n onComplete={this.onComplete}\n introduction={this.props.i18n.get('upi.qrCodeWaitingMessage')}\n countdownTime={5}\n onActionHandled={this.
|
|
1
|
+
{"version":3,"file":"UPI.js","sources":["../../../../src/components/UPI/UPI.tsx"],"sourcesContent":["import { h, RefObject } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport UPIComponent from './components/UPIComponent';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport Await from '../internal/Await';\nimport QRLoader from '../internal/QRLoader';\nimport { App, UPIConfiguration, UpiMode, UpiPaymentData, UpiType } from './types';\nimport SRPanelProvider from '../../core/Errors/SRPanelProvider';\nimport { TxVariants } from '../tx-variants';\nimport isMobile from '../../utils/isMobile';\nimport type { ICore } from '../../core/types';\n\n/**\n * For mobile:\n * We should show upi_collect or upi_intent depending on if `apps` are returned in /paymentMethods response\n * The upi_qr should always be on the second tab\n *\n * For non-mobile:\n * We should never show the upi_intent (ignore `apps` in /paymentMethods response)\n * The upi_qr should be on the first tab and the upi_collect should be on second tab\n */\n\nclass UPI extends UIElement<UPIConfiguration> {\n public static type = TxVariants.upi;\n public static txVariants = [TxVariants.upi, TxVariants.upi_qr, TxVariants.upi_collect, TxVariants.upi_intent];\n\n private selectedMode: UpiMode;\n\n constructor(checkout: ICore, props: UPIConfiguration) {\n super(checkout, props);\n this.selectedMode = this.props.defaultMode;\n }\n\n formatProps(props: UPIConfiguration) {\n if (!isMobile()) {\n return {\n ...super.formatProps(props),\n defaultMode: props?.defaultMode ?? 'qrCode',\n // For large screen, ignore the apps\n apps: []\n };\n }\n\n const hasIntentApps = props.apps?.length > 0;\n const fallbackDefaultMode = hasIntentApps ? 'intent' : 'vpa';\n const allowedModes = [fallbackDefaultMode, 'qrCode'];\n const upiCollectApp: App = {\n id: 'vpa',\n name: props.i18n.get('upi.collect.dropdown.label'),\n type: TxVariants.upi_collect as UpiType\n };\n const apps = hasIntentApps ? [...props.apps.map(app => ({ ...app, type: TxVariants.upi_intent as UpiType })), upiCollectApp] : [];\n return {\n ...super.formatProps(props),\n defaultMode: allowedModes.includes(props?.defaultMode) ? props.defaultMode : fallbackDefaultMode,\n apps\n };\n }\n\n public get isValid(): boolean {\n return this.state.isValid;\n }\n\n public formatData(): UpiPaymentData {\n const { virtualPaymentAddress, app } = this.state.data || {};\n\n return {\n paymentMethod: {\n ...(this.paymentType && { type: this.paymentType }),\n ...(this.paymentType === TxVariants.upi_collect && virtualPaymentAddress && { virtualPaymentAddress }),\n ...(this.paymentType === TxVariants.upi_intent && app?.id && { appId: app.id })\n }\n };\n }\n\n get paymentType(): UpiType {\n if (this.selectedMode === 'qrCode') {\n return TxVariants.upi_qr;\n }\n if (this.selectedMode === 'vpa') {\n return TxVariants.upi_collect;\n }\n return this.state.data?.app?.type;\n }\n\n private onUpdateMode = (mode: UpiMode): void => {\n this.selectedMode = mode;\n };\n\n private renderContent(type: string, url: string, paymentMethodType: string): h.JSX.Element {\n switch (type) {\n case 'qrCode':\n return (\n <QRLoader\n ref={ref => {\n this.componentRef = ref;\n }}\n {...this.props}\n qrCodeData={this.props.qrCodeData ? encodeURIComponent(this.props.qrCodeData) : null}\n type={TxVariants.upi_qr}\n brandLogo={this.props.brandLogo || this.icon}\n onComplete={this.onComplete}\n introduction={this.props.i18n.get('upi.qrCodeWaitingMessage')}\n countdownTime={5}\n onActionHandled={this.onActionHandled}\n />\n );\n case 'await':\n return (\n <Await\n ref={ref => {\n this.componentRef = ref;\n }}\n url={url}\n type={paymentMethodType}\n showCountdownTimer\n shouldRedirectAutomatically\n countdownTime={5}\n clientKey={this.props.clientKey}\n paymentData={this.props.paymentData}\n onActionHandled={this.onActionHandled}\n onError={this.props.onError}\n messageText={this.props.i18n.get('upi.vpaWaitingMessage')}\n awaitText={this.props.i18n.get('await.waitForConfirmation')}\n onComplete={this.onComplete}\n brandLogo={this.icon}\n />\n );\n default:\n return (\n <UPIComponent\n ref={(ref: RefObject<typeof UPIComponent>) => {\n this.componentRef = ref;\n }}\n payButton={this.payButton}\n onChange={this.setState}\n onUpdateMode={this.onUpdateMode}\n apps={this.props.apps}\n defaultMode={this.props.defaultMode}\n showPayButton={this.props.showPayButton}\n />\n );\n }\n }\n\n public render(): h.JSX.Element {\n const { type, url, paymentMethodType } = this.props;\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>{this.renderContent(type, url, paymentMethodType)}</SRPanelProvider>\n </CoreProvider>\n );\n }\n}\n\nexport default UPI;\n"],"names":["UPI","UIElement","static","TxVariants","upi","upi_qr","upi_collect","upi_intent","selectedMode","constructor","checkout","props","super","this","defaultMode","formatProps","isMobile","apps","hasIntentApps","length","fallbackDefaultMode","allowedModes","upiCollectApp","id","name","i18n","get","type","map","app","includes","isValid","state","formatData","virtualPaymentAddress","data","paymentMethod","paymentType","appId","onUpdateMode","mode","renderContent","url","paymentMethodType","h","QRLoader","ref","componentRef","qrCodeData","encodeURIComponent","brandLogo","icon","onComplete","introduction","countdownTime","onActionHandled","Await","showCountdownTimer","shouldRedirectAutomatically","clientKey","paymentData","onError","messageText","awaitText","UPIComponent","payButton","onChange","setState","showPayButton","render","CoreProvider","loadingContext","resources","SRPanelProvider","srPanel","modules"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{TxVariants as a}from"./tx-variants.js";const o={[a.address]:"Address",[a.bankTransfer_IBAN]:"BankTransfer",[a.donation]:"Donation",[a.personal_details]:"PersonalDetails",[a.bcmc]:"Bancontact",[a.card]:"Card",[a.scheme]:"Card",[a.storedCard]:"Card",[a.customCard]:"CustomCard",[a.ach]:"Ach",[a.directdebit_GB]:"BacsDirectDebit",[a.sepadirectdebit]:"
|
|
1
|
+
import{TxVariants as a}from"./tx-variants.js";const o={[a.address]:"Address",[a.bankTransfer_IBAN]:"BankTransfer",[a.donation]:"Donation",[a.personal_details]:"PersonalDetails",[a.bcmc]:"Bancontact",[a.card]:"Card",[a.scheme]:"Card",[a.storedCard]:"Card",[a.customCard]:"CustomCard",[a.ach]:"Ach",[a.directdebit_GB]:"BacsDirectDebit",[a.sepadirectdebit]:"SepaDirectDebit",[a.affirm]:"Affirm",[a.afterpay]:"AfterPay",[a.afterpay_default]:"AfterPay",[a.afterpay_b2b]:"AfterPayB2B",[a.atome]:"Atome",[a.facilypay_3x]:"FacilyPay3x",[a.facilypay_4x]:"FacilyPay4x",[a.facilypay_6x]:"FacilyPay6x",[a.facilypay_10x]:"FacilyPay10x",[a.facilypay_12x]:"FacilyPay12x",[a.ratepay]:"RatePay",[a.ratepay_directdebit]:"RatePayDirectDebit",[a.riverty]:"Riverty",[a.amazonpay]:"AmazonPay",[a.applepay]:"ApplePay",[a.cashapp]:"CashAppPay",[a.clicktopay]:"ClickToPay",[a.googlepay]:"GooglePay",[a.paypal]:"PayPal",[a.paywithgoogle]:"GooglePay",[a.boletobancario]:"Boleto",[a.boletobancario_itau]:"Boleto",[a.boletobancario_santander]:"Boleto",[a.doku]:"Doku",[a.doku_alfamart]:"Doku",[a.doku_permata_lite_atm]:"Doku",[a.doku_indomaret]:"Doku",[a.doku_atm_mandiri_va]:"Doku",[a.doku_sinarmas_va]:"Doku",[a.doku_mandiri_va]:"Doku",[a.doku_cimb_va]:"Doku",[a.doku_danamon_va]:"Doku",[a.doku_bri_va]:"Doku",[a.doku_bni_va]:"Doku",[a.doku_bca_va]:"Doku",[a.doku_wallet]:"Doku",[a.oxxo]:"Oxxo",[a.primeiropay_boleto]:"Boleto",[a.billdesk_online]:"BillDeskOnline",[a.billdesk_wallet]:"BillDeskWallet",[a.dotpay]:"Dotpay",[a.eps]:"Eps",[a.molpay_ebanking_fpx_MY]:"MolPayEBankingMY",[a.molpay_ebanking_TH]:"MolPayEBankingTH",[a.molpay_ebanking_VN]:"MolPayEBankingVN",[a.onlineBanking_CZ]:"OnlineBankingCZ",[a.onlinebanking_IN]:"OnlineBankingIN",[a.onlineBanking_PL]:"OnlineBankingPL",[a.onlineBanking_SK]:"OnlineBankingSK",[a.paybybank]:"PayByBank",[a.payu_IN_cashcard]:"PayuCashcard",[a.payu_IN_nb]:"PayuNetBanking",[a.wallet_IN]:"WalletINElement",[a.dragonpay_ebanking]:"Dragonpay",[a.dragonpay_otc_banking]:"Dragonpay",[a.dragonpay_otc_non_banking]:"Dragonpay",[a.dragonpay_otc_philippines]:"Dragonpay",[a.econtext_atm]:"Econtext",[a.econtext_online]:"Econtext",[a.econtext_seven_eleven]:"Econtext",[a.econtext_stores]:"Econtext",[a.giropay]:"Giropay",[a.multibanco]:"Multibanco",[a.redirect]:"Redirect",[a.twint]:"Twint",[a.vipps]:"Vipps",[a.trustly]:"Trustly",[a.paybybank_AIS_DD]:"PayByBankUS",[a.klarna]:"Klarna",[a.klarna_account]:"Klarna",[a.klarna_paynow]:"Klarna",[a.klarna_b2b]:"Klarna",[a.bcmc_mobile]:"BcmcMobile",[a.bcmc_mobile_QR]:"BcmcMobile",[a.pix]:"Pix",[a.swish]:"Swish",[a.wechatpay]:"WeChat",[a.wechatpayQR]:"WeChat",[a.promptpay]:"PromptPay",[a.paynow]:"PayNow",[a.duitnow]:"DuitNow",[a.blik]:"Blik",[a.mbway]:"MBWay",[a.ancv]:"ANCV",[a.upi]:"UPI",[a.upi_qr]:"UPI",[a.upi_collect]:"UPI",[a.upi_intent]:"UPI",[a.giftcard]:"Giftcard",[a.mealVoucher_FR_natixis]:"MealVoucherFR",[a.mealVoucher_FR_sodexo]:"MealVoucherFR",[a.mealVoucher_FR_groupeup]:"MealVoucherFR"};function e(a){return o[a]}export{e as default};
|
|
2
2
|
//# sourceMappingURL=components-name-map.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-name-map.js","sources":["../../../src/components/components-name-map.ts"],"sourcesContent":["import { TxVariants } from './tx-variants';\n\n/**\n * Maps each payment type with the string name of its Component element.\n *\n * It is used to give nicer error messages when creating components using Drop-in.\n * Example: paymentMethods response contains blik, but Blik component is not configured. So it warns that 'Blik' must be imported and added to the Drop-in configuration.\n */\nconst ComponentsNameMap = {\n /** internal */\n [TxVariants.address]: 'Address',\n [TxVariants.bankTransfer_IBAN]: 'BankTransfer',\n [TxVariants.donation]: 'Donation',\n [TxVariants.personal_details]: 'PersonalDetails',\n /** internal */\n\n /** Card */\n [TxVariants.bcmc]: 'Bancontact',\n [TxVariants.card]: 'Card',\n [TxVariants.scheme]: 'Card',\n [TxVariants.storedCard]: 'Card',\n [TxVariants.customCard]: 'CustomCard',\n /** Card */\n\n /** Direct debit */\n [TxVariants.ach]: 'Ach',\n [TxVariants.directdebit_GB]: 'BacsDirectDebit',\n [TxVariants.sepadirectdebit]: 'Sepa',\n /** Direct debit */\n\n /** Open Invoice */\n [TxVariants.affirm]: 'Affirm',\n [TxVariants.afterpay]: 'AfterPay',\n [TxVariants.afterpay_default]: 'AfterPay',\n [TxVariants.afterpay_b2b]: 'AfterPayB2B',\n [TxVariants.atome]: 'Atome',\n [TxVariants.facilypay_3x]: 'FacilyPay3x',\n [TxVariants.facilypay_4x]: 'FacilyPay4x',\n [TxVariants.facilypay_6x]: 'FacilyPay6x',\n [TxVariants.facilypay_10x]: 'FacilyPay10x',\n [TxVariants.facilypay_12x]: 'FacilyPay12x',\n [TxVariants.ratepay]: 'RatePay',\n [TxVariants.ratepay_directdebit]: 'RatePayDirectDebit',\n [TxVariants.riverty]: 'Riverty',\n /** Open Invoice */\n\n /** Wallets */\n [TxVariants.amazonpay]: 'AmazonPay',\n [TxVariants.applepay]: 'ApplePay',\n [TxVariants.cashapp]: 'CashAppPay',\n [TxVariants.clicktopay]: 'ClickToPay',\n [TxVariants.googlepay]: 'GooglePay',\n [TxVariants.paypal]: 'PayPal',\n [TxVariants.paywithgoogle]: 'GooglePay',\n /** Wallets */\n\n /** Voucher */\n [TxVariants.boletobancario]: 'Boleto',\n [TxVariants.boletobancario_itau]: 'Boleto',\n [TxVariants.boletobancario_santander]: 'Boleto',\n [TxVariants.doku]: 'Doku',\n [TxVariants.doku_alfamart]: 'Doku',\n [TxVariants.doku_permata_lite_atm]: 'Doku',\n [TxVariants.doku_indomaret]: 'Doku',\n [TxVariants.doku_atm_mandiri_va]: 'Doku',\n [TxVariants.doku_sinarmas_va]: 'Doku',\n [TxVariants.doku_mandiri_va]: 'Doku',\n [TxVariants.doku_cimb_va]: 'Doku',\n [TxVariants.doku_danamon_va]: 'Doku',\n [TxVariants.doku_bri_va]: 'Doku',\n [TxVariants.doku_bni_va]: 'Doku',\n [TxVariants.doku_bca_va]: 'Doku',\n [TxVariants.doku_wallet]: 'Doku',\n [TxVariants.oxxo]: 'Oxxo',\n [TxVariants.primeiropay_boleto]: 'Boleto',\n /** Voucher */\n\n /** issuerList */\n [TxVariants.billdesk_online]: 'BillDeskOnline',\n [TxVariants.billdesk_wallet]: 'BillDeskWallet',\n [TxVariants.dotpay]: 'Dotpay',\n [TxVariants.eps]: 'Eps',\n [TxVariants.molpay_ebanking_fpx_MY]: 'MolPayEBankingMY',\n [TxVariants.molpay_ebanking_TH]: 'MolPayEBankingTH',\n [TxVariants.molpay_ebanking_VN]: 'MolPayEBankingVN',\n [TxVariants.onlineBanking_CZ]: 'OnlineBankingCZ',\n [TxVariants.onlinebanking_IN]: 'OnlineBankingIN', // NOTE: the txVariant does have a lowercase \"b\"\n [TxVariants.onlineBanking_PL]: 'OnlineBankingPL',\n [TxVariants.onlineBanking_SK]: 'OnlineBankingSK',\n [TxVariants.paybybank]: 'PayByBank',\n [TxVariants.payu_IN_cashcard]: 'PayuCashcard',\n [TxVariants.payu_IN_nb]: 'PayuNetBanking',\n [TxVariants.wallet_IN]: 'WalletINElement',\n /** issuerList */\n\n /** Dragonpay */\n [TxVariants.dragonpay_ebanking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_banking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_non_banking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_philippines]: 'Dragonpay',\n /** Dragonpay */\n\n /** Econtext */\n [TxVariants.econtext_atm]: 'Econtext',\n [TxVariants.econtext_online]: 'Econtext',\n [TxVariants.econtext_seven_eleven]: 'Econtext',\n [TxVariants.econtext_stores]: 'Econtext',\n /** Econtext */\n\n /** Redirect */\n [TxVariants.giropay]: 'Giropay',\n [TxVariants.multibanco]: 'Multibanco',\n [TxVariants.redirect]: 'Redirect',\n [TxVariants.twint]: 'Twint',\n [TxVariants.vipps]: 'Vipps',\n [TxVariants.trustly]: 'Trustly',\n /** Redirect */\n\n /** Klarna */\n [TxVariants.klarna]: 'Klarna',\n [TxVariants.klarna_account]: 'Klarna',\n [TxVariants.klarna_paynow]: 'Klarna',\n [TxVariants.klarna_b2b]: 'Klarna',\n /** Klarna */\n\n /** QRLoader */\n [TxVariants.bcmc_mobile]: 'BcmcMobile',\n [TxVariants.bcmc_mobile_QR]: 'BcmcMobile',\n [TxVariants.pix]: 'Pix',\n [TxVariants.swish]: 'Swish',\n [TxVariants.wechatpay]: 'WeChat',\n [TxVariants.wechatpayQR]: 'WeChat',\n [TxVariants.promptpay]: 'PromptPay',\n [TxVariants.paynow]: 'PayNow',\n [TxVariants.duitnow]: 'Duitnow',\n /** QRLoader */\n\n /** Await */\n [TxVariants.blik]: 'Blik',\n [TxVariants.mbway]: 'MBWay',\n [TxVariants.ancv]: 'ANCV',\n [TxVariants.upi]: 'UPI', // also QR\n [TxVariants.upi_qr]: 'UPI', // also QR\n [TxVariants.upi_collect]: 'UPI', // also QR\n [TxVariants.upi_intent]: 'UPI',\n /** Await */\n\n /** Giftcard */\n [TxVariants.giftcard]: 'Giftcard',\n [TxVariants.mealVoucher_FR_natixis]: 'MealVoucherFR',\n [TxVariants.mealVoucher_FR_sodexo]: 'MealVoucherFR',\n [TxVariants.mealVoucher_FR_groupeup]: 'MealVoucherFR'\n /** Giftcard */\n};\n\n/**\n * Returns the Component name based on the payment type\n * @param paymentType\n */\nfunction getComponentNameOfPaymentType(paymentType: string): string {\n return ComponentsNameMap[paymentType];\n}\n\nexport default getComponentNameOfPaymentType;\n"],"names":["ComponentsNameMap","TxVariants","address","bankTransfer_IBAN","donation","personal_details","bcmc","card","scheme","storedCard","customCard","ach","directdebit_GB","sepadirectdebit","affirm","afterpay","afterpay_default","afterpay_b2b","atome","facilypay_3x","facilypay_4x","facilypay_6x","facilypay_10x","facilypay_12x","ratepay","ratepay_directdebit","riverty","amazonpay","applepay","cashapp","clicktopay","googlepay","paypal","paywithgoogle","boletobancario","boletobancario_itau","boletobancario_santander","doku","doku_alfamart","doku_permata_lite_atm","doku_indomaret","doku_atm_mandiri_va","doku_sinarmas_va","doku_mandiri_va","doku_cimb_va","doku_danamon_va","doku_bri_va","doku_bni_va","doku_bca_va","doku_wallet","oxxo","primeiropay_boleto","billdesk_online","billdesk_wallet","dotpay","eps","molpay_ebanking_fpx_MY","molpay_ebanking_TH","molpay_ebanking_VN","onlineBanking_CZ","onlinebanking_IN","onlineBanking_PL","onlineBanking_SK","paybybank","payu_IN_cashcard","payu_IN_nb","wallet_IN","dragonpay_ebanking","dragonpay_otc_banking","dragonpay_otc_non_banking","dragonpay_otc_philippines","econtext_atm","econtext_online","econtext_seven_eleven","econtext_stores","giropay","multibanco","redirect","twint","vipps","trustly","klarna","klarna_account","klarna_paynow","klarna_b2b","bcmc_mobile","bcmc_mobile_QR","pix","swish","wechatpay","wechatpayQR","promptpay","paynow","duitnow","blik","mbway","ancv","upi","upi_qr","upi_collect","upi_intent","giftcard","mealVoucher_FR_natixis","mealVoucher_FR_sodexo","mealVoucher_FR_groupeup","getComponentNameOfPaymentType","paymentType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components-name-map.js","sources":["../../../src/components/components-name-map.ts"],"sourcesContent":["import { TxVariants } from './tx-variants';\n\n/**\n * Maps each payment type with the string name of its Component element.\n *\n * It is used to give nicer error messages when creating components using Drop-in.\n * Example: paymentMethods response contains blik, but Blik component is not configured. So it warns that 'Blik' must be imported and added to the Drop-in configuration.\n */\nconst ComponentsNameMap = {\n /** internal */\n [TxVariants.address]: 'Address',\n [TxVariants.bankTransfer_IBAN]: 'BankTransfer',\n [TxVariants.donation]: 'Donation',\n [TxVariants.personal_details]: 'PersonalDetails',\n /** internal */\n\n /** Card */\n [TxVariants.bcmc]: 'Bancontact',\n [TxVariants.card]: 'Card',\n [TxVariants.scheme]: 'Card',\n [TxVariants.storedCard]: 'Card',\n [TxVariants.customCard]: 'CustomCard',\n /** Card */\n\n /** Direct debit */\n [TxVariants.ach]: 'Ach',\n [TxVariants.directdebit_GB]: 'BacsDirectDebit',\n [TxVariants.sepadirectdebit]: 'SepaDirectDebit',\n /** Direct debit */\n\n /** Open Invoice */\n [TxVariants.affirm]: 'Affirm',\n [TxVariants.afterpay]: 'AfterPay',\n [TxVariants.afterpay_default]: 'AfterPay',\n [TxVariants.afterpay_b2b]: 'AfterPayB2B',\n [TxVariants.atome]: 'Atome',\n [TxVariants.facilypay_3x]: 'FacilyPay3x',\n [TxVariants.facilypay_4x]: 'FacilyPay4x',\n [TxVariants.facilypay_6x]: 'FacilyPay6x',\n [TxVariants.facilypay_10x]: 'FacilyPay10x',\n [TxVariants.facilypay_12x]: 'FacilyPay12x',\n [TxVariants.ratepay]: 'RatePay',\n [TxVariants.ratepay_directdebit]: 'RatePayDirectDebit',\n [TxVariants.riverty]: 'Riverty',\n /** Open Invoice */\n\n /** Wallets */\n [TxVariants.amazonpay]: 'AmazonPay',\n [TxVariants.applepay]: 'ApplePay',\n [TxVariants.cashapp]: 'CashAppPay',\n [TxVariants.clicktopay]: 'ClickToPay',\n [TxVariants.googlepay]: 'GooglePay',\n [TxVariants.paypal]: 'PayPal',\n [TxVariants.paywithgoogle]: 'GooglePay',\n /** Wallets */\n\n /** Voucher */\n [TxVariants.boletobancario]: 'Boleto',\n [TxVariants.boletobancario_itau]: 'Boleto',\n [TxVariants.boletobancario_santander]: 'Boleto',\n [TxVariants.doku]: 'Doku',\n [TxVariants.doku_alfamart]: 'Doku',\n [TxVariants.doku_permata_lite_atm]: 'Doku',\n [TxVariants.doku_indomaret]: 'Doku',\n [TxVariants.doku_atm_mandiri_va]: 'Doku',\n [TxVariants.doku_sinarmas_va]: 'Doku',\n [TxVariants.doku_mandiri_va]: 'Doku',\n [TxVariants.doku_cimb_va]: 'Doku',\n [TxVariants.doku_danamon_va]: 'Doku',\n [TxVariants.doku_bri_va]: 'Doku',\n [TxVariants.doku_bni_va]: 'Doku',\n [TxVariants.doku_bca_va]: 'Doku',\n [TxVariants.doku_wallet]: 'Doku',\n [TxVariants.oxxo]: 'Oxxo',\n [TxVariants.primeiropay_boleto]: 'Boleto',\n /** Voucher */\n\n /** issuerList */\n [TxVariants.billdesk_online]: 'BillDeskOnline',\n [TxVariants.billdesk_wallet]: 'BillDeskWallet',\n [TxVariants.dotpay]: 'Dotpay',\n [TxVariants.eps]: 'Eps',\n [TxVariants.molpay_ebanking_fpx_MY]: 'MolPayEBankingMY',\n [TxVariants.molpay_ebanking_TH]: 'MolPayEBankingTH',\n [TxVariants.molpay_ebanking_VN]: 'MolPayEBankingVN',\n [TxVariants.onlineBanking_CZ]: 'OnlineBankingCZ',\n [TxVariants.onlinebanking_IN]: 'OnlineBankingIN', // NOTE: the txVariant does have a lowercase \"b\"\n [TxVariants.onlineBanking_PL]: 'OnlineBankingPL',\n [TxVariants.onlineBanking_SK]: 'OnlineBankingSK',\n [TxVariants.paybybank]: 'PayByBank',\n [TxVariants.payu_IN_cashcard]: 'PayuCashcard',\n [TxVariants.payu_IN_nb]: 'PayuNetBanking',\n [TxVariants.wallet_IN]: 'WalletINElement',\n /** issuerList */\n\n /** Dragonpay */\n [TxVariants.dragonpay_ebanking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_banking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_non_banking]: 'Dragonpay',\n [TxVariants.dragonpay_otc_philippines]: 'Dragonpay',\n /** Dragonpay */\n\n /** Econtext */\n [TxVariants.econtext_atm]: 'Econtext',\n [TxVariants.econtext_online]: 'Econtext',\n [TxVariants.econtext_seven_eleven]: 'Econtext',\n [TxVariants.econtext_stores]: 'Econtext',\n /** Econtext */\n\n /** Redirect */\n [TxVariants.giropay]: 'Giropay',\n [TxVariants.multibanco]: 'Multibanco',\n [TxVariants.redirect]: 'Redirect',\n [TxVariants.twint]: 'Twint',\n [TxVariants.vipps]: 'Vipps',\n [TxVariants.trustly]: 'Trustly',\n [TxVariants.paybybank_AIS_DD]: 'PayByBankUS',\n /** Redirect */\n\n /** Klarna */\n [TxVariants.klarna]: 'Klarna',\n [TxVariants.klarna_account]: 'Klarna',\n [TxVariants.klarna_paynow]: 'Klarna',\n [TxVariants.klarna_b2b]: 'Klarna',\n /** Klarna */\n\n /** QRLoader */\n [TxVariants.bcmc_mobile]: 'BcmcMobile',\n [TxVariants.bcmc_mobile_QR]: 'BcmcMobile',\n [TxVariants.pix]: 'Pix',\n [TxVariants.swish]: 'Swish',\n [TxVariants.wechatpay]: 'WeChat',\n [TxVariants.wechatpayQR]: 'WeChat',\n [TxVariants.promptpay]: 'PromptPay',\n [TxVariants.paynow]: 'PayNow',\n [TxVariants.duitnow]: 'DuitNow',\n /** QRLoader */\n\n /** Await */\n [TxVariants.blik]: 'Blik',\n [TxVariants.mbway]: 'MBWay',\n [TxVariants.ancv]: 'ANCV',\n [TxVariants.upi]: 'UPI', // also QR\n [TxVariants.upi_qr]: 'UPI', // also QR\n [TxVariants.upi_collect]: 'UPI', // also QR\n [TxVariants.upi_intent]: 'UPI',\n /** Await */\n\n /** Giftcard */\n [TxVariants.giftcard]: 'Giftcard',\n [TxVariants.mealVoucher_FR_natixis]: 'MealVoucherFR',\n [TxVariants.mealVoucher_FR_sodexo]: 'MealVoucherFR',\n [TxVariants.mealVoucher_FR_groupeup]: 'MealVoucherFR'\n /** Giftcard */\n};\n\n/**\n * Returns the Component name based on the payment type\n * @param paymentType\n */\nfunction getComponentNameOfPaymentType(paymentType: string): string {\n return ComponentsNameMap[paymentType];\n}\n\nexport default getComponentNameOfPaymentType;\n"],"names":["ComponentsNameMap","TxVariants","address","bankTransfer_IBAN","donation","personal_details","bcmc","card","scheme","storedCard","customCard","ach","directdebit_GB","sepadirectdebit","affirm","afterpay","afterpay_default","afterpay_b2b","atome","facilypay_3x","facilypay_4x","facilypay_6x","facilypay_10x","facilypay_12x","ratepay","ratepay_directdebit","riverty","amazonpay","applepay","cashapp","clicktopay","googlepay","paypal","paywithgoogle","boletobancario","boletobancario_itau","boletobancario_santander","doku","doku_alfamart","doku_permata_lite_atm","doku_indomaret","doku_atm_mandiri_va","doku_sinarmas_va","doku_mandiri_va","doku_cimb_va","doku_danamon_va","doku_bri_va","doku_bni_va","doku_bca_va","doku_wallet","oxxo","primeiropay_boleto","billdesk_online","billdesk_wallet","dotpay","eps","molpay_ebanking_fpx_MY","molpay_ebanking_TH","molpay_ebanking_VN","onlineBanking_CZ","onlinebanking_IN","onlineBanking_PL","onlineBanking_SK","paybybank","payu_IN_cashcard","payu_IN_nb","wallet_IN","dragonpay_ebanking","dragonpay_otc_banking","dragonpay_otc_non_banking","dragonpay_otc_philippines","econtext_atm","econtext_online","econtext_seven_eleven","econtext_stores","giropay","multibanco","redirect","twint","vipps","trustly","paybybank_AIS_DD","klarna","klarna_account","klarna_paynow","klarna_b2b","bcmc_mobile","bcmc_mobile_QR","pix","swish","wechatpay","wechatpayQR","promptpay","paynow","duitnow","blik","mbway","ancv","upi","upi_qr","upi_collect","upi_intent","giftcard","mealVoucher_FR_natixis","mealVoucher_FR_sodexo","mealVoucher_FR_groupeup","getComponentNameOfPaymentType","paymentType"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as t}from"../../../external/preact/dist/preact.js";import{UIElement as o}from"../../internal/UIElement/UIElement.js";import e from"../../internal/QRLoader/QRLoader.js";import{CoreProvider as r}from"../../../core/Context/CoreProvider.js";import s from"../../internal/RedirectButton/RedirectButton.js";import n from"../../../core/Errors/SRPanelProvider.js";class i extends o{static defaultProps={qrCodeImage:"",amount:null,paymentData:null,onError:()=>{},onComplete:()=>{}
|
|
1
|
+
import{createElement as t}from"../../../external/preact/dist/preact.js";import{UIElement as o}from"../../internal/UIElement/UIElement.js";import e from"../../internal/QRLoader/QRLoader.js";import{CoreProvider as r}from"../../../core/Context/CoreProvider.js";import s from"../../internal/RedirectButton/RedirectButton.js";import n from"../../../core/Errors/SRPanelProvider.js";class i extends o{static defaultProps={qrCodeImage:"",amount:null,paymentData:null,onError:()=>{},onComplete:()=>{}};formatData(){return{paymentMethod:{type:this.type,...this.state.data}}}get isValid(){return!0}renderQRCode(){return t(r,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(n,{srPanel:this.props.modules.srPanel},t(e,{ref:t=>{this.componentRef=t},...this.props,type:this.constructor.type,brandLogo:this.props.brandLogo||this.icon,delay:this.props.delay,onComplete:this.onComplete,countdownTime:this.props.countdownTime,instructions:this.props.instructions,onActionHandled:this.onActionHandled,brandName:this.displayName,onSubmitAnalytics:this.submitAnalytics})))}render(){return this.props.paymentData?this.renderQRCode():this.props.showPayButton?t(r,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(s,{showPayButton:this.props.showPayButton,name:this.displayName,onSubmit:this.submit,payButton:this.payButton,ref:t=>{this.componentRef=t}})):null}}export{i as default};
|
|
2
2
|
//# sourceMappingURL=QRLoaderContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QRLoaderContainer.js","sources":["../../../../../src/components/helpers/QRLoaderContainer/QRLoaderContainer.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../../internal/UIElement/UIElement';\nimport QRLoader from '../../internal/QRLoader';\nimport { CoreProvider } from '../../../core/Context/CoreProvider';\nimport RedirectButton from '../../internal/RedirectButton';\nimport SRPanelProvider from '../../../core/Errors/SRPanelProvider';\nimport { QRLoaderConfiguration } from './types';\n\nclass QRLoaderContainer<T extends QRLoaderConfiguration = QRLoaderConfiguration> extends UIElement<T> {\n // Using the generic here allow to fully extend the QRLoaderContainer (including it's props)\n protected static defaultProps = {\n qrCodeImage: '',\n amount: null,\n paymentData: null,\n onError: () => {},\n onComplete: () => {}
|
|
1
|
+
{"version":3,"file":"QRLoaderContainer.js","sources":["../../../../../src/components/helpers/QRLoaderContainer/QRLoaderContainer.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../../internal/UIElement/UIElement';\nimport QRLoader from '../../internal/QRLoader';\nimport { CoreProvider } from '../../../core/Context/CoreProvider';\nimport RedirectButton from '../../internal/RedirectButton';\nimport SRPanelProvider from '../../../core/Errors/SRPanelProvider';\nimport { QRLoaderConfiguration } from './types';\n\nclass QRLoaderContainer<T extends QRLoaderConfiguration = QRLoaderConfiguration> extends UIElement<T> {\n // Using the generic here allow to fully extend the QRLoaderContainer (including it's props)\n protected static defaultProps = {\n qrCodeImage: '',\n amount: null,\n paymentData: null,\n onError: () => {},\n onComplete: () => {}\n };\n\n formatData() {\n return {\n paymentMethod: {\n type: this.type,\n ...this.state.data\n }\n };\n }\n\n get isValid() {\n return true;\n }\n\n // Makes possible to extend the final QR code step\n public renderQRCode() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <QRLoader\n ref={ref => {\n this.componentRef = ref;\n }}\n {...this.props}\n type={this.constructor['type']}\n brandLogo={this.props.brandLogo || this.icon}\n delay={this.props.delay}\n onComplete={this.onComplete}\n countdownTime={this.props.countdownTime}\n instructions={this.props.instructions}\n onActionHandled={this.onActionHandled}\n brandName={this.displayName}\n onSubmitAnalytics={this.submitAnalytics}\n />\n </SRPanelProvider>\n </CoreProvider>\n );\n }\n\n render() {\n if (this.props.paymentData) {\n return this.renderQRCode();\n }\n\n if (this.props.showPayButton) {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <RedirectButton\n showPayButton={this.props.showPayButton}\n name={this.displayName}\n onSubmit={this.submit}\n payButton={this.payButton}\n ref={ref => {\n this.componentRef = ref;\n }}\n />\n </CoreProvider>\n );\n }\n\n return null;\n }\n}\n\nexport default QRLoaderContainer;\n"],"names":["QRLoaderContainer","UIElement","static","qrCodeImage","amount","paymentData","onError","onComplete","formatData","paymentMethod","type","this","state","data","isValid","renderQRCode","h","CoreProvider","i18n","props","loadingContext","resources","SRPanelProvider","srPanel","modules","QRLoader","ref","componentRef","constructor","brandLogo","icon","delay","countdownTime","instructions","onActionHandled","brandName","displayName","onSubmitAnalytics","submitAnalytics","render","showPayButton","RedirectButton","name","onSubmit","submit","payButton"],"mappings":"wXAQA,MAAMA,UAAmFC,EAErFC,oBAAgC,CAC5BC,YAAa,GACbC,OAAQ,KACRC,YAAa,KACbC,QAAS,OACTC,WAAY,QAGhBC,UAAAA,GACI,MAAO,CACHC,cAAe,CACXC,KAAMC,KAAKD,QACRC,KAAKC,MAAMC,MAG1B,CAEA,WAAIC,GACA,OAAO,CACX,CAGOC,YAAAA,GACH,OACIC,EAACC,EAAAA,CAAaC,KAAMP,KAAKQ,MAAMD,KAAME,eAAgBT,KAAKQ,MAAMC,eAAgBC,UAAWV,KAAKU,WAC5FL,EAACM,EAAAA,CAAgBC,QAASZ,KAAKQ,MAAMK,QAAQD,SACzCP,EAACS,EAAAA,CACGC,IAAKA,IACDf,KAAKgB,aAAeD,CAAAA,KAEpBf,KAAKQ,MACTT,KAAMC,KAAKiB,YAAmB,KAC9BC,UAAWlB,KAAKQ,MAAMU,WAAalB,KAAKmB,KACxCC,MAAOpB,KAAKQ,MAAMY,MAClBxB,WAAYI,KAAKJ,WACjByB,cAAerB,KAAKQ,MAAMa,cAC1BC,aAActB,KAAKQ,MAAMc,aACzBC,gBAAiBvB,KAAKuB,gBACtBC,UAAWxB,KAAKyB,YAChBC,kBAAmB1B,KAAK2B,mBAK5C,CAEAC,MAAAA,GACI,OAAI5B,KAAKQ,MAAMd,YACJM,KAAKI,eAGZJ,KAAKQ,MAAMqB,cAEPxB,EAACC,EAAAA,CAAaC,KAAMP,KAAKQ,MAAMD,KAAME,eAAgBT,KAAKQ,MAAMC,eAAgBC,UAAWV,KAAKU,WAC5FL,EAACyB,EAAAA,CACGD,cAAe7B,KAAKQ,MAAMqB,cAC1BE,KAAM/B,KAAKyB,YACXO,SAAUhC,KAAKiC,OACfC,UAAWlC,KAAKkC,UAChBnB,IAAKA,IACDf,KAAKgB,aAAeD,CAAAA,KAOjC,IACX"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{CardElement as Card}from"./Card/Card.js";export{default as Bancontact}from"./Card/Bancontact.js";export{CustomCard}from"./CustomCard/CustomCard.js";export{default as ThreeDS2Challenge}from"./ThreeDS2/ThreeDS2Challenge.js";export{default as ThreeDS2DeviceFingerprint}from"./ThreeDS2/ThreeDS2DeviceFingerprint.js";export{AchElement as Ach}from"./Ach/Ach.js";export{default as BacsDirectDebit}from"./BacsDD/BacsDD.js";export{default as SepaDirectDebit}from"./Sepa/Sepa.js";export{default as Affirm}from"./Affirm/Affirm.js";export{default as AfterPay}from"./AfterPay/AfterPay.js";export{default as AfterPayB2B}from"./AfterPay/AfterPayB2B.js";export{default as Atome}from"./Atome/Atome.js";export{default as FacilPay3x}from"./FacilyPay/FacilyPay3x.js";export{default as FacilPay4x}from"./FacilyPay/FacilyPay4x.js";export{default as FacilPay6x}from"./FacilyPay/FacilyPay6x.js";export{default as FacilPay10x}from"./FacilyPay/FacilyPay10x.js";export{default as FacilPay12x}from"./FacilyPay/FacilyPay12x.js";export{default as RatePay}from"./RatePay/RatePay.js";export{default as RatePayDirectDebit}from"./RatePay/RatePayDirectDebit.js";export{default as Riverty}from"./Riverty/Riverty.js";export{AmazonPayElement as AmazonPay}from"./AmazonPay/AmazonPay.js";export{default as ApplePay}from"./ApplePay/ApplePay.js";export{CashAppPay}from"./CashAppPay/CashAppPay.js";export{ClickToPayElement as ClickToPay}from"./ClickToPay/ClickToPay.js";export{default as GooglePay}from"./GooglePay/GooglePay.js";export{default as PayPal}from"./PayPal/Paypal.js";export{BoletoElement as Boleto}from"./Boleto/Boleto.js";export{DokuElement as Doku}from"./Doku/Doku.js";export{OxxoElement as Oxxo}from"./Oxxo/Oxxo.js";export{default as BillDeskOnline}from"./BillDesk/BillDeskOnline.js";export{default as BillDeskWallet}from"./BillDesk/BillDeskWallet.js";export{default as Dotpay}from"./Dotpay/index.js";export{default as EPS}from"./EPS/index.js";export{default as MolPayEBankingMY}from"./MolPayEBanking/MolPayEBankingMY.js";export{default as MolPayEBankingTH}from"./MolPayEBanking/MolPayEBankingTH.js";export{default as MolPayEBankingVN}from"./MolPayEBanking/MolPayEBankingVN.js";export{default as OnlineBankingCZ}from"./OnlineBankingCZ/index.js";export{default as OnlineBankingIN}from"./OnlineBankingIN/index.js";export{default as OnlineBankingPL}from"./OnlineBankingPL/OnlineBankingPL.js";export{default as OnlineBankingSK}from"./OnlineBankingSK/index.js";export{default as OnlineBankingFI}from"./OnlineBankingFI/OnlineBankingFI.js";export{default as PayByBank}from"./PayByBank/PayByBank.js";export{default as PayuCashcard}from"./PayU/PayuCashcard.js";export{default as PayuNetBanking}from"./PayU/PayuNetBanking.js";export{default as WalletIN}from"./WalletIN/index.js";export{DragonpayElement as Dragonpay}from"./Dragonpay/Dragonpay.js";export{EcontextElement as Econtext}from"./Econtext/Econtext.js";export{default as Giropay}from"./Giropay/Giropay.js";export{MultibancoElement as Multibanco}from"./Multibanco/Multibanco.js";export{default as Redirect}from"./Redirect/Redirect.js";export{default as Twint}from"./Twint/Twint.js";export{default as Vipps}from"./Vipps/Vipps.js";export{default as Trustly}from"./Trustly/Trustly.js";export{default as Klarna}from"./Klarna/KlarnaPayments.js";export{default as BcmcMobile}from"./BcmcMobile/BcmcMobile.js";export{default as Pix}from"./Pix/Pix.js";export{default as Swish}from"./Swish/Swish.js";export{default as WeChat}from"./WeChat/WeChat.js";export{default as PromptPay}from"./PromptPay/PromptPay.js";export{default as PayNow}from"./PayNow/PayNow.js";export{default as DuitNow}from"./DuitNow/DuitNow.js";export{default as PayMe}from"./PayMe/PayMe.js";export{default as Blik}from"./Blik/Blik.js";export{MBWayElement as MBWay}from"./MBWay/MBWay.js";export{default as UPI}from"./UPI/UPI.js";export{ANCVElement as ANCV}from"./ANCV/ANCV.js";export{GiftcardElement as Giftcard}from"./Giftcard/Giftcard.js";export{MealVoucherFRElement as MealVoucherFR}from"./MealVoucherFR/MealVoucherFR.js";export{AddressElement as Address}from"./Address/Address.js";export{BankTransferElement as BankTransfer}from"./BankTransfer/BankTransfer.js";export{default as Donation}from"./Donation/Donation.js";export{default as Dropin}from"./Dropin/Dropin.js";export{PersonalDetailsElement as PersonalDetails}from"./PersonalDetails/PersonalDetails.js";
|
|
1
|
+
export{CardElement as Card}from"./Card/Card.js";export{default as Bancontact}from"./Card/Bancontact.js";export{CustomCard}from"./CustomCard/CustomCard.js";export{default as ThreeDS2Challenge}from"./ThreeDS2/ThreeDS2Challenge.js";export{default as ThreeDS2DeviceFingerprint}from"./ThreeDS2/ThreeDS2DeviceFingerprint.js";export{AchElement as Ach}from"./Ach/Ach.js";export{default as BacsDirectDebit}from"./BacsDD/BacsDD.js";export{default as SepaDirectDebit}from"./Sepa/Sepa.js";export{default as Affirm}from"./Affirm/Affirm.js";export{default as AfterPay}from"./AfterPay/AfterPay.js";export{default as AfterPayB2B}from"./AfterPay/AfterPayB2B.js";export{default as Atome}from"./Atome/Atome.js";export{default as FacilPay3x}from"./FacilyPay/FacilyPay3x.js";export{default as FacilPay4x}from"./FacilyPay/FacilyPay4x.js";export{default as FacilPay6x}from"./FacilyPay/FacilyPay6x.js";export{default as FacilPay10x}from"./FacilyPay/FacilyPay10x.js";export{default as FacilPay12x}from"./FacilyPay/FacilyPay12x.js";export{default as RatePay}from"./RatePay/RatePay.js";export{default as RatePayDirectDebit}from"./RatePay/RatePayDirectDebit.js";export{default as Riverty}from"./Riverty/Riverty.js";export{AmazonPayElement as AmazonPay}from"./AmazonPay/AmazonPay.js";export{default as ApplePay}from"./ApplePay/ApplePay.js";export{CashAppPay}from"./CashAppPay/CashAppPay.js";export{ClickToPayElement as ClickToPay}from"./ClickToPay/ClickToPay.js";export{default as GooglePay}from"./GooglePay/GooglePay.js";export{default as PayPal}from"./PayPal/Paypal.js";export{BoletoElement as Boleto}from"./Boleto/Boleto.js";export{DokuElement as Doku}from"./Doku/Doku.js";export{OxxoElement as Oxxo}from"./Oxxo/Oxxo.js";export{default as BillDeskOnline}from"./BillDesk/BillDeskOnline.js";export{default as BillDeskWallet}from"./BillDesk/BillDeskWallet.js";export{default as Dotpay}from"./Dotpay/index.js";export{default as EPS}from"./EPS/index.js";export{default as MolPayEBankingMY}from"./MolPayEBanking/MolPayEBankingMY.js";export{default as MolPayEBankingTH}from"./MolPayEBanking/MolPayEBankingTH.js";export{default as MolPayEBankingVN}from"./MolPayEBanking/MolPayEBankingVN.js";export{default as OnlineBankingCZ}from"./OnlineBankingCZ/index.js";export{default as OnlineBankingIN}from"./OnlineBankingIN/index.js";export{default as OnlineBankingPL}from"./OnlineBankingPL/OnlineBankingPL.js";export{default as OnlineBankingSK}from"./OnlineBankingSK/index.js";export{default as OnlineBankingFI}from"./OnlineBankingFI/OnlineBankingFI.js";export{default as PayByBank}from"./PayByBank/PayByBank.js";export{default as PayuCashcard}from"./PayU/PayuCashcard.js";export{default as PayuNetBanking}from"./PayU/PayuNetBanking.js";export{default as WalletIN}from"./WalletIN/index.js";export{DragonpayElement as Dragonpay}from"./Dragonpay/Dragonpay.js";export{EcontextElement as Econtext}from"./Econtext/Econtext.js";export{default as Giropay}from"./Giropay/Giropay.js";export{MultibancoElement as Multibanco}from"./Multibanco/Multibanco.js";export{default as Redirect}from"./Redirect/Redirect.js";export{default as Twint}from"./Twint/Twint.js";export{default as Vipps}from"./Vipps/Vipps.js";export{default as Trustly}from"./Trustly/Trustly.js";export{default as PayByBankUS}from"./PayByBankUS/PayByBankUS.js";export{default as Klarna}from"./Klarna/KlarnaPayments.js";export{default as BcmcMobile}from"./BcmcMobile/BcmcMobile.js";export{default as Pix}from"./Pix/Pix.js";export{default as Swish}from"./Swish/Swish.js";export{default as WeChat}from"./WeChat/WeChat.js";export{default as PromptPay}from"./PromptPay/PromptPay.js";export{default as PayNow}from"./PayNow/PayNow.js";export{default as DuitNow}from"./DuitNow/DuitNow.js";export{default as PayMe}from"./PayMe/PayMe.js";export{default as Blik}from"./Blik/Blik.js";export{MBWayElement as MBWay}from"./MBWay/MBWay.js";export{default as UPI}from"./UPI/UPI.js";export{ANCVElement as ANCV}from"./ANCV/ANCV.js";export{GiftcardElement as Giftcard}from"./Giftcard/Giftcard.js";export{MealVoucherFRElement as MealVoucherFR}from"./MealVoucherFR/MealVoucherFR.js";export{AddressElement as Address}from"./Address/Address.js";export{BankTransferElement as BankTransfer}from"./BankTransfer/BankTransfer.js";export{default as Donation}from"./Donation/Donation.js";export{default as Dropin}from"./Dropin/Dropin.js";export{PersonalDetailsElement as PersonalDetails}from"./PersonalDetails/PersonalDetails.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as t,useEffect as a}from"../../../external/preact/hooks/dist/hooks.js";import o from"../../../external/classnames/index.js";import r from"../../../core/Services/payment-status.js";import{processResponse as
|
|
1
|
+
import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as t,useEffect as a}from"../../../external/preact/hooks/dist/hooks.js";import o from"../../../external/classnames/index.js";import r from"../../../core/Services/payment-status.js";import{processResponse as s}from"../../../core/ProcessResponse/process-response.js";import n from"../Spinner/Spinner.js";import i from"../Countdown/index.js";import c from"../Button/Button.js";import{useCoreContext as l}from"../../../core/Context/CoreProvider.js";import d from"../../../core/Errors/AdyenCheckoutError.js";import m from"../ContentSeparator/ContentSeparator.js";import u from"../../../core/Context/useImage.js";function p(p){const{i18n:_,loadingContext:y}=l(),h=u(),[w,f]=t(!1),[k,g]=t(!1),[N,v]=t(!0),[C,T]=t(!1),[b,x]=t(p.delay),[R,j]=t(100),[E,A]=t(0),[D,S]=t(!1),[I,L]=t(null),P=e=>{if(e.props.payload){f(!0);const t={data:{details:{payload:e.props.payload},paymentData:p.paymentData}};return p.onComplete(t,this)}g(!0),p.onError(new d("ERROR","successful result, but no payload in response"))},M=e=>{if(g(!0),e.props.payload){const t={data:{details:{payload:e.props.payload},paymentData:p.paymentData}};return p.onComplete(t,this)}p.onError(new d("ERROR","error result with no payload in response"))},O=()=>{const{paymentData:e,clientKey:t,throttleInterval:a}=p;C||(p.onActionHandled?.({componentType:p.type,actionDescription:"polling-started"}),T(!0)),r(e,t,y,a).then(s).catch((({message:e,...t})=>({type:"network-error",props:{...e&&{message:_.get(e)},...t}}))).then((e=>{switch(e.type){case"success":P(e);break;case"error":M(e);break;default:v(!1)}}))},$=e=>{window.location.assign(e)};a((()=>{p.shouldRedirectAutomatically&&p.url&&$(p.url)}),[p.shouldRedirectAutomatically,p.url]),a((()=>(O(),()=>{clearTimeout(I)})),[]),a((()=>{if(k)return clearTimeout(I);if(w)return clearTimeout(I);if(!N){L(setTimeout((()=>{O();const e=E+b;A(e),e>=p.throttleTime&&!D&&(x(p.throttleInterval),S(!0))}),b))}}),[N,k,w,E]);const z=(t,a)=>e("div",{className:"adyen-checkout__await adyen-checkout__await--result"},e("img",{className:"adyen-checkout__await__icon adyen-checkout__await__icon--result",src:h({imageFolder:"components/"})(t),alt:_.get(a)}),e("div",{className:"adyen-checkout__await__subtitle adyen-checkout__await__subtitle--result"},_.get(a)));if(k)return z("error","error.subtitle.payment");if(w)return z("success","creditCard.success");if(N)return e("div",{className:"adyen-checkout__await"},p.brandLogo&&e("img",{src:p.brandLogo,alt:p.type,className:"adyen-checkout__await__brand-logo"}),e(n,{inline:!1,size:"large"}));const B=_.get("wechatpay.timetopay").split("%@");return e("div",{className:o("adyen-checkout__await",`adyen-checkout__await--${p.type}`,p.classNameModifiers.map((e=>`adyen-checkout__await--${e}`)))},p.brandLogo&&e("img",{src:p.brandLogo,alt:p.type,className:"adyen-checkout__await__brand-logo"}),e("div",{className:"adyen-checkout__await__subtitle"},p.messageText),e("div",{className:"adyen-checkout__await__indicator-holder"},e("div",{className:"adyen-checkout__await__indicator-spinner"},e(n,{inline:!1,size:"medium"})),e("div",{className:"adyen-checkout__await__indicator-text"},p.awaitText)),p.showCountdownTimer&&e("div",{className:"adyen-checkout__await__countdown-holder"},e("div",{className:"adyen-checkout__await__progress"},e("span",{className:"adyen-checkout__await__percentage",style:{width:`${R}%`}})),e("div",{className:"adyen-checkout__await__countdown"},B[0]," ",e(i,{minutesFromNow:p.countdownTime,onTick:e=>{j(e.percentage)},onCompleted:()=>{g(!0),clearTimeout(I),p.onError(new d("ERROR","Payment Expired"))}})," ",B[1])),p.url&&!p.shouldRedirectAutomatically&&e("div",{className:"adyen-checkout__await__app-link"},e(m,null),e(c,{classNameModifiers:["await"],onClick:()=>$(p.url),label:_.get("openApp")})))}p.defaultProps={countdownTime:15,onError:()=>{},onComplete:()=>{},delay:2e3,throttleTime:6e4,throttleInterval:1e4,showCountdownTimer:!0,classNameModifiers:[],url:null};export{p as default};
|
|
2
2
|
//# sourceMappingURL=Await.js.map
|