UNPKG

@adyen/adyen-web

Version:

[![npm](https://img.shields.io/npm/v/@adyen/adyen-web.svg)](https://www.npmjs.com/package/@adyen/adyen-web)

196 lines (195 loc) 6.71 kB
import { ComponentFocusObject, UIElementProps } from '../types'; import { AddressData, BrowserInfo } from '../../types'; import { CbObjOnBinValue, CbObjOnBrand, CbObjOnConfigSuccess, CbObjOnError, CbObjOnFieldValid, CbObjOnFocus, CbObjOnLoad, CbObjOnBinLookup } from '../internal/SecuredFields/lib/types'; import { CVCPolicyType, DatePolicyType } from '../internal/SecuredFields/lib/types'; import { ClickToPayConfiguration } from '../internal/ClickToPay/types'; export interface CardElementProps extends UIElementProps { /** * Only set for a stored card, * brand is never set for a generic card component OR a single-branded card */ brand?: string; /** * Configuration specific to brands */ brandsConfiguration?: CardBrandsConfiguration; /** * Configuration for Click to Pay */ clickToPayConfiguration?: ClickToPayConfiguration; /** * Disable Click to Pay for testing purposes * @defaultValue false * @internal */ _disableClickToPay?: boolean; /** * Funding source field populated when 'splitCardFundingSources' is used * @internal */ fundingSource?: 'debit' | 'credit'; /** * type will always be "card" (generic card, stored card) * except for a single branded card when it will be the same as the brand prop */ type?: string; /** List of brands accepted by the component */ brands?: string[]; /** * Show/hide available card brands under the Card number field * @defaultValue `false` */ showBrandsUnderCardNumber?: boolean; /** * Show/hide the brand logo when the card brand has been recognized * @defaultValue `true` */ showBrandIcon?: boolean; /** * Show/hide the sentence 'All fields are required unless marked otherwise.' on the top of the form * @defaultValue `true` */ showFormInstruction?: boolean; /** Config option related to whether we set storePaymentMethod in the card data, and showing/hiding the "store details" checkbox */ enableStoreDetails?: boolean; /** * Show/hide the "store details" checkbox * @internal */ showStoreDetailsCheckbox?: boolean; /** Show/hide the CVC field - merchant set config option */ hideCVC?: boolean; /** * Decides whether CVC component will even be rendered. * Always true except when hideCVC set to false by merchant OR in the case of a *stored* BCMC card. * (For the Bancontact card comp this is set to true since dual-branding possibilities mean the BCMC card can now end up needing to show a CVC field) */ hasCVC?: boolean; /** Show/hide the card holder name field */ hasHolderName?: boolean; /** Whether the card holder name field will be required */ holderNameRequired?: boolean; /** An object sent in the /paymentMethods response */ configuration?: CardConfiguration; /** * Called once all the card input fields have been created but are not yet ready to use. */ onLoad?: (event: CbObjOnLoad) => void; /** * Called once the card input fields are ready to use. */ onConfigSuccess?: (event: CbObjOnConfigSuccess) => void; /** * Called when a field becomes valid and also if a valid field changes and becomes invalid. * For the card number field, it returns the last 4 digits of the card number. */ onFieldValid?: (event: CbObjOnFieldValid) => void; /** * Called once we detect the card brand. */ onBrand?: (event: CbObjOnBrand) => void; /** * Called in case of an invalid card number, invalid expiry date, or incomplete field. Called again when errors are cleared. */ onError?: (event: CbObjOnError) => void; /** * Called when a field gains focus. */ onFocus?: (event: CbObjOnFocus | ComponentFocusObject) => void; /** * Called when a field gains loses focus. */ onBlur?: (event: CbObjOnFocus | ComponentFocusObject) => void; /** * Provides the BIN Number of the card (up to 6 digits), called as the user types in the PAN. */ onBinValue?: (event: CbObjOnBinValue) => void; /** * After binLookup call - provides the brand(s) we detect the user is entering, and if we support the brand(s) */ onBinLookup?: (event: CbObjOnBinLookup) => void; [key: string]: any; } export type SocialSecurityMode = 'show' | 'hide' | 'auto'; /** If the merchant wishes to set any of these properties in their local config they should do so via a "configuration" object */ export interface CardConfiguration { visaSrciDpaId?: string; visaSrcInitiatorId?: string; mcSrcClientId?: string; mcDpaId?: string; merchantIdentifier?: string; merchantOrigin?: string; gatewayMerchantId?: string; publicKeyId?: string; region?: string; merchantName?: string; merchantId?: string; intent?: string; koreanAuthenticationRequired?: boolean; socialSecurityNumberMode?: SocialSecurityMode; icon?: string; brandsConfiguration?: CardBrandsConfiguration; } export interface BrandConfiguration { name: string; icon?: string; } export interface CardBrandsConfiguration { [key: string]: BrandConfiguration; } interface CardPaymentMethodData { type: string; brand?: string; storedPaymentMethodId?: string; fundingSource?: string; holderName?: string; encryptedCardNumber?: string; encryptedExpiryMonth?: string; encryptedExpiryYear?: string; encryptedSecurityCode?: string; } export interface CardElementData { paymentMethod: CardPaymentMethodData; billingAddress?: AddressData; installments?: { value: number; }; storePaymentMethod?: boolean; browserInfo: BrowserInfo; origin?: string; } export interface BrandObject { brand: string; cvcPolicy: CVCPolicyType; enableLuhnCheck: boolean; showExpiryDate?: boolean; expiryDatePolicy?: DatePolicyType; showSocialSecurityNumber?: boolean; supported: boolean; brandImageUrl?: string; panLength?: number; paymentMethodVariant?: string; } export interface BinLookupResponseRaw { requestId: string; issuingCountryCode?: string; brands?: BrandObject[]; showSocialSecurityNumber?: boolean; status: number; errorCode: string; message: string; errorType: string; } /** * Mapped & simplified version of BinLookupResponseRaw */ export interface BinLookupResponse { issuingCountryCode: string; showSocialSecurityNumber?: boolean; supportedBrands?: BrandObject[]; } export interface DualBrandSelectElement { id: string; brandObject: BrandObject; } export {};