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
JavaScript
;
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;