UNPKG

adyenthreeds2-js-utils

Version:

These utilities are helper functions to get 3DS 2.0 integrated on to your webpage.

174 lines (148 loc) 5.07 kB
# 3DS 2.0 JavaScript utilities These utilities are helper functions to get 3DS 2.0 integrated on to your webpage. ## Requirements 3DS 2.0 Back-end integration with Adyen: https://docs.adyen.com/classic-integration/3d-secure-2-classic-integration/browser-based-integration/ ## Installation #### Option A: Clone the repo and import functions directly through UMD / ES2015 ```javascript import collectBrowserInfo from "./browser"; import base64Url from "./base64url"; import createIframe from "./iframe"; import createForm from "./form"; import config from "./config.js"; ``` #### Option B: Build the file, link to it and use ThreeDS2Utils on the global scope Install the development dependencies: ```terminal npm install ``` Build the file: ```terminal npm run build ``` Embed it on your page: ``` <script type="text/javascript" src="YOUR_PATH/threeds2-js-utils.js"> ``` Functionality can then be accessed via: ```javascript window.ThreedDS2Utils ``` e.g. ```javascript window.ThreedDS2Utils.getBrowserInfo() ``` ## Usage N.B. The following code snippets are based on installation via Approach 1: ### Gathering browser information Collects available frontend browser info and store it in the properties dictated by EMVCo specification. [EMV® 3-D Secure Protocol and Core Functions Specification](https://www.emvco.com/emv-technologies/3d-secure/) ```javascript /** * @function collectBrowserInfo * @returns {Object} - browserInfo an object containing the retrieved browser properties */ const browserInfo = collectBrowserInfo(); ``` This returns an object with the following keys: ```javascript { screenWidth, screenHeight, colorDepth, userAgent, timeZoneOffset, language, javaEnabled } ``` ### Base64Url encoding and decoding ```javascript base64Url.encode ``` returns a base64URL encoded string ```javascript base64Url.decode ``` returns a base64URL decoded string ```javascript /** * @function base64Url * @param { String } - string to be encoded/decoded * @returns {String} - a regular string */ const base64URLencodedString = base64Url.encode('STRING'); const base64URLdecodedString = base64Url.decode('ENCODED_STRING') ``` ### Creating an iframe Creates an ```iframe``` of specified size element with an ```onload``` listener and adds the ```iframe``` to the passed container element ```javascript /** * @function createIframe * @param container {HTMLElement} - the container to place the iframe into, defaults to document body * @param name {String} - the name for the iframe element * @param width {String} - the width of the iframe, defaults to 0 * @param height {String} - the height of the iframe, defaults to 0 * @param callback { Function } - optional, the callback to fire after the iframe loads content * * @returns {Element} - Created iframe element */ const iframe = createIframe( container, 'IFRAME_NAME', '400', '600' ); ``` ### Creating a form Creates a ```form``` element with a ```target``` attribute ```javascript /** * @function createForm * @param name {String} - the name of the form element * @param action {String} - the action for the form element * @param target {String} - the target for the form element (specifies where the submitted result will open i.e. an iframe) * @param inputName {String} - the name of the input element holding the base64Url encoded JSON * @param inputValue {String} - the base64Url encoded JSON * * @returns {Element} - Created form element */ const form = createForm( 'FORM_ELEMENT NAME', "FORM_ACTION", "TARGET_NAME", "INPUT_ELEMENT_NAME", "DATA_TO_POST"); ``` ### Validating and retrieving challenge window sizes ```javascript config.validateChallengeWindowSize ``` ensures that the passed string is one of values that the ACS expects, else returns ```'01'``` ```javascript config.getChallengeWindowSize ``` returns an array of pixel values based on the validated challenge window size e.g. ```['250px', '400px']``` ```javascript /** * @function config.validateChallengeWindowSize * @param sizeStr - a size string to confirm as valid * @returns {String} - a valid size string */ const validWindowSize = config.validateChallengeWindowSize('STRING'); ``` ```javascript /** * @function config.getChallengeWindowSize * @param sizeStr - a size string to confirm as valid * @returns {array} - an array of values [WIDTH, HEIGHT] */ const windowSizesArray = config.getChallengeWindowSize('STRING'); ``` ## Documentation [3DS 2.0 Helper Functions Implementation](https://docs.adyen.com/3d-secure-2-and-checkout-api/checkout-api-helper-functions/ "Documentation") ## Support You can open tickets for any issues with the helper functions. In case of specific problems with your account or generic 3DS 2.0 issues and questions, please contact support@adyen.com. ## License MIT license. For more information, see the LICENSE file.