UNPKG

mastercard-hosted-session

Version:

Wrapper around Mastercard hosted session, allowing you to treat it as a modern Promise-based Javascript API.

63 lines (48 loc) 1.69 kB
"use strict"; require("core-js/modules/es.date.to-string"); require("core-js/modules/es.object.define-property"); require("core-js/modules/es.object.to-string"); require("core-js/modules/es.promise"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _default = function _default(merchantId) { var scriptSrc = "https://ap-gateway.mastercard.com/form/version/52/merchant/".concat(merchantId, "/session.js"); var retries = 0; var maxRetries = 5; var timeoutTimer = 30 * 1000; var appendScript = function appendScript() { return new Promise(function (resolve, reject) { var timeout = Date.now() + timeoutTimer; var handleTimeout = setTimeout(function () { return reject(new Error("Failed appending script: ".concat(scriptSrc))); }, timeoutTimer); var id = "__mastercard_hosted_session"; var elem = document.getElementById(id); if (elem) { elem.parentElement.removeChild(elem); } var script = document.createElement('script'); script.id = id; script.type = 'text/javascript'; script.async = true; script.crossOrigin = 'anonymous'; script.onerror = function (error) { if (++retries > maxRetries || Date.now() >= timeout) { clearTimeout(handleTimeout); return reject(error); } return appendScript(); }; script.onload = script.onreadystatechange = function () { clearTimeout(handleTimeout); return resolve(); }; script.src = scriptSrc; document.body.appendChild(script); }); }; return appendScript(); }; exports.default = _default;