@adyen/adyen-web
Version:
[](https://www.npmjs.com/package/@adyen/adyen-web)
196 lines (195 loc) • 6.71 kB
TypeScript
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 {};